- Python 84.6%
- Rich Text Format 1.9%
- C++ 1.1%
- Ruby 0.9%
- HTML 0.7%
- Other 9.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
The existing `sample.pdf` renders in PDFKit, so it cannot exercise a failed-PDF fallback. Add an explicitly malformed PDF with a missing page tree and a Markdown page that embeds AVIF, ICO, SVG, two-frame GIF, TIFF, and a missing image with descriptive alt text. Both fixtures are generated and indexed with the rest of the corpus. Validation: `python3 scripts/generate.py` produced 228 fixtures and `python3 scripts/verify.py` passed. macOS PDFKit returned no document for `malformed.pdf`. |
||
| fixtures | ||
| scripts | ||
| .gitattributes | ||
| .gitignore | ||
| FILE-VIEWER-AUDIT-2026-10-04.md | ||
| FORMAT-INDEX.md | ||
| LICENSE | ||
| manifest.json | ||
| README.md | ||
Kitchen sink
A small, synthetic repository for checking how Fjord clients browse and render repository files. It covers source code, web files, configuration, data, documents, images, audio, video, archives, 3D models, and difficult text and binary cases. The files are fixtures, not a buildable application.
Start with the format index. It links to every fixture. The machine-readable manifest records each path, format, case, size, and SHA-256 digest.
The file viewer audit records the first iOS and Android source, payload, and device decoder results against pinned client commits.
Suggested client pass
- Open
code/Hello.swift,code/Hello.kt,code/hello.rs,web/Hello.tsx, andconfig/sample.sql. Check line numbers, syntax color, wrapping, and scrolling. - Open
documents/sample.mdand switch between rendered and source views where the client offers that control. Check the table, code fence, relative link, and relative image. Opendocuments/image-embeds.mdfor AVIF, ICO, SVG, animated GIF, TIFF, and missing-image descriptions in Markdown. - Open
images/sample.png,images/sample.heic,images/sample.webp, andimages/sample.svg. Useimages/animated.gifto check two-frame playback andimages/monogram.tiffto check big-endian TIFF decoding. - Open
documents/sample.pdfanddocuments/multipage.pdfto check one-page and 14-page document views. Opendocuments/malformed.pdfto check inspection after PDF parsing fails. Opendocuments/sample.xlsx,audio/sample.mp3,video/sample.mp4, andarchives/sample.zipto check the fallback. It must not display decoded garbage as source. - Open
edge/empty.txt,edge/crlf.txt,edge/invalid-utf8-no-nul.txt,edge/nul-in-text.txt,edge/long-10000-lines.txt,edge/over-512k.txt, and the Unicode filename. Check loading, text handling, size limits, and error states.
Presence in this repository is not a claim that a client supports a specialized preview. Record observed behavior against the exact client build and repository commit. The ordinary source viewer may show plain text where no language-specific highlighting exists.
The fixture names cover all 114 explicit extensions and 11 special filenames in the inspected iOS syntax map and Android syntax map. The maps identify syntax coloring, not end-to-end format support. Recheck them after client changes with:
python3 scripts/check_client_extensions.py \
--ios-repo ../fjord-ios --ios-ref origin/main \
--android-repo ../fjord-android --android-ref origin/main
Layout
| Directory | What it tests |
|---|---|
code/ |
Native, systems, scripting, and shader source; an 8-byte WebAssembly module |
web/ |
JavaScript, TypeScript, components, markup, and styles |
config/ |
Structured configuration, metadata, feeds, and extensionless build files |
data/ |
SQLite, Parquet, Arrow, Avro, CBOR, MessagePack, Protobuf, and other data containers |
documents/ |
Markdown, notebooks, text, PDF, Office, OpenDocument, EPUB, and subtitles |
images/ |
Raster and vector images, including HEIC, AVIF, WebP, and SVG |
audio/ and video/ |
Short, silent media samples in common containers |
archives/ |
ZIP, TAR, and common compression formats |
models/ |
OBJ, STL, glTF, and GLB |
edge/ |
Encoding, line ending, filename, empty, and size boundaries |
The code snippets are intentionally short and may need a surrounding project to compile. All data is synthetic. The animated GIF and big-endian TIFF come from Fjord Android device tests, with their source commits listed in scripts/assets/README.md. There are no credentials, customer records, or executable payloads.
Validate and regenerate
The committed files are the fixture corpus. Validation uses only Python 3.12 or newer:
python3 scripts/verify.py
The generator rebuilds fixtures/, manifest.json, and FORMAT-INDEX.md from its source definitions:
python3 scripts/generate.py
python3 scripts/verify.py
Regeneration uses ffmpeg, mkvpropedit, cwebp, avifenc, pandoc, brotli, zstd, and uv. uv downloads pinned Python packages for HEIC, Arrow, Parquet, and Avro generation. The checked-in media and documents do not require those tools to browse or validate. Converter output can differ across tool versions, so review regenerated binary diffs before committing.
Scope
This is broad coverage of modern developer-facing formats and the current Fjord file-viewer paths. There is no finite set of “every” file format. The index makes present formats explicit, and additions should carry a real file plus a manifest entry and validation. The corpus stays small enough to browse on a phone and clone without Git LFS.
All fixtures and generator code in this repository are released under the MIT license.