Skip to content

fix(layout-bridge): defer table fragment click mapping to geometry fallback#1968

Merged
harbournick merged 5 commits intomainfrom
tadeu/sd-1788-bug-cursor-cannot-be-reliably-placed-in-table-cell
Feb 12, 2026
Merged

fix(layout-bridge): defer table fragment click mapping to geometry fallback#1968
harbournick merged 5 commits intomainfrom
tadeu/sd-1788-bug-cursor-cannot-be-reliably-placed-in-table-cell

Conversation

@tupizz
Copy link
Copy Markdown
Contributor

@tupizz tupizz commented Feb 8, 2026

Summary

This PR contains three fixes for table interaction in the layout engine:

1. Fix cursor placement in table cells (SD-1788)

Problem: Clicking on table cell padding, borders, or areas where elementsFromPoint doesn't return a line element caused the cursor to land in the wrong column.

Root cause: clickToPositionDom in dom-mapping.ts used processFragment for table fragments even when no line was in the hit chain. processFragment searches all lines across all cells using only Y-coordinate matching, so it picks the first cell with a matching Y — which is often the wrong column.

Fix: Added a guard that returns null for table fragments without a line in the hit chain, deferring to the geometry fallback (hitTestTableFragment) which correctly uses both X and Y coordinates to resolve the target cell.

File: packages/layout-engine/layout-bridge/src/dom-mapping.ts


2. Fix table resize handles overflowing on split tables

Problem: When a table splits across page boundaries, the column resize handles (blue vertical lines) extended far beyond the table fragment — overflowing into the page gap and neighboring content below.

Root cause: In renderTableFragment.ts, the data-table-boundaries segment computation iterated over all rows in the table block (0 to rowCount), but each fragment only renders a subset of rows (fromRow to toRow + optional repeated headers). This caused every fragment to get segments with the full table's height.

Fix: Changed the segment computation to build a renderedRows list that mirrors the exact row rendering logic.

File: packages/layout-engine/painters/dom/src/table/renderTableFragment.ts


3. Fix table cell click on page 2+ (geometry fallback coordinate fix)

Problem: Clicking in empty space below text in a table cell worked on page 1 but failed on page 2+. The cursor either didn't appear or landed in the wrong position.

Root cause: Two issues compounding:

  1. Snap-to-nearest picks wrong target: When clicking empty table cell space (below text lines), the DOM-based mapping returns null. The geometry fallback's snap-to-nearest logic then picks a nearby paragraph instead of letting hitTestTableFragment handle the click.

  2. Coordinate double-subtraction on page 2+: normalizeClientPoint adjusts Y by the page's DOM offset (pageOffsetY), making containerPoint page-relative. On page 1 this offset is ~0, but on page 2+ it's significant. Then clickToPosition subtracts pageTopY again, producing incorrect negative coordinates that cause hitTestPage to find the wrong page and hitTestTableFragment to fail entirely.

Fix:

  • Skip snap-to-nearest when the click is within a table fragment's bounds (let hitTestTableFragment handle it)
  • When DOM info is available, determine the page directly from elementsFromPoint (same technique normalizeClientPoint uses) and treat containerPoint as already page-relative, avoiding the double subtraction

File: packages/layout-engine/layout-bridge/src/index.ts

Test plan

  • Added unit tests for table fragment click fallback behavior
  • Added unit test for split-table segment scoping
  • Added unit tests for table cell empty space clicks (page 1)
  • Added unit tests for table cell clicks on page 2 (multi-page geometry path)
  • All 1205 layout-bridge tests pass
  • All 9105 tests pass across the monorepo
  • Manual: verify cursor placement in table cells on page 1 and page 2+
  • Manual: verify clicking below text in a table cell places cursor correctly
  • Manual: open advanced-tables.docx, verify resize handles stay within each fragment

…llback

When clicking on table cell padding or borders, elementsFromPoint returns
the table fragment but not a specific line element. Previously,
processFragment would search all lines across all cells using only Y
coordinate matching, causing clicks to land in the wrong column.

