Files
lightcraft/docs/file-format-parity.md
T
Brandon ThomasandClaude Opus 5.5 964d9338ba Progress docs: target-app parity, RAW coverage vs Adobe, gaps, alpha gate, readiness by audience (#788)
Progress docs per craftrules standards/progress-docs.md: target-app parity, gaps, roadmap with alpha gate, readiness by audience (full / mainstream / essentials) with Opus 5.5 hours, model-by-model RAW coverage against Adobe's camera list (docs/raw/), and format, hardware, UI and localization parity docs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 14:25:15 -04:00

5.8 KiB
Raw Blame History

File format parity

Last reviewed: 2026-10-10 · Last updated: 2026-10-10 · Change: major (created; formats measured from the code and the target's Info.plist) · Target: Adobe Lightroom Classic 15.5 / Lightroom 9.6

Every format Lightroom reads or writes, with our support, fidelity and tests. Camera raw formats are deep enough to have their own document: raw-parity.md.

How measured: the target's document types come from the installed Lightroom 9.6 Info.plist (CFBundleDocumentTypes: catalog mcat, xmp, toolkit / module / library bundles, and the raw-and-image list: jpg, tif, dng, heic and 27 raw extensions) plus Lightroom Classic's documented import and export formats. Ours come from crates/codecs/src/sniff.rs, crates/codecs/src/encode.rs, crates/engine/src/export.rs, crates/engine/src/import.rs and the tests named below.

Images (non-raw)

Format Target reads Target writes LightCraft reads LightCraft writes Notes / tests
JPEG ✅ ✅ ✅ (parallel decoder, ICC, EXIF orientation) ✅ quality, size limit, ICC, metadata crates/codecs/src/jpeg.rs, export tests
TIFF ✅ 8/16/32-bit ✅ 8/16-bit, LZW/ZIP ✅ 1–64-bit integer, 16–64-bit float, bilevel, CCITT fax, WhiteIsZero ✅ 8/16-bit, 32-bit float linear, none / LZW / ZIP crates/tiff, crates/codecs/src/tiff_codec.rs
PNG ✅ ✅ ✅ ✅
PSD / PSB ✅ (maximized-compatibility composite) ✅ (Classic: PSD export, edit-in round trip) ✅ merged composite ⬜ (external-editor round trip writes 16-bit TIFF) crates/codecs/src/psd.rs
HEIC / HEIF ✅ ⬜ (Classic) / HDR only ✅ in every release build (crates/heif, heic-rs) ⬜ heif feature on by packaging scripts
AVIF ✅ ✅ (HDR) ⬜ recognised, not decoded (no permissive pure-Rust AV1 decoder) ✅ 8/10-bit, PQ HDR
JPEG XL ✅ ✅ ✅ (jxl-oxide) incl. DNG 1.7 JXL tiles ⬜
WebP not in its document types ⬜ ✅ ✅ beyond target
GIF, BMP ⬜ ⬜ ✅ ⬜ beyond target
DNG (from raw) ✅ ✅ incl. lossy, embedded original ✅ ✅ uncompressed or LJ92; ⬜ lossy DNG, embedded original crates/raw/src/dngwrite.rs
Render to DNG (15.5) — ✅ — ⬜ new in Classic 15.5
Original + sidecar — ✅ — ✅
HDR gain map JPEG (ISO 21496-1) ✅ ✅ ✅ (gain map read) ✅ crates/codecs/src/gainmap.rs
PQ / HLG HDR ✅ ✅ AVIF, JXL, TIFF — 🟡 PQ AVIF, float TIFF; no HLG
Contact sheet / print PDF — ✅ (Print module: PDF / JPEG / printer) — 🟡 paginated contact-sheet PDF (A4 / Letter, 150 dpi, sRGB) crates/engine/src/contact_sheet.rs
Video (MP4, MOV, AVCHD…) ✅ playback, trim, edit ✅ export 🟡 catalogued (kind, duration) ⬜ see video gap

Colour spaces and profiles

Feature Target LightCraft
Export colour spaces sRGB, Adobe RGB, Display P3, ProPhoto, Rec.2020, custom ICC ✅ sRGB, Display P3, Adobe RGB-compatible, ProPhoto, Rec.2020 with gamut mapping (CPU and GPU), embedded ICC; ⬜ custom ICC output profiles; AVIF stays sRGB
Input ICC (JPEG / TIFF / PNG) ✅ ✅ matrix / TRC and LUT profiles (moxcms)
Soft proofing with printer profiles ✅ 🟡

Metadata, sidecars, presets and catalogs

Format Target LightCraft Notes
XMP sidecars (crs: develop settings, ratings, keywords, regions) read / write ✅ read / write, manual (⌘S) and automatic xmp-interop.md
EXIF / IPTC / XMP embedded on export ✅ ✅ with metadata filters crates/meta
Develop presets .xmp ✅ ✅ import (mapping of supported settings)
Legacy presets .lrtemplate ✅ (converted) ✅ import
Camera / creative profiles (.dcp, .xmp profiles) ✅ ⬜ deliberately (Adobe profile formats are never used); .cube LUT profiles ✅
Lens profiles .lcp ✅ ⬜ deliberately
Other apps' presets — ✅ Luminar .lmp / .mplumpack, .zip bundles beyond target
Lightroom Classic catalog .lrcat native 🟡 import (ratings, flags, labels, keywords, collections, virtual copies, supported develop settings; read-only pure-Rust SQLite incl. WAL) lightroom-catalog-import.md
Lightroom (cloud) library .lrlibrary native ⬜ cloud library format, local cache only
Write back to .lrcat native ⬜ (one-way migration by design)
Keyword lists (text) import / export ✅
GPX track logs ✅ ✅ crates/meta/src/gpx.rs
Export presets, metadata presets, filename templates ✅ (.lrtemplate) ✅ own JSON not interchangeable
Lightroom plug-ins (.lrplugin, .lrdevplugin) ✅ ⬜ see ecosystem in target-app-parity.md

Scores

Part Weight Ready for real work Kind
Standard image import / export 35% ~85% estimated (table above; missing: AVIF read, JXL / PSD write, lossy DNG)
Sidecars, metadata, presets 25% ~85% estimated
Lightroom catalog migration 25% ~50% estimated (one-way, approximate rendering of unsupported settings)
HDR, print, video output 15% ~35% estimated
Non-raw file formats 100% ~70% estimated; raw is in raw-parity.md (~50%)

Remaining: 30–55 h (AVIF decode 8–15 h if a permissive decoder is written or found; JXL encode 4–8 h; PSD write 4–8 h; lossy DNG and Render to DNG 4–8 h; HLG 3–5 h; catalog import depth 8–12 h).

Revision history

Date Change Summary
2026-10-10 major Created from the code and the installed Lightroom's document types