paged.web — HTML/CSS
The web-content plugin — author HTML/CSS as a content type, with a sandboxed preview and on-canvas rendering via a Blitz/WASM lowering to the engine's scene layer.
In short paged.web lets HTML/CSS be a content type inside a paged document.
You author source in a panel, see a sandboxed preview, and the frame renders
on-canvas through a Blitz/WASM lowering to the engine's scene layer (falling back
to the sandboxed preview when the wasm isn't available).
What it does
- A source lane: author HTML/CSS with a diagnostics linter (page JS never
executes —
<script>is flagged as an error by policy). - A deterministic template pass (
{{name}}+ a pure-filter whitelist). - On-canvas vector rendering via the
web-rendercrate (Blitz/WASM → scene layer), with font bytes supplied through the capability-gated asset store. - Persists the source into the
.pagedcontainer. - In development: editing a web frame's text in place, flowing web content across threaded frames with break rules, web fonts on the canvas, bound data in templates, layout parity checked against Chrome, and web frames as typed objects (the object model).
How it's built
web-model (pure source model + linter) + web-bundle (manifest, source panel,
sandboxed preview, render command).
Capability state
● shipped & verified · ○ shipped, re-test pending · ◍ shipped, untested · ◐ partial · ✗ failing · · planned
Plugin · web 22 features · 100% green
| Feature | Renderer | Canvas | Panel | Web |
|---|---|---|---|---|
Canvas follows the documentplugin-web.auto-render | ● | |||
Bake to native content — flatten a rendered web frame/flow to Paged page items (IDML/PDF export path)plugin-web.bake-to-native | ◐ | |||
Layout parity with Chrome (recorded oracle)plugin-web.chrome-parity | ● | |||
Bound data in templatesplugin-web.data-binding | ● | |||
On-canvas vector rendering of web frames (Blitz/WASM → C-1 sceneLayer lane)plugin-web.engine-rendering | ● | ● | ● | |
Flow fragmentation — re-line-break one flow across N frames (ADR-020 ladder)plugin-web.flow-fragmentation | ● | |||
Flow threading — one web source across a chain of publication framesplugin-web.flow-threading | ● | |||
.html file importer — File/Open + drag-drop an HTML file into a web frameplugin-web.html-importer | ● | |||
In-frame text editingplugin-web.in-frame-edit | ● | |||
Insert web frame (one undo step, frame + source metadata)plugin-web.insert-command | ● | ● | ||
Source persistence in the document (IDML round-trip, foreign-open safe)plugin-web.metadata-persistence | ● | ● | ||
Object model — web frames, their HTML and CSS properties addressable through host.objectsplugin-web.object-model | ● | |||
Outline and canvas highlightplugin-web.outline-canvas | ● | |||
Overflow policiesplugin-web.overflow-policies | ● | |||
Break rules and @page in flowsplugin-web.page-breaks | ● | |||
Host undo reaches panel editsplugin-web.panel-undo | ● | |||
Work counters and count budgetsplugin-web.perf-budgets | ● | |||
Flow/render readout — the last render/flow/bake outcome in the source panelplugin-web.render-readout | ● | ● | ||
Sub-resources from the document onlyplugin-web.resources | ● | |||
WebFrameSource model + metadata envelope + diagnostics linterplugin-web.source-model | ● | |||
Source panel — HTML/CSS editors, sandboxed preview, options, diagnosticsplugin-web.source-panel | ● | ● | ||
Web fonts and faces on the canvasplugin-web.web-fonts | ● |
Recent activity
- 2026-10-18README: moved to paged-media/paged (modules/web) [skip ci]c64c980
- 2026-10-17Merge pull request #8 from paged-media/perf/wasm-size-profilea6369f7
- 2026-10-17docs: engine wasm size and the build-profile perf recordea43105
- 2026-10-17web-render: ship the engine wasm with fat LTO; 9 MiB size gate; 0.1.0-canary.18bf523c1
- 2026-10-16Merge pull request #7 from paged-media/fix/document-faces-on-open35a5308
- 2026-10-15web-bundle: keep the faces a bake gives the document, give them back on open; 0.1.0-canary.1768a5a68
- 2026-10-15test: the faces a bake gave the document come back on openfa1c303
- 2026-10-14Merge pull request #6 from paged-media/fix/font-doordc94b0b
paged.draw — vector
The vector drawing plugin — pen and path tools, pathfinder booleans, live corners, stroke/fill, and SVG import/export, rendered on-canvas through the engine's vector scene layer.
paged.image — raster
The raster-image plugin — a Rust/WASM pipeline of GPU kernels with PSD round-trip, dual processing engines, color management, and in-editor ingest into the engine's image scene layer.