mirror of
https://github.com/storytold/designcraft.git
synced 2026-10-14 19:27:07 -04:00
Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#355)
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, and feature, format, hardware, UI and localization parity docs. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
92649ffdb0
commit
a127c6d5c3
19 files changed
+1513
-231
No files matched your search
@@ -0,0 +1,110 @@
|
||||
# File format parity
|
||||
|
||||
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-10 · **Change:** major (first version: every format InDesign 2026 declares, measured against the code) · **Target:** Adobe InDesign 2026 (21.6)
|
||||
|
||||
Every format InDesign 2026 reads or writes, with DesignCraft's support, fidelity and tests. The
|
||||
InDesign list comes from its bundle's `Info.plist` (`CFBundleDocumentTypes`,
|
||||
`UTExportedTypeDeclarations`), its import/export filter folder names and its File menus; ours from
|
||||
the open/place/export filters in `apps/designcraft/src/main.rs` and the `file.*` commands.
|
||||
Overall numbers: [target-app-parity.md](target-app-parity.md); open problems: [gaps.md](gaps.md).
|
||||
|
||||
**Dimension score: ~40% ready (estimated), 150–250 h + 20–60 h for INDD integration.** The
|
||||
single largest gap is that `.indd` can't be opened.
|
||||
|
||||
Read/Write: **✓** supported · **~** partial · **✗** missing · **—** InDesign doesn't either.
|
||||
Weight: what share of an InDesign professional's file traffic the format carries (used for the
|
||||
score below).
|
||||
|
||||
## Documents and interchange
|
||||
|
||||
| Format | Ext | InDesign | DesignCraft read | DesignCraft write | Fidelity / tests | Weight |
|
||||
|---|---|---|---|---|---|---|
|
||||
| InDesign document | `.indd` | read/write (native) | ✗ (#21; converters proposed in #98, #114) | ✗ | — | 30% |
|
||||
| InDesign template | `.indt` | read/write | ✗ | ✗ | — | 2% |
|
||||
| InDesign Markup | `.idml` | read/write | ✓ | ✓ | Synthetic fixtures in `crates/idml/src/tests.rs` (49 tests); exported files verified by opening in InDesign 2026 by hand; indd-utils' 98-document run imports 811 spreads / 2,866 stories / 5,812 items. Open: #193, #338, #339, #340, #211. No real-file corpus test | 20% |
|
||||
| DesignCraft native | `.designcraft` | — | ✓ | ✓ | zip + JSON, versioned; round-trip tests | — |
|
||||
| InDesign book | `.indb` | read/write | ✗ (own `.dcbook`) | ✗ | Books are shallow (see gaps.md) | 2% |
|
||||
| InDesign library | `.indl`, `.inlx` | read/write | ✗ (own `.dclib`) | ✗ | | 1% |
|
||||
| Snippet | `.idms` | read/write | ✗ (own snippets) | ✗ | | 1% |
|
||||
| InCopy story / assignment | `.icml`, `.icma`, `.incx`, `.inca` | read/write | ✗ | ✗ | InCopy workflow out of scope; ICML story import would still help | 1% |
|
||||
| InDesign Interchange (legacy) | `.inx` | read | ✗ | — | | <1% |
|
||||
| PageMaker | `.pmd`, `.p65`, `.t65`, `.pmt` | read | ✗ | — | | <1% |
|
||||
| QuarkXPress | `.qxd`, `.qxt` | read (old versions) | ✗ (#73) | — | | <1% |
|
||||
|
||||
## Output
|
||||
|
||||
| Format | Ext | InDesign | DesignCraft | Fidelity / tests | Weight |
|
||||
|---|---|---|---|---|---|
|
||||
| PDF (print) | `.pdf` | ✓ all presets, PDF/X-1a/3/4, PDF/A, PDF/UA | ✓ krilla: real text with subset fonts, DeviceCMYK/RGB, spot Separations, bleed/slug, marks, spreads, compression options, remembered settings (#196); **PDF/X-4** with output intent and a validator (#223, #200); **PDF/A-2b**; tagged PDF | 53 tests in `crates/pdf`; no PDF/X-1a or X-3 (needs flattening to PDF 1.3/1.4); no presets / `.joboptions`; no external validator (veraPDF / callas) in CI | 18% |
|
||||
| PDF (interactive) | `.pdf` | ✓ | ✓ links, bookmarks, buttons, AcroForm fields, page transitions, object states | | 2% |
|
||||
| JPEG / PNG | `.jpg`, `.png` | ✓ | PNG from the UI; JPEG from the CLI only | no resolution / colour space options dialog for JPEG | 3% |
|
||||
| EPUB reflowable | `.epub` | ✓ | ✓ stories in article order, CSS from styles, images, nav | | 2% |
|
||||
| EPUB fixed layout | `.epub` | ✓ (live HTML/CSS) | ~ page images with text kept for search | not live text | 1% |
|
||||
| HTML | `.html` | ✓ | ~ one self-contained page (#314) | | 1% |
|
||||
| HTML5 ZIP / Publish Online | | ✓ | ✗ (Publish Online out of scope) | | <1% |
|
||||
| SVG export | `.svg` | ✓ (via plug-in) | ✗ | | <1% |
|
||||
| EPS export | `.eps` | ✓ | ✗ | | <1% |
|
||||
| Text Only / RTF / Tagged Text | `.txt`, `.rtf` | ✓ | ✓ (`file.exportText` txt, rtf, tagged) | | 1% |
|
||||
| XML | `.xml` | ✓ | ✓ export and import, DTD validate | depth unmeasured | 1% |
|
||||
| Print / PostScript | | ✓ printers, PPDs, separations | ~ PDF to `lpr` (no Windows, no PostScript) | | 3% |
|
||||
| Package | folder | ✓ fonts, links, IDML, PDF, report | ✓ (#340: IDML inside links to absolute paths) | | 2% |
|
||||
|
||||
## Placed and imported content
|
||||
|
||||
| Format | Ext | InDesign | DesignCraft | Notes | Weight |
|
||||
|---|---|---|---|---|---|
|
||||
| PDF / AI (PDF-compatible) | `.pdf`, `.ai` | ✓ page boxes, layers, pages | ✓ rendered with hayro, embedded as vector in PDF export, crop to page boxes | layer visibility depth; editable vectors not offered (#227) | 3% |
|
||||
| JPEG, PNG, GIF, BMP, WebP | | ✓ | ✓ | CMYK JPEG/TIFF keep inks in PDF (#35) | 2% |
|
||||
| TIFF | `.tif` | ✓ incl. CMYK, alpha, paths | ✓ incl. CMYK | clipping paths from 8BIM resources unverified | 1% |
|
||||
| PSD | `.psd` | ✓ layers, comps, alpha, paths | ~ composite + Object Layer Options | layer comps partial | 1% |
|
||||
| EPS | `.eps` | ✓ (PostScript) | ~ preview only (no interpreter) | | <1% |
|
||||
| SVG | `.svg` | ✓ | ✓ (usvg) | | <1% |
|
||||
| HEIC | `.heic` | ✓ | ✗ | | <1% |
|
||||
| Word | `.docx` | ✓ styles, footnotes, tables, track changes, options | ✓ styles by name, footnotes, tables, tabs, breaks, moved text (#257), style mapping and conflicts | `.doc` not supported (InDesign reads it) | 2% |
|
||||
| RTF | `.rtf` | ✓ | ✓ | | <1% |
|
||||
| Excel | `.xlsx`, `.xls` | ✓ | ~ `.xlsx` first sheet's used range | no sheet/range options; `.xls` ✗ | <1% |
|
||||
| Plain text, Markdown | `.txt`, `.md` | ✓ (txt) | ✓ | | <1% |
|
||||
| InDesign Tagged Text | `.txt` | ✓ | ✓ import and export | | <1% |
|
||||
| CSV / TSV (Data Merge) | | ✓ | ✓ (+ Excel) | | <1% |
|
||||
| Audio / video | `.mp4`, `.mp3`, … | ✓ placeholders for EPUB/PDF | ~ placed as media objects | no in-app playback | <1% |
|
||||
|
||||
## Resources and settings
|
||||
|
||||
| Format | Ext | InDesign | DesignCraft |
|
||||
|---|---|---|---|
|
||||
| Adobe Swatch Exchange | `.ase` | read/write | ✓ load and save |
|
||||
| Colour books | `.acb` | read (17 libraries ship) | ✗ (licensed libraries; Pantone etc. out of scope, own libraries possible) |
|
||||
| ICC profiles | `.icc`, `.icm` | read | ✓ |
|
||||
| Colour settings | `.csf` | read/write | ✗ |
|
||||
| PDF presets | `.joboptions`, `.pdfs` | read/write | ✗ |
|
||||
| Print / flattener / document presets | `.prst`, `.flst`, `.dcst` | read/write | ✗ |
|
||||
| Preflight profiles | `.idpp` | read/write | ✗ (own profiles in the document) |
|
||||
| Keyboard shortcut sets | `.indk` | read/write | ✗ (own JSON) |
|
||||
| User dictionary | `.udc` | read/write | ✗ (own, in the document and prefs) |
|
||||
| Fonts | OTF, TTF, TTC, variable | ✓ | ✓ (Type 1 retired by both) |
|
||||
|
||||
## Score
|
||||
|
||||
Weighted by the Weight column (documents, output and placed tables; resources unweighted),
|
||||
counting ✓ = 1, ~ = 0.5, and IDML at 0.6 until a real-file corpus proves it: **~45% present**.
|
||||
Taking fidelity into account (no INDD, IDML unproven, PDF/X-1a and presets missing), **~40% ready
|
||||
for real work** (estimated). INDD alone moves this dimension by up to 30 points.
|
||||
|
||||
## Remaining effort
|
||||
|
||||
| Work | Opus 5.5 h |
|
||||
|---|---|
|
||||
| INDD import via a clean-room converter (owner decision, #114) | 20–60 |
|
||||
| IDML real-file corpus, metric, fixes (#193, #338, #339, #340) | 60–100 |
|
||||
| PDF/X-1a and X-3 (transparency flattener), PDF presets and `.joboptions`, external validator | 40–70 |
|
||||
| Print path (Windows, PostScript level 3 output or system print APIs) | 25–45 |
|
||||
| ICML story import, IDMS snippets, INDT templates (once INDD reads) | 15–25 |
|
||||
| HTML / fixed-layout EPUB with live text | 20–35 |
|
||||
| JPEG export dialog, SVG export, EPS export | 10–20 |
|
||||
| **Total** | **190–355** (150–250 excluding INDD and PostScript output) |
|
||||
|
||||
## Revision history
|
||||
|
||||
| Date | Change | Summary |
|
||||
|---|---|---|
|
||||
| 2026-10-10 | major | Created from InDesign 2026's declared document types and filters, `plan/indesign/08-file-formats.md` and the code |
|
||||
Reference in new issue
Block a user