Skip to content

Releases: superdoc-dev/superdoc

v1.40.0-next.3

06 Jun 15:37
35c7959

Choose a tag to compare

v1.40.0-next.3 Pre-release
Pre-release

1.40.0-next.3 (2026-06-06)

Bug Fixes

  • de-dupe SuperDoc export exceptions (177bd3e)
  • super-editor: rethrow export docx errors (2fee76a)

v1.40.0-next.2

06 Jun 02:27
8ade7db

Choose a tag to compare

v1.40.0-next.2 Pre-release
Pre-release

1.40.0-next.2 (2026-06-06)

Features

  • font-system: attach docfonts verdict evidence to font reports (e101be3)

v1.40.0-next.1

06 Jun 00:28
4ce95e9

Choose a tag to compare

v1.40.0-next.1 Pre-release
Pre-release

1.40.0-next.1 (2026-06-06)

Bug Fixes

  • align layout column expectation (6530315)
  • super-editor: keep caret after replacing break-only list content (SD-3278) (480ea20)
  • super-editor: preserve generated line breaks in DOCX export (SD-3278) (a58352c)
  • super-editor: require PM-contiguity when coalescing search ranges (SD-3278) (f9a7b8e)
  • superdoc: blocker round for zoom modes from review (SD-3294) (d643fb9)
  • superdoc: key viewport-change dedup on fit, not raw available width (SD-3294) (96ab4f8)
  • superdoc: land the always-latest metrics store the prior message described (SD-3294) (f260c69)
  • superdoc: wait for layout ready before capturing base document width (f168de5)
  • ui: zoom hygiene for mode-only emissions (SD-3294) (34077b0)

Features

  • superdoc: add layout-change event for responsive fit-to-container zoom (7bad8f0)
  • superdoc: observable zoom-mode transitions and format-aware viewport metrics (SD-3294) (6472895)
  • superdoc: zoom modes with viewport metrics and fit-width (SD-3294) (f174110)
  • ui: zoom domain, useSuperDocZoom, and zoom-fit-width command (SD-3294) (74d41d5)

vscode-v2.11.0

06 Jun 00:00

Choose a tag to compare

What's New

Fonts API for custom registration and per-document mapping

  • superdoc.fonts.add({ family, weight, style }, url) registers custom fonts and awaits them before layout
  • superdoc.fonts.map({ 'Calibri': 'Carlito', ... }) maps logical families per editor — custom substitutes override bundled defaults
  • superdoc.fonts.preload(['Georgia', ...]) loads families before measurement
  • superdoc.fonts.getReport(), getMissingFonts(), getDocumentFonts() surface font diagnostics
  • Font changes emit fonts-changed events with load status and resolution reasons

Bundled font substitutes for common Word families

  • Calibri, Cambria, Arial, Times New Roman, Courier New load metric-compatible open substitutes (Carlito, Liberation Sans, Liberation Serif, Liberation Mono) — no configuration required
  • Helvetica aliases to bundled Liberation Sans
  • All substitutes load before measurement — rendering is deterministic, no late-load reflow

Structural tracked changes for tables

  • Import whole-table insert/delete as single tracked-change item (not per-row)
  • Render visually — inserted tables green, deleted tables struck-through with red rows
  • Cell text inside tracked table subsumed into structural change — one review bubble, one decision
  • Accept cascades: accepting inserted table accepts contained cell text; rejecting removes whole table
  • Right-rail bubble labels "Added table" / "Deleted table"

PAGEREF field resolution to live target page numbers

  • Resolve PAGEREF instructions to display number, format (numeric picture, general format), and relative position (\p → "on page N", "above", "below")
  • Preserve instruction tokens and CHARFORMAT properties for export round-trip
  • Render in document body with live re-resolution on pagination change

SEQ sequence field support

  • Import and export SEQ field instructions with numbering, restart, and hidden-field state
  • Resolve in layout using shared evaluator: counter tracking, heading-level serials, explicit restart precedence
  • Field discovery reads resolvedNumber; export emits current evaluated results
  • Preserve raw instructions for lossless round-trip

NUMPAGES field formatting with numeric pictures and ordinal

  • Parse \# "0" (numeric picture) and \* Ordinal format switches on insert and import
  • Format total page count as "1", "I", "1st" per field switch
  • Applied to both inserted and refreshed fields
  • Preserve instructions on import for export parity

PAGE field formatting with numeric pictures

  • Parse \# "0" (numeric pictures) and \* general-format switches (Arabic, Roman, Alphabetic, ArabicDash)
  • Format page numbers per field — "1", "i", "A", "1-" — independent of section numbering format
  • Preserve instructions on import; export round-trips back to same field code

