Releases: superdoc-dev/superdoc
Releases · superdoc-dev/superdoc
v1.28.0
What's New
- Tab character handling — Insert tab characters (
\t) as schema-based tab nodes during text insertion, preserving formatting across tab boundaries. - Independent replacements mode — Track insertions and deletions as separate revisions (Word/ECMA-376 compliant) via
modules.trackChanges.replacements: 'independent'; paired mode (Google Docs style) remains default. - Odd/even header-footer support — Documents with
w:evenAndOddHeadersnow render the correct header variant per document page number. - Column line separators — Render 1px vertical separators between columns in multi-column sections via
withSeparatorflag. - Math equation converters — Implement
m:box(grouping) andm:borderBox(bordered expressions) with MathML<menclose>and CSS polyfill for notation rendering. - Tab character support in tab nodes — Enhanced text insertion to check parent content restrictions and preserve raw tab characters when tab nodes aren't allowed.
Improvements
- Tab alignment in TOC styles — Seed default 0.5" tab grid and bind trailing tab stops to right-aligned position for correct dot-leader rendering.
- Font auto-derivation in toolbar — Automatically populate
props.style.fontFamilyfrom label or key in font dropdown options. - Math text tokenization — Split multi-character OMML runs per character (matching Word's OMML2MML.XSL) and preserve surrogate pairs via code-point iteration.
- Track changes configuration — Consolidate config under
modules.trackChanges(canonical path) with backward-compatible aliases forconfig.trackChangesandconfig.layoutEngineOptions.trackedChanges. - Footnote placement — Cap footnote layout to per-page reserved band (not max reserve) and monotonically merge reserves across passes to prevent overflow past page margins.
- Multi-column text overlap — Track deepest Y across columns and start next section below all column content when heights are unequal.
- Math function limits — Group consecutive non-digit, non-operator characters in function names and preserve nested limit/subscript/superscript styling.
- Tab stop measurement — Use actual font size for tab runs instead of hardcoded 12pt default; eliminate CSS strut misalignment in tab-segmented lines.
Fixes
- Restore published config typings in superdoc build output.
- Parse
w:evenAndOddHeadersST_OnOff values correctly in importer. - Place cursor at clicked position inside tracked change marks.
- Allow cursor placement after inline SDT (content control) fields.
- Respect explicit column widths when drawing column separators.
- Add serif font fallback for serif-like font families.
- Fix table cell selection in collaborative editing with context menu.
- Prevent image overflow within table cells via
max-width: 100%. - Preserve italic styling on variables inside function-wrapped limits.
- Split independent replacement sidebar updates to handle unpaired revisions correctly.
- Remove toolbar window resize/keydown listeners on component unmount.
- Suppress deprecation warning re-triggers on normalized config objects.
- Validate surrogate pair boundaries in mathematical alphanumerics.
v1.28.0-next.8
1.28.0-next.8 (2026-04-22)
Bug Fixes
- paragraph: guard listRendering destructure against null (#2896) (2c38373), closes #updateListStyles #createSeparator #updateListStyles #initList #initList #initList #updateListStyles
- rebuild fragment on geometry change (#2842) (84b5fbc)
Features
- pm-adapter: synthesize internal link for PAGEREF with \h switch (#2899) (f276b34), closes #bookmark #scrollPageIntoView #visibleHost #visibleHost #bookmark
v1.28.0-next.7
1.28.0-next.7 (2026-04-22)
Bug Fixes
v1.28.0-next.6
v1.28.0-next.5
v1.28.0-next.4
1.28.0-next.4 (2026-04-22)
Features
v1.28.0-next.3
1.28.0-next.3 (2026-04-22)
Features
v1.28.0-next.2
1.28.0-next.2 (2026-04-22)
Bug Fixes
v1.28.0-next.1
1.28.0-next.1 (2026-04-22)
Bug Fixes
- allow putting cursor after inline sdt field (#2763) (bc809f8)
- image not being contained within cell (#2775) (344be7a)
- importer: parse evenAndOddHeaders ST_OnOff values correctly (5f98b58)
- layout-bridge: keep footnote fragments within the reserved band (SD-1680) (#2881) (adf4ea6)
- layout: respect explicit column widths when drawing separators (c4c4ad1)
- math: preserve italic on variables inside function-wrapped limits (SD-2538) (#2871) (df44933)
- math: split multi-char m:r text per character to match Word (SD-2632) (#2875) (7142f4e)
- prevent text overlap when multi-column sections span pages (SD-1869) (#2676) (41722f5)
- remove toolbar window listeners on unmount (#2783) (fc840db)
- serif fallback for serif-like fonts (#2870) (781b8cd)
- table cell selection with context menu in collab (#2822) (43bb2e6)
- track-changes: split independent replacement sidebar updates (#2886) (865eaf3)
Features
- layout: enable odd/even header-footer support (w:evenAndOddHeaders) (#2804) (797b0b4), closes #2803 #resolveLayoutOptions
- math: implement m:box and m:borderBox converters (#2750) (f229576), closes #2605
- support rendering of column line separators (#2088) (68dcff2), closes #2067
- toolbar: auto-derive font-option style from label/key (SD-2611) (#2874) (ff220a9)