This is not a video. Press the button and the editor itself loads into the page: the engine starts in a worker, the canvas comes up on WebGPU, and the document is yours to edit. Nothing is installed and nothing is uploaded.
An InDesign-class editor in a browser tab
An InDesign-class layout application that runs entirely in your browser tab: the engine in a worker, a cockpit that follows what you are editing, and every plugin in the same chrome.
Open it — it runs in this tab
The interface follows what you are editing
The editor is organised as 6 workflow modes — design, content, prepress, data, review and export — each with its own set of panels drawn from 73. Within a mode, the surface follows the object in hand: select a text frame and the text controls come forward; step into a table cell, a path's anchors or a plugin's object, and the context bar, the panels and the breadcrumb change with you.
The engine runs in a Web Worker and draws on an OffscreenCanvas, so layout and rendering happen off the main thread the pointer lives on.
One registry behind every tool, panel and command.
Everything a layout application needs
28 built-in tools, 73 panels and a command palette over one registry. The panels below are the ones a production designer reaches for every day.
- Text and styles
- Character and paragraph panels, paragraph, character and object styles, bullets and numbering, text frame options and text wrap.
- Frames and paths
- Frame, shape, line, pen and pencil tools; path editing with anchors, handles and segments; rotate, scale and shear; frame fitting.
- Tables
- Insert and edit tables: rows, columns, header and footer rows, cell fills, strokes and spans, cell and table styles.
- Colour and swatches
- Swatches, tints, gradients and a colour mixer; CMYK, RGB, Lab and spot colour; .ase swatch libraries in and out.
- Effects
- Opacity, blend modes and InDesign's object effects, each with its parameters, per object.
- Layers
- Visible, locked and printable layers; move items between them.
- Master pages
- Masters applied to document pages, and a Pages panel to manage both.
- Preflight and separations
- A preflight panel for what would go wrong on press, and ink separations to check each plate.
- Export Center
- PDF with progress and cancel, page images as PNG, and every exporter a plugin registers — in one place.




Every plugin in the same chrome — or as its own app
8 first-party plugins are activated when the editor starts. Their tools, panels, commands, importers, exporters and edit contexts appear in the same cockpit as the built-in ones, so a vector illustration, a spreadsheet and a Word document sit on the same page as your type.
Solo mode turns one plugin into an application of its own: the same editor, booted with only that plugin's surface in front. 6 plugins have a solo profile today.
- paged.draw
- Illustrator-class · Vector illustration
- paged.image
- Photoshop-class · Raster editing on the GPU
- paged.sheet
- Excel in the layout · Live spreadsheets in print
- paged.data
- Database publishing
- paged.web
- The web, set in print · HTML and CSS as print content
- paged.doc
- Word, typeset · Word documents
Script it, record it, replay it
- Script editor
- Write paged.* JavaScript in a panel; it runs in the engine's own interpreter, next to the document, and undoes as one step.
- REPL
- One-line commands — set, insert, remove, move, undo, redo, inspect — turned straight into operations.
- Actions
- Record a sequence of commands and replay it on the next document.
- Same scripts, headless
- The script that runs in the panel runs on the command line with paged script.
InDesign files in, InDesign files out
- Open
- IDML, .paged, PDF through the PDF plugin, and any file type a loaded plugin's importer claims — by command or drag and drop.
- Save
- A .paged container (⌘S), to the file you opened when the browser allows it, otherwise as a download.
- Save as IDML
- Back to InDesign's own format, with a list of anything the format could not carry.
- Export
- PDF and PNG page images, plus every plugin exporter in the Export Center.
Editor features
| Cockpit workflow modes (Design/Content/Prepress/Data/Review/Export) editor-shell.cockpit-modes | stable· 38 tests |
| Authoring verbs in palette/menus (insert/create commands) editor-shell.command-authoring | experimental· 24 tests |
| Command palette (Cmd+K) editor-shell.command-palette | stable· 2 tests |
| Context-sensitivity — the surface follows what you are editing editor-shell.context-sensitivity | experimental· 2 tests |
| Per-mode context toolbars editor-shell.context-toolbars | stable· 129 tests |
| Cockpit document title bar (falls back to the loaded file's name) editor-shell.document-title | stable· 2 tests |
| Document intake (file input + drop) editor-shell.file-intake | stable· 36 tests |
| Global keyboard shortcuts (undo/redo, zoom, page nav) editor-shell.keyboard-shortcuts | stable· 14 tests |
| Menu bar (File/Edit/View/Window) editor-shell.menus | experimental· 63 tests |
| Panel rail + inspector context routing editor-shell.panel-rail | stable· 38 tests |
| Actions (record / replay command sequences) editor-shell.panels.actions | stable· 28 tests |
| Align editor-shell.panels.align | stable· 22 tests |
| Anchored object editor-shell.panels.anchored | stable· 10 tests |
| Attributes editor-shell.panels.attributes | stable· 22 tests |
| Bullets & numbering (concept) editor-shell.panels.bullets-numbering | stable· 52 tests |
| Cell styles editor-shell.panels.cell-styles | stable· 16 tests |
| Character editor-shell.panels.character | stable· 58 tests |
| Character styles editor-shell.panels.character-styles | stable· 18 tests |
| Color editor-shell.panels.color | stable· 22 tests |
| Color groups editor-shell.panels.color-groups | stable· 18 tests |
| Colour settings editor-shell.panels.color-settings | stable· 28 tests |
| Color wheel editor-shell.panels.color-wheel | stable· 24 tests |
| Comments + review inspector editor-shell.panels.comments | stable· 16 tests |
| Component library editor-shell.panels.component-library | stable· 16 tests |
| Conditions + condition sets editor-shell.panels.conditions | stable· 18 tests |
| Control strip editor-shell.panels.control | stable· 6 tests |
| Data source / mapping / generated pages editor-shell.panels.data-suite | stable· 18 tests |
| Document map editor-shell.panels.document-map | stable· 24 tests |
| Effects editor-shell.panels.effects | stable· 34 tests |
| Export center editor-shell.panels.export-center | stable· 16 tests |
| Export tagging (concept) editor-shell.panels.export-tagging | stable· 26 tests |
| Fonts editor-shell.panels.fonts | stable· 20 tests |
| Frame fitting editor-shell.panels.frame-fitting | stable· 22 tests |
| Glyphs editor-shell.panels.glyphs | stable· 18 tests |
| Gradients editor-shell.panels.gradients | stable· 18 tests |
| Info editor-shell.panels.info | stable· 18 tests |
| Ink manager editor-shell.panels.ink-manager | stable· 16 tests |
| Inspector (raw, dev) editor-shell.panels.inspector | stable· 24 tests |
| Journal editor-shell.panels.journal | stable· 10 tests |
| Keyboard shortcuts panel (Help ▸ Keyboard shortcuts) editor-shell.panels.keyboard-shortcuts | stable· 2 tests |
| Layers editor-shell.panels.layers | stable· 24 tests |
| Links editor-shell.panels.links | stable· 24 tests |
| Articles / Hyperlinks / Bookmarks / Cross refs / Index editor-shell.panels.list-collections | stable· 24 tests |
| Master pages editor-shell.panels.master-pages | stable· 28 tests |
| Object export options (concept) editor-shell.panels.object-export | stable· 26 tests |
| Object styles editor-shell.panels.object-styles | stable· 18 tests |
| Object transform editor-shell.panels.object-transform | stable· 34 tests |
| Outline editor-shell.panels.outline | stable· 16 tests |
| Output readiness editor-shell.panels.output-readiness | stable· 16 tests |
| Outputs + export inspector editor-shell.panels.outputs | stable· 40 tests |
| Pages (list) editor-shell.panels.pages-list | stable· 28 tests |
| Pages (navigator filmstrip) editor-shell.panels.pages-navigator | stable· 18 tests |
| Paragraph editor-shell.panels.paragraph | stable· 44 tests |
| Paragraph styles editor-shell.panels.paragraph-styles | stable· 22 tests |
| Pathfinder editor-shell.panels.pathfinder | stable· 28 tests |
| Preflight editor-shell.panels.preflight | stable· 34 tests |
| Problems editor-shell.panels.problems | stable· 8 tests |
| Properties (context inspector) editor-shell.panels.properties | stable· 129 tests |
| Publication health editor-shell.panels.publication-health | stable· 20 tests |
| Schema list demo (consumer proof for the v1.1 list tier) editor-shell.panels.schema-list-demo | stable· 10 tests |
| Schema tree demo (consumer proof for the v1.2 tree / reorder / rename tier) editor-shell.panels.schema-tree-demo | stable· untested |
| Separations & ink limit editor-shell.panels.separations | stable· 10 tests |
| Spreads editor-shell.panels.spreads | stable· 28 tests |
| Stories + story inspector editor-shell.panels.stories | stable· 29 tests |
| Stroke editor-shell.panels.stroke | stable· 44 tests |
| Swatches editor-shell.panels.swatches | stable· 18 tests |
| Table (concept) editor-shell.panels.table | stable· 34 tests |
| Table styles editor-shell.panels.table-styles | stable· 16 tests |
| Tabs (concept) editor-shell.panels.tabs | stable· 34 tests |
| Text frame options editor-shell.panels.text-frame-options | stable· 21 tests |
| Text wrap editor-shell.panels.text-wrap | stable· 22 tests |
| Tree (scene graph, dev) editor-shell.panels.tree | stable· 20 tests |
| First-party bundle loading + composition (draw/web/image/sheet/data/doc/pdf/publish) editor-shell.plugin-bundles | stable· 82 tests |
| Plugin-canary pin drift check (the PLUGIN boundary, as protocol-version guards the ENGINE one) editor-shell.plugin-pin-drift-guard | stable· untested |
| Schema panels v1.1 — list widget + applyEntity write (B-01 / G3) editor-shell.schema-panel-list-tier | stable· 10 tests |
| Solo mode — the shell boots as a single plugin's own application (?solo=<bundle>) editor-shell.solo-mode | stable· 14 tests |
| Surface-coverage gate — every registered id is named by a spec editor-shell.surface-coverage | stable· untested |
| Dark/light theming (dark default, token system) editor-shell.theme | stable· 22 tests |
| Tool rail (built-in tool catalog, flyout groups, tear-off, ToolStatus) editor-shell.tool-rail | stable· 62 tests |
| Content transforms inside frame (translate/rotate/scale content) editor-tools.content-transform | stable· 16 tests |
| Gridify (arrow keys mid-drag → N×M frames) editor-tools.draw.gridify | stable· 12 tests |
| Line draw tool (Shift 45° constraint) editor-tools.draw.line | stable· 2 tests |
| Pen tool path drawing (+ add/delete/convert anchor) editor-tools.draw.pen | stable· 22 tests |
| Pencil freehand (RDP simplification) editor-tools.draw.pencil | stable· 4 tests |
| Rectangle draw tool editor-tools.draw.rectangle | stable· 42 tests |
| Gesture lifecycle guarantees (Esc cancel, atomic commit, snap lines) editor-tools.gesture-lifecycle | stable· 40 tests |
| Gradient swatch + gradient feather drag tools editor-tools.gradient-tools | stable· 2 tests |
| Ruler-guide drag (create/move/delete) editor-tools.guides.drag | stable· 20 tests |
| Duplicate-drag (Alt) editor-tools.move.duplicate-drag | stable· 8 tests |
| Move / drag frames (Shift dominant-axis, snap, multi-select rigid) editor-tools.move.translate | stable· 40 tests |
| Pan (hand tool, Space spring-load) editor-tools.nav.pan | stable· 4 tests |
| Zoom (tool click/Alt-click, commands, fit) editor-tools.nav.zoom | stable· 8 tests |
| paged.object.* — the structural object command layer (Arrange x4 + Group / Ungroup / Select parent) editor-tools.object-commands | stable· untested |
| Canvas overlays (selection chrome, handles, marquee, tool preview, snap lines, caret, page decorations, rulers, hit marker, threading ports) editor-tools.overlays | stable· 14 tests |
| Page tool (select, Alt-insert, drag-resize, delete) editor-tools.page-tool | stable· 2 tests |
| Direct path editing (anchors, handles, scissors) editor-tools.path.direct-edit | stable· 18 tests |
| Resize via 8 handles (Shift aspect, Alt from-centre) editor-tools.resize.handles | stable· 28 tests |
| Rotate (Shift snaps to 15°) editor-tools.rotate | stable· 16 tests |
| Matrix scale (Cmd-handle, multi-select) editor-tools.scale | stable· 20 tests |
| Click select + marquee (intersect, Shift add, Cmd toggle) editor-tools.select.click-marquee | stable· 18 tests |
| Group descent (double-click enter, Escape exit) editor-tools.select.group-descent | stable· 20 tests |
| Shear (Shift snaps shear angle to 15°) editor-tools.shear | stable· 18 tests |
| Registered stub tools (gap, free-transform, content collector/placer, note) editor-tools.stub-tools | planned· untested |
| Text tool caret + typing editor-tools.text.caret-typing | stable· 20 tests |
| Drag-and-drop text editor-tools.text.drag-drop | planned· untested |
| Text thread overlay (View ▸ Show text threads) editor-tools.text.thread-lines | stable· 4 tests |
| Text threading via ports editor-tools.text.threading-ports | stable· 16 tests |
| Assign an existing page item to a layer layers.item-assignment | stable· 11 tests |
| Layer model (visibility, lock, printable, z-order) layers.model | stable· 33 tests |
| Nested layer groups (folders, inherited hide/lock) layers.nested-groups | stable· untested |
| Layer ops (insert/remove/move/rename + flags) layers.ops | stable· 37 tests |
| Cross-shape z-sort (layer + XML order) + Arrange (reorderElement) layers.z-ordering | stable· 30 tests |
| Break before (StartParagraph — next column, frame, page, odd/even page) layout-model.break-before | experimental· 4 tests |
| FirstBaselineOffset modes layout-model.first-baseline-offset | stable· 1 test |
| TextFrame AutoSizing (width/height growth) layout-model.frame-autosizing | stable· 1 test |
| Ruler guides (parse, snap targets, editing) layout-model.guides | stable· 9 tests |
| Keep options (keep with next, keep lines together, first/last lines) layout-model.keep-options | experimental· 4 tests |
| Page growth — a story's frame chain adds pages while it oversets (Smart Text Reflow) layout-model.page-growth | experimental· 8 tests |
| Span and split columns (SpanColumnType) layout-model.span-split-columns | experimental· 6 tests |
| Spread / MasterSpread ItemTransform layout-model.spread-item-transform | stable· untested |
| Spreads & pages (geometry, stacking, page items) layout-model.spreads-pages | stable· 17 tests |
| Text-frame columns (count, gutter, vertical balance) layout-model.text-columns | stable· 5 tests |
| Text-frame threading chain (NextTextFrame story distribution) layout-model.text-frame-chain | stable· 19 tests |
| Frame vertical justification (top/center/bottom/justify) layout-model.vertical-justification | stable· 1 test |
| Insert fns return the created id + auto-select scripting.author-returns-id | stable· 1 test |
| Collection reads (swatches, styles, links, conditions, gradients, colorGroups, generic collection()) scripting.collections | stable· 22 tests |
| console.log/warn/error/info capture scripting.console | stable· 8 tests |
| Docs scripting playground — seeded starter documents + per-function examples scripting.docs-playground-seeds | stable· 1 test |
| Full mutation surface wired into paged.* (delete/duplicate/dissolve, tables, paths, style CRUD, sections, conditions, layers, guides, selection setters) scripting.full-mutation-surface | stable· 1 test |
| Headless engine session (paged-run NDJSON CLI) scripting.headless-run | stable· 2 tests |
| paged.inspect / paged.tree / paged.stories / documentMeta / selection scripting.inspection | stable· 12 tests |
| Script ↔ wire mutation parity (same Operation channel) scripting.mutation-parity | stable· 11 tests |
| paged.pages() — page-id enumeration for authoring scripting.page-enumeration | stable· 1 test |
| paged.set / paged.get / paged.frame proxy (all property paths) scripting.property-readwrite | stable· 22 tests |
| REPL panel (inspect/set/undo/redo command line) scripting.repl | stable· 12 tests |
| Script runtime budgets (loop/recursion limits, clean errors) scripting.runtime-budgets | stable· 8 tests |
| Script editor panel (multi-line JS, Cmd+Enter, output log) scripting.script-editor | stable· 22 tests |
| paged.insertFrame / insertPage / placeImage / applyStyle / createGroup scripting.structural-authoring | stable· 1 test |
| paged.insertText / deleteRange / insertTextFrame (text authoring) scripting.text-authoring | stable· 3 tests |
| paged.undo / paged.redo scripting.undo-redo | stable· 8 tests |
| Script mutations repaint the canvas (ClearAll + markDirty on scriptResult) scripting.visible-results | stable· 1 test |
Editor, verified
| Cockpit workflow modes (Design/Content/Prepress/Data/Review/Export) | stable· 38 tests |
| Authoring verbs in palette/menus (insert/create commands) | experimental· 24 tests |
| Command palette (Cmd+K) | stable· 2 tests |
| Context-sensitivity — the surface follows what you are editing | experimental· 2 tests |
| Per-mode context toolbars | stable· 129 tests |
| Cockpit document title bar (falls back to the loaded file's name) | stable· 2 tests |
| Document intake (file input + drop) | stable· 36 tests |
| Global keyboard shortcuts (undo/redo, zoom, page nav) | stable· 14 tests |
| Menu bar (File/Edit/View/Window) | experimental· 63 tests |
| Panel rail + inspector context routing | stable· 38 tests |
| Actions (record / replay command sequences) | stable· 28 tests |
| Align | stable· 22 tests |
| Anchored object | stable· 10 tests |
| Attributes | stable· 22 tests |
| Bullets & numbering (concept) | stable· 52 tests |
| Cell styles | stable· 16 tests |
| Character | stable· 58 tests |
| Character styles | stable· 18 tests |
| Color | stable· 22 tests |
| Color groups | stable· 18 tests |
| Colour settings | stable· 28 tests |
| Color wheel | stable· 24 tests |
| Comments + review inspector | stable· 16 tests |
| Component library | stable· 16 tests |
| Conditions + condition sets | stable· 18 tests |
| Control strip | stable· 6 tests |
| Data source / mapping / generated pages | stable· 18 tests |
| Document map | stable· 24 tests |
| Effects | stable· 34 tests |
| Export center | stable· 16 tests |
| Export tagging (concept) | stable· 26 tests |
| Fonts | stable· 20 tests |
| Frame fitting | stable· 22 tests |
| Glyphs | stable· 18 tests |
| Gradients | stable· 18 tests |
| Info | stable· 18 tests |
| Ink manager | stable· 16 tests |
| Inspector (raw, dev) | stable· 24 tests |
| Journal | stable· 10 tests |
| Keyboard shortcuts panel (Help ▸ Keyboard shortcuts) | stable· 2 tests |
| Layers | stable· 24 tests |
| Links | stable· 24 tests |
| Articles / Hyperlinks / Bookmarks / Cross refs / Index | stable· 24 tests |
| Master pages | stable· 28 tests |
| Object export options (concept) | stable· 26 tests |
| Object styles | stable· 18 tests |
| Object transform | stable· 34 tests |
| Outline | stable· 16 tests |
| Output readiness | stable· 16 tests |
| Outputs + export inspector | stable· 40 tests |
| Pages (list) | stable· 28 tests |
| Pages (navigator filmstrip) | stable· 18 tests |
| Paragraph | stable· 44 tests |
| Paragraph styles | stable· 22 tests |
| Pathfinder | stable· 28 tests |
| Preflight | stable· 34 tests |
| Problems | stable· 8 tests |
| Properties (context inspector) | stable· 129 tests |
| Publication health | stable· 20 tests |
| Schema list demo (consumer proof for the v1.1 list tier) | stable· 10 tests |
| Schema tree demo (consumer proof for the v1.2 tree / reorder / rename tier) | stable· untested |
| Separations & ink limit | stable· 10 tests |
| Spreads | stable· 28 tests |
| Stories + story inspector | stable· 29 tests |
| Stroke | stable· 44 tests |
| Swatches | stable· 18 tests |
| Table (concept) | stable· 34 tests |
| Table styles | stable· 16 tests |
| Tabs (concept) | stable· 34 tests |
| Text frame options | stable· 21 tests |
| Text wrap | stable· 22 tests |
| Tree (scene graph, dev) | stable· 20 tests |
| First-party bundle loading + composition (draw/web/image/sheet/data/doc/pdf/publish) | stable· 82 tests |
| Plugin-canary pin drift check (the PLUGIN boundary, as protocol-version guards the ENGINE one) | stable· untested |
| Schema panels v1.1 — list widget + applyEntity write (B-01 / G3) | stable· 10 tests |
| Solo mode — the shell boots as a single plugin's own application (?solo=<bundle>) | stable· 14 tests |
| Surface-coverage gate — every registered id is named by a spec | stable· untested |
| Dark/light theming (dark default, token system) | stable· 22 tests |
| Tool rail (built-in tool catalog, flyout groups, tear-off, ToolStatus) | stable· 62 tests |
| Content transforms inside frame (translate/rotate/scale content) | stable· 16 tests |
| Gridify (arrow keys mid-drag → N×M frames) | stable· 12 tests |
| Line draw tool (Shift 45° constraint) | stable· 2 tests |
| Pen tool path drawing (+ add/delete/convert anchor) | stable· 22 tests |
| Pencil freehand (RDP simplification) | stable· 4 tests |
| Rectangle draw tool | stable· 42 tests |
| Gesture lifecycle guarantees (Esc cancel, atomic commit, snap lines) | stable· 40 tests |
| Gradient swatch + gradient feather drag tools | stable· 2 tests |
| Ruler-guide drag (create/move/delete) | stable· 20 tests |
| Duplicate-drag (Alt) | stable· 8 tests |
| Move / drag frames (Shift dominant-axis, snap, multi-select rigid) | stable· 40 tests |
| Pan (hand tool, Space spring-load) | stable· 4 tests |
| Zoom (tool click/Alt-click, commands, fit) | stable· 8 tests |
| paged.object.* — the structural object command layer (Arrange x4 + Group / Ungroup / Select parent) | stable· untested |
| Canvas overlays (selection chrome, handles, marquee, tool preview, snap lines, caret, page decorations, rulers, hit marker, threading ports) | stable· 14 tests |
| Page tool (select, Alt-insert, drag-resize, delete) | stable· 2 tests |
| Direct path editing (anchors, handles, scissors) | stable· 18 tests |
| Resize via 8 handles (Shift aspect, Alt from-centre) | stable· 28 tests |
| Rotate (Shift snaps to 15°) | stable· 16 tests |
| Matrix scale (Cmd-handle, multi-select) | stable· 20 tests |
| Click select + marquee (intersect, Shift add, Cmd toggle) | stable· 18 tests |
| Group descent (double-click enter, Escape exit) | stable· 20 tests |
| Shear (Shift snaps shear angle to 15°) | stable· 18 tests |
| Registered stub tools (gap, free-transform, content collector/placer, note) | planned· untested |
| Text tool caret + typing | stable· 20 tests |
| Drag-and-drop text | planned· untested |
| Text thread overlay (View ▸ Show text threads) | stable· 4 tests |
| Text threading via ports | stable· 16 tests |
| Assign an existing page item to a layer | stable· 11 tests |
| Layer model (visibility, lock, printable, z-order) | stable· 33 tests |
| Nested layer groups (folders, inherited hide/lock) | stable· untested |
| Layer ops (insert/remove/move/rename + flags) | stable· 37 tests |
| Cross-shape z-sort (layer + XML order) + Arrange (reorderElement) | stable· 30 tests |
| Break before (StartParagraph — next column, frame, page, odd/even page) | experimental· 4 tests |
| FirstBaselineOffset modes | stable· 1 test |
| TextFrame AutoSizing (width/height growth) | stable· 1 test |
| Ruler guides (parse, snap targets, editing) | stable· 9 tests |
| Keep options (keep with next, keep lines together, first/last lines) | experimental· 4 tests |
| Page growth — a story's frame chain adds pages while it oversets (Smart Text Reflow) | experimental· 8 tests |
| Span and split columns (SpanColumnType) | experimental· 6 tests |
| Spread / MasterSpread ItemTransform | stable· untested |
| Spreads & pages (geometry, stacking, page items) | stable· 17 tests |
| Text-frame columns (count, gutter, vertical balance) | stable· 5 tests |
| Text-frame threading chain (NextTextFrame story distribution) | stable· 19 tests |
| Frame vertical justification (top/center/bottom/justify) | stable· 1 test |
| Insert fns return the created id + auto-select | stable· 1 test |
| Collection reads (swatches, styles, links, conditions, gradients, colorGroups, generic collection()) | stable· 22 tests |
| console.log/warn/error/info capture | stable· 8 tests |
| Docs scripting playground — seeded starter documents + per-function examples | stable· 1 test |
| Full mutation surface wired into paged.* (delete/duplicate/dissolve, tables, paths, style CRUD, sections, conditions, layers, guides, selection setters) | stable· 1 test |
| Headless engine session (paged-run NDJSON CLI) | stable· 2 tests |
| paged.inspect / paged.tree / paged.stories / documentMeta / selection | stable· 12 tests |
| Script ↔ wire mutation parity (same Operation channel) | stable· 11 tests |
| paged.pages() — page-id enumeration for authoring | stable· 1 test |
| paged.set / paged.get / paged.frame proxy (all property paths) | stable· 22 tests |
| REPL panel (inspect/set/undo/redo command line) | stable· 12 tests |
| Script runtime budgets (loop/recursion limits, clean errors) | stable· 8 tests |
| Script editor panel (multi-line JS, Cmd+Enter, output log) | stable· 22 tests |
| paged.insertFrame / insertPage / placeImage / applyStyle / createGroup | stable· 1 test |
| paged.insertText / deleteRange / insertTextFrame (text authoring) | stable· 3 tests |
| paged.undo / paged.redo | stable· 8 tests |
| Script mutations repaint the canvas (ClearAll + markDirty on scriptResult) | stable· 1 test |
