Skip to content

fix(virtualization): correct scroll mapping and viewport sizing at non-100% zoom#2171

Merged
harbournick merged 5 commits intomainfrom
fix/virtualization-zoom-scroll-mismatch
Mar 2, 2026
Merged

fix(virtualization): correct scroll mapping and viewport sizing at non-100% zoom#2171
harbournick merged 5 commits intomainfrom
fix/virtualization-zoom-scroll-mismatch

Conversation

@tupizz
Copy link
Copy Markdown
Contributor

@tupizz tupizz commented Feb 25, 2026

Summary

Fixes blank pages and excess scroll space when zoomed out (e.g., 75%) in long documents with virtualization enabled.

Relates to: IT-579 (cursor accelerates to bottom in long documents), IT-581 (scroll jumps on long documents)

Root Cause

Three interrelated bugs caused the virtualization system to break at zoom != 100%:

1. Virtual window scroll calculation ignores CSS transform scale

DomPainter.updateVirtualWindow() uses getBoundingClientRect().top to determine scroll position. This returns screen-space coordinates (affected by transform: scale(0.75)), but virtualOffsets are in layout space (unscaled). The mismatch grows linearly with scroll position — at scrollTop=15000 with 75% zoom, the error is ~5000px, causing the virtualization to mount pages above the actual viewport (blank pages).

2. Gap mismatch between PresentationEditor and DomPainter

PresentationEditor calculated viewport height using 24px page gaps (DEFAULT_PAGE_GAP), but DomPainter's virtualization defaulted to 72px (DEFAULT_VIRTUALIZED_PAGE_GAP). This made the actual rendered content taller than the viewport expected, causing the spacer math to be inconsistent.

3. CSS box overflow inflating scroll range

CSS transform: scale() does not change an element's CSS box dimensions. At zoom < 1, painterHost's CSS box (full unscaled height, e.g., 74304px) overflowed viewportHost's minHeight (scaled, e.g., 53442px), making the scroll container see ~30% extra unusable scrollable space at the bottom.

Changes

File Change
painters/dom/src/renderer.ts Added zoomFactor property + setZoom() method; fixed updateVirtualWindow() to divide rect.top by zoom to convert screen-space → layout-space
painters/dom/src/index.ts Exposed setZoom() through the createDomPainter facade
PresentationEditor.ts Wire zoom to DomPainter via setZoom() in both setZoom() and #ensurePainter(); normalize virtualization gap to match effective page gap; use explicit height + overflow: hidden on viewportHost

Before / After (75% zoom, scrollTop=15000)

Before After
Visible content Blank page Paragraphs 172-175 visible
scrollHeight 74304px (unscaled CSS box) 53462px (correct scaled size)
Viewport sizing minHeight: 53442px (overridden by child CSS box) height: 53442px + overflow: hidden

Test plan

  • painter-dom tests pass (638/638)
  • layout-engine tests pass (480/480)
  • pm-adapter tests pass (1544/1544)
  • TypeScript builds clean
  • Verified in browser: 75% zoom — content visible at scroll positions 0, 5000, 10000, 15000, 20000, 30000, and end-of-document
  • Verified 100% zoom still works correctly
  • Verified 150% zoom works correctly
  • Manual QA: test with various long documents at 50%, 75%, 100%, 125%, 150% zoom
  • Manual QA: verify cursor click-to-position works at zoomed-out levels

…n-100% zoom

Fix blank pages and excess scroll space when zoomed out in long documents.

Three interrelated bugs caused the virtualization system to break at
zoom != 100%:

1. updateVirtualWindow() used getBoundingClientRect().top (screen-space,
   affected by CSS transform: scale) but compared against virtualOffsets
   (layout-space, unscaled). Divide by zoom factor to fix.

2. PresentationEditor used 24px page gap for viewport height calculation
   while DomPainter virtualization defaulted to 72px. Normalize the
   virtualization gap to match the effective page gap.

3. CSS transform: scale() does not change layout box dimensions. At
   zoom < 1, painterHost's unscaled CSS box overflowed viewportHost,
   inflating the scroll range. Use explicit height + overflow: hidden
   on viewportHost to clip the CSS box.
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 556f6bdbd9

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread packages/super-editor/src/core/presentation-editor/PresentationEditor.ts Outdated
Blank documents created by the store lacked an `id`, causing the
PresentationEditor instance to not register in the static `#instances`
map. When `setGlobalZoom()` iterated the map it found nothing, so
zoom CSS transforms were never applied.

Two fixes:
- Add `id: uuidv4()` to the blank document config in superdoc-store
- Always register PresentationEditor instances with a fallback key
  when `documentId` is not provided, ensuring `setGlobalZoom` works
  regardless of document configuration
Copy link
Copy Markdown
Contributor

@caio-pizzol caio-pizzol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good start!

the core fix (zoom × virtualization) isn't covered by tests - each side is tested separately but the interaction isn't.

a unit test in virtualization.test.ts that calls setZoom(0.75) + triggers scroll and checks the virtual window would catch regressions here.

Comment thread packages/super-editor/src/core/presentation-editor/PresentationEditor.ts Outdated
Comment thread packages/super-editor/src/core/presentation-editor/PresentationEditor.ts Outdated
…ng, zoom test

- Replace options.documentId mutation with #registryKey private field
- Replace overflow:hidden with negative margin-bottom on painterHost
  to avoid clipping collaboration cursor labels
- Add zoom × virtualization interaction test for non-scrollable container
@tupizz tupizz requested a review from caio-pizzol February 27, 2026 17:21
Copy link
Copy Markdown
Contributor

@caio-pizzol caio-pizzol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tupizz registryKey, overflow clipping, and zoom test all addressed. left one inline comment — the test assertions are loose enough to pass on the old buggy behavior too, so they don't guard the regression yet. not blocking.

Comment thread packages/layout-engine/painters/dom/src/virtualization.test.ts Outdated
@caio-pizzol
Copy link
Copy Markdown
Contributor

@tupizz a behavior test that loads a long doc at 75% zoom, scrolls to mid-document, and checks content is visible (not blank) would go a long way — this bug is easy to regress when virtualization or zoom code changes.

Tighten the zoom × virtualization unit test to assert exact page indices
[7, 8, 9] instead of loose range checks that pass on buggy behavior.

Add a Playwright behavior test that generates a long document, sets 75%
zoom, scrolls to mid-document, and verifies content is visible (not
blank). This guards against regressions when virtualization or zoom code
changes.
Copy link
Copy Markdown
Collaborator

@harbournick harbournick left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@harbournick harbournick merged commit 84af4c0 into main Mar 2, 2026
8 checks passed
@harbournick harbournick deleted the fix/virtualization-zoom-scroll-mismatch branch March 2, 2026 22:11
@superdoc-bot
Copy link
Copy Markdown
Contributor

superdoc-bot Bot commented Mar 2, 2026

🎉 This PR is included in superdoc-cli v0.2.0-next.53

The release is available on GitHub release

@superdoc-bot
Copy link
Copy Markdown
Contributor

superdoc-bot Bot commented Mar 2, 2026

🎉 This PR is included in superdoc v1.17.0-next.59

The release is available on GitHub release

harbournick pushed a commit that referenced this pull request Mar 3, 2026
# [1.17.0](v1.16.0...v1.17.0) (2026-03-03)

### Bug Fixes

