Capability matrix
The full capability grid — every paged capability across every implementation layer, with a shipped-and-verified status per cell. Generated live from the registry.
In short every capability paged tracks, grouped by chapter, shown across the implementation layers it touches. Each cell's glyph carries the meaning — shipped and verified, shipped but untested, partial, failing, or planned — so the grid reads in greyscale. This page is generated from the capability registry; the support badge beside each IDML feature links here to its row.
36 chapters · generated from the capability registry @ b996869c.
● shipped & verified · ◍ shipped, untested · ◐ partial · ✗ failing · · planned
Anchored & inline objects 3 features · 100% green
| Feature | Parser | Renderer | Mutation | Canvas | Panel |
|---|---|---|---|---|---|
Anchored alignment (space-or-align relative options)anchored-inline-objects.anchor-alignment | ● | ● | |||
Anchored frames (above/below line placement)anchored-inline-objects.anchored-frames | ● | ● | ● | ||
Anchored-object mutationsanchored-inline-objects.anchored-ops | ● | ● |
Color & swatches 12 features · 100% green
| Feature | Parser | Renderer | Mutation | Canvas | Shell | Panel | Gesture | Script |
|---|---|---|---|---|---|---|---|---|
Character fill colorcolor-swatches.character-fill | ● | ● | ● | ◍ | ||||
Color groups (CRUD + membership)color-swatches.color-groups | ● | ● | ● | ● | ● | |||
ColorOverride specials (paper/black/registration)color-swatches.color-overrides | ● | · | ||||||
Document defaults for new objects (fill/stroke/weight)color-swatches.document-defaults | ◍ | ● | ||||||
Apply fill/stroke color + tint to framescolor-swatches.fill-stroke-apply | ● | ● | ● | ● | ◍ | |||
Gradients (linear/radial, stops + midpoints)color-swatches.gradients | ● | ● | ● | ● | ● | ◍ | ● | |
ICC color management (lcms2 native / qcms wasm)color-swatches.icc-cmm | ◍ | ◍ | ● | |||||
Ink management (convert-to-process, aliases, standard Lab)color-swatches.ink-manager | ◍ | ◍ | ● | |||||
Lab / mixed-ink / spot-without-CMYKcolor-swatches.lab-mixed-ink | ● | ◐ | ||||||
CMYK overprintcolor-swatches.overprint | ● | ● | ||||||
Process CMYK/RGB + spot inks + tintscolor-swatches.process-spot-tint | ● | ● | ◍ | |||||
Swatch CRUD (create/edit/delete + .ase import/export)color-swatches.swatch.crud | ● | ● | ● | ● | ● |
Companion formats 1 features · 0% green
| Feature | Parser |
|---|---|
Snippets & InCopy (.idms / .icml / libraries)companion-formats.idms-icml | · |
Conditional text 3 features · 100% green
| Feature | Parser | Renderer | Mutation | Canvas | Panel | Script |
|---|---|---|---|---|---|---|
Apply conditions to text rangesconditional-text.applied-conditions | ● | ● | ● | ◍ | ● | ● |
Condition visibility ops (SetConditionVisible, ActivateConditionSet)conditional-text.condition-ops | ● | |||||
Condition visibility filtering (hidden runs pre-layout)conditional-text.visibility-filtering | ● | ● |
Cross-references & hyperlinks 5 features · 100% green
| Feature | Parser | Renderer | Mutation | Panel |
|---|---|---|---|---|
Bookmarkscross-references-hyperlinks.bookmarks | ● | ● | ◍ | |
Cross-referencescross-references-hyperlinks.cross-references | ● | ● | ◍ | |
Hyperlinks (targets + sources)cross-references-hyperlinks.hyperlinks | ● | ● | ◍ | |
Index entries (topic aggregation, page lists)cross-references-hyperlinks.index | ● | ● | ◍ | |
TOC entry resolutioncross-references-hyperlinks.toc | ● | ● | ◍ |
Plugin · data 18 features · 100% green
| Feature | Shell | Data |
|---|---|---|
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 diffdata.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 dispatchdata.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 tabledata.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 assertionsdata.perf.gates | ● | |
paged.data bundle (media.paged.data) — manifest + activate + 3 panels + DuckDB query gluedata.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 seamdata.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 manifestdata.source.adapters | ◐ | |
D-11 DB attach (SQLite/Postgres/MySQL) + DuckDB-WASM first-class engine + refresh-policy + remotedata.source.db-attach | ◐ |
Edge cases & degradation 1 features · 100% green
| Feature | Renderer | Canvas | SDK |
|---|---|---|---|
Render diagnostics channel (overset, missing assets, fonts)edge-cases.diagnostics-channel | ● | ◍ | ● |
Editor shell 66 features · 100% green
| Feature | Canvas | Shell | Panel | Style | Draw |
|---|---|---|---|---|---|
Cockpit workflow modes (Design/Content/Prepress/Data/Review/Export)editor-shell.cockpit-modes | ● | ● | |||
Command palette (Cmd+K)editor-shell.command-palette | ● | ||||
Per-mode context toolbarseditor-shell.context-toolbars | ◐ | ● | |||
Document intake (file input + drop)editor-shell.file-intake | ● | ||||
Global keyboard shortcuts (undo/redo, zoom, page nav)editor-shell.keyboard-shortcuts | ● | ||||
Menu bar (File/Edit/View/Window)editor-shell.menus | ● | ||||
Panel rail + inspector context routingeditor-shell.panel-rail | ● | ● | ● | ||
Aligneditor-shell.panels.align | ● | ● | |||
Anchored objecteditor-shell.panels.anchored | ● | ◍ | |||
Attributeseditor-shell.panels.attributes | ● | ● | |||
Bullets & numbering (concept)editor-shell.panels.bullets-numbering | ● | ● | |||
Cell styleseditor-shell.panels.cell-styles | ◐ | ● | |||
Charactereditor-shell.panels.character | ● | ● | |||
Character styleseditor-shell.panels.character-styles | ● | ● | |||
Coloreditor-shell.panels.color | ● | ● | |||
Color groupseditor-shell.panels.color-groups | ● | ● | |||
Colour settingseditor-shell.panels.color-settings | ● | ● | |||
Color wheeleditor-shell.panels.color-wheel | ● | ● | |||
Comments + review inspectoreditor-shell.panels.comments | · | ● | |||
Component libraryeditor-shell.panels.component-library | · | ● | |||
Conditions + condition setseditor-shell.panels.conditions | ● | ● | |||
Control stripeditor-shell.panels.control | ● | ||||
Data source / mapping / generated pageseditor-shell.panels.data-suite | · | ● | |||
Document mapeditor-shell.panels.document-map | ◐ | ● | |||
Effectseditor-shell.panels.effects | ● | ● | |||
Export centereditor-shell.panels.export-center | ◐ | ● | |||
Export tagging (concept)editor-shell.panels.export-tagging | · | ● | |||
Fontseditor-shell.panels.fonts | ● | ● | |||
Frame fittingeditor-shell.panels.frame-fitting | ● | ● | |||
Glyphseditor-shell.panels.glyphs | ◐ | ● | |||
Gradientseditor-shell.panels.gradients | ● | ● | |||
Infoeditor-shell.panels.info | ● | ● | |||
Ink managereditor-shell.panels.ink-manager | ◍ | ● | |||
Inspector (raw, dev)editor-shell.panels.inspector | ● | ● | |||
Layerseditor-shell.panels.layers | ● | ● | |||
Linkseditor-shell.panels.links | ● | ● | |||
Articles / Hyperlinks / Bookmarks / Cross refs / Indexeditor-shell.panels.list-collections | ● | ● | |||
Master pageseditor-shell.panels.master-pages | ● | ● | |||
Object export options (concept)editor-shell.panels.object-export | · | ● | |||
Object styleseditor-shell.panels.object-styles | ● | ● | |||
Object transformeditor-shell.panels.object-transform | ● | ● | |||
Outlineeditor-shell.panels.outline | ◍ | ● | |||
Output readinesseditor-shell.panels.output-readiness | ◐ | ● | |||
Outputs + export inspectoreditor-shell.panels.outputs | ◐ | ◐ | ● | ||
Pages (list)editor-shell.panels.pages-list | ● | ● | |||
Pages (navigator filmstrip)editor-shell.panels.pages-navigator | ◍ | ● | |||
Paragrapheditor-shell.panels.paragraph | ● | ● | |||
Paragraph styleseditor-shell.panels.paragraph-styles | ● | ● | |||
Pathfindereditor-shell.panels.pathfinder | ● | ● | |||
Preflighteditor-shell.panels.preflight | ◐ | ● | |||
Problemseditor-shell.panels.problems | ● | ◍ | |||
Properties (context inspector)editor-shell.panels.properties | ● | ● | ● | ||
Publication healtheditor-shell.panels.publication-health | ◐ | ● | |||
Spreadseditor-shell.panels.spreads | ● | ● | |||
Stories + story inspectoreditor-shell.panels.stories | ◐ | ● | |||
Strokeeditor-shell.panels.stroke | ● | ● | |||
Swatcheseditor-shell.panels.swatches | ● | ● | |||
Table (concept)editor-shell.panels.table | ◐ | ● | |||
Table styleseditor-shell.panels.table-styles | ◐ | ● | |||
Tabs (concept)editor-shell.panels.tabs | ● | ● | |||
Text frame optionseditor-shell.panels.text-frame-options | ● | ● | |||
Text wrapeditor-shell.panels.text-wrap | ● | ● | |||
Tree (scene graph, dev)editor-shell.panels.tree | ● | ||||
First-party bundle loading + composition (draw/web/image/sheet/data)editor-shell.plugin-bundles | ● | ● | |||
Dark/light theming (dark default, token system)editor-shell.theme | ● | ● | |||
Tool rail (24-tool catalog, flyout groups, tear-off)editor-shell.tool-rail | ● | ● |
Editor tools & gestures 26 features · 100% green
| Feature | Canvas | Canvas | Shell | Gesture | Style |
|---|---|---|---|---|---|
Content transforms inside frame (translate/rotate/scale content)editor-tools.content-transform | ◐ | ● | |||
Gridify (arrow keys mid-drag → N×M frames)editor-tools.draw.gridify | ● | ||||
Line draw tool (Shift 45° constraint)editor-tools.draw.line | ◍ | ||||
Pen tool path drawing (+ add/delete/convert anchor)editor-tools.draw.pen | ● | ● | |||
Pencil freehand (RDP simplification)editor-tools.draw.pencil | ◍ | ||||
Rectangle draw tooleditor-tools.draw.rectangle | ● | ||||
Gesture lifecycle guarantees (Esc cancel, atomic commit, snap lines)editor-tools.gesture-lifecycle | ◍ | ● | ● | ||
Gradient swatch + gradient feather drag toolseditor-tools.gradient-tools | ◍ | ||||
Ruler-guide drag (create/move/delete)editor-tools.guides.drag | ● | ||||
Duplicate-drag (Alt)editor-tools.move.duplicate-drag | ◍ | ● | |||
Move / drag frames (Shift dominant-axis, snap, multi-select rigid)editor-tools.move.translate | ◍ | ◍ | ● | ||
Pan (hand tool, Space spring-load)editor-tools.nav.pan | ● | ◍ | |||
Zoom (tool click/Alt-click, commands, fit)editor-tools.nav.zoom | ● | ◍ | |||
Canvas overlays (selection chrome, handles, marquee, tool preview, snap lines, caret, page decorations, rulers, hit marker)editor-tools.overlays | ◍ | ● | |||
Page tool (select, Alt-insert, drag-resize, delete)editor-tools.page-tool | ◍ | ||||
Direct path editing (anchors, handles, scissors)editor-tools.path.direct-edit | ◍ | ● | |||
Resize via 8 handles (Shift aspect, Alt from-centre)editor-tools.resize.handles | ◍ | ● | |||
Rotate (Shift snaps to 15°)editor-tools.rotate | ◍ | ● | |||
Matrix scale (Cmd-handle, multi-select)editor-tools.scale | ◍ | ● | |||
Click select + marquee (intersect, Shift add, Cmd toggle)editor-tools.select.click-marquee | ◍ | ● | |||
Group descent (double-click enter, Escape exit)editor-tools.select.group-descent | ● | ||||
Shear (Shift snaps shear angle to 15°)editor-tools.shear | ◍ | ● | |||
Registered stub tools (free-transform, eyedropper, measure, gap, content collector/placer, type-on-path, note)editor-tools.stub-tools | · | ||||
Text tool caret + typingeditor-tools.text.caret-typing | ● | ||||
Drag-and-drop texteditor-tools.text.drag-drop | · | ||||
Text threading via portseditor-tools.text.threading-ports | ◐ |
Effects & transparency 10 features · 100% green
| Feature | Parser | Renderer | Mutation | Canvas | Shell | Panel | Gesture |
|---|---|---|---|---|---|---|---|
Bevel & embosseffects-transparency.bevel-emboss | ● | ◐ | ● | · | |||
Blend modes (26 modes incl. multiply/screen/overlay)effects-transparency.blend-modes | ● | ● | ● | · | |||
Drop shadow (soft blur, offset, color, opacity)effects-transparency.drop-shadow | ● | ● | ● | ● | |||
Feather (basic + directional)effects-transparency.feather | ● | ● | ● | · | |||
Outer / inner gloweffects-transparency.glows | ● | ● | ● | · | |||
Gradient feathereffects-transparency.gradient-feather | ● | ● | ● | ◍ | |||
Inner shadoweffects-transparency.inner-shadow | ● | ● | ● | · | |||
Object opacityeffects-transparency.opacity | ● | ● | ● | ● | ◍ | ||
Satineffects-transparency.satin | ● | ◐ | ● | ||||
Transparency groups (nested blend group buffering)effects-transparency.transparency-groups | ● | ● |
Foundations 3 features · 100% green
| Feature | Parser | Canvas | SDK | Canvas | Shell |
|---|---|---|---|---|---|
IDML container open (ZIP + mimetype validation)foundations.container.open | ● | ◍ | ● | ◍ | |
designmap parse (spreads, stories, resources wiring)foundations.designmap.structure | ● | ||||
DOMVersion capture (version-agnostic parser)foundations.domversion-capture | ● |
Frames & paths 20 features · 100% green
| Feature | Parser | Renderer | Mutation | Canvas | Canvas | Shell | Panel | Gesture | Draw |
|---|---|---|---|---|---|---|---|---|---|
GraphicLine arrowheads (triangle/circle/bar)frames-paths.arrowheads | ● | ● | |||||||
Decorative corner options (Rounded/Inverse/Bevel/Inset/Fancy)frames-paths.corner-options | ● | ● | ● | ||||||
Delete frameframes-paths.frame.delete | ● | ● | |||||||
Insert frame (rectangle) by boundsframes-paths.frame.insert | ◍ | ● | ◍ | ||||||
moveFrame wire opframes-paths.frame.move-op | · | ||||||||
Groups (nesting + group transparency/blending + create/dissolve ops)frames-paths.groups | ● | ● | ◐ | ◍ | ● | ||||
Insert line (two-anchor open GraphicLine)frames-paths.line.insert | ● | ● | ◍ | ||||||
Page-item kinds (TextFrame, Rectangle, Oval, Polygon, GraphicLine, Group)frames-paths.page-item-kinds | ● | ● | |||||||
Path clipping/masking (non-zero winding)frames-paths.path-clipping | ● | ||||||||
Insert freehand path (optional smoothing)frames-paths.path.insert | ● | ● | ◐ | ||||||
Pathfinder boolean (union/intersect/subtract/exclude)frames-paths.pathfinder-boolean | ● | ● | ● | ||||||
Ellipse / polygon shape toolsframes-paths.shape-tools | ● | ◍ | ● | ||||||
Stroke alignment (center/inside/outside)frames-paths.stroke-alignment | ● | ◐ | ● | ||||||
Dashed + dotted strokes (dash arrays, 12 dotted variants)frames-paths.stroke-dashed | ● | ● | ● | ● | |||||
Stroke gap color/tintframes-paths.stroke-gap-color | ● | ● | ● | ||||||
Stroke overprintframes-paths.stroke-overprint | ● | ● | ● | ||||||
Striped / wavy strokesframes-paths.stroke-striped-wavy | ● | ● | ● | ||||||
Variable-width (tapered / pressure) strokes — per-anchor width outlineframes-paths.stroke-variable-width | ● | ◐ | |||||||
Stroke weight + line caps + joinsframes-paths.stroke-weight-caps-joins | ● | ● | ● | ● | |||||
Text on a pathframes-paths.text-on-path | ● | · |
Geometry & coordinates 6 features · 100% green
| Feature | Parser | Renderer | Mutation | Canvas | Shell | Panel | Gesture |
|---|---|---|---|---|---|---|---|
Bezier path geometry (PathPointType anchors + handles)geometry-coordinates.bezier-path-geometry | ● | ● | ● | ◍ | |||
Compound paths (multi-contour subpath boundaries)geometry-coordinates.compound-subpaths | ● | ● | |||||
GeometricBounds (y1 x1 y2 x2, pt)geometry-coordinates.geometric-bounds | ● | ● | ● | ◍ | ◍ | ||
Image content transform (inner image within frame)geometry-coordinates.image-content-transform | ● | ● | ● | ● | |||
ItemTransform (2×3 affine per frame/page)geometry-coordinates.item-transform | ● | ● | ● | ◍ | |||
Path topology ops (insert/remove anchor, open-at, curve type)geometry-coordinates.path-topology-ops | ● | ● | ● |
Plugin · image 28 features · 100% green
| Feature | Shell | Image |
|---|---|---|
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 ingestimage.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 ingestimage.codec.exif | ● | |
Codec adapter contract (ImageSource/ImageTarget over sans-IO ByteSource) + PNG + rawimage.codec.traits | ● | |
Conformance harness — scalar references, gpu↔ref parity, fixture corpusimage.conformance.harness | ◐ | |
Auto-enhance — gray-world WB + percentile auto-levels params from the panel histogramimage.editor.auto-enhance | ● | |
Editor crop + straighten tool — host-agnostic crop machine over the geom.crop windowimage.editor.crop | ● | |
Editor levels/curves/white-balance panel — histogram view + adjust kernelsimage.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 compositeimage.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 skeletonimage.pipeline.engine-a-skeleton | ● | |
paged.image bundle (media.paged.image) — manifest + activate + panelimage.plugin.bundle-manifest | ◐ | |
PSD mutatable — edits re-encode through the preservation writerimage.psd.mutatable | ◐ | |
PSD rendered tier — channel decode + flatten render oracleimage.psd.rendered | ◐ | |
PSD/PSB structural parse + preservation-invariant writerimage.psd.roundtrip | ◐ | |
Reductions — histogram + min/max/mean statisticsimage.reduce.statistics | ◐ | |
Residency Tier 0/1 hardening under working-set pressureimage.residency.tier01 | ● | |
Selection-mask plumbing — the §6.1 mask surfaced end-to-endimage.selection.mask | ● |
Images & graphics 7 features · 100% green
| Feature | Parser | Renderer | Mutation | Shell | Panel | Script |
|---|---|---|---|---|---|---|
Image clipping paths (from image metadata)images-graphics.clipping-paths | ● | ● | ||||
CMYK JPEG with embedded ICC profileimages-graphics.cmyk-jpeg-icc | ● | ● | ||||
EPS / PostScript decodeimages-graphics.eps-decode | ◐ | · | ||||
Frame fitting (fill/fit/content + crops)images-graphics.frame-fitting | ● | ● | ● | ● | ||
Image clipped to frame pathimages-graphics.image-clipping | ● | |||||
Missing-image placeholder (grey + diagonal X) + diagnosticimages-graphics.missing-image-placeholder | ● | |||||
Placed images (URI links via AssetResolver + inline base64)images-graphics.placed-images | ● | ● | ◍ | ● |
Interactive & dynamic 4 features · 0% green
| Feature | Parser |
|---|---|
Animation + timing settingsinteractive-dynamic.animation | · |
Button behaviors (goto-page/state, show-hide, forms, zoom)interactive-dynamic.behaviors | · |
Buttons (states Up/RollOver/Down)interactive-dynamic.buttons | · |
Sound & movie elementsinteractive-dynamic.media | · |
Layers 4 features · 100% green
| Feature | Parser | Renderer | Mutation | Canvas | Canvas | Shell | Panel | Script |
|---|---|---|---|---|---|---|---|---|
Layer model (visibility, lock, printable, z-order)layers.model | ◍ | ◍ | ● | |||||
Nested layer groups (folders, inherited hide/lock)layers.nested-groups | ● | ● | ||||||
Layer ops (insert/remove/move/rename + flags)layers.ops | ● | ● | ● | ● | ||||
Cross-shape z-sort (layer + XML order)layers.z-ordering | ● | ● |
Layout model 7 features · 100% green
| Feature | Parser | Renderer | Mutation | Canvas | Canvas | Shell | Panel | Gesture |
|---|---|---|---|---|---|---|---|---|
FirstBaselineOffset modeslayout-model.first-baseline-offset | ● | ● | ● | |||||
TextFrame AutoSizing (width/height growth)layout-model.frame-autosizing | ● | ◐ | ● | |||||
Ruler guides (parse, snap targets, editing)layout-model.guides | ● | ◐ | ● | ◍ | ● | · | ||
Spread / MasterSpread ItemTransformlayout-model.spread-item-transform | ● | ● | ||||||
Spreads & pages (geometry, stacking, page items)layout-model.spreads-pages | ● | ● | ● | ● | ◍ | ◍ | ||
Text-frame threading chain (NextTextFrame story distribution)layout-model.text-frame-chain | ● | ● | ● | · | ||||
Frame vertical justification (top/center/bottom/justify)layout-model.vertical-justification | ● | ● | ● |
Master spreads & overrides 4 features · 100% green
| Feature | Parser | Renderer | Mutation | Panel |
|---|---|---|---|---|
Apply master to page (mutation)master-spreads-overrides.apply-master-op | ● | |||
Master spread stamping (applied master, MasterPageTransform)master-spreads-overrides.master-stamping | ● | ● | ◍ | |
Local override suppression of master itemsmaster-spreads-overrides.override-resolution | ● | ● | ||
ShowMasterItems suppressionmaster-spreads-overrides.show-master-items | ● | ● |
Package anatomy 7 features · 100% green
| Feature | Parser | Renderer | Mutation | Canvas | SDK | Canvas | Shell | API |
|---|---|---|---|---|---|---|---|---|
Full package import (designmap, spreads, stories, resources)package-anatomy.core-import | ● | ● | ◍ | ● | ● | |||
Graphic part (colors, swatches, gradients, inks, stroke styles)package-anatomy.graphic-part | ● | |||||||
Inline base64 image bytes (<Image><Properties><Contents>)package-anatomy.inline-image-contents | ● | ● | ||||||
The .paged container (ZIP-as-valid-IDML + plugin namespaces + manifest.json)package-anatomy.paged-container | ◍ | ● | · | |||||
host.parts plugin persistence door (namespaced container parts that travel with the file)package-anatomy.paged-parts-door | ◍ | · | ◐ | |||||
Story parts (ParagraphStyleRange / CharacterStyleRange trees)package-anatomy.story-parts | ● | |||||||
Tagged XML backing store (XMLElement/XMLStory/Mapping)package-anatomy.tagged-xml-backing-store | · |
Parser internals 2 features · 100% green
| Feature | Parser |
|---|---|
Streaming XML parse (quick_xml event-driven)parser-internals.streaming-xml | ● |
ZIP entry streaming (per-part decompression)parser-internals.zip-entry-streaming | ● |
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 | ◍ | ● |
Plugin platform 28 features · 100% green
| Feature | Parser | Renderer | Mutation | Canvas | Canvas | Shell | Panel | API | Draw | Web |
|---|---|---|---|---|---|---|---|---|---|---|
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, clipboardplugin-platform.capability-scopes | ◐ | |||||||||
Command + keybinding contribution registrationplugin-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 doorsplugin-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 loopplugin-platform.modal-edit-session | ◐ | ◐ | ◐ | |||||||
Network capability + consent door (host.network, default-deny)plugin-platform.network-consent | ● | ◍ | ||||||||
Object-type bake contract (live metadata -> derived IDML children)plugin-platform.object-type-baking | ◐ | |||||||||
Overlay contribution into the camera-space SVG surfaceplugin-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 surfaceplugin-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
| Feature | Renderer | Canvas | Shell | Panel | Web |
|---|---|---|---|---|---|
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 linterplugin-web.source-model | ● | ||||
Source panel — HTML/CSS editors, sandboxed preview, options, diagnosticsplugin-web.source-panel | ● | ● |
Round-tripping 4 features · 100% green
| Feature | Mutation | Canvas | Canvas | Shell | Gesture | Script |
|---|---|---|---|---|---|---|
Batch operations (atomic, rollback-on-error, $created sentinel)round-tripping.batch-atomicity | ● | ◍ | ||||
Gesture transaction channel (begin/update/commit/cancel)round-tripping.gesture-transactions | ◍ | ◍ | ● | |||
Re-serialize a PARSED document to IDML (save back)round-tripping.idml-reserialization | ◐ | ● | ● | |||
Undo / redo (invertible operation log)round-tripping.undo-redo | ● | ◍ | ● | ● |
Scripting 12 features · 100% green
| Feature | Canvas | Shell | Panel | Script | Style |
|---|---|---|---|---|---|
Collection reads (swatches, styles, links, conditions, gradients, colorGroups, generic collection())scripting.collections | ● | ||||
console.log/warn/error/info capturescripting.console | ● | ||||
Headless engine session (paged-run NDJSON CLI)scripting.headless-run | ● | ||||
paged.inspect / paged.tree / paged.stories / documentMeta / selectionscripting.inspection | ● | ||||
Script ↔ wire mutation parity (same Operation channel)scripting.mutation-parity | ◍ | ● | |||
paged.set / paged.get / paged.frame proxy (all property paths)scripting.property-readwrite | ● | ||||
REPL panel (inspect/set/undo/redo command line)scripting.repl | ◍ | ● | |||
Script runtime budgets (loop/recursion limits, clean errors)scripting.runtime-budgets | ◍ | ● | |||
Script editor panel (multi-line JS, Cmd+Enter, output log)scripting.script-editor | ◍ | ● | ● | ||
paged.insertFrame / insertPage / placeImage / applyStyle / createGroupscripting.structural-authoring | ● | ||||
paged.insertText / deleteRange / insertTextFrame (text authoring)scripting.text-authoring | ● | ||||
paged.undo / paged.redoscripting.undo-redo | ● |
Sections, numbering & variables 4 features · 100% green
| Feature | Parser | Renderer | Mutation | Shell | Panel |
|---|---|---|---|---|---|
Page-number marker resolution (current/next/previous)sections-numbering-variables.page-number-resolution | ● | ● | |||
Section CRUD (add section, ranges)sections-numbering-variables.section-ops | ● | · | |||
Sections (prefix, label styles, start numbers)sections-numbering-variables.sections | ● | ● | |||
Text variables (definition + instance substitution)sections-numbering-variables.text-variables | ● | ◐ |
Server 9 features · 100% green
| Feature | API |
|---|---|
Account managementserver.accounts | ● |
Authentication (better-auth)server.auth | ● |
Document automation API (brief → agent job → engine → export)server.automation | ◐ |
Billing (Stripe)server.billing | ● |
Data-merge apply bridge (PaginatedFlow → Boa script)server.data-merge | ◐ |
Fonts proxyserver.fonts-proxy | ● |
Image searchserver.image-search | ● |
OpenAPI spec + generated client (drift-gated)server.openapi | ● |
Document storage (local:// offline default + remote drivers)server.storage | ● |
Plugin · sheet 21 features · 100% green
| Feature | Shell | Sheet |
|---|---|---|
Exact-decimal numeric mode (D-6 spike) — seam proven, deferred to v2 opt-insheet.calc.decimal | ◐ | |
Calculation engine — dependency graph, dirty recalc, f64 numeric core (D-6), coercion, error valuessheet.calc.engine | ● | |
Iterative (circular) calculation — OFF by default (D-7), converges to a fixed point when enabledsheet.calc.iterative | ● | |
Dynamic-array spill (anchor + spill range,sheet.calc.spill | ● | |
Charts — plotters-backed custom DrawingBackend → frozen ChartGeometry IR → grid view + paged.draw page loweringsheet.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 dispatchsheet.fn.library | ● | |
Number-format engine + en/de locale (D-8)sheet.format.engine | ● | |
Western-European Latin locale tier (fr/es/it) — display formatting data rowssheet.format.locale.latin-tier | ● | |
Frozen panes — parse sheetViews/pane + render frozen rows/columns in-gridsheet.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 widthssheet.lower.page | ● | |
Live multi-frame pagination across the host frame chainsheet.lower.paginate | ● | |
paged.sheet bundle (media.paged.sheet) — manifest + activate + 3 panels + 7 commands + importer/exporter + engine bootsheet.plugin.bundle | ● | |
Workbook persistence — host.blob (OPFS) + the metadata binding envelopesheet.plugin.persistence | ◐ | |
Excel structured tables / ListObjects — model + structured references + tableN.xml partsheet.table.structured | ● | |
Cell comments — preserve opaquely + display (grid indicator + panel list), preserve-firstsheet.xlsx.comments | ● | |
Conditional formatting — xlsx part fidelity + lowering to style overridessheet.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 platformsheet.xlsx.roundtrip | ● |
Stories & text 16 features · 100% green
| Feature | Parser | Renderer | Mutation | Canvas | Canvas | Shell | Panel | Gesture |
|---|---|---|---|---|---|---|---|---|
Text caret + range selection (geometry, content selection)stories-text.caret-selection | ◍ | ◍ | ◐ | |||||
Drag-and-drop textstories-text.drag-drop-text | · | |||||||
Endnotesstories-text.endnotes | · | |||||||
Insert field (page-number marker etc.) at offsetstories-text.fields.insert | ● | ◍ | ||||||
Footnote bodiesstories-text.footnotes | ● | ◐ | ||||||
Nested character styles (per-delimiter run restyling)stories-text.nested-styles | ● | ◍ | ||||||
Editorial notes (Note element)stories-text.notes | ◐ | |||||||
Overset handling (last-frame overflow clipped + reported)stories-text.overset | ● | ● | ◍ | ◐ | ||||
Auto page-number markers (current/next page)stories-text.page-number-markers | ● | ● | ||||||
Story model (paragraph/character run trees)stories-text.story-model | ● | ● | ||||||
Apply style attributes to a text range (applyStyle op)stories-text.style-apply-range | ● | ◍ | ||||||
Text wrap (bounding box / contour / jump modes + offsets)stories-text.text-wrap | ● | ● | ● | ◍ | ||||
Delete story range (Backspace/Delete + range)stories-text.text.delete | ◍ | ● | ◍ | |||||
Insert text at story offsetstories-text.text.insert | ◍ | ● | ◍ | ◐ | ||||
Tracked changes (insertions/deletions, author/date)stories-text.tracked-changes | · |
Styles 13 features · 100% green
| Feature | Parser | Renderer | Mutation | Canvas | Canvas | Shell | Panel | Script |
|---|---|---|---|---|---|---|---|---|
Based-on style inheritance chainsstyles.based-on-chain | ● | ● | ||||||
Bullets & numbering (lists + numbering expressions)styles.bullets-numbering | ● | ● | ● | ◐ | ◐ | |||
Style cascade (direct > character style > paragraph style)styles.cascade | ● | ● | ||||||
Cell styles (create/rename/delete + apply)styles.cell.crud | ● | ● | ● | ◍ | ◐ | |||
Character styles (create/rename/delete + apply)styles.character.crud | ● | ● | ● | ● | ● | ● | ||
Next-style chaining + override indicators + redefinestyles.next-style-overrides | ● | · | · | |||||
Object styles (create/rename/delete + apply)styles.object.crud | ● | ● | ● | ● | ● | ● | ||
Paragraph border (per-corner radius + offsets)styles.paragraph-border | ● | ● | ||||||
Paragraph rules above/belowstyles.paragraph-rules | ● | ● | ● | |||||
Paragraph shading (color/width/offset/corners)styles.paragraph-shading | ● | ● | ||||||
Paragraph styles (create/rename/delete + apply)styles.paragraph.crud | ● | ● | ● | ● | ● | ● | ||
Edit a style definition property (setStyleProperty)styles.set-style-property | ● | ● | ||||||
Table styles (create/rename/delete + apply)styles.table.crud | ● | ● | ● | ◍ | ◐ |
Tables 12 features · 100% green
| Feature | Parser | Renderer | Mutation | Canvas | Shell | Panel |
|---|---|---|---|---|---|---|
Alternating row/column fillstables.alternating-fills | ● | ● | ||||
Table borders + row/column dividerstables.borders-strokes | ● | ● | ||||
Per-cell text composition (cell as mini-frame)tables.cell-composition | ● | ● | ||||
Cell diagonal linestables.cell-diagonals | ● | ● | ||||
Cell rotationtables.cell-rotation | ● | ● | ||||
Cell vertical justificationtables.cell-vertical-justification | ● | ● | ||||
Repeating header/footer rows across chain breakstables.header-footer-repeat | ● | ● | ◍ | ◍ | ||
Table model (rows, columns, cells)tables.model | ● | ● | ◐ | ◐ | ◐ | |
Tables inside cellstables.nested-tables | ● | ● | ||||
Row height constraints + column widthstables.row-col-sizing | ● | ● | ||||
Row/column spans (cell merges)tables.spans | ● | ● | ◍ | ◍ | ||
Table/cell style cascade (region defaults)tables.style-cascade | ● | ● |
Tagged XML 1 features · 0% green
| Feature | Parser |
|---|---|
Tagged XML structure (XMLElement/XMLStory/Mapping)tagged-xml.structure | · |
Test corpus 4 features · 50% green
| Feature | Canvas | SDK | Canvas |
|---|---|---|---|
Wire-op capability matrix (live-probed supported/unsupported)test-corpus.capability-matrix | ● | ◍ | |
Corpus conformance harness (parse/render levels vs core.pin)test-corpus.conformance-harness | ◍ | ||
Fidelity gate (ΔE2000 + SSIM + glyph misplacement vs InDesign PDFs)test-corpus.fidelity-gate | ◍ | ✗ | |
Deterministic generated fixtures (13 feature-mapped IDMLs)test-corpus.generated-fixtures | ● |
The renderer 21 features · 100% green
| Feature | Renderer | Canvas | SDK | Canvas | Shell | Panel | Gesture | Script |
|---|---|---|---|---|---|---|---|---|
Typed collections read surface (21 collections)the-renderer.collections-read | ◍ | ● | ||||||
CPU backend (tiny-skia, full feature coverage)the-renderer.cpu-backend | ● | |||||||
Scene-graph introspection (tree + property descriptors)the-renderer.devtools-introspection | ● | |||||||
Versioned display list IR (41 command kinds, path interning)the-renderer.display-list | ● | ◍ | ||||||
Export diagnostics (preflight findings)the-renderer.export-diagnostics | ● | ◐ | ◐ | |||||
Font registration (family/style → bytes, persists across loads)the-renderer.font-registry | ◍ | ● | ◐ | |||||
WebGPU backend (Vello)the-renderer.gpu-backend | ◐ | ● | ◍ | |||||
Hit testing (oriented containment, layer-aware) + marqueethe-renderer.hit-testing | ◍ | ◍ | ● | |||||
OffscreenCanvas worker rendering (COOP/COEP + SAB)the-renderer.offscreen-worker | ◍ | ● | ||||||
PDF export (PDF 1.7 + PDF/X-4, deterministic)the-renderer.pdf-export | ● | ● | ◍ | ◐ | ||||
Export marks + bleed (crop/registration/color bars/page info)the-renderer.pdf-export-marks | ● | ● | ◍ | |||||
Export font subsetting + embedding (fsType policy)the-renderer.pdf-font-embedding | ● | |||||||
Export image downsampling + JPEG re-encodethe-renderer.pdf-image-downsampling | ● | |||||||
Render pipeline (parse → scene → text → compose → raster)the-renderer.pipeline | ◍ | ● | ● | |||||
Element properties read (authored/computed/source)the-renderer.properties-read | ● | ● | ● | |||||
GPU scene cache (LRU, invalidation hints)the-renderer.scene-cache | ● | |||||||
Display-list structural digest (same-code-same-scene keystone)the-renderer.scene-digest | ● | ◍ | ||||||
Snap engine (page edges + sibling targets, 4 px tolerance)the-renderer.snapping | ◍ | ● | ● | |||||
Page PNG snapshots (dpi-configurable)the-renderer.snapshots | ◍ | ● | ● | |||||
Viewer session — camera present, page layout, events (the public SDK)the-renderer.viewer-session | ● | |||||||
@paged-media/idml-viewer — TS viewer (camera, pages, input lanes, events)the-renderer.viewer-wrapper | ● |
Typography 22 features · 100% green
| Feature | Parser | Renderer | Mutation | Shell | Panel |
|---|---|---|---|---|---|
Baseline shifttypography.baseline-shift | ● | ● | ● | ||
Bidirectional text reorderingtypography.bidi | ● | ||||
Capitalization (AllCaps/SmallCaps/CapToSmallCap)typography.capitalization | ● | ● | ● | ||
CJK vertical writingtypography.cjk-vertical-writing | ● | · | |||
Drop caps (characters/lines + detail scaling)typography.drop-caps | ● | ● | ● | ||
Font selection + fallback (AppliedFont/FontStyle/PointSize)typography.font-selection | ● | ● | ● | ◐ | |
Hyphenation (TeX patterns; Proximity licensed)typography.hyphenation | ● | ● | ● | ||
Hyphenation zonetypography.hyphenation-zone | ● | ◐ | |||
Word/letter spacing + glyph scaling (min/desired/max)typography.justification-spacing | ● | ● | |||
Kenten emphasis markstypography.kenten | ● | ◐ | |||
Kinsoku CJK line-break rulestypography.kinsoku | ● | ◐ | |||
Knuth–Plass line breaking + justification modestypography.knuth-plass | ● | ● | |||
Leading (explicit pt / auto)typography.leading | ● | ● | ● | ◍ | |
Ligatures + OpenType feature togglestypography.ligatures-opentype | ● | ● | ● | ||
Mojikumi CJK spacingtypography.mojikumi | ● | ◐ | |||
Position (superscript/subscript)typography.position-super-subscript | ● | ● | ● | ||
Ruby annotationstypography.ruby | ● | ◐ | |||
HorizontalScale + Skew (false italic)typography.scale-skew | ● | ● | ● | ||
Tab stops (L/C/R/decimal + leaders)typography.tab-stops | ● | ● | ● | · | |
Tracking + kerning (metrics; optical falls back to metrics)typography.tracking-kerning | ● | ◐ | ● | ◐ | |
Underline / strikethrough decorationstypography.underline-strikethru | ● | ● | ● | ||
VerticalScaletypography.vertical-scale | ● | ● | ● |
Capability state
The live, evidence-backed status of every paged capability — what is shipped, at which layer, and whether tests verify it. Generated directly from the capability registry.
Conformance
How far the corpus harness verifies each IDML feature — parsed, rendered, mutatable, round-trips — with claimed versus verified shown side by side. Generated live from the registry.