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-06-23canvas: fix playground boot command id (paged.file.new, not file.new)58dfeeb
- 2026-06-23canvas: open a blank document when the playground bridge boots67a5998
- 2026-06-23canvas: add CORP cross-origin so the docs playground iframe can load79aac8a
- 2026-06-23canvas: COEP credentialless so the docs playground can embed play.paged.media969edc4
- 2026-06-23canvas: iframe scripting bridge for the docs playground15efbd9
- 2026-06-23refactor: consume consolidated single-package plugins987d660
- 2026-06-22ci(cf-dns): use a dedicated CLOUDFLARE_DNS_TOKEN (Pages token lacks DNS scope)d14f852
- 2026-06-22ci: one-shot Cloudflare DNS records for the Pages custom domainsb191f99
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.