SECTIONPAGES field support

  • Resolve SECTIONPAGES field to section-aware page count with section-level numbering awareness

Document background

  • Import and render document-level background image positioned behind all body content

Nested content controls

  • Import nested block SDTs (SDT inside paragraph) and nested inline SDTs (SDT inside run)
  • Preserve structure through export

Templates can be applied to documents

  • doc.template.apply(templateDoc) applies formatting, styles, and structure from template to active document

Author colors for tracked changes

  • Per-author tracked change highlights in track-changes UI

Improvements

Multi-column sections now render with explicit per-column widths and gaps

  • Authored column widths preserved — no scaling to fit content area
  • Per-column gaps (w:col/@w:space) drive separator positions, not uniform section gap
  • Footnote assignment and positioning use per-column geometry
  • Column hit-testing honors per-column boundaries, not uniform stride
  • Separators position at resolved geometry

Footnote pagination matches Word's behavior

  • Ordered-cluster rule — first N-1 anchors on a page render fully, only Nth may split across pages
  • Body paginator reserves minStart (first-line height) for each new anchor, allowing tight packing
  • Continuation pages reserve only remaining space after cluster obligation
  • One-line widows absorbed by bumping reserve when eliminates a split
  • Footnote numbering honors per-section w:footnotePr/@numFmt, @numStart, and eachSect restart
  • Custom-mark footnotes (customMarkFollows) no longer consume an ordinal
  • Marker is plain superscript with space gap before body text

Tracked change rendering

  • Inserted table rows paint green, deleted rows paint struck-through red
  • Right-rail bubble for structural table changes
  • Inline changes inside tracked table suppressed (structural bubble only)

Table border and shading fidelity

  • Collapsed shared edges resolve per ECMA-376 §17.4.66 — greater weight wins, style precedence breaks ties
  • Explicit nil borders suppress dividers (both adjacent cells nil = no line)
  • Cell shading — pct/auto patterns resolve to Word-matching blend colors
  • Row-level tblPrEx borders merged and rendered once per edge
  • Rowspan continuation rows no longer double interior lines
  • Keep-next paragraphs before tables reserve only first row height (table splits normally)

Header/footer refs inherit across multiple sections

  • Walk back to nearest prior section defining first/even/default variant (not just immediately prior)
  • first and even no longer fall back to default per OOXML §17.10.1
  • Preserve section fallback refs in section resolver

Field-annotation pills resolve fonts per document

  • Pills measure and paint through document's font resolver
  • Custom substitutes and bundled clones apply to field content
  • Underline rendering matches adjacent text

Anchored tables reposition with per-wrap padding

  • Apply correct offset based on wrap value (square, tight, through)

Underlined tabs render flush with text underline

  • Tab underline anchor aligns to line-box top and ends at baseline offset
  • Measured ascent/descent from tab font drives line height
  • One merged overlay for text and tab underlines, consistent weight throughout

Fixes

  • Image resize in suggesting mode no longer duplicates (uses AttrStep, preserves track-changes state)
  • Tracked deletion coalescing in suggesting mode — adjacent Backspace batches into single change
  • Multi-column sections with explicit equal widths now balance correctly (only skip genuinely-unequal widths)
  • Per-column w:space honored for unequal columns per ECMA-376 §17.6.4
  • Hit-testing resolves mid-page column region — column boundaries correct when section breaks change columns mid-page
  • Explicit column layout idempotence — per-column gaps preserved through resolveColumnLayout
  • Table hit-testing uses region column count, not page-start count
  • Cell border conflict resolution respects explicit nil borders on both sides of shared edges
  • Rowspan continuation rows include spanning cells in measure, preventing doubled interior lines
  • Nested tracked-change decisions resolve structural changes on shared revision ids
  • Nested content controls import and export without data loss
  • Empty text runs skip flow accounting, preventing phantom spaces and height inflation
  • Field keyword dispatch case-insensitive (lowercase PAGE/NUMPAGES now work in headers/footers)
  • SEQ field result caching preserves lowercase seq fields and cached numbers nested inside runs
  • Continuation separators and dividers correctly sized per ECMA-376 (standard ≈ 0.5× width, continuation ≈ full width)
  • Font embedding policy gated on embedding check; malformed embeds skip instead of aborting
  • Provider precedence: registered real face > bundled substitute > as-requested
  • Quoted primary family normalized through resolution, collapsing distinct signatures
  • Header/footer display numbers for odd/even parity respect per-section numbering restarts and offsets
  • Section inheritance walks back across all prior sections, not just immediately preceding
  • Legacy header/footer refs preserved through adapter, not exposed through resolution
  • Page field format switches case-insensitive and preserve internal whitespace in quoted numeric pictures
  • TOC updates followed by F9 preserve SEQ position shifts
  • Comment resolution on whole-thread level with batch processing (dangling comments after resolve fixed)
  • Nested replacement tracked-change decisions handle replacement boundaries correctly

