Learning in public — this documentation is written in the open and updated as the engine moves.
paged.Paged Docs
Capability state

Capability matrix

Every paged capability across every implementation layer, with its status and the health its latest CI test runs give it.

Tier: IntermediateIntermediateIIreference

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 with a re-test pending, shipped but untested, partial, failing, or planned, so the grid reads in greyscale. The support badge beside each IDML feature links here to its row.

705
Capabilities
74%
Shipped
92%
Green of shipped
0
Failing
40
Untested
0
Re-test pending

40 chapters · from the capability record of 2026-10-18 (cockpit @ e53a7a52), built from the newest CI test runs.

● shipped & verified · ○ shipped, re-test pending · ◍ shipped, untested · ◐ partial · ✗ failing · · planned

Foundations 3 features · 100% green

FeatureParserCanvasSDKCanvas
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
●

Package anatomy 9 features · 100% green

FeatureParserRendererCanvasSDKCanvasAPI
Composition part (paged/core/composition/document.pgd — arrangement)
package-anatomy.composition-part
◐●
Full package IMPORT — IDML adapter (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
●●
Native model part (paged/core/model/document.pgm — the self-owning document)
package-anatomy.native-model-part
●●·
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
·

Geometry & coordinates 6 features · 100% green

FeatureParserRendererMutationCanvasPanelGesture
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
●●●

Layout model 14 features · 100% green

FeatureParserRendererMutationCanvasCanvasPanelGesture
Break before (StartParagraph — next column, frame, page, odd/even page)
layout-model.break-before
●●●
Column rules between a text frame's columns
layout-model.column-rules
●●·
Facing pages in documents made in the editor
layout-model.facing-pages-authoring
···
FirstBaselineOffset modes
layout-model.first-baseline-offset
●●●
TextFrame AutoSizing (width/height growth)
layout-model.frame-autosizing
●●●
Ruler guides (parse, snap targets, editing)
layout-model.guides
●◐●●●·
Keep options (keep with next, keep lines together, first/last lines)
layout-model.keep-options
●●●
Page growth — a story's frame chain adds pages while it oversets (Smart Text Reflow)
layout-model.page-growth
●●◐
Span and split columns (SpanColumnType)
layout-model.span-split-columns
●●●
Spread / MasterSpread ItemTransform
layout-model.spread-item-transform
●●
Spreads & pages (geometry, stacking, page items)
layout-model.spreads-pages
●●●●●●
Text-frame columns (count, gutter, vertical balance)
layout-model.text-columns
●●●●
Text-frame threading chain (NextTextFrame story distribution)
layout-model.text-frame-chain
●●●●◐
Frame vertical justification (top/center/bottom/justify)
layout-model.vertical-justification
●●●

Stories & text 17 features · 100% green

FeatureParserRendererMutationCanvasCanvasPanelGesture
Text caret + range selection (geometry, content selection)
stories-text.caret-selection
●●◐
Drag-and-drop text
stories-text.drag-drop-text
·
Endnotes
stories-text.endnotes
●●●
Insert field (page-number marker etc.) at offset
stories-text.fields.insert
●●
Footnote bodies
stories-text.footnotes
●◐●
GREP styles (character style by regular expression)
stories-text.grep-styles
··
Hidden text handling
stories-text.hidden-text
◐
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 offset
stories-text.text.insert
●●●◐
Tracked changes (insertions/deletions, author/date)
stories-text.tracked-changes
◐

Styles 13 features · 100% green

FeatureParserRendererMutationCanvasCanvasPanelScript
Based-on style inheritance chains
styles.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 + redefine
styles.next-style-overrides
●◐·
Object styles (create/rename/delete + apply)
styles.object.crud
●●●●●●
Paragraph border (per-corner radius + offsets)
styles.paragraph-border
●●
Paragraph rules above/below
styles.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
●●●●◐

Frames & paths 27 features · 100% green

FeatureParserRendererMutationCanvasPanelGestureDrawPublish
Appearance stack bakes to a group of stacked page items (B-24)
frames-paths.appearance-bake
●●●
GraphicLine arrowheads (triangle/circle/bar)
frames-paths.arrowheads
●●
Decorative corner options (Rounded/Inverse/Bevel/Inset/Fancy)
frames-paths.corner-options
●●●
Corner options on polygons (B-23) — apply arms, renderer, IDML write path
frames-paths.corner-options-polygon
●◐●●
Delete frame
frames-paths.frame.delete
●●
Insert frame (rectangle) by bounds
frames-paths.frame.insert
●●●
moveFrame wire op
frames-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
●●●
Nested page items (paste-into) — parse, render clip, pasteInto/releaseFrom
frames-paths.nested-content
●●●●
Page-item kinds (TextFrame, Rectangle, Oval, Polygon, GraphicLine, Group)
frames-paths.page-item-kinds
●●
Path clipping/masking (non-zero winding)
frames-paths.path-clipping
●
closePath — close an open subpath (the faithful inverse of pathOpenAt)
frames-paths.path.close
●●●
Insert freehand path (optional smoothing)
frames-paths.path.insert
●●●
joinPaths — weld two open paths into one element
frames-paths.path.join
●●●
Pathfinder boolean (union/intersect/subtract/exclude)
frames-paths.pathfinder-boolean
●●●
Divide / Trim / Merge / Crop / Outline / Minus Back
frames-paths.pathfinder-verbs
●●●
Planar arrangement — faces of overlapping paths (B-22)
frames-paths.planar-arrangement
●●
Ellipse / polygon shape tools
frames-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/tint
frames-paths.stroke-gap-color
●●●●
Stroke overprint
frames-paths.stroke-overprint
●●●
Striped / wavy strokes
frames-paths.stroke-striped-wavy
●●●
Variable-width (tapered / pressure) strokes — per-anchor width outline
frames-paths.stroke-variable-width
●◐
Stroke weight + line caps + joins
frames-paths.stroke-weight-caps-joins
●●●●
Text on a path
frames-paths.text-on-path
●●●●●

Typography 24 features · 100% green

FeatureParserRendererMutationPanel
Balance ragged lines
typography.balance-ragged
●◐●
Align to baseline grid (document and frame grids)
typography.baseline-grid
◍◍··
Baseline shift
typography.baseline-shift
●●●●
Bidirectional text reordering
typography.bidi
●
Capitalization (AllCaps/SmallCaps/CapToSmallCap)
typography.capitalization
●●●◐
CJK vertical writing
typography.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 zone
typography.hyphenation-zone
●●
Word/letter spacing + glyph scaling (min/desired/max)
typography.justification-spacing
●●◐
Kenten emphasis marks
typography.kenten
●●
Kinsoku CJK line-break rules
typography.kinsoku
●◐
Knuth–Plass line breaking + justification modes
typography.knuth-plass
●●
Leading (explicit pt / auto)
typography.leading
●●●●
Ligatures + OpenType feature toggles
typography.ligatures-opentype
●●●◐
Mojikumi CJK spacing
typography.mojikumi
●◐
Position (superscript/subscript)
typography.position-super-subscript
●●●●
Ruby annotations
typography.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 decorations
typography.underline-strikethru
●●●●
VerticalScale
typography.vertical-scale
●●●●

Tables 13 features · 100% green

FeatureParserRendererMutationCanvasPanel
Alternating row/column fills
tables.alternating-fills
●●
Table borders + row/column dividers
tables.borders-strokes
●●
Per-cell text composition (cell as mini-frame)
tables.cell-composition
●●
Cell diagonal lines
tables.cell-diagonals
●●
Cell rotation
tables.cell-rotation
●●
Cell vertical justification
tables.cell-vertical-justification
●●
Table model (rows, columns, cells)
tables.model
●●◐◐◐
Tables inside cells
tables.nested-tables
●●
Row height constraints + column widths
tables.row-col-sizing
●●
Row keep options (Start Row, Keep With Next Row)
tables.row-keep-options
●●●
Row/column spans (cell merges)
tables.spans
●●●●
Table/cell style cascade (region defaults)
tables.style-cascade
●●

Color & swatches 12 features · 92% green

FeatureParserRendererMutationCanvasPanelGestureScript
Character fill color
color-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 frames
color-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-CMYK
color-swatches.lab-mixed-ink
●◐
CMYK overprint
color-swatches.overprint
●●
Process CMYK/RGB + spot inks + tints
color-swatches.process-spot-tint
●●●
Swatch CRUD (create/edit/delete + .ase import/export)
color-swatches.swatch.crud
●●●●●

Images & graphics 7 features · 86% green

FeatureParserRendererMutationPanelScript
Image clipping paths (from image metadata)
images-graphics.clipping-paths
●●
CMYK JPEG with embedded ICC profile
images-graphics.cmyk-jpeg-icc
◍◍
EPS / PostScript placements (recognised + honestly rendered; no decode)
images-graphics.eps-decode
●●
Frame fitting (fill/fit/content + crops)
images-graphics.frame-fitting
●●●●
Image clipped to frame path
images-graphics.image-clipping
●
Missing-image placeholder (grey + diagonal X) + diagnostic
images-graphics.missing-image-placeholder
●
Placed images (URI links via AssetResolver + inline base64)
images-graphics.placed-images
●●●●

Effects & transparency 11 features · 100% green

FeatureParserRendererMutationCanvasPanelGestureDrawPublish
Bevel & emboss
effects-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 glow
effects-transparency.glows
●●●●
Gradient feather
effects-transparency.gradient-feather
●●●●
Inner shadow
effects-transparency.inner-shadow
●●●●
Object opacity
effects-transparency.opacity
●●●●●
Opacity masks — a real per-pixel soft mask (luminosity or alpha, invertible)
effects-transparency.opacity-mask
●●●●◐
Satin
effects-transparency.satin
●●●
Transparency groups (nested blend group buffering)
effects-transparency.transparency-groups
●◐

Anchored & inline objects 3 features · 100% green

FeatureParserRendererMutationCanvasPanel
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 mutations
anchored-inline-objects.anchored-ops
●●
FeatureParserRendererMutationPanel
Cross-references
cross-references-hyperlinks.cross-references
●●●●
TOC entry resolution
cross-references-hyperlinks.toc
●●●●

Master spreads & overrides 4 features · 100% green

FeatureParserRendererMutationPanelPublish
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 items
master-spreads-overrides.override-resolution
●●
ShowMasterItems suppression
master-spreads-overrides.show-master-items
●●

Layers 5 features · 100% green

FeatureParserRendererMutationCanvasCanvasShellPanelScriptPublish
Assign an existing page item to a layer
layers.item-assignment
●●●●
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) + Arrange (reorderElement)
layers.z-ordering
●●●●●●