Now when a table fragment is found without a line in the hit chain, we
return null to let the geometry fallback (hitTestTableFragment) handle
cell resolution correctly using accumulated row/column dimensions.
Copilot AI review requested due to automatic review settings February 8, 2026 01:59
@linear
Copy link
Copy Markdown

linear Bot commented Feb 8, 2026

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR fixes incorrect cursor placement in table cells by ensuring DOM-based click mapping defers to geometry-based table hit-testing when a click lands on a table fragment but doesn’t directly hit a .superdoc-line element (e.g., padding/borders where elementsFromPoint omits the line).

Changes:

  • Update clickToPositionDom to return null for table fragments when no line is present in the hit chain, allowing clickToPosition to fall back to hitTestTableFragment.
  • Add unit tests covering the “table fragment without line hit” deferral behavior.
  • Add a table-related test intended to cover the “line is hit” path (but it currently doesn’t exercise that branch in JSDOM—see comments).

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
packages/layout-engine/layout-bridge/src/dom-mapping.ts Defers table fragment clicks without direct line hits to geometry fallback by returning null.
packages/layout-engine/layout-bridge/test/dom-mapping.test.ts Adds tests for table fragment fallback behavior when elementsFromPoint omits line elements.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/layout-engine/layout-bridge/src/dom-mapping.ts Outdated
Comment thread packages/layout-engine/layout-bridge/src/dom-mapping.ts Outdated
Comment thread packages/layout-engine/layout-bridge/test/dom-mapping.test.ts Outdated
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: b48cd5609b

ℹ️ 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/layout-engine/layout-bridge/src/dom-mapping.ts Outdated
When a table splits across pages, each fragment's data-table-boundaries
attribute contained segment heights for the entire table rather than
just the rows rendered in that fragment. This caused resize handles to
overflow beyond the fragment into the page gap and neighboring content.

Scope the segment computation to iterate only over the rows actually
rendered in each fragment (repeated headers + body rows from fromRow to
toRow), matching the existing row rendering logic. Handle partial row
heights for mid-row splits.
@tupizz tupizz self-assigned this Feb 8, 2026
…d page detection

normalizeClientPoint adjusts Y by the page's DOM offset, making
containerPoint page-relative. On page 1 this is ~0, but on page 2+
the geometry fallback double-subtracted pageTopY, causing hitTestPage
to find the wrong page and table cell hit testing to fail.

Fix: when DOM info is available, determine the page from
elementsFromPoint and treat containerPoint as already page-relative.
Also clean up debug logging from prior iteration.
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.

Hey @tupizz! This is great.

I added a few comments, mainly regarding maintainability and cleanness of the codebase.

And also in this case, I would advise creating interaction stories here as well - since this happens specific on custom table through cursor positioning

Comment thread packages/layout-engine/layout-bridge/src/index.ts
Comment thread packages/layout-engine/layout-bridge/src/dom-mapping.ts Outdated
Comment thread packages/layout-engine/layout-bridge/src/index.ts
Comment thread packages/layout-engine/layout-bridge/test/clickToPosition.test.ts
Comment thread packages/layout-engine/layout-bridge/src/index.ts Outdated
- Add TABLE_FRAGMENT to DOM_CLASS_NAMES constant, use across packages
- Export and reuse findPageElement in clickToPosition instead of duplicating
- Extract snapToNearestFragment helper from clickToPosition
- Add buildTableFixtures shared test builder in mock-data
- Polyfill elementsFromPoint in table hit chain test for proper coverage
- Add cross-reference comments between metadata and rendering iterations
@tupizz
Copy link
Copy Markdown
Contributor Author

tupizz commented Feb 11, 2026

@caio-pizzol I'll be adding the visual testing

@caio-pizzol caio-pizzol self-requested a review February 11, 2026 19:11
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.

feel free to merge after interaction stories are added

great job!

