Repository navigation
Immutable
release. Only release title and notes can be modified.
What's New
ui.document.getVersion()andmarkClean()— Track when a document is saved. CallgetVersion()to capture the current editor state, thenmarkClean(version)after persisting to show "Saved" status without reopening.ui.historyobserver — Listen to undo and redo state changes without polling. Syncs across all UI instances on the same editor.- CDN script-tag setup — Use SuperDoc on CodePen, JSBin, or single HTML files. The Quickstart now includes a
<script>tag snippet that reads its version from the runtime. - Collaboration server template — Deploy Hocuspocus with document storage, access control, and DOCX autosave. Includes a server-side Node SDK agent that suggests tracked replacements and waits for acceptance.
- User switching without reopen — Call
setUser(newUser)to change the current user mid-session. Queues overlapping switches and stays across document reopens. - Query bookmarks through search —
find()andquery.match()now discover bookmarks with{ type: 'node', nodeType: 'bookmark' }. - Footnotes beside tracked insertions —
footnotes.insert()now accepts anchors inside pending insertions and deletions.
Fixes
- Temporary previews (
beginTemporary,replaceTemporary,rollbackTemporary) no longer count as edits.ui.document.dirtystays false,onChangereports only real changes, and undo depth is preserved. - Large footnoted documents — Per-frame note geometry now carries only mounted pages, reducing initial packet size and helping large documents open within transport limits.
- Paragraph merge corruption — Repeated paragraph merges with tracked changes no longer corrupt the document.
- REF field tracking — REF fields are now properly removed when their tracked clauses are deleted.
- Cross-cell keyboard deletions — Delete across merged table cells now creates correct tracked changes and cell boundaries.
- Comment anchors in localized edits — Comments stay on their target text when the document is edited around them.
- Inline box citation preservation — Inline boxes retain gaps when text is inserted, preventing displacement by earlier deletions.
- Final view paragraph joins — Deleted paragraph boundaries are correctly joined in Final view while preserving section markers and numbering.
- Hyperlink field protection — Partial tracked decisions on split hyperlink fields are now refused to prevent corruption.
- SDK comments on selected text — Comments created through the Document API stay on the words the browser selected, even with hidden content-control text.
- Empty inline controls on copy/paste — Empty inline controls are preserved through clipboard operations.
- Custom tabs in headers — Right-justified custom tab runs now align with Word's behavior. Letterhead and headers transfer correctly between peers.
- Table actions disabled state — Unavailable table actions (like Fix tables in v2) now appear disabled in the toolbar menu.
- High contrast mode per instance — Each SuperDoc instance keeps its own high-contrast state instead of sharing it globally.
- Typing performance — Bounded tracked-change catalog scans and memoized note scope resolution restore fast keystroke handling. Large notes parts cache scope windows so in-order reads resolve with one walk instead of one per paragraph.
- Tracked list numbering in review — Review now shows both the original and current list numbers when a tracked deletion changes numbering (e.g., "3.→2.").
- Paragraph mark formatting — Selected paragraph marks now format correctly, preserving source intent, namespace scope, and history across document modes and collaboration.
- DrawingML prefixes in older rooms — Rooms created before the source envelope was stored now bind standard OOXML prefixes to prevent unbound prefix errors on export and projectMarkdown/projectHtml calls.
- Legacy imported comment replies — Replies imported from legacy sources now sync correctly and survive draft finalization.
- Bulk edit and comment performance — Tracking and comment work is bounded per operation, preventing slowdowns on large bulk edits.
- Comment shifts for content controls — Comments on paragraphs with hidden content-control text shift correctly through session sync, and
comments.create()acceptsexpectedTextto refuse stale targets.
Improvements
- Table sorting with repeating headers — Repeating header rows are now preserved when sorting data, with an optional
skipHeaderRowsoverride. - Proofing caches — Unchanged text segments are now reused after edits, with per-owner LRU caches for multipage paragraphs.