Sections, numbering & variables 4 features · 100% green

FeatureParserRendererMutationPanel
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
●◐

Conditional text 3 features · 100% green

FeatureParserRendererMutationCanvasPanelScript
Apply conditions to text ranges
conditional-text.applied-conditions
●●●●●●
Condition visibility ops (SetConditionVisible, ActivateConditionSet)
conditional-text.condition-ops
●
Condition visibility filtering (hidden runs pre-layout)
conditional-text.visibility-filtering
●●

Interactive & dynamic 4 features

FeatureParser
Animation + timing settings
interactive-dynamic.animation
·
Button behaviors (goto-page/state, show-hide, forms, zoom)
interactive-dynamic.behaviors
·
Buttons (states Up/RollOver/Down)
interactive-dynamic.buttons
◐
Sound & movie elements
interactive-dynamic.media
·

Tagged XML 1 features

FeatureParser
Tagged XML structure (XMLElement/XMLStory/Mapping)
tagged-xml.structure
·

Companion formats 2 features

FeatureParser
Books (a set of documents paginated, synchronised and exported as one)
companion-formats.book
·
Snippets & InCopy (.idms / .icml / libraries)
companion-formats.idms-icml
·

Round-tripping 5 features · 100% green

FeatureRendererMutationCanvasCanvasShellGestureScript
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
◐●●
Native document round-trip (self-owning .paged model, no source parse)
round-tripping.native-reserialization
●●
Undo / redo (invertible operation log)
round-tripping.undo-redo
●●●●

