@docx-editor.dev/core@2.11.0
- e4872fb: Replicate a cross-paragraph collaboration selection as an anchor and a head address.
- 1542e73: Fix toolbar and menu bar popups rendering behind the open navigation pane. Fixes #522
- 40578c6: Add a format painter: the
format.paintertoolbar slot,copyFormattingandpasteFormattingcommands,Ctrl+Alt+C/Ctrl+Alt+V(Commandon macOS), and Copy formatting / Paste formatting rows on the right-click menu. Clear formatting now leaves a paragraph alone when the selection only ends at its start. Fixes #519 - e4872fb: Add a provider-neutral collaboration port and session contracts so the editor can attach a replication implementation without importing a CRDT or transport.
- e4872fb: Share table-cell and header selection presence as two endpoints plus an optional cell kind.
- af77c9b: Tables match Word's default cell metrics: a table that names no style resolves the document's default table style, cell margins fall back to Word's own values, the paragraph Word writes to close a cell after a nested table takes no height, and a single-spaced line box includes the font's line gap.
StyleCascadeTablegainsdefaultTableStyleId, andDEFAULT_CELL_MARGINSis no longer a uniform 3pt. - dfaafc0: Live collaboration now reports every failure a room can reach, including a session that fails after connecting, and presence chrome finds its session through the editor rather than a prop. Adds
DocxEditorCollaborationRootfor mounting a room andreadCollaborationDocumentfor reading one on a server.
- e4872fb: Allocate bookmark ids per collaboration actor so concurrent table-of-contents edits cannot mint the same id.
- e4872fb: Give each picture its own
wp:docPrid when two people insert an image into the same document at the same time, so Word no longer renumbers the drawings when it opens the merged file. - e4872fb: Allocate revision, comment, relationship, bookmark, and numbering ids per collaboration actor so concurrent peers no longer mint the same id from a shared snapshot.
- e4872fb: Keep both footnotes when two people add the first one to the same document at the same time, so neither author's note becomes unreachable after the edits merge.
- e4872fb: Give each paste its own bookmark, revision, and
wp:docPrids when two people paste into the same document at the same time, so the merged file keeps every marker, tracked change, and drawing addressable on its own. - e4872fb: Allocate table-of-contents bookmark names and content-control ids per collaboration actor so concurrent peers cannot mint the same value.
- e4872fb: Headless automation writes now publish to a collaboration replica before the call returns, so a script that edits and then reads a peer no longer sees the document as it stood before the edit.
- e4872fb: Insert Picture and Replace Picture now mint their
wp:docPrand relationship ids under the collaboration actor, so two people adding an image to the same document at the same time no longer produce colliding ids. A single author still gets Word's dense numbering. - e4872fb: A rich clipboard paste now replicates story content and imported package resources to collaboration peers.
- e4872fb: Attach a collaboration session after the editing surface finishes mounting, so a session no longer fails to start and report an error status.
- e4872fb: Comments, tracked-change decisions, tables of contents, and custom nodes now replicate while a collaboration replica is attached, so those writes are no longer refused.
- e4872fb: Comment writes now replicate the comments part, relationship, and content type to collaboration peers.
- e4872fb: Add the
create-or-joincollaboration bootstrap: every peer opens a room with the same options, the first peer seeds it and later peers join it, so hosts no longer decide out-of-band which peer creates the room. A room that two partitioned peers seeded concurrently reports the new terminal failure codeconcurrent-seedon every replica; recover by creating a new room from saved bytes. - e4872fb: Concurrent first-create of a customXml store keeps both custom nodes on collaboration peers.
- e4872fb: Give each review author slot its own hue, so two authors no longer read as the same colour.
- 2015f33: Grow a vertically merged cell by one row when you insert a row inside its span, instead of breaking the merge and shifting the grid. In a merged table, a row that holds a cell inside a content control refuses the insert rather than marking the wrong column. Fixes #57.
- e4872fb: Minted external hyperlink relationships are indexed in both
relationshipsandexternalTargets, matching the shape after save and reopen. - e4872fb: Image insert, list numbering, and hyperlink minting now replicate to collaboration peers instead of staying local.
- e4872fb: A collaborative replica now rebuilds only the nodes a received edit names, keeps the rest of the document by identity, and revalidates only the parts that changed.
- e4872fb: Joining a collaboration room keeps inline images, and the image selection frame sits on the selected drawing.
- e4872fb: Typing in a large document with a collaboration replica attached no longer costs a scan of every node id in the part on each edit, so an attached editor now runs at close to solo speed.
- e4872fb: Add an
offlineEditingoption to the collaboration factories and hooks: a disconnected replica keeps accepting local edits, and the buffered updates merge on reconnect. - c4b4dab: Minify the shipped
dist/editor.css, which halves it from 212 KiB to 109 KiB. - e4872fb: Keep a queued collaboration edit when a remote update arrives during it, and flush each document's queue independently so two documents in one process no longer strand each other.
- e4872fb: Resolve collaboration presence addresses without scanning the document, so remote carets no longer slow down typing on long documents.
- e4872fb: Remote carets now follow a collaborator's typing instead of stopping at the last place they clicked.
- e4872fb: Remote presence highlights now measure only visible pages, so a large remote selection no longer walks the whole document on every keystroke.
- e4872fb: Rejected tracked deletions restore ordinary run text on collaboration peers, and custom-node create-part writes now carry their content-type overrides.
- e4872fb: Receiving a collaborative edit now costs the size of the edit instead of the size of the document, and a received keystroke reaches layout as the same paragraph-scoped change a local one does.
- e4872fb: Review chrome no longer commits queued typing while it reads, and a missing image at paint time shows a placeholder instead of throwing.
- d11816f: A cell merged over several rows now takes the height of the rows it covers instead of loading all of it onto the row it starts on, so the rows beside it keep their own heights and shading. A
w:cantSplitrow holding such a merge can now split across a page rather than failing the table's layout. Fixes #504 - 0d770d9: Header and footer variants resolve per page, so a title page with no first-page header starts its body at the top margin, and a sheet added for note overflow takes the variant its own page number resolves.
PAGEandNUMPAGESfields evaluate the\#numeric picture switch instead of painting the result cached in the file. - @docx-editor.dev/i18n@2.11.0
@docx-editor.dev/pro@2.11.0
- e4872fb: Add
useDocumentCollaborationanduseCollaborationParticipantsfor React and Vue, exposeydocandproviderplus arejoinrecovery on the WebRTC hooks, and addsession.setIdentityfor live name and color changes.leavenow requires the saved document bytes so nothing typed in the room is lost. - e4872fb: Collaboration hooks now return a host-facing
CollaborationSessionand typedCollaborationFailureerrors, and the shared room bootstrap type isCollaborationBootstrap. - e4872fb: Add the
DocxEditorCollaborationcompound to the React and Vue entries:CaretLabelsrenders your own component inside each remote-caret label with full adapter context, andAvatars/Avatarship a participant stack whose colors match the review author colors automatically. - e4872fb: Add the
create-or-joincollaboration bootstrap: every peer opens a room with the same options, the first peer seeds it and later peers join it, so hosts no longer decide out-of-band which peer creates the room. A room that two partitioned peers seeded concurrently reports the new terminal failure codeconcurrent-seedon every replica; recover by creating a new room from saved bytes. - e4872fb: Add an experimental API that replicates full-document canonical edits across Yjs peers. A typing run undoes as one step.
- e4872fb: Add
useHocuspocusCollaboration(React and Vue) andcreateHocuspocusCollaborationon newhocuspocussubpaths, so a Hocuspocus server room works the same way a WebRTC room does. Thetokenoption accepts a renewal callback, and a rejected token fails fast instead of waiting out the sync timeout. - e4872fb: Add an
offlineEditingoption to the collaboration factories and hooks: a disconnected replica keeps accepting local edits, and the buffered updates merge on reconnect. - e4872fb: Realtime collaboration is available from
@docx-editor.dev/pro. RegistercollaborationModule({ session })on the editor module list. - e4872fb: Add
useWebrtcCollaborationfor React and Vue so a host can open a WebRTC room without owning its StrictMode lifecycle.
- e4872fb: A collaboration session that cannot accept the document no longer throws out of the editor's mount path, so the editor stays mounted and reports that it is out of sync instead of going blank.
- e4872fb: Verify shared media bytes against their content digest before use, so a peer cannot substitute the bytes behind an image that every replica already trusts.
- e4872fb: Report a collaboration status of
errorwhen shared state can only be materialized by leaving content out, instead of repairing the document silently while the session still readsready. - e4872fb: Hold remote collaboration updates to the same node, part, relationship, and blob limits as local writes, so one peer can no longer drive unbounded allocation on every replica in the room.
- e4872fb: Collaboration status now keeps a typed last-failure reason after the session recovers, so a host can learn why a replica failed. The session factory that always received
"document"is removed; pass a ready session instead. - e4872fb: Resolving, reopening, and deleting a comment now replicate to collaboration peers without dropping the anchored text.
- e4872fb: Keep both authors' work when two collaborators add the first footnote or endnote at the same time, instead of dropping one of them.
- e4872fb: Keep a collaborative room editable and converged when two people press Enter or paste in the same paragraph at the same time, instead of leaving each author on their own copy.
- e4872fb: A cross-paragraph type-over now replicates to peers. Joining no longer adopts the removed paragraph's properties onto the survivor.
- e4872fb: A character-format command no longer duplicates selected text. New text nodes fill by replacing their current value, so a replay cannot insert the same characters again.
- e4872fb: Inserting an image in a collaborative document now copies only that image's bytes into the room, instead of serializing the whole document.
- e4872fb: An incomplete WebRTC chunked message now times out and moves the replica to error instead of stalling later updates behind a silent gap.
- e4872fb: Fix silent data loss where a local edit that a remote update raced could overwrite text or delete a paragraph nobody touched, by replicating each edit on the commit that makes it.
- e4872fb: Keep a keystroke in a collaborative document proportional to the edit rather than to the document, so typing in a long file costs what typing in a short one does.
- e4872fb: Maintaining a node's child listing is now linear in its child count, which removes a slowdown when typing in a long document or a wide table.
- e4872fb: Keep both relationships when two people add the first one to the same part at the same time, so a concurrently inserted image or hyperlink no longer ends up permanently broken.
- e4872fb: A collaborative edit that replaces a run no longer sends the text it replaced to the other replicas, so formatting, tracked deletion, and hyperlink edits over previously edited text converge.
- e4872fb: Undo no longer destroys text a collaborator typed into the same node while the undone edit was being made.
- e4872fb: WebRTC room encryption no longer uses the public room id as the password; pass a
#collab=URL fragment secret or signaling stays unencrypted. - Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [2015f33]
- Updated dependencies [1542e73]
- Updated dependencies [40578c6]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [c4b4dab]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [af77c9b]
- Updated dependencies [d11816f]
- Updated dependencies [0d770d9]
- Updated dependencies [dfaafc0]
- @docx-editor.dev/core@2.11.0
- @docx-editor.dev/react@2.11.0
- @docx-editor.dev/vue@2.11.0
@docx-editor.dev/react@2.11.0
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [2015f33]
- Updated dependencies [1542e73]
- Updated dependencies [40578c6]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [c4b4dab]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [af77c9b]
- Updated dependencies [d11816f]
- Updated dependencies [0d770d9]
- Updated dependencies [dfaafc0]
- @docx-editor.dev/core@2.11.0
- @docx-editor.dev/i18n@2.11.0
@docx-editor.dev/vue@2.11.0
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [2015f33]
- Updated dependencies [1542e73]
- Updated dependencies [40578c6]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [c4b4dab]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [af77c9b]
- Updated dependencies [d11816f]
- Updated dependencies [0d770d9]
- Updated dependencies [dfaafc0]
- @docx-editor.dev/core@2.11.0
- @docx-editor.dev/i18n@2.11.0
@docx-editor.dev/editor-api@2.11.0
- e4872fb: Allow browser runtimes to receive an explicit author identity so scripts can reply to comments when the live editor permits review writes.
- e4872fb: Add atomic
Comment.delete()andCommentReply.delete()operations, including browser Undo support and root-versus-reply lifecycle semantics. - e4872fb: Add
Body.bookmarksto enumerate bookmarks in a body story without first searching for text. - e4872fb: Add
ContentControl.isBoundfor safely preflighting custom-XML-bound controls before writes. - e4872fb: Add read-only
NoteItem.textso footnote and endnote text can be loaded directly in one post-listing sync while preservingNoteItem.bodyfor structured access.
- e4872fb: Fix browser runtimes reporting save support even though they do not expose a
save()method. - e4872fb: Correct font getter types to include
nullwhen a range has mixed or inherited formatting. Strict TypeScript consumers must now handle the existing nullable runtime result. - e4872fb: Correct comment, reply, and revision date getter types to include
nullfor missing or invalid OOXML dates. Strict TypeScript consumers must now guard these review dates before usingDatemethods. - e4872fb: Reject non-empty
LoadQueryOptions.expandrequests instead of silently ignoring navigation-property expansion. - e4872fb: Fix browser
Range.select()calls so offscreen ranges are revealed as well as logically selected. - e4872fb: Fix browser
Bookmark.select()calls so they resolve and reveal the bookmark without requiring a priorbookmark.rangesync. - Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [2015f33]
- Updated dependencies [1542e73]
- Updated dependencies [40578c6]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [c4b4dab]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [e4872fb]
- Updated dependencies [af77c9b]
- Updated dependencies [d11816f]
- Updated dependencies [0d770d9]
- Updated dependencies [dfaafc0]
- @docx-editor.dev/core@2.11.0
Release 2026-08-27 16:07
Release 2026-08-27 16:07
- preact-query/useQueries: keep unsubscribed idle (#11315) (6c27607d7) by @sukvvon
- @tanstack/angular-query-experimental@5.102.8
- @tanstack/eslint-plugin-query@5.102.8
- @tanstack/lit-query@0.2.20
- @tanstack/preact-query@5.102.8
- @tanstack/preact-query-devtools@5.102.8
- @tanstack/preact-query-persist-client@5.102.8
- @tanstack/query-async-storage-persister@5.102.8
- @tanstack/query-broadcast-client-experimental@5.102.8
- @tanstack/query-core@5.102.8
- @tanstack/query-devtools@5.102.8
- @tanstack/query-persist-client-core@5.102.8
- @tanstack/query-sync-storage-persister@5.102.8
- @tanstack/react-query@5.102.8
- @tanstack/react-query-devtools@5.102.8
- @tanstack/react-query-next-experimental@5.102.8
- @tanstack/react-query-persist-client@5.102.8
- @tanstack/solid-query@5.102.8
- @tanstack/solid-query-devtools@5.102.8
- @tanstack/solid-query-persist-client@5.102.8
- @tanstack/svelte-query@6.1.48
- @tanstack/svelte-query-devtools@6.1.48
- @tanstack/svelte-query-persist-client@6.1.48
- @tanstack/vue-query@5.102.8
- @tanstack/vue-query-devtools@6.1.48
Release 2026-08-27 16:07
Release 2026-08-27 16:07
- preact-query/useQueries: keep unsubscribed idle (#11315) (6c27607d7) by @sukvvon
- @tanstack/angular-query-experimental@5.102.8
- @tanstack/eslint-plugin-query@5.102.8
- @tanstack/lit-query@0.2.20
- @tanstack/preact-query@5.102.8
- @tanstack/preact-query-devtools@5.102.8
- @tanstack/preact-query-persist-client@5.102.8
- @tanstack/query-async-storage-persister@5.102.8
- @tanstack/query-broadcast-client-experimental@5.102.8
- @tanstack/query-core@5.102.8
- @tanstack/query-devtools@5.102.8
- @tanstack/query-persist-client-core@5.102.8
- @tanstack/query-sync-storage-persister@5.102.8
- @tanstack/react-query@5.102.8
- @tanstack/react-query-devtools@5.102.8
- @tanstack/react-query-next-experimental@5.102.8
- @tanstack/react-query-persist-client@5.102.8
- @tanstack/solid-query@5.102.8
- @tanstack/solid-query-devtools@5.102.8
- @tanstack/solid-query-persist-client@5.102.8
- @tanstack/svelte-query@6.1.48
- @tanstack/svelte-query-devtools@6.1.48
- @tanstack/svelte-query-persist-client@6.1.48
- @tanstack/vue-query@5.102.8
- @tanstack/vue-query-devtools@6.1.48