editor — the editing frontend
The commercial desktop-publishing frontend — a React shell driving the engine wasm in a Web Worker on an OffscreenCanvas, with panels, gestures, scripting, and plugin integration.
In short editor is the commercial app — full document editing on top of the
engine. A React shell talks to the engine wasm
running in a Web Worker that renders to an OffscreenCanvas, with a
SharedArrayBuffer carrying camera and gesture state for real-time interaction.
What it does
- Full editing: insert/delete frames, edit text, apply paragraph/character/object styles, transform with gestures (translate, rotate, scale, shear).
- A panel system (properties, styles, swatches, layers, pathfinder, …), a command
palette, and a
paged.*script editor + REPL. - Hosts the content plugins — draw, image, sheets, web, data — through the Plugin SDK.
How it's organized
A pnpm workspace: apps/canvas (the app), packages/client (the wasm boundary —
the CanvasClient, the wire protocol + PROTOCOL_VERSION, the SAB primitives),
packages/shell (state, registries, dockview substrate, theme), packages/catalog
(declarative commands/panels), and packages/ui (input primitives).
How it consumes the engine
It pins the published @paged-media/canvas-wasm + introspect-wasm at a wire
protocol version — pnpm install is enough to build, no core checkout. The
render architecture and fidelity suite are covered under
testing.
Recent activity
- 2026-07-26test(journey): poll for the render change instead of sampling once (#17)9cb1cee
- 2026-07-25ci: upload playwright results as an artifact instead of the private state action (#16)b0301d6
- 2026-07-23feat(plugins): load the paged.pdf plugin — image pages (P0) + editable text (P1) (#14)db1f73b
- 2026-07-23test(export): migrate IDML specs off the removed static target (ADR-022 Phase 5)12f825d
- 2026-07-23chore: lock @paged-media/publish@0.1.0-canary.0 (now published)97f44cb
- 2026-07-23feat(export): IDML import/export via the paged.publish plugin (ADR-022 Phase 5)87204a7
- 2026-07-23feat(plugins): inject the host.nativeDocument backend (ADR-022 Phase 3)4c34149
- 2026-06-28Override esbuild to >=0.28.1 to close dev-server path traversal20f200e
core — the render engine
The Rust render engine that parses and renders IDML — the parse→scene→text→compose→GPU pipeline, the wasm boundary, and the dual rasterization backends.
editor-server — the backend
The TypeScript REST backend for the editor — Fastify + SQLite/Drizzle + better-auth + Stripe — handling accounts, storage, billing, asset proxies, and headless document automation.