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 18 features · 100% green
| Feature | 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 | ◐ | ● | |
paged.draw bundle manifest (media.paged.draw) + activate skeletonplugin-draw.bundle-manifest | ● | ||
vectorGraphic edit context — live enter/exit via contribute.editContextplugin-draw.edit-context-live | ● | ||
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 | ● | ||
Headless conformance corpus over published canvas-wasmplugin-draw.headless-conformance | ● | ||
Live Corners — Rounded/Inverse/Bevel/Fancy/None presets via frameCornerOption*/Radius* + live marker (Tier B)plugin-draw.live-corners | ◐ | ● | |
Pen tool state machine (click/drag anchors, modifier matrix, close, commit)plugin-draw.pen-machine | ● | ||
Phase 4c pro path toolset — curvature/pencil/measure machines + simplify/join/average/offset/outline/pathfinder/gradient/arrowheads commandsplugin-draw.pro-path-toolset | ◐ | ● | |
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 | ◍ | ● |
Recent activity
- 2026-06-22build(publish): make draw packages publishable on npm (canary)13e1424
- 2026-06-22ci(cla): allowlist the maintainer (drietsch)fbccc45
- 2026-06-22ci(cla): add CLA Assistant check (sign once, org-wide)30718c4
- 2026-06-22chore(license): open plugin-draw under AGPL-3.0 OR PMEL6426280
- 2026-06-19fix(tools): deconflict pro-tool shortcuts with built-in editor tools77a16e5
- 2026-06-17docs(claude): reflect the bundle's verified editor-driven statedfe8156
- 2026-06-13test(conformance): flip B-20/B-21 path-ops to assert the v0.44.1 fixesdb9d02d
- 2026-06-13draw: SVG import + export (Phase 8) — the K-2 interchange round-trip6a37781
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.