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.
In short paged.draw brings Illustrator-class vector editing into paged — a
pen tool with anchor editing, curvature/pencil tools, a shape builder, pathfinder
booleans, live corners, and SVG round-trip — all rendered on-canvas via the
engine's vector scene-layer surface.
What it does
- Pen / anchor editing (add/delete/convert), curvature and pencil tools, shape builder, select-same.
- Stroke / fill panels, dash presets, path ops, live corners, gradient annotation.
- A
vectorGraphicedit context (double-click into a focused anchor toolset). - SVG import + export (the interchange round-trip).
How it's built
A host-agnostic core (draw-geometry pure math, draw-tools state machines)
plus a draw-bundle (manifest + activate + React panel) — the
incubate-then-extract pattern. Tested as unit suites and an end-to-end editor
journey.
Capability state
● shipped & verified · ◍ shipped, untested · ◐ partial · ✗ failing · · planned
Plugin · draw 39 features · 53% green
| Feature | Renderer | Mutation | Canvas | Shell | API | Draw |
|---|---|---|---|---|---|---|
Add-anchor plan (split segment at on-curve click)plugin-draw.anchor-add | ◍ | ● | ||||
Convert-anchor plan (corner ↔ smooth)plugin-draw.anchor-convert | ◍ | ● | ||||
Delete-anchor plan (nearest within tolerance, contour floor)plugin-draw.anchor-delete | ◍ | ● | ||||
Appearance model — multi fill/stroke metadata stack + baked top layer (Tier B)plugin-draw.appearance | ◐ | ● | ||||
Appearance panel v0 — the metadata stack, with the bake limit stated in the UIplugin-draw.appearance-panel | ◍ | ◐ | ||||
Blends v1 — three spacing modes over a real spine (grew the tool-wave-2 blend v0)plugin-draw.blends | ◍ | ◐ | ||||
Brush tools v0 — paintbrush, blob brush, eraser (calligraphic nib sweep)plugin-draw.brush-tools | ◍ | ◍ | ||||
paged.draw bundle manifest (media.paged.draw) + activate skeletonplugin-draw.bundle-manifest | ● | |||||
Compound paths — make / release, with real non-zero holesplugin-draw.compound-paths | ◍ | |||||
On-canvas corner-radius tool — the live-corners row's predicted handleplugin-draw.corner-radius-tool | ● | |||||
vectorGraphic edit context — live enter/exit via contribute.editContextplugin-draw.edit-context-live | ● | |||||
Eyedropper — sample element properties and apply to the selectionplugin-draw.eyedropper | ◍ | ◍ | ||||
Fill panel as a declarative schema panel — the second W3.1 consumer, with a published bindingplugin-draw.fill-schema-panel | ◍ | ◍ | ||||
Cubic bezier kernel — de Casteljau split, eval, closest-t, flattenplugin-draw.geometry-bezier | ● | |||||
Anchor/handle math — corner, mirror, smooth-from-drag, angle constrain, affineplugin-draw.geometry-handles | ● | |||||
RDP polyline simplification + perpendicular segment distanceplugin-draw.geometry-rdp | ● | |||||
Graphic styles — a named, LINKED complete appearance with override DETECTIONplugin-draw.graphic-styles | ◍ | ◍ | ||||
Headless conformance corpus over published canvas-wasmplugin-draw.headless-conformance | ● | |||||
Image Trace v0 — raster to editable vector over visioncortexplugin-draw.image-trace | ◐ | |||||
Layers BINDING PROVIDER — paged.draw serves the HOST Layers panel (ADR 023 phase D)plugin-draw.layers-binding-provider | ◍ | ◍ | ||||
Layers panel — the panels/layers.panel.json prototype made real (expert-leaf React)plugin-draw.layers-panel | ◍ | |||||
Live Corners — Rounded/Inverse/Bevel/Fancy/None presets via frameCornerOption*/Radius* + live marker (Tier B)plugin-draw.live-corners | ◐ | ● | ||||
Live Paint v0 — regenerable face paint over the planar arrangement (NOT live)plugin-draw.live-paint | ◐ | ◐ | ||||
Measure readout drawn on-canvas via the overlay text primitiveplugin-draw.measure-overlay-text | ◍ | ◐ | ||||
Objects on a Path — distribute / align / pivot / reorder by TRANSFORM; it moves your objects and creates noneplugin-draw.objects-on-path | ◍ | ◐ | ||||
Opacity-mask commands — the paged.draw consumer of the C-28 protocol-58 doorplugin-draw.opacity-mask-commands | ◍ | |||||
True Join — closePath / joinPaths over the v56 engine opsplugin-draw.path-weld | ◍ | ◍ | ||||
Pattern editing v1 — a re-editable tile field (step-and-repeat artwork, NOT a pattern swatch)plugin-draw.pattern-bake | · | ◐ | ||||
Pen tool state machine (click/drag anchors, modifier matrix, close, commit)plugin-draw.pen-machine | ● | |||||
Pressure-aware pencil — variable-width strokes via outlineStrokeVariableplugin-draw.pencil-pressure | ● | |||||
Phase 4c pro path toolset — curvature/pencil/measure machines + simplify/join/average/offset/outline/pathfinder/gradient/arrowheads commandsplugin-draw.pro-path-toolset | ◐ | ● | ||||
Repeats v1 — radial / grid / mirror, and the repo's first ONE-undo buildplugin-draw.repeats | ◍ | ◐ | ||||
Select-same by fill / stroke / stroke-weight (Tier A — pure selection, no mutation)plugin-draw.select-same | ● | |||||
Shape Builder gesture tool — drag-unite / Alt-drag-subtract over pathfinderBoolean (Tier B)plugin-draw.shape-builder | ◐ | ● | ||||
Stroke dash-pattern command presets (Solid/Dashed/Dotted/DashDot)plugin-draw.stroke-dash-commands | ◍ | ● | ||||
Stroke panel as a declarative schema panel (W3.1 adoption)plugin-draw.stroke-schema-panel | ● | |||||
SVG import + export — the K-2 interchange round-trip (Phase 8)plugin-draw.svg-io | ◍ | ● | ||||
Symbols v0 — a named artwork DEFINITION and instances that follow itplugin-draw.symbols | ◐ | |||||
Width, blend, lasso-select, parent-group cycling, parametric generatorsplugin-draw.tool-wave-2 | ◍ | ◍ |
Recent activity
- 2026-08-19chore: adopt the 100 MB app-wide wasm budget4199431
- 2026-08-18draw: panel titles drop the hand-typed "(draw)" — provenance is the host's job (0.1.0-canary.9)de785a4
- 2026-08-09ci: draw-bundle brings its own engine — 41 conformance specs were failing in CI20d6c70
- 2026-08-09draw: fix the cast CI caught — an ElementId is not a stringede9de3
- 2026-08-09chore(release): 0.1.0-canary.8 — the C-23 guards are shipped source13206c3
- 2026-08-08draw: the C-23 and C-26 pins FIRED — update them to assert the fixes40c25f3
- 2026-08-07draw: the C-26 pin will flip on the next wasm bump — say so at the pina6cbbba
- 2026-08-06deps: the contract becomes a PEER — stop nesting a second copy of it53d94c4
Plugins
The five first-party content plugins that extend paged beyond native IDML — vector drawing, web content, raster images, spreadsheets, and database publishing — all built on the Plugin SDK.
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.