vscode-v2.12.0-next.3

06 Jun 15:29
35c7959

Choose a tag to compare

vscode-v2.12.0-next.3 Pre-release
Pre-release

2.12.0-next.3 (2026-06-06)

Bug Fixes

  • de-dupe SuperDoc export exceptions (177bd3e)
  • super-editor: rethrow export docx errors (2fee76a)

vscode-v2.12.0-next.2

06 Jun 02:18
8ade7db

Choose a tag to compare

vscode-v2.12.0-next.2 Pre-release
Pre-release

2.12.0-next.2 (2026-06-06)

Features

  • font-system: attach docfonts verdict evidence to font reports (e101be3)

vscode-v2.12.0-next.1

06 Jun 00:13
4ce95e9

Choose a tag to compare

vscode-v2.12.0-next.1 Pre-release
Pre-release

2.12.0-next.1 (2026-06-06)

Bug Fixes

  • align layout column expectation (6530315)
  • super-editor: keep caret after replacing break-only list content (SD-3278) (480ea20)
  • super-editor: preserve generated line breaks in DOCX export (SD-3278) (a58352c)
  • super-editor: require PM-contiguity when coalescing search ranges (SD-3278) (f9a7b8e)
  • superdoc: blocker round for zoom modes from review (SD-3294) (d643fb9)
  • superdoc: key viewport-change dedup on fit, not raw available width (SD-3294) (96ab4f8)
  • superdoc: land the always-latest metrics store the prior message described (SD-3294) (f260c69)
  • superdoc: wait for layout ready before capturing base document width (f168de5)
  • ui: zoom hygiene for mode-only emissions (SD-3294) (34077b0)

Features

  • superdoc: add layout-change event for responsive fit-to-container zoom (7bad8f0)
  • superdoc: observable zoom-mode transitions and format-aware viewport metrics (SD-3294) (6472895)
  • superdoc: zoom modes with viewport metrics and fit-width (SD-3294) (f174110)
  • ui: zoom domain, useSuperDocZoom, and zoom-fit-width command (SD-3294) (74d41d5)

sdk-v1.16.0-next.3

06 Jun 15:35
35c7959

Choose a tag to compare

sdk-v1.16.0-next.3 Pre-release
Pre-release

1.16.0-next.3 (2026-06-06)

Bug Fixes

  • de-dupe SuperDoc export exceptions (177bd3e)
  • super-editor: rethrow export docx errors (2fee76a)

sdk-v1.16.0-next.2

06 Jun 02:24
8ade7db

Choose a tag to compare

sdk-v1.16.0-next.2 Pre-release
Pre-release

1.16.0-next.2 (2026-06-06)

Features

  • font-system: attach docfonts verdict evidence to font reports (e101be3)

sdk-v1.16.0-next.1

06 Jun 00:18
4ce95e9

Choose a tag to compare

sdk-v1.16.0-next.1 Pre-release
Pre-release

1.16.0-next.1 (2026-06-06)

Bug Fixes

  • align layout column expectation (6530315)
  • super-editor: keep caret after replacing break-only list content (SD-3278) (480ea20)
  • super-editor: preserve generated line breaks in DOCX export (SD-3278) (a58352c)
  • super-editor: require PM-contiguity when coalescing search ranges (SD-3278) (f9a7b8e)
  • superdoc: blocker round for zoom modes from review (SD-3294) (d643fb9)
  • superdoc: key viewport-change dedup on fit, not raw available width (SD-3294) (96ab4f8)
  • superdoc: land the always-latest metrics store the prior message described (SD-3294) (f260c69)
  • superdoc: wait for layout ready before capturing base document width (f168de5)
  • ui: zoom hygiene for mode-only emissions (SD-3294) (34077b0)

Features

  • superdoc: add layout-change event for responsive fit-to-container zoom (7bad8f0)
  • superdoc: observable zoom-mode transitions and format-aware viewport metrics (SD-3294) (6472895)
  • superdoc: zoom modes with viewport metrics and fit-width (SD-3294) (f174110)
  • ui: zoom domain, useSuperDocZoom, and zoom-fit-width command (SD-3294) (74d41d5)