cli-v0.19.0
What's New
Textbox object interaction β Select, resize, and move floating DrawingML textboxes with border-click selection, corner resize handles with live feedback, and drag-to-move with margin-offset preservation.
Blocks API enhancements β New blocks.merge, blocks.split, and blocks.move operations for programmatic paragraph manipulation (v2 sessions only).
Paragraph numbering control β Surface paragraph numbering on blocks.list and add format.paragraph.setNumbering to manage numbered sequences.
Search deleted tracked changes β Find and replace now searches within deleted tracked-change text, not just insertions.
Lists API β New lists.apply, lists.continue, lists.restart, lists.remove, and lists.getState operations for list manipulation.
Mutation planning β Add mutations.planExecute to plan and execute mutations in a single operation.
Fixes
Track-change scope persistence β Fixed resolved track-change IDs not surviving between operations in host sessions; now keys scope by stable doc handle instead of per-call closure.
Word field export β Fixed passthrough importer attaching content to passthroughInline nodes, breaking MERGEFIELD and other unrecognized field export; instruction text now lives in attrs.originalXml only.
Footnote rendering β Fixed footnotes silently dropped when body fills terminal page; terminal-page reserve bump now grows body on relayout when footnote demand exceeds placed reserve.
Note caret and selection β Fixed drifting caret, selection rects, and arrow navigation in multi-paragraph note sessions by resolving geometry directly from painted pm ranges and falling back to offset bridge for unpainted positions.
Note paragraph styles β Fixed note paragraphs losing FootnoteText style on Enter or paste; appended transaction now re-stamps paragraphs without styleId using nearest styled sibling's properties.
Cross-paragraph deletion in suggesting mode β Fixed deletion spanning two paragraphs splitting instead of re-joining; replaceStep.js now compiles slices without inline content as plain tracked deletions and emits explicit caret hint.
IME composition β Deferred layout rerender and track-changes rewriting during IME composition to prevent editing breaks.
Tracked-change review navigation β Fixed review navigation getting stuck and unable to return to previous position.
First-line list indentation β Fixed justified-text width for numbered lists with first-line indent by computing marker-suffix tab width from actual tab stops instead of stale textStartX targets.
Orphan calls β Removed orphan superdoc-dev environment calls.
Improvements
Footnote keystroke performance β Warm-start reserve convergence from previous fixed point, reducing footnote pipeline cost from 75ms to 12ms per keystroke on 25-footnote document.
Numbering recompute β Skip numbering plugin's full-document diff on BLOCK_NODE_METADATA_UPDATE_META transactions; saves ~16ms per keystroke on 776-paragraph documents.
Toolbar refresh coalescing β Coalesce headless toolbar refresh per microtask when transaction and selectionUpdate fire synchronously; eliminates redundant snapshot rebuilds.
Layout engine β Fold footnote warm-start seed into initial pagination for single-pagination steady state; page-token relayout preserves seeded options.
V2 architecture β New v2 package with unified editor runtime, review state management, drawing taxonomy for shape/textbox support, and v1 compatibility wiring.
Test coverage β 70+ new comprehensive tests covering v2 wiring, custom UI parity, mutations, and block API operations.