Edge cases & degradation 1 features · 100% green

FeatureRendererCanvasSDK
Render diagnostics channel (overset, missing assets, fonts)
edge-cases.diagnostics-channel
●●●

The renderer 24 features · 100% green

FeatureRendererCanvasSDKCanvasShellPanelGestureScript
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) + marquee
the-renderer.hit-testing
●●●
Missing-asset degraded render (fallback font + placed-link placeholder)
the-renderer.missing-asset-fallback
●◐
OffscreenCanvas worker rendering (COOP/COEP + SAB)
the-renderer.offscreen-worker
●●
Package / collect for output (links + fonts + report)
the-renderer.package-collect
◐·
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-encode
the-renderer.pdf-image-downsampling
●
Tagged PDF, bookmarks and accessibility (PDF/UA)
the-renderer.pdf-tagged
◐
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
●

Parser internals 2 features · 100% green

FeatureParser
Streaming XML parse (quick_xml event-driven)
parser-internals.streaming-xml
●
ZIP entry streaming (per-part decompression)
parser-internals.zip-entry-streaming
●

Test corpus 4 features · 50% green

FeatureCanvasSDKCanvas
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
●

Editor shell 82 features · 96% green

FeatureCanvasShellPanelStyleAPIDraw
Add a font from a file
editor-shell.add-font
·
AI Assistant card — local diagnosis, Claude makes the change, exact undo
editor-shell.ai-assistant
●
File ▸ New from a brief — Claude builds a whole document
editor-shell.ai-new-from-brief
●
Cockpit workflow modes (Design/Content/Prepress/Data/Review/Export)
editor-shell.cockpit-modes
●●
Authoring verbs in palette/menus (insert/create commands)
editor-shell.command-authoring
◐
Command palette (Cmd+K)
editor-shell.command-palette
●
Context-sensitivity — the surface follows what you are editing
editor-shell.context-sensitivity
◐
Per-mode context toolbars
editor-shell.context-toolbars
◐●
Cockpit document title bar (falls back to the loaded file's name)
editor-shell.document-title
●
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 routing
editor-shell.panel-rail
●●●
Actions (record / replay command sequences)
editor-shell.panels.actions
●
Align
editor-shell.panels.align
●●
Anchored object
editor-shell.panels.anchored
●●
Attributes
editor-shell.panels.attributes
●●
Bullets & numbering (concept)
editor-shell.panels.bullets-numbering
●●
Cell styles
editor-shell.panels.cell-styles
◐●
Character
editor-shell.panels.character
●●
Character styles
editor-shell.panels.character-styles
●●
Color
editor-shell.panels.color
●●
Color groups
editor-shell.panels.color-groups
●●
Colour settings
editor-shell.panels.color-settings
●●
Color wheel
editor-shell.panels.color-wheel
●●
Comments + review inspector
editor-shell.panels.comments
·●
Component library
editor-shell.panels.component-library
·●
Conditions + condition sets
editor-shell.panels.conditions
●●
Control strip
editor-shell.panels.control
●
Data source / mapping / generated pages
editor-shell.panels.data-suite
·●
Document map
editor-shell.panels.document-map
◐●
Effects
editor-shell.panels.effects
●●
Export center
editor-shell.panels.export-center
◐●
Export tagging (concept)
editor-shell.panels.export-tagging
◐●
Fonts
editor-shell.panels.fonts
●●
Frame fitting
editor-shell.panels.frame-fitting
·●●
Glyphs
editor-shell.panels.glyphs
◐●
Gradients
editor-shell.panels.gradients
●●
Info
editor-shell.panels.info
●●
Ink manager
editor-shell.panels.ink-manager
●●
Inspector (raw, dev)
editor-shell.panels.inspector
●●
Journal
editor-shell.panels.journal
●
Keyboard shortcuts panel (Help ▸ Keyboard shortcuts)
editor-shell.panels.keyboard-shortcuts
●
Layers
editor-shell.panels.layers
●●
Articles / Hyperlinks / Bookmarks / Cross refs / Index
editor-shell.panels.list-collections
●●
Master pages
editor-shell.panels.master-pages
●●
Object export options (concept)
editor-shell.panels.object-export
◐●
Object styles
editor-shell.panels.object-styles
●●
Object transform
editor-shell.panels.object-transform
●●
Outline
editor-shell.panels.outline
●●
Output readiness
editor-shell.panels.output-readiness
◐●
Outputs + export inspector
editor-shell.panels.outputs
◐◐●
Pages (list)
editor-shell.panels.pages-list
●●
Pages (navigator filmstrip)
editor-shell.panels.pages-navigator
●●
Paragraph
editor-shell.panels.paragraph
●●
Paragraph styles
editor-shell.panels.paragraph-styles
●●
Pathfinder
editor-shell.panels.pathfinder
●●
Preflight
editor-shell.panels.preflight
◐●
Problems
editor-shell.panels.problems
●●
Properties (context inspector)
editor-shell.panels.properties
●●●
Publication health
editor-shell.panels.publication-health
◐●
Schema list demo (consumer proof for the v1.1 list tier)
editor-shell.panels.schema-list-demo
●
Schema tree demo (consumer proof for the v1.2 tree / reorder / rename tier)
editor-shell.panels.schema-tree-demo
◍
Separations & ink limit
editor-shell.panels.separations
◐●
Spreads
editor-shell.panels.spreads
●●
Stories + story inspector
editor-shell.panels.stories
◐●
Stroke
editor-shell.panels.stroke
●●
Swatches
editor-shell.panels.swatches
●●
Table (concept)
editor-shell.panels.table
◐●
Table styles
editor-shell.panels.table-styles
◐●
Tabs (concept)
editor-shell.panels.tabs
●●
Text frame options
editor-shell.panels.text-frame-options
●●
Text wrap
editor-shell.panels.text-wrap
●●
Tree (scene graph, dev)
editor-shell.panels.tree
●
First-party bundle loading + composition (draw/web/image/sheet/data/doc/pdf/publish)
editor-shell.plugin-bundles
●●
Plugin-canary pin drift check (the PLUGIN boundary, as protocol-version guards the ENGINE one)
editor-shell.plugin-pin-drift-guard
◍
Schema panels v1.1 — list widget + applyEntity write (B-01 / G3)
editor-shell.schema-panel-list-tier
◐●
Solo mode — the shell boots as a single plugin's own application (?solo=<bundle>)
editor-shell.solo-mode
●
Surface-coverage gate — every registered id is named by a spec
editor-shell.surface-coverage
◍
Dark/light theming (dark default, token system)
editor-shell.theme
●●
Tool rail (built-in tool catalog, flyout groups, tear-off, ToolStatus)
editor-shell.tool-rail
●●

Editor tools & gestures 28 features · 100% green

FeatureCanvasCanvasShellGestureStyle
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 tool
editor-tools.draw.rectangle
●
Gesture lifecycle guarantees (Esc cancel, atomic commit, snap lines)
editor-tools.gesture-lifecycle
●●●
Gradient swatch + gradient feather drag tools
editor-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
●●
paged.object.* — the structural object command layer (Arrange x4 + Group / Ungroup / Select parent)
editor-tools.object-commands
●●
Canvas overlays (selection chrome, handles, marquee, tool preview, snap lines, caret, page decorations, rulers, hit marker, threading ports)
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 (gap, free-transform, content collector/placer, note)
editor-tools.stub-tools
·
Text tool caret + typing
editor-tools.text.caret-typing
●
Drag-and-drop text
editor-tools.text.drag-drop
·
Text thread overlay (View ▸ Show text threads)
editor-tools.text.thread-lines
●
Text threading via ports
editor-tools.text.threading-ports
●

Scripting 21 features · 100% green

FeatureCanvasPanelScriptStyleAPI
Scripts ask Claude for text (paged.ai.complete)
scripting.ai-complete
●
Claude writes and runs paged.* scripts (Script panel Ask bar, `paged ai`)
scripting.ai-script-writing
●●
Insert fns return the created id + auto-select
scripting.author-returns-id
●
The paged command line — open, author, render, export, query and verify documents from a shell
scripting.cli
●
Collection reads (swatches, styles, links, conditions, gradients, colorGroups, generic collection())
scripting.collections
●
console.log/warn/error/info capture
scripting.console
●
Docs scripting playground — seeded starter documents + per-function examples
scripting.docs-playground-seeds
●●●
Full mutation surface wired into paged.* (delete/duplicate/dissolve, tables, paths, style CRUD, sections, conditions, layers, guides, selection setters)
scripting.full-mutation-surface
●
Headless engine session (paged-run NDJSON CLI)
scripting.headless-run
●
paged.inspect / paged.tree / paged.stories / documentMeta / selection
scripting.inspection
●
Script ↔ wire mutation parity (same Operation channel)
scripting.mutation-parity
●●
The Node CLI over core and installed plugins, with `paged ai` (@paged-media/cli)
scripting.node-cli
◐
paged.pages() — page-id enumeration for authoring
scripting.page-enumeration
●
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 / createGroup
scripting.structural-authoring
●
paged.insertText / deleteRange / insertTextFrame (text authoring)
scripting.text-authoring
●
paged.undo / paged.redo
scripting.undo-redo
●
Script mutations repaint the canvas (ClearAll + markDirty on scriptResult)
scripting.visible-results
●●

Server 9 features · 0% green

FeatureAPI
Account management
server.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 proxy
server.fonts-proxy
◍
OpenAPI spec + generated client (drift-gated)
server.openapi
◍
Document storage (local:// offline default + remote drivers)
server.storage
◍

Plugin platform 50 features · 78% green

FeatureParserRendererMutationCanvasCanvasShellPanelAPIDrawWebImageSheet
Object-model parity matrix (every property x every surface, shrink-only gate)
platform.object-model.parity
◐
bindCreated — naming a to-be-minted id so a two-batch flow collapses to one undo (C-15)
plugin-platform.bind-created
●
Binding providers — a plugin serves the values a HOST panel binds to (ADR 023, B-26)
plugin-platform.binding-providers
◐◍◍◍
Persistent blob store (host.blob, OPFS-backed, per-plugin quota)
plugin-platform.blob-store
●
Bundle lifecycle — activate(host) → BundleHandle.dispose()
plugin-platform.bundle-lifecycle
◐●
C-34 — the parts and scene-layer doors name their CALLER (the adapter, never the bundle)
plugin-platform.caller-gated-doors
◍◍
Capability declaration — document read/write, rendering surfaces, editContext, network, clipboard
plugin-platform.capability-scopes
◐
Capability-catalog vendoring + the single-source vocabulary gate (ADR 019)
plugin-platform.catalog-vendoring
◍
System-clipboard door (host.clipboard — K-6 / S-14, text + tabular)
plugin-platform.clipboard-door
◐◍
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
●●●●●
Document-opened event for plugins
plugin-platform.document-opened
●
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
●●
plugin-template — the living proof a fresh clone builds on published canaries alone
plugin-platform.fresh-checkout-proof
◐
Headless host conformance harness (createHeadlessHost)
plugin-platform.headless-host-conformance
●
Host-owned eyedropper — sample composited pixels into the document defaults (C-32)
plugin-platform.host-eyedropper
●
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
●●●
Namespaced key-value store (host.storage — ungated, JSON values)
plugin-platform.kv-storage
◍
Plugin manifest schema + CLI validator (paged-plugin validate)
plugin-platform.manifest-schema
●
Menu contribution — a plugin placing its own verbs in the menu bar
plugin-platform.menu-contribution
◐●
Modal edit session (K-1) — entry gesture, content pointer, in-frame editing loop
plugin-platform.modal-edit-session
◐◐◐
Native-document read/open door (host.nativeDocument — document.readNative / document.openNative)
plugin-platform.native-document
●●
Object-type bake contract (live metadata -> derived IDML children)
plugin-platform.object-type-baking
◐
K-13 — one entry gesture for canvas content (entry narrowed to a one-member union)
plugin-platform.one-entry-gesture
●
Overlay TEXT primitive on the tool-preview channel
plugin-platform.overlay-channel
◐●●
Overlay contribution into the camera-space SVG surface
plugin-platform.overlay-registration
●
Panel-rail + icon contribution door (K-8 — rail launcher + sanitized SVG glyph)
plugin-platform.panel-rail-door
●●
Panel contribution registration (expert-leaf React in v0)
plugin-platform.panel-registration
●◐
Per-element parentage read (host.document.parentOf)
plugin-platform.parent-of
·◍·
Part types — a plugin declaring the container parts it owns
plugin-platform.part-types
·
Placed-asset bytes read door (host.assets.getPlacedImage — C-5 / I-04)
plugin-platform.placed-asset-bytes
◐·◐
Planar-region read door for bundles (host.document.planarRegions — K-11)
plugin-platform.planar-regions-door
●
Host save-file door (host.shell.saveFile)
plugin-platform.save-file
◍◍·
In-frame plugin scene layers (contribute.sceneLayer — vector/text/image/gradient/blend/shadow)
plugin-platform.scene-layer
●●●
The published plugin-sdk stays a SYNCHRONOUS module (no top-level await)
plugin-platform.sdk-bundle-shape
◍
C-9 — caret/selection-offset read door for bundles
plugin-platform.text-caret-door
●●
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
●●
Wire-vendoring drift gate (sync-wire --check, hard in publish CI)
plugin-platform.wire-drift-gate
◍
Worker spawn + SharedArrayBuffer (host.workers — K-3, off-main-thread compute)
plugin-platform.worker-pool
●●●

Plugin · draw 55 features · 98% green

FeatureRendererMutationCanvasGestureAPIDraw
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 UI
plugin-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 skeleton
plugin-draw.bundle-manifest
●
Compound paths — make / release, with real non-zero holes
plugin-draw.compound-paths
●
On-canvas corner-radius tool — the live-corners row's predicted handle
plugin-draw.corner-radius-tool
●
Create Outlines — a text frame's glyphs as paths
plugin-draw.create-outlines
◍◍
Direct Selection machine — drag anchors, handles and segments; multi-anchor select, marquee, nudge
plugin-draw.direct-selection
●●
vectorGraphic edit context — live enter/exit via contribute.editContext
plugin-draw.edit-context-live
●
Eyedropper — sample element properties and apply to the selection
plugin-draw.eyedropper
●●
Fill panel as a declarative schema panel — the second W3.1 consumer, with a published binding
plugin-draw.fill-schema-panel
●●
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
●
Property tests for the draw-geometry kernel
plugin-draw.geometry-properties
●
RDP polyline simplification + perpendicular segment distance
plugin-draw.geometry-rdp
●
On-canvas gradient stops on the annotator line
plugin-draw.gradient-stops
●
Graphic styles — a named, LINKED complete appearance with override DETECTION
plugin-draw.graphic-styles
●●
Headless conformance corpus over published canvas-wasm
plugin-draw.headless-conformance
●
Illustrator oracle lane — path ops recorded in Illustrator 30.1.0, replayed against the engine
plugin-draw.illustrator-oracle
●
Image Trace v0 — raster to editable vector over visioncortex
plugin-draw.image-trace
◐
InDesign round-trip lane — 27 IDML cases read by InDesign 20.0.1
plugin-draw.indesign-roundtrip
◐
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 primitive
plugin-draw.measure-overlay-text
●◐
Object model — paths, appearance stacks, graphic styles, symbols and recipes addressable through host.objects
plugin-draw.objects
●
Objects on a Path — distribute / align / pivot / reorder by TRANSFORM; it moves your objects and creates none
plugin-draw.objects-on-path
●◐
Opacity-mask commands — the paged.draw consumer of the C-28 protocol-58 door
plugin-draw.opacity-mask-commands
●
Knife and Scissors at any point on a path
plugin-draw.path-cutting
●
True Join — closePath / joinPaths over the v56 engine ops
plugin-draw.path-weld
●●
Pattern editing v1 — a re-editable tile field (step-and-repeat artwork, NOT a pattern swatch)
plugin-draw.pattern-bake
·◐
Pen v2 — continue, close and join existing paths; add / delete on the selected path
plugin-draw.pen-existing-paths
●●
Pen tool state machine (click/drag anchors, modifier matrix, close, commit)
plugin-draw.pen-machine
●
Pressure-aware pencil — variable-width strokes via outlineStrokeVariable
plugin-draw.pencil-pressure
●
Work budgets for every suspected hot path
plugin-draw.perf-budgets
●
Phase 4c pro path toolset — curvature/pencil/measure machines + simplify/join/average/offset/outline/pathfinder/gradient/arrowheads commands
plugin-draw.pro-path-toolset
◐●
Reflect (horizontal, vertical, a typed axis, a copy) and Transform Again
plugin-draw.reflect-transform
●
Repeats v1 — radial / grid / mirror, and the repo's first ONE-undo build
plugin-draw.repeats
●◐
Reverse Path Direction
plugin-draw.reverse-path
●
Select-same by fill / stroke / stroke-weight (Tier A — pure selection, no mutation)
plugin-draw.select-same
●
Shape Builder gesture tool — drag merges the faces it crosses, Alt-drag deletes them
plugin-draw.shape-builder
●●
Point snapping — page edges, centre lines, corners, own anchors
plugin-draw.snapping
●●●
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 it
plugin-draw.symbols
◐
Tool options and the Path Options panel
plugin-draw.tool-options
●●
Width, blend, lasso-select, parent-group cycling, parametric generators
plugin-draw.tool-wave-2
●●
Type on a path — attach an existing story to a path, detach it
plugin-draw.type-on-path
●
One batch per flow — created ids off the reply, one shared link index
plugin-draw.write-batching
●

Plugin · web 22 features · 100% green

FeatureRendererCanvasPanelWeb
Canvas follows the document
plugin-web.auto-render
●
Bake to native content — flatten a rendered web frame/flow to Paged page items (IDML/PDF export path)
plugin-web.bake-to-native
◐
Layout parity with Chrome (recorded oracle)
plugin-web.chrome-parity
●
Bound data in templates
plugin-web.data-binding
●
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 frames
plugin-web.flow-threading
●
.html file importer — File/Open + drag-drop an HTML file into a web frame
plugin-web.html-importer
●
In-frame text editing
plugin-web.in-frame-edit
●
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
●●
Object model — web frames, their HTML and CSS properties addressable through host.objects
plugin-web.object-model
●
Outline and canvas highlight
plugin-web.outline-canvas
●
Overflow policies
plugin-web.overflow-policies
●
Break rules and @page in flows
plugin-web.page-breaks
●
Host undo reaches panel edits
plugin-web.panel-undo
●
Work counters and count budgets
plugin-web.perf-budgets
●
Flow/render readout — the last render/flow/bake outcome in the source panel
plugin-web.render-readout
●●
Sub-resources from the document only
plugin-web.resources
●
WebFrameSource model + metadata envelope + diagnostics linter
plugin-web.source-model
●
Source panel — HTML/CSS editors, sandboxed preview, options, diagnostics
plugin-web.source-panel
●●
Web fonts and faces on the canvas
plugin-web.web-fonts
●

Plugin · doc 17 features · 71% green

FeatureShellPanelDoc
Atomic pour — the place path adopts Mutation::Batch for text steps (C-14)
plugin-doc.atomic-pour
●
The wordDocument surface — objectType + editContext declaration (ADR-024)
plugin-doc.edit-context
·●
Embedded placement — a .docx poured into a host frame via host mutations
plugin-doc.embedded-placement
◐●
File entry — the .docx/.dotx importer and the "Place Word document…" command
plugin-doc.file-entry
◐◐
Identity-based LCS alignment — the preservation invariant under every derived edit
plugin-doc.identity-alignment
◍
Depth-aware table locator — a nested table cannot misdirect an outer edit
plugin-doc.nested-table-locator
◍
Object model — Word document, blocks, runs and merge fields addressable through host.objects
plugin-doc.object-model
●
OPC container + verbatim carry-through preservation (paged-ooxml)
plugin-doc.opc-foundation
●
Outline/styles panel — the retained LoweredDoc surfaced in the editor
plugin-doc.outline-panel
·●
DOCX read path — body, styles, lists, tables, images, hyperlinks, notes
plugin-doc.read-path
●
Edited save-back — targeted byte-level patch of word/document.xml
plugin-doc.save-back
·●
Save-back refusal ledger — the patcher's skips reach the Problems panel
plugin-doc.save-back-feedback
●
Paragraph-property save-back — a targeted `<w:pPr>` rewrite
plugin-doc.save-back-paragraph-props
◍
Table-structure save-back — rows and columns inserted/deleted in the source bytes
plugin-doc.save-back-table-structure
◍
Standalone open — a Word document becomes the whole document, a page per section that grows
plugin-doc.standalone-open
◐
Verbatim export — the zero-edit .docx exporter and its degrade path
plugin-doc.verbatim-export
◐●
Word pagination — line spacing, breaks and keeps as Word lays them out
plugin-doc.word-pagination
◐

Plugin · image 86 features · 76% green

FeatureAPIImage
A sampled .abr tip paints through the existing stroke accumulator
image.abr.engine-bridge
◐
.abr brush-preset reader over a new PSD descriptor reader
image.abr.reader
◐
The .abr regression gate, split into the two lanes its roles can run
image.abr.regression-gate
◐
Per-channel statistics, from the same buffer as the histogram
image.channels.readout
◐
Load a channel as the selection (luminosity masking)
image.channels.to-selection
●
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 rung 1 — the RGB display transform at decode
image.cms.ingest-transform
◐
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
●
GPU tests that cannot pass silently
image.conformance.gpu-lanes
◐
Conformance harness — scalar references, gpu↔ref parity, fixture corpus
image.conformance.harness
◐
Panel + chain integration of the new adjustments and generators
image.editor.adjust-breadth
●
Auto-enhance — gray-world WB + percentile auto-levels params from the panel histogram
image.editor.auto-enhance
●
Blur and sharpen brushes
image.editor.blur-sharpen-brush
●
Photoshop .abr brush libraries load and set the brush
image.editor.brush-presets
◐
Rotate, flip and Canvas Size over all layers
image.editor.canvas-ops
●
Clone stamp — the brush with a sampled paint layer
image.editor.clone-stamp
●
Foreground/background colour, picker and eyedropper
image.editor.color-fg-bg
◐
Content-aware fill — coarse-to-fine exemplar inpainting
image.editor.content-aware-fill
◍
Editor crop + straighten tool — host-agnostic crop machine over the geom.crop window
image.editor.crop
●
Crop straighten commits (arbitrary-angle rotation resample)
image.editor.crop-straighten
◍
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
◐
Dodge, burn and sponge
image.editor.dodge-burn
●
Filters — blur / unsharp / hue-rotate / invert in the adjustments panel
image.editor.filters
●
Gradient tool (drag the line)
image.editor.gradient-tool
●
Healing brush — a clone tone-matched in the gradient domain
image.editor.healing-brush
●
History panel over the tile journal
image.editor.history-panel
◍
Host Cmd+Z inside an image
image.editor.host-undo
●
Hue/Saturation — master, six colour ranges, colorize
image.editor.hue-saturation
◐
M4 editor enablement — C-5 placed bytes → decode → adjust → C-1 Stage-A in-frame composite
image.editor.ingest
◐
Pixel-layer stack with a compose.* fold
image.editor.layers
◐
Live adjustment preview on a resampled proxy
image.editor.live-preview
●
Paint on layer masks (Pixels/Mask edit target)
image.editor.mask-painting
●
Move tool for pixels and layers
image.editor.move-tool
●
Brush / Pencil / Eraser — the raster paint lane
image.editor.paint
●◐
Paint bucket
image.editor.paint-bucket
◍
Patch tool
image.editor.patch
●
Define pattern, pattern fill and shape blur
image.editor.pattern-fill
●
Median, Maximum, Minimum and Color Lookup
image.editor.rank-filters
◐
Raster type — shaped glyphs painted into a layer
image.editor.raster-type
◐
Red eye
image.editor.red-eye
●
Resample — resize the working image through the registered kernels
image.editor.resample
●
Spot healing brush
image.editor.spot-heal
●
C-6 tile provider for placed images (host.images.claimImageResource, v44; honest level-0 subset)
image.editor.tile-provider
◐
Raster tool options in the host's tool-options bar
image.editor.tool-options
◐
Bounded COW tile journal — undo/redo for pixel edits
image.editor.undo-journal
◐
Engine B — persistent buffer graph (invalidation, mip-aware eval, Gestures/Operations)
image.graph.engine-b
◐
16-bit PSD sources open, reduced to 8 and reported
image.io.depth-16bit-ingest
◐
Layered PSD export
image.io.layered-psd
◐
Commit image edits to the document and reopen them
image.io.persistence
◐
Save-back — adjusted composite to PSD / PNG / JPEG
image.io.save-back
●◐
Kernel breadth — 24 new point/compose/gen kernels (73 → 97)
image.kernel.breadth-2026-08
◍
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
◐
1D and 3D LUT sampler classes
image.kernel.lut-samplers
◐
General backward-map warp
image.kernel.warp-backward
◐
Frozen WGSL kernel ABI v1 (4 bind groups, 16×16, mask-mixed pointwise)
image.kernel.wgsl-abi
●
Clipping layers — an adjustment confined to the layer beneath
image.layers.clipping
●
Editable adjustment layers
image.layers.editable-adjustments
◐
The layer fold keeps adjustment layers in f16
image.layers.f16-fold
◍
Layer groups — pass-through and isolated, nesting up to eight
image.layers.groups
◍
Smart objects
image.layers.smart-objects
●
Object model — layers, masks, adjustments and smart objects addressable through host.objects
image.object-model
●
A host path becomes the selection
image.paths.path-to-selection
●
A raster selection becomes a real vector path
image.paths.selection-to-path
◐
Work counters and count budgets
image.perf.budgets
●
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 structural session — layer list/edit/save reach the editor
image.psd.editor-doors
◍
PSD import populates the layer stack (declines rather than approximates)
image.psd.layer-import
◐
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
●
Selection system — marquee/ellipse/lasso/wand over the mask ABI
image.selection.mask-tools
●●
Selection coverage threaded through the GPU adjust chain
image.selection.masked-pipeline
●
Select ▸ Modify and wand options
image.selection.modify
●

Plugin · slide 15 features · 100% green

FeatureSlide
PowerPoint charts drawn as native shapes from their cached values
plugin-slide.charts
◐
A deck's embedded fonts reach the document, within their licences
plugin-slide.embedded-fonts
◐
A PPTX opens as native slides (generated IDML, inheritance resolved)
plugin-slide.import-native
◐
New slide from layout; layout editing
plugin-slide.layouts
◐
Object model — slides, layouts and placeholders addressable through host.objects
plugin-slide.object-model
●
Engine and host features for slides — page order, page metadata, masters, page images, go to page
plugin-slide.page-doors
◐
PowerPoint as the oracle — authored fixtures and recorded answers
plugin-slide.powerpoint-oracle
●
Export a .pptx (original bytes if unedited, else regenerated)
plugin-slide.pptx-export
◐
Read a .pptx into the slide IR
plugin-slide.pptx-read
●
DrawingML preset geometries become native paths
plugin-slide.preset-geometry
●
Slide sorter — thumbnails, reorder, duplicate, delete, hide
plugin-slide.slide-sorter
◐
Slideshow with transitions and builds, presenter view
plugin-slide.slideshow
·
SmartArt drawn as native shapes from PowerPoint's laid-out drawing
plugin-slide.smartart
◐
Speaker notes per slide
plugin-slide.speaker-notes
◐
PowerPoint table styles resolved as PowerPoint draws them, kept as native table styles
plugin-slide.table-styles
◐

Plugin · data 39 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
●
Bindings authoring — first-class add-binding flow in the bindings panel
data.bind.authoring
●
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
●
Universal property binding — any host.objects property bound to data, one undo step per apply (ADR 558)
data.bind.property
●
Row diff since the document was last written — added, removed and changed rows, and the bindings they reach
data.bind.row-diff
●
Sync states per binding, with pin, unpin and accept-source
data.bind.sync-review
●
Variable bindings are custom InDesign text variables; one Set re-bakes every instance (ADR 559, protocol 71)
data.bind.text-variables
●
Illustrator-compatible variable-library XML — import + export (§16.4)
data.dataset.library-xml
●
Data sets — capture / switch / delete, applied as ONE undo step (§16.4)
data.dataset.palette
●
Export as InDesign Data Merge template (native placeholders + UTF-16 data source)
data.export.datamerge
●
Binding-expression DSL — lexer, parser, evaluator and function library, 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
●
Locales as a data table (CLDR values), per-field locale and display patterns
data.i18n.locale-table
●
Placeholder lowering — variable replacement + single-region dynamic table
data.lower.content
◐
Data Merge planner — Single and Multiple Records laid out by InDesign's rule
data.lower.merge-plan
●
Data Merge writer — merge the records into the document, matching InDesign
data.lower.merge-writer
◐
Record flow lowers into text frames on pages added as the flow needs them
data.lower.recordflow-writer
◐
Re-lowering a table, barcode, record flow or merge updates its content in place
data.lower.relower-in-place
◐
v43 lowering consumers — in-text variables (D-01), image place (D-14), live record-flow (D-12), rules (D-13)
data.lower.v43-consumers
◐
paged.data's own objects in host.objects — sources, queries, bindings, data sets, variables and typed commands
data.object-model
●
Performance gates (§12.5) — engine-tier perf assertions
data.perf.gates
◐
Bindings live in the document's labels; the session part is a cache; restore from an InDesign re-save (ADR 559)
data.persist.labels
●
paged.data bundle (media.paged.data) — manifest + activate + 3 panels + DuckDB query glue
data.plugin.bundle
◐
The data session is saved with the document and restored on open
data.plugin.persistence
●
Register as an SDK data provider (publish RecordSet to other consumers, e.g. sheets)
data.provider.contract
●
Data query panel — SQL with DuckDB diagnostics, filter/sort/group builders, preview grid
data.query.panel
◐
Query engine (DuckDB-WASM) + RecordSet shape/order/hash — the Arrow seam
data.query.seam
◐
Rule editor — checked condition, firing preview, document style, per-record paragraphs
data.rule.authoring
●
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
◐
Local import of JSON, NDJSON, Parquet and XLSX into DuckDB (data-xlsx for workbooks)
data.source.local-formats
◐
Refresh policies per source — manual, on open, interval (remote, consented), never
data.source.refresh-policy
◐
Illustrator "Variables" — the four traits, mapped onto the shipped binding model (§16.4)
data.variable.traits
◐

Plugin · sheet 47 features · 100% green

FeatureAPISheet
paged.sheet serves the HOST Swatches and Character/Paragraph panels (ADR 023 phase D)
sheet.binding-providers
●◐
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
●
Row/col insert-delete wasm door — structural re-emission, refused over preserved cell addresses
sheet.calc.rewrite.structural-door
◐
Dynamic-array spill (anchor + spill range,
sheet.calc.spill
●
Chart authoring — create a chart from the editor (page-side lowering)
sheet.chart.authoring
●
Charts — plotters-backed custom DrawingBackend → frozen ChartGeometry IR → grid view + paged.draw page lowering
sheet.chart.engine
●
Graph types — stacked column/bar + radar, axis titles, transpose rows/columns, c:grouping import
sheet.chart.graphs
●
Data-provider CONSUMER — source a sheet from a governed dataset (host.dataProviders)
sheet.data.consumer
●
Multi-cell copy/paste — formulas re-addressed on paste, tabular payload, TSV interop, tiling
sheet.edit.clipboard
●
Fill handle and fill down/right — number, date, weekday/month and numbered-text series; formulas re-addressed
sheet.edit.fill
●
Session edit ops — stable range sort (values lane), find over values/formulas, replace with skip reporting
sheet.edit.ops
●
Host Cmd-Z reaches sheet edits outside the modal session (ADR-012 Tier 2)
sheet.edit.undo
●
Function library — registered functions by family, registry-driven dispatch
sheet.fn.library
●
Cell formatting — number format, font, fill, borders, alignment, wrap (setStyle) persisted to styles.xml
sheet.format.cell-style
◐
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
●
Find in sheet — a find field in the grid panel; next/previous select and reveal the match in-frame
sheet.grid.find
●
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
◐
Grid keys — arrows, Tab/Enter, F2, Delete, Esc, PageUp/Down and Cmd shortcuts in-frame and in the panel
sheet.grid.keyboard
●
Grid panel edit and commit contract
sheet.grid.panel-edit-contract
●
Range selection — drag, shift-click and shift-arrows in the grid panel and in-frame
sheet.grid.selection
●
CSV / TSV import as a one-sheet workbook, typed by locale
sheet.import.csv
●
Freeze panes — set / clear (sheetView pane) from the panel
sheet.layout.freeze
●
Merge / unmerge cells (model, xlsx mergeCells, page spans)
sheet.layout.merge
●
Column width / row height — set and reset, persisted, used by the page geometry
sheet.layout.sizes
◐
Cell fill / text colours are MINTED swatches — a raw hex in a colorRef paints nothing
sheet.lower.cell-colour-swatches
◐
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
◐
Defined names — resolve on load, define / redefine / delete, place a name or table
sheet.names.define
●
Object model — workbook, sheets, cells, ranges, names, tables and charts addressable through host.objects
sheet.objects
●
Formula dialect parser — literals, A1 refs, operator precedence, functions, union/intersection, array literals, defined names, canonical print fixpoint
sheet.parser.dialect
●
paged.sheet bundle (media.paged.sheet) — manifest + activate + 3 panels + 7 commands + importer/exporter + engine boot
sheet.plugin.bundle
●
Formula bar bound to the selected cell, with function autocompletion from the engine
sheet.plugin.formula-bar
●
Function browser + workbook inventory + the styleFromCell command (workbook panel)
sheet.plugin.function-browser
●
Workbook persistence — host.blob (OPFS) + the metadata binding envelope
sheet.plugin.persistence
◐
Workbook visual styles — xlsx parse -> deduped IR-v2 style table -> both surfaces (one resolver, cross-surface parity)
sheet.style.mapping
◐
Excel structured tables / ListObjects — model + structured references + tableN.xml part
sheet.table.structured
●
get_range_styled — the workbook's REAL per-cell visual styles, as a door of its own
sheet.wasm.range-styled-door
◐
Workbook structure — new blank workbook, add / rename / delete sheet
sheet.workbook.sheets
◐
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
●

Plugin · publish (IDML/PDF interchange) 6 features · 50% green

FeatureShellPublish
Corpus byte-identity sweep — 99/99 packages identical, and what it does NOT measure
plugin-publish.byte-identity-sweep
◍
IDML interchange adapter (idml-import + idml-export crates, re-homed to plugin-publish)
plugin-publish.idml-adapter-crates
●
.idml exporter — the outbound half of the bundle (media.paged.publish.exporter.idml)
plugin-publish.idml-exporter
◍◍
.idml importer via host.nativeDocument (@paged-media/publish bundle)
plugin-publish.idml-importer
●
Save-path defect class — nine defects between a parsed document and its bytes
plugin-publish.save-back-defects
◍
IDML import and export as typed commands
plugin-publish.typed-commands
●

Plugin · pdf 7 features · 60% green

FeaturePDF
Editable text reconstruction — positioned glyphs → paragraphs of styled runs
plugin-pdf.editable-text
◐
Editable vectors + PDF colours mapped to document swatches
plugin-pdf.editable-vector
●
Non-JPEG image import — PDFium bitmap decode for every filter chain
plugin-pdf.image-filters
◍
crates/pdf-import writes the native `.paged` OCF the engine load path expects
plugin-pdf.native-ocf-writer
●
Open/read PDF files in the editor (.pdf importer → native document)
plugin-pdf.pdf-import
◐
PDFium is the reader engine (pdf.js dropped)
plugin-pdf.pdfium-reader
◍
PDF import as a typed command
plugin-pdf.typed-commands
●