Go to file
Brandon Thomas b070cc343c M6.2: IDML import/export
New crate designcraft-idml (L3, zip + quick-xml): export_idml/import_idml for
swatches (process/spot CMYK/RGB/Lab, tints, gradients), paragraph/character/
object styles with BasedOn and groups, fonts, preferences, layers, sections,
parent spreads, spreads/pages (spine/centre origin mapping), frames, groups,
corner options, wrap, transparency, embedded/linked images, formatted stories
with special characters, breaks and threading. Engine commands
file.exportIdml / file.openIdml, file.open/openBytes dispatch on IDML, CLI
--in/--export .idml, File > Export IDML..., open dialogs accept .idml.
Verified black-box in InDesign 2026 (exported files open with correct pages,
stories, threads, styles, swatches; InDesign-exported IDML imports).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:03:28 -04:00
.cargo first commit 2026-10-01 09:13:29 -04:00
apps M6.2: IDML import/export 2026-10-01 12:03:28 -04:00
assets/fonts continued work 2026-10-01 09:36:32 -04:00
crates M6.2: IDML import/export 2026-10-01 12:03:28 -04:00
docs M1.9: MCP server (designcraft-mcp) + designcraft-cli mcp 2026-10-01 11:07:01 -04:00
xtask M0: engine, tools, egui UI, desktop app, CLI, sample document, docs 2026-10-01 10:39:15 -04:00
.gitignore M1.7/M2: align & distribute, Pen tool, Direct Selection anchor/handle editing 2026-10-01 10:51:17 -04:00
AGENTS.md M0: engine, tools, egui UI, desktop app, CLI, sample document, docs 2026-10-01 10:39:15 -04:00
ASSETS.md M0: engine, tools, egui UI, desktop app, CLI, sample document, docs 2026-10-01 10:39:15 -04:00
CLAUDE.md M0: engine, tools, egui UI, desktop app, CLI, sample document, docs 2026-10-01 10:39:15 -04:00
Cargo.lock M6.2: IDML import/export 2026-10-01 12:03:28 -04:00
Cargo.toml M6.1: native .designcraft zip format (document.json + raw assets, versioned; legacy JSON still opens) 2026-10-01 11:49:53 -04:00
LICENSE-APACHE first commit 2026-10-01 09:13:29 -04:00
LICENSE-MIT first commit 2026-10-01 09:13:29 -04:00
NOTICE M0: engine, tools, egui UI, desktop app, CLI, sample document, docs 2026-10-01 10:39:15 -04:00
README.md M6.2: IDML import/export 2026-10-01 12:03:28 -04:00
ROADMAP.md M6.2: IDML import/export 2026-10-01 12:03:28 -04:00
rustfmt.toml first commit 2026-10-01 09:13:29 -04:00

README.md

DesignCraft

Page layout and publishing, rebuilt in pure Rust.
A fast, open-source, clean-room take on the Adobe InDesign workflow — native on macOS, Windows and Linux, and in the browser via WebAssembly.
By the ArtCraft team.

DesignCraft showing a magazine spread: a threaded three-column story is selected with its in/out ports and thread line, the Control panel shows its position in picas and the Properties panel its text frame options
Quarterly — Spring Issue: threaded three-column body text, a wrapped pull quote, parent-page folios, all set by DesignCraft's own paragraph composer.

Magazine cover with a generated dusk landscape and a large serif headline

Cover: full-bleed graphic frame, display type

Feature opener with kicker, headline, deck, photo, caption and two-column justified text

Styles: kicker rule, headline, deck, justified body

Three-column page with text wrapping around a shaded pull quote

Threading, columns and text wrap

Every page above was laid out by DesignCraft from code (crates/engine/src/sample.rs) and exported by its own renderer — try it with File → New → Sample Document or --sample.

