Learning in public — this reference is being written in the open. Unfinished pages are excluded from search engines.
paged.IDML Reference
The Paged PlatformPlugins

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.

Tier: BeginnerBeginnerIexplanation

In short plugins add new kinds of content to a paged document. The five first-party plugins are built on the same Plugin SDK contract any third party uses — they're the worked examples. Each renders into the document through the engine's scene-layer surfaces and persists into the .paged container.

  • paged.drawvector drawing (pen, paths, pathfinder, SVG I/O).
  • paged.webHTML/CSS as a content type.
  • paged.imageraster processing + PSD round-trip (Rust/WASM, GPU kernels).
  • paged.sheeta spreadsheet engine with print-grade layout (Rust/WASM, XLSX round-trip).
  • paged.datadatabase publishing + automation (Rust/WASM, DuckDB).

Plus plugin-template — the fork-and-go starter.

Plugin capability state

The live status of each plugin's capabilities, from the registry:

shipped & verified · shipped, untested · partial · failing · · planned

Plugin · data 18 features · 100% green

FeatureShellData
Print automation / batch generation (per-record / per-group / one catalog)
data.automation.batch
Barcode / QR symbologies — clean-room EAN-13/UPC-A, Code-128, QR encoders + binding + VECTOR lowering (§9.7)
data.barcode.symbology
Change-highlighting on refresh — per-binding "what changed since last sync" report (§8)
data.bind.change-report
Binding + synchronization engine — resolution graph, sync states, identity diff
data.bind.engine
Field-mapping wizard — map source columns → variable bindings one-click (§9)
data.bind.field-mapping
Record-preview stepper — resolve a binding against a chosen record index N (§9)
data.bind.preview-step
Binding-expression DSL — lexer/parser/eval + 42 functions, registry-driven dispatch
data.expr.engine
Governed-extract source (governed tables + optional metadata sidecar -> catalog)
data.governed.extract
Locale-aware display formatting (en/de v1)
data.i18n.display
Placeholder lowering — variable replacement + single-region dynamic table
data.lower.content
v43 lowering consumers — in-text variables (D-01), image place (D-14), live record-flow (D-12), rules (D-13)
data.lower.v43-consumers
Performance gates (§12.5) — engine-tier perf assertions
data.perf.gates
paged.data bundle (media.paged.data) — manifest + activate + 3 panels + DuckDB query glue
data.plugin.bundle
Register as an SDK data provider (publish RecordSet to other consumers, e.g. sheets)
data.provider.contract
Query engine (DuckDB-WASM) + RecordSet shape/order/hash — the Arrow seam
data.query.seam
Capability-gated data access + threat model (the suite's largest surface)
data.security.gates
Source adapters (inline + file at M0) + capability/consent gate + visible manifest
data.source.adapters
D-11 DB attach (SQLite/Postgres/MySQL) + DuckDB-WASM first-class engine + refresh-policy + remote
data.source.db-attach

Plugin · image 28 features · 100% green

FeatureShellImage
CMS display lane — qcms RGB↔RGB (the exact build core ships, page/editor agree)
image.cms.display
CMS behind the swappable CmsEngine seam (D-11: hybrid)
image.cms.engine
CMS print lane — moxcms per-intent RGB↔RGB + CMYK8→RGBA8 ingest
image.cms.print
AVIF / JXL / camera-RAW / HEIC — codec verdicts (deferred + explicit non-goals)
image.codec.avif
·
EXIF/TIFF read — orientation + DPI + color-space tag, auto-orient at ingest
image.codec.exif
Codec adapter contract (ImageSource/ImageTarget over sans-IO ByteSource) + PNG + raw
image.codec.traits
Conformance harness — scalar references, gpu↔ref parity, fixture corpus
image.conformance.harness
Auto-enhance — gray-world WB + percentile auto-levels params from the panel histogram
image.editor.auto-enhance
Editor crop + straighten tool — host-agnostic crop machine over the geom.crop window
image.editor.crop
Editor levels/curves/white-balance panel — histogram view + adjust kernels
image.editor.curves
K-3 decode worker pool — off-main-thread ingest decode (host.workers consumer)
image.editor.decode-pool
M4 editor enablement — C-5 placed bytes → decode → adjust → C-1 Stage-A in-frame composite
image.editor.ingest
C-6 tile provider for placed images (host.images.claimImageResource, v44; honest level-0 subset)
image.editor.tile-provider
Engine B — persistent buffer graph (invalidation, mip-aware eval, Gestures/Operations)
image.graph.engine-b
T0 generated kernel families (arith/relational/boolean/cast/band/minmax/linear)
image.kernel.family-t0
T1 crown-jewel kernels (conv/resample/compose — handwritten WGSL modules, ABI v1.1)
image.kernel.family-t1
T2 editor-bearing kernels (adjust/geom/generators)
image.kernel.family-t2
T3 breadth kernels (morphology, rank/median, distance transform)
image.kernel.family-t3
Frozen WGSL kernel ABI v1 (4 bind groups, 16×16, mask-mixed pointwise)
image.kernel.wgsl-abi
Engine A async sinks — to_buffer_async/to_encoder_async (the wasm32/WebGPU readback lane)
image.pipeline.async-sink
Engine A — demand-driven streaming pipeline skeleton
image.pipeline.engine-a-skeleton
paged.image bundle (media.paged.image) — manifest + activate + panel
image.plugin.bundle-manifest
PSD mutatable — edits re-encode through the preservation writer
image.psd.mutatable
PSD rendered tier — channel decode + flatten render oracle
image.psd.rendered
PSD/PSB structural parse + preservation-invariant writer
image.psd.roundtrip
Reductions — histogram + min/max/mean statistics
image.reduce.statistics
Residency Tier 0/1 hardening under working-set pressure
image.residency.tier01
Selection-mask plumbing — the §6.1 mask surfaced end-to-end
image.selection.mask

Plugin · draw 18 features · 100% green

FeatureShellAPIDraw
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 skeleton
plugin-draw.bundle-manifest
vectorGraphic edit context — live enter/exit via contribute.editContext
plugin-draw.edit-context-live
Cubic bezier kernel — de Casteljau split, eval, closest-t, flatten
plugin-draw.geometry-bezier
Anchor/handle math — corner, mirror, smooth-from-drag, angle constrain, affine
plugin-draw.geometry-handles
RDP polyline simplification + perpendicular segment distance
plugin-draw.geometry-rdp
Headless conformance corpus over published canvas-wasm
plugin-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 commands
plugin-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

Plugin platform 28 features · 100% green

FeatureParserRendererMutationCanvasCanvasShellPanelAPIDrawWeb
Persistent blob store (host.blob, OPFS-backed, per-plugin quota)
plugin-platform.blob-store
Bundle lifecycle — activate(host) → BundleHandle.dispose()
plugin-platform.bundle-lifecycle
Capability declaration — document read/write, rendering surfaces, editContext, network, clipboard
plugin-platform.capability-scopes
Command + keybinding contribution registration
plugin-platform.command-registration
Host credential store (host.secrets — D-11, reference-only, DELIBERATELY no get)
plugin-platform.credential-store
Data-provider registry (host.dataProviders — publish/consume RecordSet across plugins)
plugin-platform.data-providers
Plugin document metadata — x-paged Label carrier + get/setMetadata doors
plugin-platform.document-metadata
Edit-context registry (enter/exit, write-scope narrowing, breadcrumb)
plugin-platform.edit-context
Host file picker (host.shell.pickFile)
plugin-platform.file-picker
Plugin font registration + asset serving (@font-face parity)
plugin-platform.font-asset-serving
Frame-chain read + reflow events (host.document.frameChain, DocumentChangeEvent.reflow)
plugin-platform.frame-chain-read
Headless host conformance harness (createHeadlessHost)
plugin-platform.headless-host-conformance
Host widgets + diagnostics sink (CodeEditor widget, problems lane)
plugin-platform.host-widgets
Placed-image resource provider door (host.images.claimImageResource — C-6 / I-06, v44 tile lane)
plugin-platform.image-resource
Importer/exporter registration (contribute.importer/exporter + Export Center)
plugin-platform.importer-exporter
Plugin manifest schema + CLI validator (paged-plugin validate)
plugin-platform.manifest-schema
Modal edit session (K-1) — entry gesture, content pointer, in-frame editing loop
plugin-platform.modal-edit-session
Object-type bake contract (live metadata -> derived IDML children)
plugin-platform.object-type-baking
Overlay contribution into the camera-space SVG surface
plugin-platform.overlay-registration
Panel contribution registration (expert-leaf React in v0)
plugin-platform.panel-registration
Placed-asset bytes read door (host.assets.getPlacedImage — C-5 / I-04)
plugin-platform.placed-asset-bytes
·
In-frame plugin scene layers (contribute.sceneLayer — vector/text/image/gradient/blend/shadow)
plugin-platform.scene-layer
Text measurement door (host.text.measureString + editor metrics RPC)
plugin-platform.text-measurement
Tool contribution + gesture-handler registration surface
plugin-platform.tool-registration
Bundle wasm packaging + loader contract (bundle-realm glue path)
plugin-platform.wasm-packaging
Wire-compatibility type assertions (machine output ⊆ engine wire types)
plugin-platform.wire-compat-assertions
Worker spawn + SharedArrayBuffer (host.workers — K-3, off-main-thread compute)
plugin-platform.worker-pool

Plugin · web 5 features · 100% green

FeatureRendererCanvasShellPanelWeb
On-canvas vector rendering of web frames (Blitz/WASM → C-1 sceneLayer lane)
plugin-web.engine-rendering
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
WebFrameSource model + metadata envelope + diagnostics linter
plugin-web.source-model
Source panel — HTML/CSS editors, sandboxed preview, options, diagnostics
plugin-web.source-panel

Plugin · sheet 21 features · 100% green

FeatureShellSheet
Exact-decimal numeric mode (D-6 spike) — seam proven, deferred to v2 opt-in
sheet.calc.decimal
Calculation engine — dependency graph, dirty recalc, f64 numeric core (D-6), coercion, error values
sheet.calc.engine
Iterative (circular) calculation — OFF by default (D-7), converges to a fixed point when enabled
sheet.calc.iterative
Dynamic-array spill (anchor + spill range,
sheet.calc.spill
Charts — plotters-backed custom DrawingBackend → frozen ChartGeometry IR → grid view + paged.draw page lowering
sheet.chart.engine
Data-provider CONSUMER — source a sheet from a governed dataset (host.dataProviders)
sheet.data.consumer
Function library — 224 registered functions across 18 families, registry-driven dispatch
sheet.fn.library
Number-format engine + en/de locale (D-8)
sheet.format.engine
Western-European Latin locale tier (fr/es/it) — display formatting data rows
sheet.format.locale.latin-tier
Frozen panes — parse sheetViews/pane + render frozen rows/columns in-grid
sheet.grid.freeze.render
In-frame grid — sceneLayer render + K-1 modal select/edit (sheets-mode lite)
sheet.grid.inframe
Page-surface lowering — native <Table> + IR-v2 style map + measured column widths
sheet.lower.page
Live multi-frame pagination across the host frame chain
sheet.lower.paginate
paged.sheet bundle (media.paged.sheet) — manifest + activate + 3 panels + 7 commands + importer/exporter + engine boot
sheet.plugin.bundle
Workbook persistence — host.blob (OPFS) + the metadata binding envelope
sheet.plugin.persistence
Excel structured tables / ListObjects — model + structured references + tableN.xml part
sheet.table.structured
Cell comments — preserve opaquely + display (grid indicator + panel list), preserve-first
sheet.xlsx.comments
Conditional formatting — xlsx part fidelity + lowering to style overrides
sheet.xlsx.condfmt
XLSX data validation — preserve byte-faithfully + read-only inventory (NEVER enforced)
sheet.xlsx.data-validation
Pivot tables — preserve-only, NEVER interpreted (publishing-first non-goal)
sheet.xlsx.pivot
XLSX I/O on the fidelity ladder — preservation invariant + import/export through the platform
sheet.xlsx.roundtrip

On this page