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.
How it's built
web-model (pure source model + linter) + web-bundle (manifest, source panel,
sandboxed preview, render command).
Capability state
● shipped & verified · ◍ shipped, untested · ◐ partial · ✗ failing · · planned
Plugin · web 10 features · 80% green
| Feature | Renderer | Canvas | Shell | Panel | Web |
|---|---|---|---|---|---|
Bake to native content — flatten a rendered web frame/flow to Paged page items (IDML/PDF export path)plugin-web.bake-to-native | ◐ | ||||
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 | ● | ||||
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 | ● | ● | |||
Flow/render readout — the last render/flow/bake outcome in the source panelplugin-web.render-readout | · | ● | |||
WebFrameSource model + metadata envelope + diagnostics linterplugin-web.source-model | ● | ||||
Source panel — HTML/CSS editors, sandboxed preview, options, diagnosticsplugin-web.source-panel | ● | ● |
Recent activity
- 2026-08-18web: 0.1.0-canary.6 — carry the accumulated main onto the canary lane560eea3
- 2026-08-17ci: build the Blitz engine wasm in the vitest lane — real boots fail-not-skipbebb276
- 2026-08-08chore(deps): dev-pin the plugin contract at 0.2.30-canary.09300756
- 2026-08-07ADR 024: the webFrame context declares its surfaceda52eb5
- 2026-08-06deps: the contract becomes a PEER — stop nesting a second copy of itf0c7a7d
- 2026-08-06deps: contract pins -> 0.2.29-canary.0 (the protocol-61 wire)a4aa67f
- 2026-08-03feat: .html file importer — File▸Open/drag-drop an HTML file into a web frame (+canary.3)e5706da
- 2026-08-03feat(bundle): flow/render readout in the source panel + canary.27be030a
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.