Why DesignCraft

  • Familiar. InDesign's layout, tools, menus, panels and shortcuts: spreads and parent pages, frames and threaded stories, the Control panel, paragraph and character styles, swatches, text wrap… you already know how to use it.
  • Beautiful type. A Knuth–Plass paragraph composer (plus single-line), hyphenation, justification, columns, baseline grid, keeps, tabs, rules and shading — and identical line breaks on screen and in export.
  • Fast. Multithreaded SIMD rendering (vello_cpu), copy-on-write documents with O(1) undo snapshots, cached composition.
  • Open. A documented native format, IDML import/export, PNG export, and PDF on the roadmap — no subscription, no licence server, no telemetry.
  • Agent-native. Every menu item, tool gesture, panel control and dialog is drivable over a JSON control channel and an MCP server, so Claude and other agents can lay out and edit documents like a designer.
  • Everywhere. One Rust codebase for desktop and the web.

Quick start

cargo run --release -p designcraft                         # desktop app (start screen)
cargo run --release -p designcraft -- --sample             # open the sample magazine
cargo run --release -p designcraft -- --sample --control 7979   # + JSON control channel
cargo run --release -p designcraft-cli -- run --sample --all-pages out/       # headless: render every page to PNG
cargo run --release -p designcraft-cli -- commands         # list every command
cargo xtask ci                                             # fmt, clippy, tests, assets, layering, wasm

Drive a running app: send JSON lines to 127.0.0.1:7979 — see docs/control-protocol.md.

Web

cd apps/designcraft-web && trunk build --release          # → dist/web (serve it with any static server)
cd apps/designcraft-web && trunk serve --release          # http://127.0.0.1:8767

Needs trunk and the wasm32-unknown-unknown target. The same app runs through eframe's web runner on WebGPU, falling back to WebGL2 (?webgl forces it; ?sample opens the sample magazine). Open and Place use the browser's file picker (dropping files works too); Save and Export download the file. The web build has no control channel.

Architecture

An engine-first Cargo workspace with enforced layering (cargo xtask layers); the egui frontend is a separate crate, so the UI can be swapped without touching the engine.

Layer Crates
L0 geom (paths, units & measurement parsing, corner options) · color (CMYK/RGB/Lab, swatches, tints, gradients)
L1 doc (spreads, pages, parents, layers, frames, stories, styles) · fonts (font DB, shaping, outlines)
L2 compose (the text engine)
L3 render (vello_cpu)
L4 tools (pointer events → commands + overlays)
L5 engine (session, history, command registry)
L6 ui-egui (InDesign-style UI, control channel)
L7 apps/designcraft, apps/designcraft-cli, apps/designcraft-web

Status and milestones: ROADMAP.md. Contributor and agent rules (clean-room, asset policy, quality gates): AGENTS.md. Every bundled asset is listed with its licence in ASSETS.md.

Crafting Apps

Open-source, pure-Rust, clean-room creative tools — each engine-first, cross-platform, WASM-ready and fully agent-drivable.

PhotoCraft Layered raster image editor in the spirit of Photoshop — high-bit-depth pipeline, adjustment layers, brushes, PSD round-trip.
DrawCraft Vector illustration in the spirit of Illustrator — Pen, Pathfinder, live effects, type, SVG/PDF.
DesignCraft Page layout in the spirit of InDesign — spreads, threaded stories, styles, a Knuth–Plass composer. (you are here)
FilmCraft Non-linear video editor in the spirit of Premiere Pro — timeline editing, effects, and export.
LightCraft Photo library and non-destructive raw developer in the spirit of Lightroom — local-first catalog, wide-gamut float pipeline.
PrintCraft PDF viewer and editor in the spirit of Acrobat — rendering, forms, annotations, and document tools.

License

MIT OR Apache-2.0. Bundled fonts are OFL; all icons are drawn in code and are original. Per-asset attribution: ASSETS.md (see also NOTICE).

DesignCraft is an independent project and is not affiliated with or endorsed by Adobe. "Adobe", "InDesign", "Illustrator", "Photoshop", "Premiere Pro", "Lightroom" and "Acrobat" are trademarks of Adobe Inc., used here only to describe compatibility and workflow familiarity.