Verifies that clicking in different table cells correctly places the
cursor in the targeted cell, not in nearby paragraphs or wrong columns.
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 0eac43c into main Feb 12, 2026
2 checks passed
@harbournick harbournick deleted the tadeu/sd-1788-bug-cursor-cannot-be-reliably-placed-in-table-cell branch February 12, 2026 00:20
@superdoc-bot
Copy link
Copy Markdown
Contributor

superdoc-bot Bot commented Feb 12, 2026

🎉 This PR is included in superdoc v1.12.0-next.14

The release is available on GitHub release

harbournick pushed a commit that referenced this pull request Feb 12, 2026
# [1.12.0](v1.11.0...v1.12.0) (2026-02-12)

### Bug Fixes

* allow paste from context menu ([#1910](#1910)) ([b6666bf](b6666bf))
* **ci:** include sub-package commits in superdoc release filter ([a2c237b](a2c237b))
* **ci:** move superdoc releaserc to package dir for proper commit filtering ([688f8e0](688f8e0))
* context menu clicks would change selection position ([#1889](#1889)) ([ace0daf](ace0daf))
* **converter:** handle absolute paths in header/footer relationship targets ([#1945](#1945)) ([9d82632](9d82632))
* cursor drift during vertical arrow navigation (SD-1689) ([#1918](#1918)) ([982118d](982118d))
* disable footnotes typing ([#1974](#1974)) ([92b4d62](92b4d62))
* headless yjs ([#1913](#1913)) ([4cdecf7](4cdecf7))
* image z-index and overlaps ([#1950](#1950)) ([39875ac](39875ac))
* issue updating paragraph properties (SD-1778) ([#1944](#1944)) ([a9076ed](a9076ed))
* **layout-bridge:** defer table fragment click mapping to geometry fallback ([#1968](#1968)) ([0eac43c](0eac43c))
* load alternative style definitions when main one is missing ([#1922](#1922)) ([bb4083f](bb4083f))
* mount Vue on wrapper element to prevent host framework conflicts (SD-1832) ([#1971](#1971)) ([0c4bdda](0c4bdda))
* performance ([#1914](#1914)) ([0747b03](0747b03))
* persist comments on reload in collab mode ([#1949](#1949)) ([2b2e56e](2b2e56e))
* preserve text selection highlight on right-click ([#1994](#1994)) ([db5466a](db5466a))
* return null instead of blank num definition when not found ([#1990](#1990)) ([3acac3b](3acac3b))
* **super-converter:** add tableHeader export handler to fix corrupted docx ([#1900](#1900)) ([010799b](010799b))
* **super-converter:** resolve table style conditional shading on cell import (SD-1833) ([#1985](#1985)) ([5e206f4](5e206f4))
* **super-editor:** allow Backspace to delete empty paragraphs in suggesting mode ([#1966](#1966)) ([820c73c](820c73c))
* **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 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))
* **table:** resolve column resize only working on first page (SD-1772) ([#1959](#1959)) ([df43867](df43867))
* **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))
* use DEFLATE compression for docx export instead of STORE ([#1933](#1933)) ([ebcd986](ebcd986))
* zIndex updates ([#1973](#1973)) ([3ca7aa3](3ca7aa3))

### Features

* **super-editor:** add w:lock support for StructuredContent nodes (SD-1616) ([#1939](#1939)) ([2c16f1c](2c16f1c))
* telemetry ([#1932](#1932)) ([fab3ce9](fab3ce9))
* **template-builder:** add cspNonce support ([#1911](#1911)) ([bcb9d28](bcb9d28))
* whiteboard ([#1954](#1954)) ([c9d1484](c9d1484))

### Performance Improvements

* **build:** remove redundant steps and add fast dev build (SD-1886) ([#1999](#1999)) ([db46bf8](db46bf8))
@harbournick
Copy link
Copy Markdown
Collaborator

🎉 This PR is included in superdoc v1.12.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.

5 participants