● WASM Playground — skeleton

Drop a .docx. The engine runs here.

Same Rust core, compiled to wasm32-unknown-unknown, running in your browser. No upload, no server: the bytes never leave the tab.

Engine loading

Drop your file here

The interactive shell is being wired to the engine build. This page is the skeleton: the drop zone and its contract are real, the render is not yet.

The zone above is a placeholder, not a broken control: it accepts no files yet and never claims to have rendered one.

What the playground will do

Input A local .docx, read in-tab with the File API. Nothing is uploaded.
Engine The shells/web wasm build — a thin adapter over the same core the CLI uses, streamed on first load with progress reported.
Output Line-break points and page splits from the real layout pass: shaped advances against real font metrics, Knuth-Plass breaks, pagination per sectPr geometry.
Editing An invisible caret at the engine's caret rectangle, so text entered through an IME lands where the engine thinks the cursor is and reflows incrementally.
Budget First wasm payload stays under its gzip budget in CI; the collaboration layer is a separate deferred chunk.

Status

Not interactive yet. The engine work behind it — dual-target build, bundle split, size gate, caret contract — has landed; wiring the drop zone to a live render is a separate task. Until then, mail [email protected] for a build to try.