* active track change ([#2163](#2163)) ([108c14d](108c14d))
* add currentTotalPages getter and pagination-update event ([#2202](#2202)) ([95b4579](95b4579)), closes [#958](#958)
* always call resolveComment after custom TC bubble handlers (SD-2049) ([#2204](#2204)) ([34fb4e0](34fb4e0))
* backward replace insert text ([#2172](#2172)) ([66f0849](66f0849))
* before paragraph spacing inside table cells ([#1842](#1842)) ([c7efa85](c7efa85))
* **collaboration:** deduplicate updateYdocDocxData during replaceFile (SD-1920) ([#2162](#2162)) ([52962fc](52962fc))
* **comments:** cross-page collision avoidance for floating comment bubbles (SD-1998) ([#2180](#2180)) ([6cfbeca](6cfbeca))
* **comments:** emit empty comment positions so undo clears orphan bubbles ([#2235](#2235)) ([12ba727](12ba727))
* **comments:** improve multiline comment input styling ([#2242](#2242)) ([e6a0dab](e6a0dab))
* **comments:** prevent comment mark from extending to adjacent typed text ([#2241](#2241)) ([07fecd8](07fecd8))
* **comments:** reduce sidebar jitter when clicking comments (SD-2034) ([#2250](#2250)) ([c3568d2](c3568d2))
* **comments:** remove synchronous dispatch from plugin apply() (SD-1940) ([#2157](#2157)) ([887175b](887175b))
* **css:** scope ProseMirror CSS to prevent bleeding into host apps (SD-1850) ([#2134](#2134)) ([b9d98fa](b9d98fa))
* document-api improvements, plan mode, query.match, mutations ([6221580](6221580))
* **document-api:** delete table cell fix ([#2209](#2209)) ([5e5c43f](5e5c43f))
* **document-api:** distribute columns command fixes ([#2207](#2207)) ([8f4eaf7](8f4eaf7))
* **document-api:** fix cell shading in document api ([#2215](#2215)) ([456f60e](456f60e))
* **document-api:** insert table cell ([#2210](#2210)) ([357ee90](357ee90))
* **document-api:** plan-engine reliability fixes and error diagnostics ([#2185](#2185)) ([abfd81b](abfd81b))
* **document-api:** split table cell command ([#2217](#2217)) ([0b3e2b4](0b3e2b4))
* **document-api:** split table command ([#2214](#2214)) ([ec31699](ec31699))
* **editor:** render styles applied inside SDT fields (SD-2011) ([#2188](#2188)) ([9c34be3](9c34be3))
* **editor:** selection highlight flickers when dragging across mark boundaries (SD-2024) ([#2205](#2205)) ([ba03e76](ba03e76))
* extract duplicate block identity normalization from docxImporter ([7f7ff93](7f7ff93))
* improve backspace behavior near run boundaries for tracked changes ([#2175](#2175)) ([6c9c7a3](6c9c7a3))
* **layout:** per-section footer constraints for multi-section docs (SD-1837) ([#2022](#2022)) ([e11acc5](e11acc5))
* markdown block-separator blank lines and heading split style-mark normalization ([e988adc](e988adc))
* normalize review namespace into trackChanges, harden input validation ([33e907b](33e907b))
* outside click for toolbar dropdown ([#2174](#2174)) ([5f859c7](5f859c7))
* prefer full decoration range ([#2239](#2239)) ([ac15e31](ac15e31)), closes [#collectDesiredState](https://github.com/superdoc-dev/superdoc/issues/collectDesiredState) [#resolveEffectiveRanges](https://github.com/superdoc-dev/superdoc/issues/resolveEffectiveRanges) [#setPreviousRanges](https://github.com/superdoc-dev/superdoc/issues/setPreviousRanges)
* preserve line spacing and indentation on Google Docs paste ([#2183](#2183)) ([b9a7357](b9a7357)), closes [#2151](#2151)
* preserve text-align on paste from Google Docs ([#2208](#2208)) ([762231b](762231b))
* rollback comments colors / ui ([#2216](#2216)) ([a99b5ab](a99b5ab))
* **scroll:** wait for virtualized page mount and center text element ([#2221](#2221)) ([95f634e](95f634e))
* **shapes:** render grouped DrawingML shapes with custom geometry (SD-1877) ❇️ ([#2105](#2105)) ([14985a5](14985a5))
* splitting run with header adds empty row ([#2229](#2229)) ([e1965fc](e1965fc))
* **super-converter:** handle empty pic:spPr in image import ([#2254](#2254)) ([2b8dbce](2b8dbce))
* **super-editor:** backspace across run boundaries without splitting list items ([#2258](#2258)) ([27ccb64](27ccb64))
* support cell spacing ([#1879](#1879)) ([1639967](1639967))
* **tables:** defaultTableStyle support, cell fixes ([#2246](#2246)) ([74fca9c](74fca9c))
* **tables:** expand auto-width tables to fill available page width ([#2109](#2109)) ([15f36bc](15f36bc))
* **tables:** preserve TableGrid defaults and style-driven spacing/bor… ([#2230](#2230)) ([b0a482f](b0a482f))
* text highlight on export ([#2189](#2189)) ([9cbd022](9cbd022))
* track highlight changes ([#2192](#2192)) ([e164625](e164625))
* **track-changes:** correct format change description for already-formatted text (SD-2077) ([#2253](#2253)) ([b2ffc0d](b2ffc0d))
* **track-changes:** handle ReplaceAroundStep in tracked changes mode (SD-2061) ([#2225](#2225)) ([8f3cbe4](8f3cbe4))
* **track-changes:** remove ghost TrackFormat on multi-node format cancel ([#2233](#2233)) ([e925ef9](e925ef9))
* undo/redo actions ([#2161](#2161)) ([495e92f](495e92f))
* **virtualization:** correct scroll mapping and viewport sizing at non-100% zoom ([#2171](#2171)) ([84af4c0](84af4c0)), closes [#registryKey](https://github.com/superdoc-dev/superdoc/issues/registryKey)

### Features

* allow custom accept/reject handlers for TC bubbles ([#1921](#1921)) ([e30abf6](e30abf6))
* **comments:** improve floating comments ui ([#2195](#2195)) ([e870cfb](e870cfb))
* **document-api:** add format operations font size alignment color font family ([#2179](#2179)) ([f19c688](f19c688))
* **document-api:** add get markdown to sdks ([e42b56d](e42b56d))
* **document-api:** add plan-based mutation engine with query.match and style capture ([#2160](#2160)) ([365293a](365293a))
* **document-api:** default table style setting ([#2248](#2248)) ([3ad4e9f](3ad4e9f))
* **document-api:** default target-less insert to document end ([#2244](#2244)) ([c717e2b](c717e2b))
* **document-api:** doc default initial styles ([#2184](#2184)) ([f25e41f](f25e41f))
* **document-api:** format.paragraph for w:pPr formatting ([#2218](#2218)) ([32c9991](32c9991))
* **document-api:** history name space ([#2219](#2219)) ([41dea37](41dea37))
* **document-api:** include anchored text in comments list response ([#2177](#2177)) ([b3a2912](b3a2912))
* **document-api:** inline formatting parity core end-to-end ([#2197](#2197)) ([b405b03](b405b03))
* **document-api:** inline formatting rpr parity ([#2198](#2198)) ([41ab771](41ab771))
* **document-api:** lists namespace  ([#2223](#2223)) ([09ebfcb](09ebfcb))
* **document-api:** section commands ([#2199](#2199)) ([ec4abe3](ec4abe3))
* **document-api:** support deleting entire block nodes not only text ([#2181](#2181)) ([2897246](2897246))
* **document-api:** table of contents commands ([#2200](#2200)) ([baa72c4](baa72c4))
* **document-api:** tables namespace and commands ([#2182](#2182)) ([b80ee31](b80ee31))
* **document-api:** toc commands ([#2220](#2220)) ([767e010](767e010))
* **images:** allow drag-and-drop for images in editor ([#2227](#2227)) ([4b36780](4b36780))
* **layout-engine:** render table headers, tblLook support ([#2256](#2256)) ([db6a2ff](db6a2ff))
* **link-popover:** custom link popovers ([#2222](#2222)) ([070190f](070190f))
* **markdown:** add markdown override to sdk, improve conversion ([#2196](#2196)) ([04a1c71](04a1c71))
* preserve w:view setting through DOCX round-trip ([#2190](#2190)) ([48b4210](48b4210)), closes [#2070](#2070)
* real time collab in python sdk ([#2243](#2243)) ([dc3b4fd](dc3b4fd))
* **tables:** allow resizing table rows ([#2226](#2226)) ([2c6da10](2c6da10))
* **tables:** improve cell color application (context), column dragging, table pasting ([#2228](#2228)) ([066b9eb](066b9eb))
* **table:** toggle header row sets both cell types and repeatHeader atomically ([#2245](#2245)) ([2f5899d](2f5899d))
* **track-changes:** clear comment bubbles when bulk accept or reject TCs ([#2159](#2159)) ([27fbe8e](27fbe8e))

### Performance Improvements

* **comments:** batch tracked change comment creation on load ([#2166](#2166)) ([0c2eca5](0c2eca5))
* **comments:** batch tracked change creation and virtualize floating bubbles (SD-1997) ([#2168](#2168)) ([70fd7d9](70fd7d9))
@harbournick
Copy link
Copy Markdown
Collaborator

🎉 This PR is included in superdoc v1.17.0

The release is available on GitHub release

superdoc-bot Bot pushed a commit that referenced this pull request Mar 11, 2026
# [0.2.0](cli-v0.1.0...cli-v0.2.0) (2026-03-11)

### Bug Fixes

* active track change ([#2163](#2163)) ([108c14d](108c14d))
* add currentTotalPages getter and pagination-update event ([#2202](#2202)) ([95b4579](95b4579)), closes [#958](#958)
* add type definitions for PresentationEditor ([#2271](#2271)) ([5402196](5402196))
* **ai-actions:** preserve html/markdown insertion and prevent repeated formatted replacement ([#2117](#2117)) ([9f685e9](9f685e9))
* **ai:** support headless mode in EditorAdapter.applyPatch ([#1859](#1859)) ([cf9275d](cf9275d))
* allow paste from context menu ([#1910](#1910)) ([b6666bf](b6666bf))
* always call resolveComment after custom TC bubble handlers (SD-2049) ([#2204](#2204)) ([34fb4e0](34fb4e0))
* anchor table overlaps text ([#1995](#1995)) ([fc05e29](fc05e29))
* **anchor-nav:** use correct scroll container for sub-page bookmark navigation ([a300536](a300536)), closes [#scrollContainer](https://github.com/superdoc-dev/superdoc/issues/scrollContainer)
* backward replace insert text ([#2172](#2172)) ([66f0849](66f0849))
* before paragraph spacing inside table cells ([#1842](#1842)) ([c7efa85](c7efa85))
* **build:** add node polyfills to UMD bundle and angular to CI matrix ([13fa579](13fa579))
* **build:** remove dead vite-plugin-node-polyfills from UMD externals ([91de1fc](91de1fc))
* **ci:** include sub-package commits in superdoc release filter ([a2c237b](a2c237b))
* **ci:** move superdoc releaserc to package dir for proper commit filtering ([688f8e0](688f8e0))
* **cli:** add jsdoc params to formatReplaceResult ([#1923](#1923)) ([e52ddf9](e52ddf9))
* **cli:** add param jsdoc to expandGlobs ([df8c3c6](df8c3c6))
* **cli:** add returns jsdoc to formatSearchResult ([d0a0438](d0a0438))
* **cli:** lowercase docx in help text ([#1928](#1928)) ([13f9db6](13f9db6))
* **cli:** normalize dash in help text ([b2e7d36](b2e7d36))
* **cli:** prevent collab reopen from overwriting existing ydoc with blank document (SD-2138) ([#2296](#2296)) ([41b0345](41b0345))
* collaboration cursor styles fix ([fd6db10](fd6db10))
* **collaboration:** deduplicate updateYdocDocxData during replaceFile (SD-1920) ([#2162](#2162)) ([52962fc](52962fc))
* **collaboration:** memory leaks, Vue stack overflow, and Liveblocks stability (SD-1924) ([#2030](#2030)) ([a6827fd](a6827fd)), closes [#prepareDocumentForExport](https://github.com/superdoc-dev/superdoc/issues/prepareDocumentForExport)
* **collab:** prevent stale view when remote Y.js changes bypass sdBlockRev increment ([#2099](#2099)) ([0895a93](0895a93))
* **comments:** cross-page collision avoidance for floating comment bubbles (SD-1998) ([#2180](#2180)) ([6cfbeca](6cfbeca))
* **comments:** emit empty comment positions so undo clears orphan bubbles ([#2235](#2235)) ([12ba727](12ba727))
* **comments:** improve multiline comment input styling ([#2242](#2242)) ([e6a0dab](e6a0dab))
* **comments:** prevent comment mark from extending to adjacent typed text ([#2241](#2241)) ([07fecd8](07fecd8))
* **comments:** reduce sidebar jitter when clicking comments (SD-2034) ([#2250](#2250)) ([c3568d2](c3568d2))
* **comments:** remove synchronous dispatch from plugin apply() (SD-1940) ([#2157](#2157)) ([887175b](887175b))
* consolidate deletions under new replacement ([#2094](#2094)) ([0a84b86](0a84b86))
* context menu clicks would change selection position ([#1889](#1889)) ([ace0daf](ace0daf))
* **context-menu:** paste via context menu inserts at wrong position (SD-1302) ([#2110](#2110)) ([30f03f9](30f03f9))
* **converter:** handle absolute paths in header/footer relationship targets ([#1945](#1945)) ([9d82632](9d82632))
* **converter:** handle empty rPrChange run properties without dropping tracked-style runs ([c25d24d](c25d24d))
* **converter:** handle null list lvlText and always clear numbering cache ([#2113](#2113)) ([336958c](336958c))
* correctly pass table info when deriving inline run properties (SD-1865) ([#2007](#2007)) ([d752aff](d752aff))
* correctly set color and highlight of pasted text ([#2033](#2033)) ([41058b5](41058b5))
* **css:** scope ProseMirror CSS to prevent bleeding into host apps (SD-1850) ([#2134](#2134)) ([b9d98fa](b9d98fa))
* cursor drift during vertical arrow navigation (SD-1689) ([#1918](#1918)) ([982118d](982118d))
* disable footnotes typing ([#1974](#1974)) ([92b4d62](92b4d62))
* **doc-api:** stabilize create composability and expand SDK surface ([fc17167](fc17167))
* document-api improvements, plan mode, query.match, mutations ([6221580](6221580))
* **document-api:** add friendlier insert at node id with offset, or pos ([#2128](#2128)) ([c1d3682](c1d3682))
* **document-api:** add nodeId shorthand resolution across all operations ([#2131](#2131)) ([8abdaad](8abdaad))
* **document-api:** delete table cell fix ([#2209](#2209)) ([5e5c43f](5e5c43f))
* **document-api:** distribute columns command fixes ([#2207](#2207)) ([8f4eaf7](8f4eaf7))
* **document-api:** fix cell shading in document api ([#2215](#2215)) ([456f60e](456f60e))
* **document-api:** fix markdown to image ([bf0e664](bf0e664))
* **document-api:** insert table cell ([#2210](#2210)) ([357ee90](357ee90))
* **document-api:** make lists.setType preserve sequence continuity ([#2304](#2304)) ([da09826](da09826))
* **document-api:** plan-engine reliability fixes and error diagnostics ([#2185](#2185)) ([abfd81b](abfd81b))
* **document-api:** remove search match cap and validate moveComment bounds ([6d3de67](6d3de67))
* **document-api:** split table cell command ([#2217](#2217)) ([0b3e2b4](0b3e2b4))
* **document-api:** split table command ([#2214](#2214)) ([ec31699](ec31699))
* editor bundling in python CLI regression ([db0d130](db0d130))
* **editor:** prevent focus loss when typing in header/footer editors (SD-1993) ([#2238](#2238)) ([e1b8007](e1b8007)), closes [PresentationEditor.#flushRerenderQueue](https://github.com/PresentationEditor./issues/flushRerenderQueue)
* **editor:** render styles applied inside SDT fields (SD-2011) ([#2188](#2188)) ([9c34be3](9c34be3))
* **editor:** selection highlight flickers when dragging across mark boundaries (SD-2024) ([#2205](#2205)) ([ba03e76](ba03e76))
* ensure we do not duplicate bubble text ([#1934](#1934)) ([c41cf9e](c41cf9e))
* export docx blobs with docx mime type ([#1849](#1849)) ([1bc466d](1bc466d))
* **export:** prevent DOCX corruption from entity encoding and orphaned delInstrText (SD-1943) ([#2102](#2102)) ([56e917f](56e917f)), closes [#replaceSpecialCharacters](https://github.com/superdoc-dev/superdoc/issues/replaceSpecialCharacters) [#1988](#1988)
* **export:** prevent DOCX corruption from UTF-16 XML parts and schema violations (SD-2170) ([#2349](#2349)) ([f6dbb40](f6dbb40))
* **export:** sync document XML before numbering pruning to preserve list definitions ([36058c3](36058c3))
* extract duplicate block identity normalization from docxImporter ([7f7ff93](7f7ff93))
* find tracked change for firefox ([#1899](#1899)) ([a39cb68](a39cb68))
* **format:** route format.caps through textTransform so w:caps persists on export ([#2297](#2297)) ([8e771e2](8e771e2))
* handle Uint8Array media values from persistence layers ([#2298](#2298)) ([0d4505c](0d4505c))
* harden markdown image conversion ([4ba1c25](4ba1c25))
* headless yjs ([#1913](#1913)) ([4cdecf7](4cdecf7))
* ignore sdBlockId when pasting content ([#2010](#2010)) ([1b08572](1b08572))
* image z-index and overlaps ([#1950](#1950)) ([39875ac](39875ac))
* improve backspace behavior near run boundaries for tracked changes ([#2175](#2175)) ([6c9c7a3](6c9c7a3))
* issue updating paragraph properties (SD-1778) ([#1944](#1944)) ([a9076ed](a9076ed))
* **layout-bridge:** correct cell selection for tables with rowspan ([#1839](#1839)) ([0b782be](0b782be))
* **layout-bridge:** defer table fragment click mapping to geometry fallback ([#1968](#1968)) ([0eac43c](0eac43c))
* **layout-engine:** text clipping inside table in document with multi-orientation, recursive pagination for deeply nested tables (SD-1962) ([#2140](#2140)) ([072c009](072c009))
* **layout,converter:** text box rendering and page-relative anchor positioning (SD-1331, SD-1838) ([#2034](#2034)) ([3947f39](3947f39))
* **layout:** per-section footer constraints for multi-section docs (SD-1837) ([#2022](#2022)) ([e11acc5](e11acc5))
* **layout:** route list text-start calculations through resolveListTextStartPx ([02b14b8](02b14b8))
* **link-popover:** mount external popovers outside overflow:hidden container (SD-2148) ([#2308](#2308)) ([ea4be68](ea4be68))
* load alternative style definitions when main one is missing ([#1922](#1922)) ([bb4083f](bb4083f))
* make expected revision optional, update docs ([#2265](#2265)) ([250bb5b](250bb5b))
* markdown block-separator blank lines and heading split style-mark normalization ([e988adc](e988adc))
* mount Vue on wrapper element to prevent host framework conflicts (SD-1832) ([#1971](#1971)) ([0c4bdda](0c4bdda))
* normalize bookmarks in tables ([#1892](#1892)) ([369b7e1](369b7e1))
* normalize review namespace into trackChanges, harden input validation ([33e907b](33e907b))
* outside click for toolbar dropdown ([#2174](#2174)) ([5f859c7](5f859c7))
* **painter-dom:** prevent scroll acceleration feedback loop in virtualization ([#2291](#2291)) ([fb3d25e](fb3d25e))
* **painter-dom:** use absolute page Y for page-relative anchors in header/footer decorations ([0b9bc72](0b9bc72))
* performance ([#1914](#1914)) ([0747b03](0747b03))
* persist comments on reload in collab mode ([#1949](#1949)) ([2b2e56e](2b2e56e))
* pict import/export  ([#2135](#2135)) ([7e97b7b](7e97b7b))
* **placeholder:** guard against depth-0 selection in placeholder decoration ([#2025](#2025)) ([e5ee7cf](e5ee7cf))
* portrait orientation in document-api ([dafab76](dafab76))
* prefer full decoration range ([#2239](#2239)) ([ac15e31](ac15e31)), closes [#collectDesiredState](https://github.com/superdoc-dev/superdoc/issues/collectDesiredState) [#resolveEffectiveRanges](https://github.com/superdoc-dev/superdoc/issues/resolveEffectiveRanges) [#setPreviousRanges](https://github.com/superdoc-dev/superdoc/issues/setPreviousRanges)
* preserve line spacing and indentation on Google Docs paste ([#2183](#2183)) ([b9a7357](b9a7357)), closes [#2151](#2151)
* preserve selection highlight when opening toolbar dropdowns ([#2097](#2097)) ([a33568e](a33568e))
* preserve text selection highlight on right-click ([#1994](#1994)) ([db5466a](db5466a))
* preserve text-align on paste from Google Docs ([#2208](#2208)) ([762231b](762231b))
* **rendering:** show comment highlight on text with Word highlight formatting ([f6d956e](f6d956e))
* replace Node.js Buffer APIs with browser-native alternatives ([#2028](#2028)) ([b17774a](b17774a)), closes [#exportProcessMediaFiles](https://github.com/superdoc-dev/superdoc/issues/exportProcessMediaFiles)
* replace Node.js Buffer APIs with browser-native alternatives ([#2028](#2028)) ([d6141ec](d6141ec)), closes [#exportProcessMediaFiles](https://github.com/superdoc-dev/superdoc/issues/exportProcessMediaFiles)
* resolve published type declarations for Angular/TS consumers and update example ([#2026](#2026)) ([35344bd](35344bd))
* resolve sdk/adapter composability issues ([b60b17e](b60b17e))
* return null instead of blank num definition when not found ([#1990](#1990)) ([3acac3b](3acac3b))
* rollback comments colors / ui ([#2216](#2216)) ([a99b5ab](a99b5ab))
* **scroll:** wait for virtualized page mount and center text element ([#2221](#2221)) ([95f634e](95f634e))
* **sdk:** checkpoint collab sessions even when not dirty ([689f6b5](689f6b5))
* **sdk:** keep sdk sessions alive in non collab ([#2289](#2289)) ([c634ee8](c634ee8))
* **shapes:** render grouped DrawingML shapes with custom geometry (SD-1877) ❇️ ([#2105](#2105)) ([14985a5](14985a5))
* slash menu invisible in presentation mode ([#2018](#2018)) ([513bc33](513bc33)), closes [#computeCaretLayoutRect](https://github.com/superdoc-dev/superdoc/issues/computeCaretLayoutRect)
* splitting run with header adds empty row ([#2229](#2229)) ([e1965fc](e1965fc))
* structured content renders correct on hover and select ([#1843](#1843)) ([dab3f04](dab3f04))
* **super-converter:** add tableHeader export handler to fix corrupted docx ([#1900](#1900)) ([010799b](010799b))
* **super-converter:** handle empty pic:spPr in image import ([#2254](#2254)) ([2b8dbce](2b8dbce))
* **super-converter:** resolve table style conditional shading on cell import (SD-1833) ([#1985](#1985)) ([5e206f4](5e206f4))
* **super-editor:** add unsupported-content reporting across HTML/Markdown import paths ([#2115](#2115)) ([84880b7](84880b7))
* **super-editor:** align image resize handles with actual image position ([#2293](#2293)) ([217bdce](217bdce))
* **super-editor:** allow Backspace to delete empty paragraphs in suggesting mode ([#1966](#1966)) ([820c73c](820c73c))
* **super-editor:** backspace across run boundaries without splitting list items ([#2258](#2258)) ([27ccb64](27ccb64))
* **super-editor:** handle partial comment file-sets and clean up stale parts on export ([#2123](#2123)) ([f63ae0a](f63ae0a))
* **super-editor:** prevent invalid paragraph updates for nested runs in headless import ([8c11718](8c11718))
* **super-editor:** prevent invalid paragraph updates for nested runs in headless import ([c5ee6e3](c5ee6e3))
* **super-editor:** restore <hr> contentBlock parsing and harden VML HR export fallback ([#2118](#2118)) ([da51b1f](da51b1f))
* **super-editor:** restore marks correctly after clear format + undo (SD-1771) ([#1967](#1967)) ([bc9dc76](bc9dc76))
* **superdoc:** enhance comment input focus handling and edit init ([#1935](#1935)) ([0e9112c](0e9112c))
* **superdoc:** update comment text ([b5ff644](b5ff644))
* **superdoc:** update entry point comment ([#1926](#1926)) ([0dde298](0dde298))
* support cell spacing ([#1879](#1879)) ([1639967](1639967))
* table headers are incorrectly imported from html ([#2112](#2112)) ([e8d1480](e8d1480))
* table resizing regression ([#2091](#2091)) ([20ed24e](20ed24e))
* table resizing regression ([#2091](#2091)) ([9a07f1c](9a07f1c))
* **table:** resolve column resize only working on first page (SD-1772) ([#1959](#1959)) ([df43867](df43867))
* **tables:** align tableHeader attrs with tableCell to fix oversized DOCX export widths ([#2114](#2114)) ([38f0430](38f0430))
* **tables:** defaultTableStyle support, cell fixes ([#2246](#2246)) ([74fca9c](74fca9c))
* **tables:** expand auto-width tables to fill available page width ([#2109](#2109)) ([15f36bc](15f36bc))
* **tables:** fix autofit column scaling, cell width overflow, and page break splitting ([#1987](#1987)) ([61a3f6f](61a3f6f))
* **tables:** preserve TableGrid defaults and style-driven spacing/bor… ([#2230](#2230)) ([b0a482f](b0a482f))
* **tables:** prevent tblInd double-shrink when using tblGrid widths (SD-1494) ([8750ece](8750ece))
* **test:** stabilize flaky cleanUpParagraphWithAnnotations tests ([#2262](#2262)) ([7bafb7f](7bafb7f))
* text highlight on export ([#2189](#2189)) ([9cbd022](9cbd022))
* **toc:** correct zoom scaling and rect.top bug in anchor scroll ([16c768f](16c768f))
* track changes comment text for formatting changes ([#2013](#2013)) ([b2a43ff](b2a43ff))
* track changes in cli ([3742f68](3742f68))
* track highlight changes ([#2192](#2192)) ([e164625](e164625))
* **track-changes:** correct format change description for already-formatted text (SD-2077) ([#2253](#2253)) ([b2ffc0d](b2ffc0d))
* **track-changes:** handle ReplaceAroundStep in tracked changes mode (SD-2061) ([#2225](#2225)) ([8f3cbe4](8f3cbe4))
* **track-changes:** remove ghost TrackFormat on multi-node format cancel ([#2233](#2233)) ([e925ef9](e925ef9))
* **tracked-changes:** colors should be restored when format rejected ([#1970](#1970)) ([01ea504](01ea504))
* **tracked-changes:** fix suggested insertions from paste failures ([#1969](#1969)) ([e74c14a](e74c14a))
* trigger patch release ([7bc1b74](7bc1b74))
* trigger patch release ([32ced9c](32ced9c))
* trigger patch release ([da7f484](da7f484))
* trigger release ([8367dd6](8367dd6))
* undo/redo actions ([#2161](#2161)) ([495e92f](495e92f))
* use correct template syntax for GitHub release URL in PR comments ([9d1bca2](9d1bca2))
* use DEFLATE compression for docx export instead of STORE ([#1933](#1933)) ([ebcd986](ebcd986))
* **virtualization:** compute scrollY relative to scroll container, not viewport ([#2263](#2263)) ([370ca5e](370ca5e))
* **virtualization:** correct scroll mapping and viewport sizing at non-100% zoom ([#2171](#2171)) ([84af4c0](84af4c0)), closes [#registryKey](https://github.com/superdoc-dev/superdoc/issues/registryKey)
* wire DocumentApi to Editor.doc with lifecycle-safe caching ([57326ea](57326ea))
* zIndex updates ([#1973](#1973)) ([3ca7aa3](3ca7aa3))

### Features

* adaptive insert table column width ([#1533](#1533)) ([d4cae2d](d4cae2d))
* add pdf infra, migrate layers ([#2078](#2078)) ([7d416e9](7d416e9))
* add public scroll to page method ([#1791](#1791)) ([1b7687b](1b7687b))
* allow custom accept/reject handlers for TC bubbles ([#1921](#1921)) ([e30abf6](e30abf6))
* **comments:** improve floating comments ui ([#2195](#2195)) ([e870cfb](e870cfb))
* cropped images ([#1940](#1940)) ([3767a49](3767a49))
* **document-api:** add format operations font size alignment color font family ([#2179](#2179)) ([f19c688](f19c688))
* **document-api:** add get markdown to sdks ([e42b56d](e42b56d))
* **document-api:** add getHtml operation, fix HTML insert and SDK tool selection ([#2264](#2264)) ([c554678](c554678))
* **document-api:** add plan-based mutation engine with query.match and style capture ([#2160](#2160)) ([365293a](365293a))
* **document-api:** clear content command ([#2300](#2300)) ([46b5261](46b5261))
* **document-api:** default table style setting ([#2248](#2248)) ([3ad4e9f](3ad4e9f))
* **document-api:** default target-less insert to document end ([#2244](#2244)) ([c717e2b](c717e2b))
* **document-api:** doc default initial styles ([#2184](#2184)) ([f25e41f](f25e41f))
* **document-api:** format.paragraph for w:pPr formatting ([#2218](#2218)) ([32c9991](32c9991))
* **document-api:** history name space ([#2219](#2219)) ([41dea37](41dea37))
* **document-api:** hyperlinks commands ([#2294](#2294)) ([4d3bebd](4d3bebd))
* **document-api:** include anchored text in comments list response ([#2177](#2177)) ([b3a2912](b3a2912))
* **document-api:** initial image commands ([#2290](#2290)) ([d624231](d624231))
* **document-api:** inline formatting parity core end-to-end ([#2197](#2197)) ([b405b03](b405b03))
* **document-api:** inline formatting rpr parity ([#2198](#2198)) ([41ab771](41ab771))
* **document-api:** insert table adds extra separator to match ms word ([#2301](#2301)) ([5e49613](5e49613))
* **document-api:** lists namespace  ([#2223](#2223)) ([09ebfcb](09ebfcb))
* **document-api:** make styles.apply registry-driven with schema/validation ([#2267](#2267)) ([cab54ba](cab54ba))
* **document-api:** more image commands ([#2295](#2295)) ([4fbbbc9](4fbbbc9))
* **document-api:** more lists commands ([#2288](#2288)) ([eb48bf1](eb48bf1))
* **document-api:** section commands ([#2199](#2199)) ([ec4abe3](ec4abe3))
* **document-api:** support deleting entire block nodes not only text ([#2181](#2181)) ([2897246](2897246))
* **document-api:** table of contents commands ([#2200](#2200)) ([baa72c4](baa72c4))
* **document-api:** tables namespace and commands ([#2182](#2182)) ([b80ee31](b80ee31))
* **document-api:** toc commands ([#2220](#2220)) ([767e010](767e010))
* enabled telemetry by default and added documentation ([#2001](#2001)) ([8598ef7](8598ef7))
* enhance telemetry handling for sub-editors ([#2017](#2017)) ([37bc030](37bc030))
* expose setZoom and getZoom API on SuperDoc ([#2137](#2137)) ([ab09dd5](ab09dd5)), closes [#928](#928)
* extend document-api with format, examples, create.heading ([#2092](#2092)) ([fdf8c7c](fdf8c7c))
* **images:** allow drag-and-drop for images in editor ([#2227](#2227)) ([4b36780](4b36780))
* layout snapshot testing ([#2035](#2035)) ([b070cd7](b070cd7))
* **layout-engine:** render table headers, tblLook support ([#2256](#2256)) ([db6a2ff](db6a2ff))
* **link-popover:** custom link popovers ([#2222](#2222)) ([070190f](070190f))
* **links:** convert pasted hyperlinks into real docx links ([#2270](#2270)) ([7d75522](7d75522))
* **lists:** support hidden list indicators via w:vanish ([#2069](#2069)) ([#2080](#2080)) ([0bed0fd](0bed0fd))
* llm tools (alpha version) ([#2292](#2292)) ([f954e3d](f954e3d))
* **markdown:** add markdown override to sdk, improve conversion ([#2196](#2196)) ([04a1c71](04a1c71))
* **markdown:** import images from markdown ([#2303](#2303)) ([b2f6a1a](b2f6a1a))
* preserve w:view setting through DOCX round-trip ([#2190](#2190)) ([48b4210](48b4210)), closes [#2070](#2070)
* real time collab in python sdk ([#2243](#2243)) ([dc3b4fd](dc3b4fd))
* **super-editor:** add w:lock support for StructuredContent nodes (SD-1616) ([#1939](#1939)) ([2c16f1c](2c16f1c))
* superdoc cli ([d808464](d808464))
* superdoc sdk ([#2129](#2129)) ([3f55d23](3f55d23))
* support TIFF images in DOCX rendering ([#2284](#2284)) ([6436d86](6436d86)), closes [#2064](#2064)
* **tables:** allow resizing table rows ([#2226](#2226)) ([2c6da10](2c6da10))
* **tables:** improve cell color application (context), column dragging, table pasting ([#2228](#2228)) ([066b9eb](066b9eb))
* **table:** toggle header row sets both cell types and repeatHeader atomically ([#2245](#2245)) ([2f5899d](2f5899d))
* telemetry ([#1932](#1932)) ([fab3ce9](fab3ce9))
* **template-builder:** add cspNonce support ([#1911](#1911)) ([5b7b34e](5b7b34e))
* **template-builder:** add cspNonce support ([#1911](#1911)) ([bcb9d28](bcb9d28))
* the document API limited alpha ([#2087](#2087)) ([091c24c](091c24c))
* **track-changes:** clear comment bubbles when bulk accept or reject TCs ([#2159](#2159)) ([27fbe8e](27fbe8e))
* **tracked-changes:** allow partial tracked change resolution ([#2252](#2252)) ([988598d](988598d))
* update telemetry configuration to prioritize root licenseKey ([#2016](#2016)) ([3b4ff6b](3b4ff6b))
* **web-view:** new layout engine based web view ([#2100](#2100)) ([a353b82](a353b82))
* whiteboard ([#1954](#1954)) ([c9d1484](c9d1484))

### Performance Improvements

* **build:** migrate to rolldown-vite for ~2x faster builds ([#2006](#2006)) ([74004c3](74004c3))
* **build:** remove redundant steps and add fast dev build (SD-1886) ([#1999](#1999)) ([db46bf8](db46bf8))
* **comments:** batch tracked change comment creation on load ([#2166](#2166)) ([0c2eca5](0c2eca5))
* **comments:** batch tracked change creation and virtualize floating bubbles (SD-1997) ([#2168](#2168)) ([70fd7d9](70fd7d9))
@superdoc-bot
Copy link
Copy Markdown
Contributor

superdoc-bot Bot commented Mar 11, 2026

🎉 This PR is included in superdoc-cli v0.2.0

The release is available on GitHub release

harbournick added a commit that referenced this pull request Mar 17, 2026
* chore(release): 1.18.0 [skip ci]

# [1.18.0](https://github.com/superdoc-dev/superdoc/compare/v1.17.0...v1.18.0) (2026-03-05)

### Bug Fixes

* add type definitions for PresentationEditor ([#2271](https://github.com/superdoc-dev/superdoc/issues/2271)) ([5402196](https://github.com/superdoc-dev/superdoc/commit/5402196e73997b83ddd1d4f270c82e3a85c3365f))
* **document-api:** fix markdown to image ([bf0e664](https://github.com/superdoc-dev/superdoc/commit/bf0e6647820c3987b4100f8f9804e413cfb33511))
* **document-api:** make lists.setType preserve sequence continuity ([#2304](https://github.com/superdoc-dev/superdoc/issues/2304)) ([da09826](https://github.com/superdoc-dev/superdoc/commit/da0982647cd57b4e775794af52e1a23b3d6f2afe))
* **editor:** prevent focus loss when typing in header/footer editors (SD-1993) ([#2238](https://github.com/superdoc-dev/superdoc/issues/2238)) ([e1b8007](https://github.com/superdoc-dev/superdoc/commit/e1b80074377b221873158ce5befc8fa2a908d1a8)), closes [PresentationEditor.#flushRerenderQueue](https://github.com/PresentationEditor./issues/flushRerenderQueue)
* **export:** sync document XML before numbering pruning to preserve list definitions ([36058c3](https://github.com/superdoc-dev/superdoc/commit/36058c3640d12eeba8a3cf671d4cb2b46786d1d1))
* **format:** route format.caps through textTransform so w:caps persists on export ([#2297](https://github.com/superdoc-dev/superdoc/issues/2297)) ([8e771e2](https://github.com/superdoc-dev/superdoc/commit/8e771e2d2ea75d4bc72bc7f589fd9279f8027478))
* handle Uint8Array media values from persistence layers ([#2298](https://github.com/superdoc-dev/superdoc/issues/2298)) ([0d4505c](https://github.com/superdoc-dev/superdoc/commit/0d4505c77ac1c44939e8f7874a08f827a7a8e08c))
* harden markdown image conversion ([4ba1c25](https://github.com/superdoc-dev/superdoc/commit/4ba1c254c77aaa37f552f2ad9fd06ec55e802b23))
* **link-popover:** mount external popovers outside overflow:hidden container (SD-2148) ([#2308](https://github.com/superdoc-dev/superdoc/issues/2308)) ([ea4be68](https://github.com/superdoc-dev/superdoc/commit/ea4be68fb6deea669140d4af5934ba17a6a6571b))
* make expected revision optional, update docs ([#2265](https://github.com/superdoc-dev/superdoc/issues/2265)) ([250bb5b](https://github.com/superdoc-dev/superdoc/commit/250bb5b6131fd68a83a3d0959dc0a5808fb5f152))
* **painter-dom:** prevent scroll acceleration feedback loop in virtualization ([#2291](https://github.com/superdoc-dev/superdoc/issues/2291)) ([fb3d25e](https://github.com/superdoc-dev/superdoc/commit/fb3d25e809019407b1298c28f8c10ac184e1dc73))
* portrait orientation in document-api ([dafab76](https://github.com/superdoc-dev/superdoc/commit/dafab76af5f249c49936a0250e4e54ae4719b305))
* **sdk:** keep sdk sessions alive in non collab ([#2289](https://github.com/superdoc-dev/superdoc/issues/2289)) ([c634ee8](https://github.com/superdoc-dev/superdoc/commit/c634ee87bb6ac29b14b0f02d6080b2420cfe3dc6))
* **super-editor:** align image resize handles with actual image position ([#2293](https://github.com/superdoc-dev/superdoc/issues/2293)) ([217bdce](https://github.com/superdoc-dev/superdoc/commit/217bdcef86d736825b0bfe55880ac57620d1b4d3))
* **test:** stabilize flaky cleanUpParagraphWithAnnotations tests ([#2262](https://github.com/superdoc-dev/superdoc/issues/2262)) ([7bafb7f](https://github.com/superdoc-dev/superdoc/commit/7bafb7f9e0fcc0109a0a976d1a01e9ee408f7291))
* **virtualization:** compute scrollY relative to scroll container, not viewport ([#2263](https://github.com/superdoc-dev/superdoc/issues/2263)) ([370ca5e](https://github.com/superdoc-dev/superdoc/commit/370ca5ea025bd5fb57f1dfe9b79871afbcdfd9b5))

### Features

* **document-api:** add getHtml operation, fix HTML insert and SDK tool selection ([#2264](https://github.com/superdoc-dev/superdoc/issues/2264)) ([c554678](https://github.com/superdoc-dev/superdoc/commit/c554678b425c7b97670aff5d7389bbbdfe8a5c04))
* **document-api:** clear content command ([#2300](https://github.com/superdoc-dev/superdoc/issues/2300)) ([46b5261](https://github.com/superdoc-dev/superdoc/commit/46b5261f34b6793d41ab6452fb117e0f81b7437a))
* **document-api:** hyperlinks commands ([#2294](https://github.com/superdoc-dev/superdoc/issues/2294)) ([4d3bebd](https://github.com/superdoc-dev/superdoc/commit/4d3bebd6c89dd1cbd5c143e61c71beca45daba1b))
* **document-api:** initial image commands ([#2290](https://github.com/superdoc-dev/superdoc/issues/2290)) ([d624231](https://github.com/superdoc-dev/superdoc/commit/d624231a97872af746d93de70129ac734cd363b8))
* **document-api:** insert table adds extra separator to match ms word ([#2301](https://github.com/superdoc-dev/superdoc/issues/2301)) ([5e49613](https://github.com/superdoc-dev/superdoc/commit/5e496130249a8fc5403f201c667106c5da4961fb))
* **document-api:** make styles.apply registry-driven with schema/validation ([#2267](https://github.com/superdoc-dev/superdoc/issues/2267)) ([cab54ba](https://github.com/superdoc-dev/superdoc/commit/cab54badc20e7002ce82be6f4e02f84e71802717))
* **document-api:** more image commands ([#2295](https://github.com/superdoc-dev/superdoc/issues/2295)) ([4fbbbc9](https://github.com/superdoc-dev/superdoc/commit/4fbbbc987e2469b8fd70c1a07a79dacc801f6733))
* **document-api:** more lists commands ([#2288](https://github.com/superdoc-dev/superdoc/issues/2288)) ([eb48bf1](https://github.com/superdoc-dev/superdoc/commit/eb48bf1cf72da0c780998cf033e851aadc144206))
* **links:** convert pasted hyperlinks into real docx links ([#2270](https://github.com/superdoc-dev/superdoc/issues/2270)) ([7d75522](https://github.com/superdoc-dev/superdoc/commit/7d7552203f0bbc6779149656e447432d50eb2697))
* **markdown:** import images from markdown ([#2303](https://github.com/superdoc-dev/superdoc/issues/2303)) ([b2f6a1a](https://github.com/superdoc-dev/superdoc/commit/b2f6a1ad5692153b60edb5b88347b5c8e37191f7))
* support TIFF images in DOCX rendering ([#2284](https://github.com/superdoc-dev/superdoc/issues/2284)) ([6436d86](https://github.com/superdoc-dev/superdoc/commit/6436d861efbdb52d592a0069fc84a1f5d830f358)), closes [#2064](https://github.com/superdoc-dev/superdoc/issues/2064)
* **tracked-changes:** allow partial tracked change resolution ([#2252](https://github.com/superdoc-dev/superdoc/issues/2252)) ([988598d](https://github.com/superdoc-dev/superdoc/commit/988598d7f20e263e81715a2f0195abc2ecffe75b))
* **web-view:** new layout engine based web view ([#2100](https://github.com/superdoc-dev/superdoc/issues/2100)) ([a353b82](https://github.com/superdoc-dev/superdoc/commit/a353b82a3c0404db13cda8ab72f7500b2aae8e09))

* chore(release): 1.18.0 [skip ci]

# [1.18.0](https://github.com/superdoc-dev/superdoc/compare/v1.17.0...v1.18.0) (2026-03-05)

### Bug Fixes

* add type definitions for PresentationEditor ([#2271](https://github.com/superdoc-dev/superdoc/issues/2271)) ([5402196](https://github.com/superdoc-dev/superdoc/commit/5402196e73997b83ddd1d4f270c82e3a85c3365f))
* **document-api:** fix markdown to image ([bf0e664](https://github.com/superdoc-dev/superdoc/commit/bf0e6647820c3987b4100f8f9804e413cfb33511))
* **document-api:** make lists.setType preserve sequence continuity ([#2304](https://github.com/superdoc-dev/superdoc/issues/2304)) ([da09826](https://github.com/superdoc-dev/superdoc/commit/da0982647cd57b4e775794af52e1a23b3d6f2afe))
* **editor:** prevent focus loss when typing in header/footer editors (SD-1993) ([#2238](https://github.com/superdoc-dev/superdoc/issues/2238)) ([e1b8007](https://github.com/superdoc-dev/superdoc/commit/e1b80074377b221873158ce5befc8fa2a908d1a8)), closes [PresentationEditor.#flushRerenderQueue](https://github.com/PresentationEditor./issues/flushRerenderQueue)
* **export:** sync document XML before numbering pruning to preserve list definitions ([36058c3](https://github.com/superdoc-dev/superdoc/commit/36058c3640d12eeba8a3cf671d4cb2b46786d1d1))
* **format:** route format.caps through textTransform so w:caps persists on export ([#2297](https://github.com/superdoc-dev/superdoc/issues/2297)) ([8e771e2](https://github.com/superdoc-dev/superdoc/commit/8e771e2d2ea75d4bc72bc7f589fd9279f8027478))
* handle Uint8Array media values from persistence layers ([#2298](https://github.com/superdoc-dev/superdoc/issues/2298)) ([0d4505c](https://github.com/superdoc-dev/superdoc/commit/0d4505c77ac1c44939e8f7874a08f827a7a8e08c))
* harden markdown image conversion ([4ba1c25](https://github.com/superdoc-dev/superdoc/commit/4ba1c254c77aaa37f552f2ad9fd06ec55e802b23))
* **link-popover:** mount external popovers outside overflow:hidden container (SD-2148) ([#2308](https://github.com/superdoc-dev/superdoc/issues/2308)) ([ea4be68](https://github.com/superdoc-dev/superdoc/commit/ea4be68fb6deea669140d4af5934ba17a6a6571b))
* make expected revision optional, update docs ([#2265](https://github.com/superdoc-dev/superdoc/issues/2265)) ([250bb5b](https://github.com/superdoc-dev/superdoc/commit/250bb5b6131fd68a83a3d0959dc0a5808fb5f152))
* **painter-dom:** prevent scroll acceleration feedback loop in virtualization ([#2291](https://github.com/superdoc-dev/superdoc/issues/2291)) ([fb3d25e](https://github.com/superdoc-dev/superdoc/commit/fb3d25e809019407b1298c28f8c10ac184e1dc73))
* portrait orientation in document-api ([dafab76](https://github.com/superdoc-dev/superdoc/commit/dafab76af5f249c49936a0250e4e54ae4719b305))
* **sdk:** keep sdk sessions alive in non collab ([#2289](https://github.com/superdoc-dev/superdoc/issues/2289)) ([c634ee8](https://github.com/superdoc-dev/superdoc/commit/c634ee87bb6ac29b14b0f02d6080b2420cfe3dc6))
* **super-editor:** align image resize handles with actual image position ([#2293](https://github.com/superdoc-dev/superdoc/issues/2293)) ([217bdce](https://github.com/superdoc-dev/superdoc/commit/217bdcef86d736825b0bfe55880ac57620d1b4d3))
* **test:** stabilize flaky cleanUpParagraphWithAnnotations tests ([#2262](https://github.com/superdoc-dev/superdoc/issues/2262)) ([7bafb7f](https://github.com/superdoc-dev/superdoc/commit/7bafb7f9e0fcc0109a0a976d1a01e9ee408f7291))
* **virtualization:** compute scrollY relative to scroll container, not viewport ([#2263](https://github.com/superdoc-dev/superdoc/issues/2263)) ([370ca5e](https://github.com/superdoc-dev/superdoc/commit/370ca5ea025bd5fb57f1dfe9b79871afbcdfd9b5))

### Features

* **document-api:** add getHtml operation, fix HTML insert and SDK tool selection ([#2264](https://github.com/superdoc-dev/superdoc/issues/2264)) ([c554678](https://github.com/superdoc-dev/superdoc/commit/c554678b425c7b97670aff5d7389bbbdfe8a5c04))
* **document-api:** clear content command ([#2300](https://github.com/superdoc-dev/superdoc/issues/2300)) ([46b5261](https://github.com/superdoc-dev/superdoc/commit/46b5261f34b6793d41ab6452fb117e0f81b7437a))
* **document-api:** hyperlinks commands ([#2294](https://github.com/superdoc-dev/superdoc/issues/2294)) ([4d3bebd](https://github.com/superdoc-dev/superdoc/commit/4d3bebd6c89dd1cbd5c143e61c71beca45daba1b))
* **document-api:** initial image commands ([#2290](https://github.com/superdoc-dev/superdoc/issues/2290)) ([d624231](https://github.com/superdoc-dev/superdoc/commit/d624231a97872af746d93de70129ac734cd363b8))
* **document-api:** insert table adds extra separator to match ms word ([#2301](https://github.com/superdoc-dev/superdoc/issues/2301)) ([5e49613](https://github.com/superdoc-dev/superdoc/commit/5e496130249a8fc5403f201c667106c5da4961fb))
* **document-api:** make styles.apply registry-driven with schema/validation ([#2267](https://github.com/superdoc-dev/superdoc/issues/2267)) ([cab54ba](https://github.com/superdoc-dev/superdoc/commit/cab54badc20e7002ce82be6f4e02f84e71802717))
* **document-api:** more image commands ([#2295](https://github.com/superdoc-dev/superdoc/issues/2295)) ([4fbbbc9](https://github.com/superdoc-dev/superdoc/commit/4fbbbc987e2469b8fd70c1a07a79dacc801f6733))
* **document-api:** more lists commands ([#2288](https://github.com/superdoc-dev/superdoc/issues/2288)) ([eb48bf1](https://github.com/superdoc-dev/superdoc/commit/eb48bf1cf72da0c780998cf033e851aadc144206))
* **links:** convert pasted hyperlinks into real docx links ([#2270](https://github.com/superdoc-dev/superdoc/issues/2270)) ([7d75522](https://github.com/superdoc-dev/superdoc/commit/7d7552203f0bbc6779149656e447432d50eb2697))
* **markdown:** import images from markdown ([#2303](https://github.com/superdoc-dev/superdoc/issues/2303)) ([b2f6a1a](https://github.com/superdoc-dev/superdoc/commit/b2f6a1ad5692153b60edb5b88347b5c8e37191f7))
* support TIFF images in DOCX rendering ([#2284](https://github.com/superdoc-dev/superdoc/issues/2284)) ([6436d86](https://github.com/superdoc-dev/superdoc/commit/6436d861efbdb52d592a0069fc84a1f5d830f358)), closes [#2064](https://github.com/superdoc-dev/superdoc/issues/2064)
* **tracked-changes:** allow partial tracked change resolution ([#2252](https://github.com/superdoc-dev/superdoc/issues/2252)) ([988598d](https://github.com/superdoc-dev/superdoc/commit/988598d7f20e263e81715a2f0195abc2ecffe75b))
* **web-view:** new layout engine based web view ([#2100](https://github.com/superdoc-dev/superdoc/issues/2100)) ([a353b82](https://github.com/superdoc-dev/superdoc/commit/a353b82a3c0404db13cda8ab72f7500b2aae8e09))

* fix(export): prevent DOCX corruption from UTF-16 XML parts and schema violations (SD-2170) (#2349)

Cherry-pick from main (fed1d6b23)

* chore(release): 1.18.1 [skip ci]

## [1.18.1](https://github.com/superdoc-dev/superdoc/compare/v1.18.0...v1.18.1) (2026-03-10)

### Bug Fixes

* **export:** prevent DOCX corruption from UTF-16 XML parts and schema violations (SD-2170) ([#2349](https://github.com/superdoc-dev/superdoc/issues/2349)) ([f6dbb40](https://github.com/superdoc-dev/superdoc/commit/f6dbb404ad998e502a49df7e0ffded9f2a236321))

* fix(rendering): show comment highlight on text with Word highlight formatting

SD-2188: The `!textRun.highlight` guard in the renderer prevented comment
highlights from being applied when text also had Word highlight formatting
(`<w:highlight>`). This caused comments on highlighted text to be invisible.
Removed the guard so comment highlights always take precedence, matching
Word's behavior.

* test(rendering): strengthen SD-2188 assertion to verify comment color overrides Word highlight

The previous assertion (not.toBe('')) passed on both old and new code
since applyRunStyles already sets backgroundColor from the Word highlight.
Now asserts the color is NOT the Word yellow (#ffff00).

* test(rendering): add active and faded comment highlight tests with Word highlight (SD-2188)

Cover the full matrix: comment highlight overrides Word highlight
in idle, active, and faded states.

* fix(anchor-nav): use correct scroll container for sub-page bookmark navigation

goToAnchor was scrolling the visibleHost element which has overflow:visible
and cannot scroll. Now uses #scrollContainer (the first scrollable ancestor)
and computes precise Y offsets from layout fragment positions for sub-page
scroll precision.

SD-2186

* docs: add PresentationEditor CLAUDE.md with DOM/scroll hierarchy

* fix(toc): correct zoom scaling and rect.top bug in anchor scroll

- Remove rect?.top (Rect type has no top property, was always undefined)
- Scale fragmentY by zoom factor before mixing with screen-space coords
- Thread zoom from PresentationEditor into goToAnchor deps
- Add unit tests for precision scroll, zoom scaling, and gap fallback

* test(toc): add behavior tests for TOC anchor click navigation

Tests clicking TOC entry links and verifying:
- Caret moves to the bookmark position (SD-2186)
- Scroll position changes for cross-page navigation

* chore(release): 1.18.2 [skip ci]

## [1.18.2](https://github.com/superdoc-dev/superdoc/compare/v1.18.1...v1.18.2) (2026-03-11)

### Bug Fixes

* **anchor-nav:** use correct scroll container for sub-page bookmark navigation ([a300536](https://github.com/superdoc-dev/superdoc/commit/a300536111890565c6b53b0842551a5c2f4c191a)), closes [#scrollContainer](https://github.com/superdoc-dev/superdoc/issues/scrollContainer)
* **rendering:** show comment highlight on text with Word highlight formatting ([f6d956e](https://github.com/superdoc-dev/superdoc/commit/f6d956ec38f12ff0ee3440f153edf1fa69406f2d))
* **toc:** correct zoom scaling and rect.top bug in anchor scroll ([16c768f](https://github.com/superdoc-dev/superdoc/commit/16c768f1b81672c5126833cc1ffbe948a2c11ebd))

* ci: remove changelog generation from stable releases

* chore(cli): 0.2.0 [skip ci]

# [0.2.0](https://github.com/superdoc-dev/superdoc/compare/cli-v0.1.0...cli-v0.2.0) (2026-03-11)

### Bug Fixes

* active track change ([#2163](https://github.com/superdoc-dev/superdoc/issues/2163)) ([108c14d](https://github.com/superdoc-dev/superdoc/commit/108c14d30fad847e3604d285806823ff9485c2f6))
* add currentTotalPages getter and pagination-update event ([#2202](https://github.com/superdoc-dev/superdoc/issues/2202)) ([95b4579](https://github.com/superdoc-dev/superdoc/commit/95b45793cc7ad4acf714eac2f6f9ac010a62e8ea)), closes [#958](https://github.com/superdoc-dev/superdoc/issues/958)
* add type definitions for PresentationEditor ([#2271](https://github.com/superdoc-dev/superdoc/issues/2271)) ([5402196](https://github.com/superdoc-dev/superdoc/commit/5402196e73997b83ddd1d4f270c82e3a85c3365f))
* **ai-actions:** preserve html/markdown insertion and prevent repeated formatted replacement ([#2117](https://github.com/superdoc-dev/superdoc/issues/2117)) ([9f685e9](https://github.com/superdoc-dev/superdoc/commit/9f685e964b5156d0d177e2fa0a72a4129d2a0443))
* **ai:** support headless mode in EditorAdapter.applyPatch ([#1859](https://github.com/superdoc-dev/superdoc/issues/1859)) ([cf9275d](https://github.com/superdoc-dev/superdoc/commit/cf9275d3bffd144491701508103af4c7b8f1708e))
* allow paste from context menu ([#1910](https://github.com/superdoc-dev/superdoc/issues/1910)) ([b6666bf](https://github.com/superdoc-dev/superdoc/commit/b6666bf94a3bc6a4f8a71a49e95136e2e5e9e2ae))
* always call resolveComment after custom TC bubble handlers (SD-2049) ([#2204](https://github.com/superdoc-dev/superdoc/issues/2204)) ([34fb4e0](https://github.com/superdoc-dev/superdoc/commit/34fb4e07e32c76d6c53580c9046db19e5024bb08))
* anchor table overlaps text ([#1995](https://github.com/superdoc-dev/superdoc/issues/1995)) ([fc05e29](https://github.com/superdoc-dev/superdoc/commit/fc05e295efef9e02db9d7cccafc771d3d00da3e6))
* **anchor-nav:** use correct scroll container for sub-page bookmark navigation ([a300536](https://github.com/superdoc-dev/superdoc/commit/a300536111890565c6b53b0842551a5c2f4c191a)), closes [#scrollContainer](https://github.com/superdoc-dev/superdoc/issues/scrollContainer)
* backward replace insert text ([#2172](https://github.com/superdoc-dev/superdoc/issues/2172)) ([66f0849](https://github.com/superdoc-dev/superdoc/commit/66f08497dd5642db2be6b8729c9bbc84a862ae20))
* before paragraph spacing inside table cells ([#1842](https://github.com/superdoc-dev/superdoc/issues/1842)) ([c7efa85](https://github.com/superdoc-dev/superdoc/commit/c7efa857abdfa6a0f129f73e3c5654b573c1028c))
* **build:** add node polyfills to UMD bundle and angular to CI matrix ([13fa579](https://github.com/superdoc-dev/superdoc/commit/13fa579c5e10a5da26c7308887e82123d914659c))
* **build:** remove dead vite-plugin-node-polyfills from UMD externals ([91de1fc](https://github.com/superdoc-dev/superdoc/commit/91de1fc2e47b0061d088db5d46b0da4cc07dc837))
* **ci:** include sub-package commits in superdoc release filter ([a2c237b](https://github.com/superdoc-dev/superdoc/commit/a2c237bb631130de5ae345209ca109f1ff645519))
* **ci:** move superdoc releaserc to package dir for proper commit filtering ([688f8e0](https://github.com/superdoc-dev/superdoc/commit/688f8e09df258d7279e7364c03d08e217c742c3d))
* **cli:** add jsdoc params to formatReplaceResult ([#1923](https://github.com/superdoc-dev/superdoc/issues/1923)) ([e52ddf9](https://github.com/superdoc-dev/superdoc/commit/e52ddf9bf010947d9435b788ab7753d136a801f1))
* **cli:** add param jsdoc to expandGlobs ([df8c3c6](https://github.com/superdoc-dev/superdoc/commit/df8c3c625be5901f4551d99318a43f47e3dfb7fb))
* **cli:** add returns jsdoc to formatSearchResult ([d0a0438](https://github.com/superdoc-dev/superdoc/commit/d0a04389b05d1f79d1c5111ed82e4feaf5b1af20))
* **cli:** lowercase docx in help text ([#1928](https://github.com/superdoc-dev/superdoc/issues/1928)) ([13f9db6](https://github.com/superdoc-dev/superdoc/commit/13f9db6897a070525fe2ea4ccaf98c3be245faeb))
* **cli:** normalize dash in help text ([b2e7d36](https://github.com/superdoc-dev/superdoc/commit/b2e7d36631db90863ce6ba263daff55d32220b99))
* **cli:** prevent collab reopen from overwriting existing ydoc with blank document (SD-2138) ([#2296](https://github.com/superdoc-dev/superdoc/issues/2296)) ([41b0345](https://github.com/superdoc-dev/superdoc/commit/41b0345367e32d0f053825c9f8733f1351f52760))
* collaboration cursor styles fix ([fd6db10](https://github.com/superdoc-dev/superdoc/commit/fd6db10558caa4136da262ad10b751dbb4bdac2c))
* **collaboration:** deduplicate updateYdocDocxData during replaceFile (SD-1920) ([#2162](https://github.com/superdoc-dev/superdoc/issues/2162)) ([52962fc](https://github.com/superdoc-dev/superdoc/commit/52962fc139734130a6882c9fcbd1856ff72d1c3d))
* **collaboration:** memory leaks, Vue stack overflow, and Liveblocks stability (SD-1924) ([#2030](https://github.com/superdoc-dev/superdoc/issues/2030)) ([a6827fd](https://github.com/superdoc-dev/superdoc/commit/a6827fdda860171124aae4838d354dd68d52d017)), closes [#prepareDocumentForExport](https://github.com/superdoc-dev/superdoc/issues/prepareDocumentForExport)
* **collab:** prevent stale view when remote Y.js changes bypass sdBlockRev increment ([#2099](https://github.com/superdoc-dev/superdoc/issues/2099)) ([0895a93](https://github.com/superdoc-dev/superdoc/commit/0895a93bb9e718f4f533a55e8f4022ed0ebc97bc))
* **comments:** cross-page collision avoidance for floating comment bubbles (SD-1998) ([#2180](https://github.com/superdoc-dev/superdoc/issues/2180)) ([6cfbeca](https://github.com/superdoc-dev/superdoc/commit/6cfbecae5e8579556a377b7a35168cbb7cfce31f))
* **comments:** emit empty comment positions so undo clears orphan bubbles ([#2235](https://github.com/superdoc-dev/superdoc/issues/2235)) ([12ba727](https://github.com/superdoc-dev/superdoc/commit/12ba72709fc37f207c97305852f40ef4e393893b))
* **comments:** improve multiline comment input styling ([#2242](https://github.com/superdoc-dev/superdoc/issues/2242)) ([e6a0dab](https://github.com/superdoc-dev/superdoc/commit/e6a0dab8abca8a24c5e0c8a9096c357df28eaf8a))
* **comments:** prevent comment mark from extending to adjacent typed text ([#2241](https://github.com/superdoc-dev/superdoc/issues/2241)) ([07fecd8](https://github.com/superdoc-dev/superdoc/commit/07fecd8f0f6c88f338b59fca6105467cf66cc7ab))
* **comments:** reduce sidebar jitter when clicking comments (SD-2034) ([#2250](https://github.com/superdoc-dev/superdoc/issues/2250)) ([c3568d2](https://github.com/superdoc-dev/superdoc/commit/c3568d2d6fc4d91125cede042084ed124a9b2072))
* **comments:** remove synchronous dispatch from plugin apply() (SD-1940) ([#2157](https://github.com/superdoc-dev/superdoc/issues/2157)) ([887175b](https://github.com/superdoc-dev/superdoc/commit/887175bf29b3dc86cf56865311d488b377b36aaf))
* consolidate deletions under new replacement ([#2094](https://github.com/superdoc-dev/superdoc/issues/2094)) ([0a84b86](https://github.com/superdoc-dev/superdoc/commit/0a84b8604c9a30ed2755cfd0ecc7694e1999c6eb))
* context menu clicks would change selection position ([#1889](https://github.com/superdoc-dev/superdoc/issues/1889)) ([ace0daf](https://github.com/superdoc-dev/superdoc/commit/ace0dafcf58535ec0ba6ff48efcd7ee113b021ce))
* **context-menu:** paste via context menu inserts at wrong position (SD-1302) ([#2110](https://github.com/superdoc-dev/superdoc/issues/2110)) ([30f03f9](https://github.com/superdoc-dev/superdoc/commit/30f03f93b59261a7fce55e7d62cc83897b457afd))
* **converter:** handle absolute paths in header/footer relationship targets ([#1945](https://github.com/superdoc-dev/superdoc/issues/1945)) ([9d82632](https://github.com/superdoc-dev/superdoc/commit/9d82632c62a70cc6cb19015f9fca89b3f28a4323))
* **converter:** handle empty rPrChange run properties without dropping tracked-style runs ([c25d24d](https://github.com/superdoc-dev/superdoc/commit/c25d24d35534c39836c3251ee9baf1b908a6c78c))
* **converter:** handle null list lvlText and always clear numbering cache ([#2113](https://github.com/superdoc-dev/superdoc/issues/2113)) ([336958c](https://github.com/superdoc-dev/superdoc/commit/336958ca9b39ebcc436fc77fb1daae82ddbd8b0c))
* correctly pass table info when deriving inline run properties (SD-1865) ([#2007](https://github.com/superdoc-dev/superdoc/issues/2007)) ([d752aff](https://github.com/superdoc-dev/superdoc/commit/d752afff9dc11041798ea2a28d487cc190e13383))
* correctly set color and highlight of pasted text ([#2033](https://github.com/superdoc-dev/superdoc/issues/2033)) ([41058b5](https://github.com/superdoc-dev/superdoc/commit/41058b5bfadbc34d83891afe88c6b8c24505f83c))
* **css:** scope ProseMirror CSS to prevent bleeding into host apps (SD-1850) ([#2134](https://github.com/superdoc-dev/superdoc/issues/2134)) ([b9d98fa](https://github.com/superdoc-dev/superdoc/commit/b9d98fa926532f63c71c55ed8bb5b89019ee4246))
* cursor drift during vertical arrow navigation (SD-1689) ([#1918](https://github.com/superdoc-dev/superdoc/issues/1918)) ([982118d](https://github.com/superdoc-dev/superdoc/commit/982118df475b3178351713f0c00f6fe447853c61))
* disable footnotes typing ([#1974](https://github.com/superdoc-dev/superdoc/issues/1974)) ([92b4d62](https://github.com/superdoc-dev/superdoc/commit/92b4d6288a48275435660ae2a848b064506390f6))
* **doc-api:** stabilize create composability and expand SDK surface ([fc17167](https://github.com/superdoc-dev/superdoc/commit/fc1716721b7c15b3fd1ac5724e48cc709a9fd986))
* document-api improvements, plan mode, query.match, mutations ([6221580](https://github.com/superdoc-dev/superdoc/commit/62215805c969a80445f9e410fd5fb2478b8c38a5))
* **document-api:** add friendlier insert at node id with offset, or pos ([#2128](https://github.com/superdoc-dev/superdoc/issues/2128)) ([c1d3682](https://github.com/superdoc-dev/superdoc/commit/c1d3682e15dc7c99b1450c2f008f6f937729fc39))
* **document-api:** add nodeId shorthand resolution across all operations ([#2131](https://github.com/superdoc-dev/superdoc/issues/2131)) ([8abdaad](https://github.com/superdoc-dev/superdoc/commit/8abdaadd7dda2ef4751d040527adab61c06f3c48))
* **document-api:** delete table cell fix ([#2209](https://github.com/superdoc-dev/superdoc/issues/2209)) ([5e5c43f](https://github.com/superdoc-dev/superdoc/commit/5e5c43fe1b63703308cdbd3a1dd01d121ea5465c))
* **document-api:** distribute columns command fixes ([#2207](https://github.com/superdoc-dev/superdoc/issues/2207)) ([8f4eaf7](https://github.com/superdoc-dev/superdoc/commit/8f4eaf7efde73e26c919f77a71d180c763d636ce))
* **document-api:** fix cell shading in document api ([#2215](https://github.com/superdoc-dev/superdoc/issues/2215)) ([456f60e](https://github.com/superdoc-dev/superdoc/commit/456f60e41605a2d94c5194052cf1982bed02d1c3))
* **document-api:** fix markdown to image ([bf0e664](https://github.com/superdoc-dev/superdoc/commit/bf0e6647820c3987b4100f8f9804e413cfb33511))
* **document-api:** insert table cell ([#2210](https://github.com/superdoc-dev/superdoc/issues/2210)) ([357ee90](https://github.com/superdoc-dev/superdoc/commit/357ee9018451f7a22bc1383aed7af6149da1d8e8))
* **document-api:** make lists.setType preserve sequence continuity ([#2304](https://github.com/superdoc-dev/superdoc/issues/2304)) ([da09826](https://github.com/superdoc-dev/superdoc/commit/da0982647cd57b4e775794af52e1a23b3d6f2afe))
* **document-api:** plan-engine reliability fixes and error diagnostics ([#2185](https://github.com/superdoc-dev/superdoc/issues/2185)) ([abfd81b](https://github.com/superdoc-dev/superdoc/commit/abfd81b753035bfaa4429748318af1eb51ac14e3))
* **document-api:** remove search match cap and validate moveComment bounds ([6d3de67](https://github.com/superdoc-dev/superdoc/commit/6d3de67ee398f5bbdd55a589e86a5c2bf321268a))
* **document-api:** split table cell command ([#2217](https://github.com/superdoc-dev/superdoc/issues/2217)) ([0b3e2b4](https://github.com/superdoc-dev/superdoc/commit/0b3e2b4fcc50c1a30dec593c0aa41e69c9b809ff))
* **document-api:** split table command ([#2214](https://github.com/superdoc-dev/superdoc/issues/2214)) ([ec31699](https://github.com/superdoc-dev/superdoc/commit/ec31699d665cd4b4f4da7e2646d77ec828604568))
* editor bundling in python CLI regression ([db0d130](https://github.com/superdoc-dev/superdoc/commit/db0d130d0296bb40deed19a8d70a5ab0fbafadbb))
* **editor:** prevent focus loss when typing in header/footer editors (SD-1993) ([#2238](https://github.com/superdoc-dev/superdoc/issues/2238)) ([e1b8007](https://github.com/superdoc-dev/superdoc/commit/e1b80074377b221873158ce5befc8fa2a908d1a8)), closes [PresentationEditor.#flushRerenderQueue](https://github.com/PresentationEditor./issues/flushRerenderQueue)
* **editor:** render styles applied inside SDT fields (SD-2011) ([#2188](https://github.com/superdoc-dev/superdoc/issues/2188)) ([9c34be3](https://github.com/superdoc-dev/superdoc/commit/9c34be39cfeb1ab77ebcd91343aaf9681a3f9b9a))
* **editor:** selection highlight flickers when dragging across mark boundaries (SD-2024) ([#2205](https://github.com/superdoc-dev/superdoc/issues/2205)) ([ba03e76](https://github.com/superdoc-dev/superdoc/commit/ba03e768fae837e4f5b8dd856ca765f76957e83c))
* ensure we do not duplicate bubble text ([#1934](https://github.com/superdoc-dev/superdoc/issues/1934)) ([c41cf9e](https://github.com/superdoc-dev/superdoc/commit/c41cf9e21d763aa08546eb3445c54a078bf66d33))
* export docx blobs with docx mime type ([#1849](https://github.com/superdoc-dev/superdoc/issues/1849)) ([1bc466d](https://github.com/superdoc-dev/superdoc/commit/1bc466d25fc01618fa4a54f6e3c4120e43a7e89e))
* **export:** prevent DOCX corruption from entity encoding and orphaned delInstrText (SD-1943) ([#2102](https://github.com/superdoc-dev/superdoc/issues/2102)) ([56e917f](https://github.com/superdoc-dev/superdoc/commit/56e917fff93175b27529afc2c8e744b21ea3bc29)), closes [#replaceSpecialCharacters](https://github.com/superdoc-dev/superdoc/issues/replaceSpecialCharacters) [#1988](https://github.com/superdoc-dev/superdoc/issues/1988)
* **export:** prevent DOCX corruption from UTF-16 XML parts and schema violations (SD-2170) ([#2349](https://github.com/superdoc-dev/superdoc/issues/2349)) ([f6dbb40](https://github.com/superdoc-dev/superdoc/commit/f6dbb404ad998e502a49df7e0ffded9f2a236321))
* **export:** sync document XML before numbering pruning to preserve list definitions ([36058c3](https://github.com/superdoc-dev/superdoc/commit/36058c3640d12eeba8a3cf671d4cb2b46786d1d1))
* extract duplicate block identity normalization from docxImporter ([7f7ff93](https://github.com/superdoc-dev/superdoc/commit/7f7ff9338786ed251323fc7986e6e30cf699b3b6))
* find tracked change for firefox ([#1899](https://github.com/superdoc-dev/superdoc/issues/1899)) ([a39cb68](https://github.com/superdoc-dev/superdoc/commit/a39cb683df898ca9a41b4c7f54d3d2f8e48ea8f1))
* **format:** route format.caps through textTransform so w:caps persists on export ([#2297](https://github.com/superdoc-dev/superdoc/issues/2297)) ([8e771e2](https://github.com/superdoc-dev/superdoc/commit/8e771e2d2ea75d4bc72bc7f589fd9279f8027478))
* handle Uint8Array media values from persistence layers ([#2298](https://github.com/superdoc-dev/superdoc/issues/2298)) ([0d4505c](https://github.com/superdoc-dev/superdoc/commit/0d4505c77ac1c44939e8f7874a08f827a7a8e08c))
* harden markdown image conversion ([4ba1c25](https://github.com/superdoc-dev/superdoc/commit/4ba1c254c77aaa37f552f2ad9fd06ec55e802b23))
* headless yjs ([#1913](https://github.com/superdoc-dev/superdoc/issues/1913)) ([4cdecf7](https://github.com/superdoc-dev/superdoc/commit/4cdecf7c592f8fbf23655b05200c36b9edfb6d7e))
* ignore sdBlockId when pasting content ([#2010](https://github.com/superdoc-dev/superdoc/issues/2010)) ([1b08572](https://github.com/superdoc-dev/superdoc/commit/1b08572ef696dfe9fb45cd079c4381bd86c3b2d3))
* image z-index and overlaps ([#1950](https://github.com/superdoc-dev/superdoc/issues/1950)) ([39875ac](https://github.com/superdoc-dev/superdoc/commit/39875acda1a1799f52d433d463739926e73eea61))
* improve backspace behavior near run boundaries for tracked changes ([#2175](https://github.com/superdoc-dev/superdoc/issues/2175)) ([6c9c7a3](https://github.com/superdoc-dev/superdoc/commit/6c9c7a3d72ed78717297cd48530f4629c9c680c4))
* issue updating paragraph properties (SD-1778) ([#1944](https://github.com/superdoc-dev/superdoc/issues/1944)) ([a9076ed](https://github.com/superdoc-dev/superdoc/commit/a9076eda595e0e64b57add6d3809fed587e62f7d))
* **layout-bridge:** correct cell selection for tables with rowspan ([#1839](https://github.com/superdoc-dev/superdoc/issues/1839)) ([0b782be](https://github.com/superdoc-dev/superdoc/commit/0b782be3d17df0f72f4c0ce8f7e44e663422e841))
* **layout-bridge:** defer table fragment click mapping to geometry fallback ([#1968](https://github.com/superdoc-dev/superdoc/issues/1968)) ([0eac43c](https://github.com/superdoc-dev/superdoc/commit/0eac43c2880c39767407279db585bd2568a758d9))
* **layout-engine:** text clipping inside table in document with multi-orientation, recursive pagination for deeply nested tables (SD-1962) ([#2140](https://github.com/superdoc-dev/superdoc/issues/2140)) ([072c009](https://github.com/superdoc-dev/superdoc/commit/072c0093f6fa8977e44801f6aa03ff5cb0b6ac5f))
* **layout,converter:** text box rendering and page-relative anchor positioning (SD-1331, SD-1838) ([#2034](https://github.com/superdoc-dev/superdoc/issues/2034)) ([3947f39](https://github.com/superdoc-dev/superdoc/commit/3947f39718d0f03a62e0fc900ec0f25676df84ac))
* **layout:** per-section footer constraints for multi-section docs (SD-1837) ([#2022](https://github.com/superdoc-dev/superdoc/issues/2022)) ([e11acc5](https://github.com/superdoc-dev/superdoc/commit/e11acc5c423c4bbf6f2a608527802ddf23519528))
* **layout:** route list text-start calculations through resolveListTextStartPx ([02b14b8](https://github.com/superdoc-dev/superdoc/commit/02b14b856c3e58aa6b0c9ad7b46943b748a3d2b5))
* **link-popover:** mount external popovers outside overflow:hidden container (SD-2148) ([#2308](https://github.com/superdoc-dev/superdoc/issues/2308)) ([ea4be68](https://github.com/superdoc-dev/superdoc/commit/ea4be68fb6deea669140d4af5934ba17a6a6571b))
* load alternative style definitions when main one is missing ([#1922](https://github.com/superdoc-dev/superdoc/issues/1922)) ([bb4083f](https://github.com/superdoc-dev/superdoc/commit/bb4083fbbabe61078e71af5c06a251a4e60670fd))
* make expected revision optional, update docs ([#2265](https://github.com/superdoc-dev/superdoc/issues/2265)) ([250bb5b](https://github.com/superdoc-dev/superdoc/commit/250bb5b6131fd68a83a3d0959dc0a5808fb5f152))
* markdown block-separator blank lines and heading split style-mark normalization ([e988adc](https://github.com/superdoc-dev/superdoc/commit/e988adc3b437b9ec3333afb521f76c3810e35040))
* mount Vue on wrapper element to prevent host framework conflicts (SD-1832) ([#1971](https://github.com/superdoc-dev/superdoc/issues/1971)) ([0c4bdda](https://github.com/superdoc-dev/superdoc/commit/0c4bddab0fd1c47e9530860492480748497ad51d))
* normalize bookmarks in tables ([#1892](https://github.com/superdoc-dev/superdoc/issues/1892)) ([369b7e1](https://github.com/superdoc-dev/superdoc/commit/369b7e1bfc1e2777916aba77f076de718735a612))
* normalize review namespace into trackChanges, harden input validation ([33e907b](https://github.com/superdoc-dev/superdoc/commit/33e907bb186c87cd9a015af8d7322be63793e234))
* outside click for toolbar dropdown ([#2174](https://github.com/superdoc-dev/superdoc/issues/2174)) ([5f859c7](https://github.com/superdoc-dev/superdoc/commit/5f859c75b7f5263251a900153a19a0f587a0a71e))
* **painter-dom:** prevent scroll acceleration feedback loop in virtualization ([#2291](https://github.com/superdoc-dev/superdoc/issues/2291)) ([fb3d25e](https://github.com/superdoc-dev/superdoc/commit/fb3d25e809019407b1298c28f8c10ac184e1dc73))
* **painter-dom:** use absolute page Y for page-relative anchors in header/footer decorations ([0b9bc72](https://github.com/superdoc-dev/superdoc/commit/0b9bc72899d30e5464c1e68a6c0a9a3d3071ae7c))
* performance ([#1914](https://github.com/superdoc-dev/superdoc/issues/1914)) ([0747b03](https://github.com/superdoc-dev/superdoc/commit/0747b03e81231917c7c2cb5d69f90dbaf0646932))
* persist comments on reload in collab mode ([#1949](https://github.com/superdoc-dev/superdoc/issues/1949)) ([2b2e56e](https://github.com/superdoc-dev/superdoc/commit/2b2e56ea85acd8f70e300ad89e0a536a4f974bf7))
* pict import/export  ([#2135](https://github.com/superdoc-dev/superdoc/issues/2135)) ([7e97b7b](https://github.com/superdoc-dev/superdoc/commit/7e97b7b986d73a78bc4e646db6854188ee114cac))
* **placeholder:** guard against depth-0 selection in placeholder decoration ([#2025](https://github.com/superdoc-dev/superdoc/issues/2025)) ([e5ee7cf](https://github.com/superdoc-dev/superdoc/commit/e5ee7cfaff2670d1088e0392ebd95078acdd63d0))
* portrait orientation in document-api ([dafab76](https://github.com/superdoc-dev/superdoc/commit/dafab76af5f249c49936a0250e4e54ae4719b305))
* prefer full decoration range ([#2239](https://github.com/superdoc-dev/superdoc/issues/2239)) ([ac15e31](https://github.com/superdoc-dev/superdoc/commit/ac15e31a26e04511b6d62b7f5736437ed7e2da5d)), closes [#collectDesiredState](https://github.com/superdoc-dev/superdoc/issues/collectDesiredState) [#resolveEffectiveRanges](https://github.com/superdoc-dev/superdoc/issues/resolveEffectiveRanges) [#setPreviousRanges](https://github.com/superdoc-dev/superdoc/issues/setPreviousRanges)
* preserve line spacing and indentation on Google Docs paste ([#2183](https://github.com/superdoc-dev/superdoc/issues/2183)) ([b9a7357](https://github.com/superdoc-dev/superdoc/commit/b9a7357afa561a68132a6b446d10d331025e6124)), closes [#2151](https://github.com/superdoc-dev/superdoc/issues/2151)
* preserve selection highlight when opening toolbar dropdowns ([#2097](https://github.com/superdoc-dev/superdoc/issues/2097)) ([a33568e](https://github.com/superdoc-dev/superdoc/commit/a33568ec43739178ddda4239aeae34d117fe5cca))
* preserve text selection highlight on right-click ([#1994](https://github.com/superdoc-dev/superdoc/issues/1994)) ([db5466a](https://github.com/superdoc-dev/superdoc/commit/db5466a6bf4efce8f1057552182702dd6a4a57d1))
* preserve text-align on paste from Google Docs ([#2208](https://github.com/superdoc-dev/superdoc/issues/2208)) ([762231b](https://github.com/superdoc-dev/superdoc/commit/762231b75ad1537f7b10137597cbe3f6ad1aa381))
* **rendering:** show comment highlight on text with Word highlight formatting ([f6d956e](https://github.com/superdoc-dev/superdoc/commit/f6d956ec38f12ff0ee3440f153edf1fa69406f2d))
* replace Node.js Buffer APIs with browser-native alternatives ([#2028](https://github.com/superdoc-dev/superdoc/issues/2028)) ([b17774a](https://github.com/superdoc-dev/superdoc/commit/b17774a566750c4cca084415f9b2c2b4c4386668)), closes [#exportProcessMediaFiles](https://github.com/superdoc-dev/superdoc/issues/exportProcessMediaFiles)
* replace Node.js Buffer APIs with browser-native alternatives ([#2028](https://github.com/superdoc-dev/superdoc/issues/2028)) ([d6141ec](https://github.com/superdoc-dev/superdoc/commit/d6141ec2a20192aa6294a8174e740f226d8f0269)), closes [#exportProcessMediaFiles](https://github.com/superdoc-dev/superdoc/issues/exportProcessMediaFiles)
* resolve published type declarations for Angular/TS consumers and update example ([#2026](https://github.com/superdoc-dev/superdoc/issues/2026)) ([35344bd](https://github.com/superdoc-dev/superdoc/commit/35344bdb0b0017676843e7ce1b269563728ab555))
* resolve sdk/adapter composability issues ([b60b17e](https://github.com/superdoc-dev/superdoc/commit/b60b17e50b0ea46474a92afd06438222a3537d42))
* return null instead of blank num definition when not found ([#1990](https://github.com/superdoc-dev/superdoc/issues/1990)) ([3acac3b](https://github.com/superdoc-dev/superdoc/commit/3acac3b0e071ca940b27434c1e54c9d89d35d028))
* rollback comments colors / ui ([#2216](https://github.com/superdoc-dev/superdoc/issues/2216)) ([a99b5ab](https://github.com/superdoc-dev/superdoc/commit/a99b5ab89dc083a53ca2f223ec0fc280d749ada2))
* **scroll:** wait for virtualized page mount and center text element ([#2221](https://github.com/superdoc-dev/superdoc/issues/2221)) ([95f634e](https://github.com/superdoc-dev/superdoc/commit/95f634e6185806fc8da29a40945576b3de89a23b))
* **sdk:** checkpoint collab sessions even when not dirty ([689f6b5](https://github.com/superdoc-dev/superdoc/commit/689f6b5449e6be87984584f63411de3c6743578b))
* **sdk:** keep sdk sessions alive in non collab ([#2289](https://github.com/superdoc-dev/superdoc/issues/2289)) ([c634ee8](https://github.com/superdoc-dev/superdoc/commit/c634ee87bb6ac29b14b0f02d6080b2420cfe3dc6))
* **shapes:** render grouped DrawingML shapes with custom geometry (SD-1877) ❇️ ([#2105](https://github.com/superdoc-dev/superdoc/issues/2105)) ([14985a5](https://github.com/superdoc-dev/superdoc/commit/14985a5b17ab13a04760362346caa5d41f54202d))
* slash menu invisible in presentation mode ([#2018](https://github.com/superdoc-dev/superdoc/issues/2018)) ([513bc33](https://github.com/superdoc-dev/superdoc/commit/513bc33f56368effc09e9d314ec49e187858015d)), closes [#computeCaretLayoutRect](https://github.com/superdoc-dev/superdoc/issues/computeCaretLayoutRect)
* splitting run with header adds empty row ([#2229](https://github.com/superdoc-dev/superdoc/issues/2229)) ([e1965fc](https://github.com/superdoc-dev/superdoc/commit/e1965fc0ccddd1b3f1886fd1911bd8665de5c8c5))
* structured content renders correct on hover and select ([#1843](https://github.com/superdoc-dev/superdoc/issues/1843)) ([dab3f04](https://github.com/superdoc-dev/superdoc/commit/dab3f048a83934eef993e1cc868cc81bb4b625ea))
* **super-converter:** add tableHeader export handler to fix corrupted docx ([#1900](https://github.com/superdoc-dev/superdoc/issues/1900)) ([010799b](https://github.com/superdoc-dev/superdoc/commit/010799b87ee133134a61272e47cc1d77fe08d937))
* **super-converter:** handle empty pic:spPr in image import ([#2254](https://github.com/superdoc-dev/superdoc/issues/2254)) ([2b8dbce](https://github.com/superdoc-dev/superdoc/commit/2b8dbcec56d40e7ffeb97572afe5ca888cb1da2e))
* **super-converter:** resolve table style conditional shading on cell import (SD-1833) ([#1985](https://github.com/superdoc-dev/superdoc/issues/1985)) ([5e206f4](https://github.com/superdoc-dev/superdoc/commit/5e206f45ea7139bf9193912726b21af03d70c86e))
* **super-editor:** add unsupported-content reporting across HTML/Markdown import paths ([#2115](https://github.com/superdoc-dev/superdoc/issues/2115)) ([84880b7](https://github.com/superdoc-dev/superdoc/commit/84880b781cb389c6cef27f4299645f6e6c07958a))
* **super-editor:** align image resize handles with actual image position ([#2293](https://github.com/superdoc-dev/superdoc/issues/2293)) ([217bdce](https://github.com/superdoc-dev/superdoc/commit/217bdcef86d736825b0bfe55880ac57620d1b4d3))
* **super-editor:** allow Backspace to delete empty paragraphs in suggesting mode ([#1966](https://github.com/superdoc-dev/superdoc/issues/1966)) ([820c73c](https://github.com/superdoc-dev/superdoc/commit/820c73c297ff97156316470cc53a4e28f5daaf3c))
* **super-editor:** backspace across run boundaries without splitting list items ([#2258](https://github.com/superdoc-dev/superdoc/issues/2258)) ([27ccb64](https://github.com/superdoc-dev/superdoc/commit/27ccb64d06b70e98070462bdd51072dfd7aeae3f))
* **super-editor:** handle partial comment file-sets and clean up stale parts on export ([#2123](https://github.com/superdoc-dev/superdoc/issues/2123)) ([f63ae0a](https://github.com/superdoc-dev/superdoc/commit/f63ae0aae0daaedfd3faba77e43023c4f7245e7f))
* **super-editor:** prevent invalid paragraph updates for nested runs in headless import ([8c11718](https://github.com/superdoc-dev/superdoc/commit/8c117188219b554fe5c55fd376172804b623015e))
* **super-editor:** prevent invalid paragraph updates for nested runs in headless import ([c5ee6e3](https://github.com/superdoc-dev/superdoc/commit/c5ee6e3a606e8f8e8284ffc5c38833af9ecaf29d))
* **super-editor:** restore <hr> contentBlock parsing and harden VML HR export fallback ([#2118](https://github.com/superdoc-dev/superdoc/issues/2118)) ([da51b1f](https://github.com/superdoc-dev/superdoc/commit/da51b1f6bd0aa6dca44f6431e16f03b1e8d7cc54))
* **super-editor:** restore marks correctly after clear format + undo (SD-1771) ([#1967](https://github.com/superdoc-dev/superdoc/issues/1967)) ([bc9dc76](https://github.com/superdoc-dev/superdoc/commit/bc9dc76c5cf93143ed26353ffc2b84a018f71a2e))
* **superdoc:** enhance comment input focus handling and edit init ([#1935](https://github.com/superdoc-dev/superdoc/issues/1935)) ([0e9112c](https://github.com/superdoc-dev/superdoc/commit/0e9112c44ce6a89672c2a52d09fbd96d4a1f6bd2))
* **superdoc:** update comment text ([b5ff644](https://github.com/superdoc-dev/superdoc/commit/b5ff64496cb962ffde32c15a3d249a6540a804d0))
* **superdoc:** update entry point comment ([#1926](https://github.com/superdoc-dev/superdoc/issues/1926)) ([0dde298](https://github.com/superdoc-dev/superdoc/commit/0dde29868dde357bebf0c7c0363355ea855fa39a))
* support cell spacing ([#1879](https://github.com/superdoc-dev/superdoc/issues/1879)) ([1639967](https://github.com/superdoc-dev/superdoc/commit/16399678e9e09dee4293976a86e39664d9ef79d9))
* table headers are incorrectly imported from html ([#2112](https://github.com/superdoc-dev/superdoc/issues/2112)) ([e8d1480](https://github.com/superdoc-dev/superdoc/commit/e8d1480bac4ba9dd0908ef7298b8ac15d584d2d1))
* table resizing regression ([#2091](https://github.com/superdoc-dev/superdoc/issues/2091)) ([20ed24e](https://github.com/superdoc-dev/superdoc/commit/20ed24ed2a6d080b5c90511f63f6fde66b358e83))
* table resizing regression ([#2091](https://github.com/superdoc-dev/superdoc/issues/2091)) ([9a07f1c](https://github.com/superdoc-dev/superdoc/commit/9a07f1ceadec4d7669a8b43c5bafd010edc2ec17))
* **table:** resolve column resize only working on first page (SD-1772) ([#1959](https://github.com/superdoc-dev/superdoc/issues/1959)) ([df43867](https://github.com/superdoc-dev/superdoc/commit/df43867b3119ee605225794becf66dc2bd327342))
* **tables:** align tableHeader attrs with tableCell to fix oversized DOCX export widths ([#2114](https://github.com/superdoc-dev/superdoc/issues/2114)) ([38f0430](https://github.com/superdoc-dev/superdoc/commit/38f04306591e86dad09fb4cdb979f38e7fec4eda))
* **tables:** defaultTableStyle support, cell fixes ([#2246](https://github.com/superdoc-dev/superdoc/issues/2246)) ([74fca9c](https://github.com/superdoc-dev/superdoc/commit/74fca9cd6e6e81c3a270b8f95e8bb66fed88c904))
* **tables:** expand auto-width tables to fill available page width ([#2109](https://github.com/superdoc-dev/superdoc/issues/2109)) ([15f36bc](https://github.com/superdoc-dev/superdoc/commit/15f36bc9256db1e5a4ac41bd70a2699a751de4de))
* **tables:** fix autofit column scaling, cell width overflow, and page break splitting ([#1987](https://github.com/superdoc-dev/superdoc/issues/1987)) ([61a3f6f](https://github.com/superdoc-dev/superdoc/commit/61a3f6f13ee71d6d10c0fe74fb62a044cbe98c97))
* **tables:** preserve TableGrid defaults and style-driven spacing/bor… ([#2230](https://github.com/superdoc-dev/superdoc/issues/2230)) ([b0a482f](https://github.com/superdoc-dev/superdoc/commit/b0a482fec95135ff46ea7cd40a2bf1e767a4f231))
* **tables:** prevent tblInd double-shrink when using tblGrid widths (SD-1494) ([8750ece](https://github.com/superdoc-dev/superdoc/commit/8750ece019a439a350e93f6595d5833735c1ca35))
* **test:** stabilize flaky cleanUpParagraphWithAnnotations tests ([#2262](https://github.com/superdoc-dev/superdoc/issues/2262)) ([7bafb7f](https://github.com/superdoc-dev/superdoc/commit/7bafb7f9e0fcc0109a0a976d1a01e9ee408f7291))
* text highlight on export ([#2189](https://github.com/superdoc-dev/superdoc/issues/2189)) ([9cbd022](https://github.com/superdoc-dev/superdoc/commit/9cbd022de69ec30dc72895e4da6fcd064d09fb69))
* **toc:** correct zoom scaling and rect.top bug in anchor scroll ([16c768f](https://github.com/superdoc-dev/superdoc/commit/16c768f1b81672c5126833cc1ffbe948a2c11ebd))
* track changes comment text for formatting changes ([#2013](https://github.com/superdoc-dev/superdoc/issues/2013)) ([b2a43ff](https://github.com/superdoc-dev/superdoc/commit/b2a43ffad086df316a4a6b4d5695fd00507f9f78))
* track changes in cli ([3742f68](https://github.com/superdoc-dev/superdoc/commit/3742f6874ebf93d7ef9971232b203b19bed07344))
* track highlight changes ([#2192](https://github.com/superdoc-dev/superdoc/issues/2192)) ([e164625](https://github.com/superdoc-dev/superdoc/commit/e164625489d925a595d48fcb45dd0e04f004fcf6))
* **track-changes:** correct format change description for already-formatted text (SD-2077) ([#2253](https://github.com/superdoc-dev/superdoc/issues/2253)) ([b2ffc0d](https://github.com/superdoc-dev/superdoc/commit/b2ffc0dffefaacdf339c13d9da7aa6b646ceb80b))
* **track-changes:** handle ReplaceAroundStep in tracked changes mode (SD-2061) ([#2225](https://github.com/superdoc-dev/superdoc/issues/2225)) ([8f3cbe4](https://github.com/superdoc-dev/superdoc/commit/8f3cbe46f49cf0e46720e74273aef0de23cb69e3))
* **track-changes:** remove ghost TrackFormat on multi-node format cancel ([#2233](https://github.com/superdoc-dev/superdoc/issues/2233)) ([e925ef9](https://github.com/superdoc-dev/superdoc/commit/e925ef948a81d87090e1f38f0077d354995de02c))
* **tracked-changes:** colors should be restored when format rejected ([#1970](https://github.com/superdoc-dev/superdoc/issues/1970)) ([01ea504](https://github.com/superdoc-dev/superdoc/commit/01ea504737e38815c8ed7e5e585308ca5600e169))
* **tracked-changes:** fix suggested insertions from paste failures ([#1969](https://github.com/superdoc-dev/superdoc/issues/1969)) ([e74c14a](https://github.com/superdoc-dev/superdoc/commit/e74c14a76c9bbad994d9bde3699e0d8c911c061a))
* trigger patch release ([7bc1b74](https://github.com/superdoc-dev/superdoc/commit/7bc1b747b8f265e2b7d70118e425d442736a0f92))
* trigger patch release ([32ced9c](https://github.com/superdoc-dev/superdoc/commit/32ced9c4822cdaf51fafa4b7c54993ea8ea89f9d))
* trigger patch release ([da7f484](https://github.com/superdoc-dev/superdoc/commit/da7f484027c90cad9d3c5fd1c3ef61d0e39c3996))
* trigger release ([8367dd6](https://github.com/superdoc-dev/superdoc/commit/8367dd6760dc2d0bf61c1b445c3daceb0b522c63))
* undo/redo actions ([#2161](https://github.com/superdoc-dev/superdoc/issues/2161)) ([495e92f](https://github.com/superdoc-dev/superdoc/commit/495e92f3599ed01f77538c1155eb4890638ac85f))
* use correct template syntax for GitHub release URL in PR comments ([9d1bca2](https://github.com/superdoc-dev/superdoc/commit/9d1bca2cd9aa0d99e42b836ad093b07c6b5a513f))
* use DEFLATE compression for docx export instead of STORE ([#1933](https://github.com/superdoc-dev/superdoc/issues/1933)) ([ebcd986](https://github.com/superdoc-dev/superdoc/commit/ebcd98644ff7859cf297da79c549257e6c241523))
* **virtualization:** compute scrollY relative to scroll container, not viewport ([#2263](https://github.com/superdoc-dev/superdoc/issues/2263)) ([370ca5e](https://github.com/superdoc-dev/superdoc/commit/370ca5ea025bd5fb57f1dfe9b79871afbcdfd9b5))
* **virtualization:** correct scroll mapping and viewport sizing at non-100% zoom ([#2171](https://github.com/superdoc-dev/superdoc/issues/2171)) ([84af4c0](https://github.com/superdoc-dev/superdoc/commit/84af4c0814b6bdd89248a2d68154f2efc90ad80c)), closes [#registryKey](https://github.com/superdoc-dev/superdoc/issues/registryKey)
* wire DocumentApi to Editor.doc with lifecycle-safe caching ([57326ea](https://github.com/superdoc-dev/superdoc/commit/57326eaf417309051132c6f39c6b819c23193af5))
* zIndex updates ([#1973](https://github.com/superdoc-dev/superdoc/issues/1973)) ([3ca7aa3](https://github.com/superdoc-dev/superdoc/commit/3ca7aa390abf12838a88ca36d96bd5667ed83225))

### Features

* adaptive insert table column width ([#1533](https://github.com/superdoc-dev/superdoc/issues/1533)) ([d4cae2d](https://github.com/superdoc-dev/superdoc/commit/d4cae2dd0f954be52f754df6203ac72c6452e1e3))
* add pdf infra, migrate layers ([#2078](https://github.com/superdoc-dev/superdoc/issues/2078)) ([7d416e9](https://github.com/superdoc-dev/superdoc/commit/7d416e9b8d8bce2fbd914684a4d3e0f10ab5eff1))
* add public scroll to page method ([#1791](https://github.com/superdoc-dev/superdoc/issues/1791)) ([1b7687b](https://github.com/superdoc-dev/superdoc/commit/1b7687be295a6d658cf49b17cb1900dae6c2b914))
* allow custom accept/reject handlers for TC bubbles ([#1921](https://github.com/superdoc-dev/superdoc/issues/1921)) ([e30abf6](https://github.com/superdoc-dev/superdoc/commit/e30abf68b7d270b4051200b949756ecbf2771e9d))
* **comments:** improve floating comments ui ([#2195](https://github.com/superdoc-dev/superdoc/issues/2195)) ([e870cfb](https://github.com/superdoc-dev/superdoc/commit/e870cfb26e83b514cc344489a17b3ab32f6e6688))
* cropped images ([#1940](https://github.com/superdoc-dev/superdoc/issues/1940)) ([3767a49](https://github.com/superdoc-dev/superdoc/commit/3767a49f950425e20f756fcd82052d8f4855f660))
* **document-api:** add format operations font size alignment color font family ([#2179](https://github.com/superdoc-dev/superdoc/issues/2179)) ([f19c688](https://github.com/superdoc-dev/superdoc/commit/f19c688604fc2bc89daff3541c973f939dba32ee))
* **document-api:** add get markdown to sdks ([e42b56d](https://github.com/superdoc-dev/superdoc/commit/e42b56d96a08113b8576dd805e78288935d1703d))
* **document-api:** add getHtml operation, fix HTML insert and SDK tool selection ([#2264](https://github.com/superdoc-dev/superdoc/issues/2264)) ([c554678](https://github.com/superdoc-dev/superdoc/commit/c554678b425c7b97670aff5d7389bbbdfe8a5c04))
* **document-api:** add plan-based mutation engine with query.match and style capture ([#2160](https://github.com/superdoc-dev/superdoc/issues/2160)) ([365293a](https://github.com/superdoc-dev/superdoc/commit/365293a9d961bf05f550d37eb25085a03e71755c))
* **document-api:** clear content command ([#2300](https://github.com/superdoc-dev/superdoc/issues/2300)) ([46b5261](https://github.com/superdoc-dev/superdoc/commit/46b5261f34b6793d41ab6452fb117e0f81b7437a))
* **document-api:** default table style setting ([#2248](https://github.com/superdoc-dev/superdoc/issues/2248)) ([3ad4e9f](https://github.com/superdoc-dev/superdoc/commit/3ad4e9f5c8c90b188a4eac6805285b015e673278))
* **document-api:** default target-less insert to document end ([#2244](https://github.com/superdoc-dev/superdoc/issues/2244)) ([c717e2b](https://github.com/superdoc-dev/superdoc/commit/c717e2bfa7af567ce3a79aa72f358f4e61b530ba))
* **document-api:** doc default initial styles ([#2184](https://github.com/superdoc-dev/superdoc/issues/2184)) ([f25e41f](https://github.com/superdoc-dev/superdoc/commit/f25e41f45ab75da41ab6bee74328c66632371e4a))
* **document-api:** format.paragraph for w:pPr formatting ([#2218](https://github.com/superdoc-dev/superdoc/issues/2218)) ([32c9991](https://github.com/superdoc-dev/superdoc/commit/32c999116ecbd081c65637507618062f3dfb1a07))
* **document-api:** history name space ([#2219](https://github.com/superdoc-dev/superdoc/issues/2219)) ([41dea37](https://github.com/superdoc-dev/superdoc/commit/41dea37a7dc85a14341cdd58513c9b1729f62882))
* **document-api:** hyperlinks commands ([#2294](https://github.com/superdoc-dev/superdoc/issues/2294)) ([4d3bebd](https://github.com/superdoc-dev/superdoc/commit/4d3bebd6c89dd1cbd5c143e61c71beca45daba1b))
* **document-api:** include anchored text in comments list response ([#2177](https://github.com/superdoc-dev/superdoc/issues/2177)) ([b3a2912](https://github.com/superdoc-dev/superdoc/commit/b3a29125bc0dd7ebd4b9724ecf9117601b22c5c1))
* **document-api:** initial image commands ([#2290](https://github.com/superdoc-dev/superdoc/issues/2290)) ([d624231](https://github.com/superdoc-dev/superdoc/commit/d624231a97872af746d93de70129ac734cd363b8))
* **document-api:** inline formatting parity core end-to-end ([#2197](https://github.com/superdoc-dev/superdoc/issues/2197)) ([b405b03](https://github.com/superdoc-dev/superdoc/commit/b405b03c79cafe184bd5db10c9a66a04f118576b))
* **document-api:** inline formatting rpr parity ([#2198](https://github.com/superdoc-dev/superdoc/issues/2198)) ([41ab771](https://github.com/superdoc-dev/superdoc/commit/41ab77144f257cef33e97924dfeda000ae843a71))
* **document-api:** insert table adds extra separator to match ms word ([#2301](https://github.com/superdoc-dev/superdoc/issues/2301)) ([5e49613](https://github.com/superdoc-dev/superdoc/commit/5e496130249a8fc5403f201c667106c5da4961fb))
* **document-api:** lists namespace  ([#2223](https://github.com/superdoc-dev/superdoc/issues/2223)) ([09ebfcb](https://github.com/superdoc-dev/superdoc/commit/09ebfcb65dda25fd46ad58320d9d6fb04b2e6f8b))
* **document-api:** make styles.apply registry-driven with schema/validation ([#2267](https://github.com/superdoc-dev/superdoc/issues/2267)) ([cab54ba](https://github.com/superdoc-dev/superdoc/commit/cab54badc20e7002ce82be6f4e02f84e71802717))
* **document-api:** more image commands ([#2295](https://github.com/superdoc-dev/superdoc/issues/2295)) ([4fbbbc9](https://github.com/superdoc-dev/superdoc/commit/4fbbbc987e2469b8fd70c1a07a79dacc801f6733))
* **document-api:** more lists commands ([#2288](https://github.com/superdoc-dev/superdoc/issues/2288)) ([eb48bf1](https://github.com/superdoc-dev/superdoc/commit/eb48bf1cf72da0c780998cf033e851aadc144206))
* **document-api:** section commands ([#2199](https://github.com/superdoc-dev/superdoc/issues/2199)) ([ec4abe3](https://github.com/superdoc-dev/superdoc/commit/ec4abe3993dfb30f4c850dc76cfd55b4237cca77))
* **document-api:** support deleting entire block nodes not only text ([#2181](https://github.com/superdoc-dev/superdoc/issues/2181)) ([2897246](https://github.com/superdoc-dev/superdoc/commit/28972465167ad67824758abb163b5bffef2b7c1c))
* **document-api:** table of contents commands ([#2200](https://github.com/superdoc-dev/superdoc/issues/2200)) ([baa72c4](https://github.com/superdoc-dev/superdoc/commit/baa72c47f89a280df9e400d6af2c63998345c79d))
* **document-api:** tables namespace and commands ([#2182](https://github.com/superdoc-dev/superdoc/issues/2182)) ([b80ee31](https://github.com/superdoc-dev/superdoc/commit/b80ee31230134419a6a0eabadedffe6c4a21e6bd))
* **document-api:** toc commands ([#2220](https://github.com/superdoc-dev/superdoc/issues/2220)) ([767e010](https://github.com/superdoc-dev/superdoc/commit/767e010c8344255e457866f7212e95457f36ad1d))
* enabled telemetry by default and added documentation ([#2001](https://github.com/superdoc-dev/superdoc/issues/2001)) ([8598ef7](https://github.com/superdoc-dev/superdoc/commit/8598ef7d200e666911c68c6c116996ef47fa9261))
* enhance telemetry handling for sub-editors ([#2017](https://github.com/superdoc-dev/superdoc/issues/2017)) ([37bc030](https://github.com/superdoc-dev/superdoc/commit/37bc030bb30a999cb73de0b1a8cd96cc588780dd))
* expose setZoom and getZoom API on SuperDoc ([#2137](https://github.com/superdoc-dev/superdoc/issues/2137)) ([ab09dd5](https://github.com/superdoc-dev/superdoc/commit/ab09dd5dee38081054a3215650d5fc8e6994f128)), closes [#928](https://github.com/superdoc-dev/superdoc/issues/928)
* extend document-api with format, examples, create.heading ([#2092](https://github.com/superdoc-dev/superdoc/issues/2092)) ([fdf8c7c](https://github.com/superdoc-dev/superdoc/commit/fdf8c7cab059dde93ef60c801be8b15a0121b30c))
* **images:** allow drag-and-drop for images in editor ([#2227](https://github.com/superdoc-dev/superdoc/issues/2227)) ([4b36780](https://github.com/superdoc-dev/superdoc/commit/4b367804c35e843f9bf28cce24c4f0b47dfa9e9c))
* layout snapshot testing ([#2035](https://github.com/superdoc-dev/superdoc/issues/2035)) ([b070cd7](https://github.com/superdoc-dev/superdoc/commit/b070cd79d376c528fdc4efdb3371c55a1a3cf908))
* **layout-engine:** render table headers, tblLook support ([#2256](https://github.com/superdoc-dev/superdoc/issues/2256)) ([db6a2ff](https://github.com/superdoc-dev/superdoc/commit/db6a2ffbcb445b2d64e72c2210584e1ac2506bd5))
* **link-popover:** custom link popovers ([#2222](https://github.com/superdoc-dev/superdoc/issues/2222)) ([070190f](https://github.com/superdoc-dev/superdoc/commit/070190fd786d3237a18e057058bf40743645c616))
* **links:** convert pasted hyperlinks into real docx links ([#2270](https://github.com/superdoc-dev/superdoc/issues/2270)) ([7d75522](https://github.com/superdoc-dev/superdoc/commit/7d7552203f0bbc6779149656e447432d50eb2697))
* **lists:** support hidden list indicators via w:vanish ([#2069](https://github.com/superdoc-dev/superdoc/issues/2069)) ([#2080](https://github.com/superdoc-dev/superdoc/issues/2080)) ([0bed0fd](https://github.com/superdoc-dev/superdoc/commit/0bed0fd6e9c40d9b8fbba7ef22d02258d2d363c0))
* llm tools (alpha version) ([#2292](https://github.com/superdoc-dev/superdoc/issues/2292)) ([f954e3d](https://github.com/superdoc-dev/superdoc/commit/f954e3dabead19d3c24a5d5a11a257a0ebce9c2c))
* **markdown:** add markdown override to sdk, improve conversion ([#2196](https://github.com/superdoc-dev/superdoc/issues/2196)) ([04a1c71](https://github.com/superdoc-dev/superdoc/commit/04a1c7179a30fb725bf1e5f5e818f0825b709dc3))
* **markdown:** import images from markdown ([#2303](https://github.com/superdoc-dev/superdoc/issues/2303)) ([b2f6a1a](https://github.com/superdoc-dev/superdoc/commit/b2f6a1ad5692153b60edb5b88347b5c8e37191f7))
* preserve w:view setting through DOCX round-trip ([#2190](https://github.com/superdoc-dev/superdoc/issues/2190)) ([48b4210](https://github.com/superdoc-dev/superdoc/commit/48b421071372793808c3a28578f58ac39490f59d)), closes [#2070](https://github.com/superdoc-dev/superdoc/issues/2070)
* real time collab in python sdk ([#2243](https://github.com/superdoc-dev/superdoc/issues/2243)) ([dc3b4fd](https://github.com/superdoc-dev/superdoc/commit/dc3b4fd742f5d32fa0b553f69102098455df1ec9))
* **super-editor:** add w:lock support for StructuredContent nodes (SD-1616) ([#1939](https://github.com/superdoc-dev/superdoc/issues/1939)) ([2c16f1c](https://github.com/superdoc-dev/superdoc/commit/2c16f1c906ae522e1dd9fb1604d9d7b19d941eef))
* superdoc cli ([d808464](https://github.com/superdoc-dev/superdoc/commit/d808464b7de14ab93e28af594e0ee2ea66e7c153))
* superdoc sdk ([#2129](https://github.com/superdoc-dev/superdoc/issues/2129)) ([3f55d23](https://github.com/superdoc-dev/superdoc/commit/3f55d2366b025d9468ae26f9848582446b280569))
* support TIFF images in DOCX rendering ([#2284](https://github.com/superdoc-dev/superdoc/issues/2284)) ([6436d86](https://github.com/superdoc-dev/superdoc/commit/6436d861efbdb52d592a0069fc84a1f5d830f358)), closes [#2064](https://github.com/superdoc-dev/superdoc/issues/2064)
* **tables:** allow resizing table rows ([#2226](https://github.com/superdoc-dev/superdoc/issues/2226)) ([2c6da10](https://github.com/superdoc-dev/superdoc/commit/2c6da10e4dd217a53f70d7cce741c83943ea5339))
* **tables:** improve cell color application (context), column dragging, table pasting ([#2228](https://github.com/superdoc-dev/superdoc/issues/2228)) ([066b9eb](https://github.com/superdoc-dev/superdoc/commit/066b9eb6336839038a6a425399b6f18c19a3085e))
* **table:** toggle header row sets both cell types and repeatHeader atomically ([#2245](https://github.com/superdoc-dev/superdoc/issues/2245)) ([2f5899d](https://github.com/superdoc-dev/superdoc/commit/2f5899dc16e37dfbbe6eff97015b441f515490a4))
* telemetry ([#1932](https://github.com/superdoc-dev/superdoc/issues/1932)) ([fab3ce9](https://github.com/superdoc-dev/superdoc/commit/fab3ce959dc5d3a21bfeffa5283c01f491d2b4c4))
* **template-builder:** add cspNonce support ([#1911](https://github.com/superdoc-dev/superdoc/issues/1911)) ([5b7b34e](https://github.com/superdoc-dev/superdoc/commit/5b7b34ea3971f98078e5314fc5dd1ef23550afd6))
* **template-builder:** add cspNonce support ([#1911](https://github.com/superdoc-dev/superdoc/issues/1911)) ([bcb9d28](https://github.com/superdoc-dev/superdoc/commit/bcb9d285a196c998cf45c760ba7bfa3b94c95d25))
* the document API limited alpha ([#2087](https://github.com/superdoc-dev/superdoc/issues/2087)) ([091c24c](https://github.com/superdoc-dev/superdoc/commit/091c24cc907731f26f765d03289b458136519b0c))
* **track-changes:** clear comment bubbles when bulk accept or reject TCs ([#2159](https://github.com/superdoc-dev/superdoc/issues/2159)) ([27fbe8e](https://github.com/superdoc-dev/superdoc/commit/27fbe8e754883b07bb8c37579cda13d71686890e))
* **tracked-changes:** allow partial tracked change resolution ([#2252](https://github.com/superdoc-dev/superdoc/issues/2252)) ([988598d](https://github.com/superdoc-dev/superdoc/commit/988598d7f20e263e81715a2f0195abc2ecffe75b))
* update telemetry configuration to prioritize root licenseKey ([#2016](https://github.com/superdoc-dev/superdoc/issues/2016)) ([3b4ff6b](https://github.com/superdoc-dev…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants