Skip to content

cli-v0.19.0

Choose a tag to compare

@superdoc-bot superdoc-bot released this 20 Jun 16:24

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.