cli-v0.20.2
Table Rendering Fidelity
- Compound borders β Double, triple, and thinThick variants now paint with measured band widths and interior gridlines matching Word's nested rectangle rendering.
- Border conflict resolution β Shared cell edges resolve by weight, style, and color per ECMA-376 spec; no doubling or dropped lines.
- Table styles β Base
tcPrshading surfaces as the wholeTable conditional layer; firstRow/lastRow/firstColumn/lastColumn and banding resolve by grid column. - Percent-width tables β Now honor authored grid proportions instead of content-sizing; total width and column splits match Word.
- Merged cells β vMerge-only rows retain one-line height; interior row boundaries paint continuously across both rows' extents.
- Outset/inset borders β Render as separate-borders bevel (raised frame, sunken cells) instead of heavy black.
Fixes
- Image rendering inside textbox β Images display correctly within textbox shapes.
- Toolbar with mixed fonts β Shows blank instead of falling back to Arial when multiple fonts are selected.
- Font picker dropdown β Opens on input click.
- CJK wrapping after numeric β Breaks correctly after numeric runs in long-word line breaking.
- Heading style conflicts β Resolves localized Word styles to inherit from built-in style definitions.
- Nested SDT rendering β Structured document tags render when nested.
- Tracked changes in editing mode β Typing remains plain text, not marked as change.
- Tracked rewrite corruption β Large single tracked mutations now use coarse whole-range rewrite to prevent artifact anchors in projections.
Improvements
- Document diffing β Enhanced algorithms for change detection.
Breaking Changes
Removed unstable operations from Document API:
blocks.splitβ Split paragraph at text offsetblocks.mergeβ Merge adjacent paragraphsblocks.moveβ Move paragraph within storylists.getState,lists.apply,lists.continue,lists.restart,lists.removeβ Older list mutation operationstables.moveRowβ Move row within tableparagraphs.setMarkRunPropsβ Mark run properties on paragraph
These operations were not production-ready. Use core insert/delete/replace operations instead.