Releases: superdoc-dev/superdoc
Release list
sdk-v1.20.0
What's New
Core preset for AI agents β Ships superdoc_inspect and superdoc_perform_action with 40 LLM-safe actions: change text, rewrite blocks, add comments, move/delete tables, attach numbering, reply to comments, format text, and more.
Tracked paragraph-property changes β Agents and users can now track numbering and alignment changes (w:pPrChange). Full round-trip: track it, export to Word, import back, accept/reject in the review UI.
Comment threading β reply_to_comment action with proper parentId wiring so threads survive import/export.
Citation hyperlinks with tracked changes β Hyperlinks now preserve w:ins/w:del marks through DOCX export and re-import.
MCP core preset support β Serve the core preset tools over Model Context Protocol with MCP_PRESET=core.
createAgentToolkit β Single options object returns {tools, systemPrompt, dispatch} with preset + exclusions applied to all three; no more forgetting to pass excludeActions to every function.
Provider-native tool formats β getTools supports 'vercel' (flat), 'openai' (Chat-Completions-nested), and 'anthropic' (with cache_control).
Improvements
Large-document performance β 50s β 16s on 38-page redlines. Headless view-only work skips whole-doc linked-style CSS decorations; blocks.list returns visible text (skips tracked-deleted runs) so re-editing resolves offsets correctly.
Tracked-change decision interface β Side-targeted reject: pass side: 'inserted' | 'deleted' to trackChanges.decide and resolve only half a replacement.
System prompt narrowing β excludeActions parameter shrinks both the tool enum and the prompt documentation so the model sees no phantom actions.
Receipt token hygiene β Per-item lists capped at 8 entries; full counts in executedOperationCount / selectedTargetCount. Stops 200-paragraph font changes from costing thousands of prompt tokens.
Python SDK parity β Core preset, actions, dispatch with exclusion guards, create_agent_toolkit, full ActionArgs types.
Tracked-change accept/reject now syncs numberingProperties and listRendering β Rejecting a tracked numbering change restores both the block's paragraph properties and the document's top-level list state.
Fixes
Cell shading on export β tables.setShading({ color: null }) now deletes background attr on both table-scoped and cell-scoped paths.
Tracked pPrChange edge cases β One-sided replacement survivors downgrade to plain insert/delete. pPrChange inside kept tracked tables resolves via id, not through mark-based child planner. Tracked numbering attach guards against blank authors.
Border rendering β Thick borders paint at authored width (no 2x multiplier).
Native CLI binary prompt assets β Bun-compiled CLI binaries now embed system-prompt.md and serve get-system-prompt without TOOLS_ASSET_NOT_FOUND.
Hyperlink edge case β Final-doc export flattens tracked pPrChange so .docx carries only accepted numbering; accepting a tracked table by id cascades to resolve contained pPr changes.
Prompt asset errors β readPromptFile now distinguishes ENOENT (missing asset) from permission/IO failures.
CLI tracked mode transport β attach_numbering, add_list_items, lists.setType in changeMode:'tracked' now pass the flag in both input and options dialects so tracked changes survive CLI transport.
move_range safety β Refuses ranges containing tables, lists, or images before mutating.
reply_to_comment contract fix β Sends only {text, parentId, parentCommentId} with no target so threads inherit parent's anchor per spec; both SDK transport and in-process hosts now work.
Synthetic tracked-change rows no longer leak as empty comments on export β comments.list() returns synthetic rows for the sidebar, but exporting them with exportDocx({ comments }) no longer fabricates spurious w:comment elements.
mcp-v0.16.0
What's New
Core preset for AI agents β Ships superdoc_inspect and superdoc_perform_action with 40 LLM-safe actions: insert/replace/delete text, add comments, create tables, format content, accept/reject changes, and more. All verbs mapped to document operations.
Tracked paragraph-property changes β Numbering and alignment changes now round-trip as w:pPrChange. Track it, export to Word, re-import, and accept or reject in the review UI.
Comment threading β reply_to_comment action with proper parentId wiring so conversations survive export/import.
Citation hyperlinks with tracked changes β Hyperlinks now preserve w:ins/w:del marks through DOCX export and re-import.
MCP core preset support β Serve the core preset tools over Model Context Protocol with MCP_PRESET=core.
createAgentToolkit β Single options object returns {tools, systemPrompt, dispatch} with preset and exclusions applied to all three β no more forgetting to pass excludeActions to every function.
Provider-native tool formats β getTools supports 'vercel' (flat), 'openai' (Chat-Completions-nested), and 'anthropic' (with cache_control).
Improvements
Large-document performance β 50s β 16s on 38-page redlines. Headless editor skips whole-doc linked-style CSS. blocks.list returns visible text (skips tracked-deleted runs) so re-editing resolves offsets correctly.
Tracked-change decision interface β Side-targeted reject: pass side: 'inserted' | 'deleted' to trackChanges.decide and resolve only half a replacement.
System prompt narrowing β excludeActions parameter shrinks both tool enum and prompt documentation β model sees no phantom actions.
Receipt token hygiene β Per-item lists capped at 8 entries; full counts in executedOperationCount and selectedTargetCount. Stops 200-paragraph font changes from costing thousands of prompt tokens.
Python SDK parity β Core preset, 40 actions, dispatch with exclusion guards, create_agent_toolkit, full ActionArgs types.
Fixes
Cell shading on export β tables.setShading({ color: null }) now deletes background attr on both table-scoped and cell-scoped paths.
Tracked pPrChange edge cases β One-sided replacement survivors downgrade to plain insert/delete. pPrChange inside kept tracked tables resolves via id, not mark-based planner. Tracked numbering attach guards against blank authors.
Border rendering β Thick borders paint at authored width (no 2x multiplier).
Native CLI binary prompt assets β Bun-compiled binaries now embed system-prompt.md and serve get-system-prompt without TOOLS_ASSET_NOT_FOUND.
Hyperlink round-trip β Final-doc export flattens tracked pPrChange so .docx carries only accepted numbering. Accepting a tracked table by id cascades to resolve contained pPr changes.
Prompt asset errors β readPromptFile now distinguishes ENOENT (missing asset) from permission/IO failures.
CLI tracked mode transport β attach_numbering, add_list_items, lists.setType in changeMode:'tracked' now pass the flag in both input and options dialects so tracked changes survive transport.
move_range safety β Refuses ranges containing tables, lists, or images before mutating.
reply_to_comment contract β Sends only {text, parentId, parentCommentId} with no target so threads inherit parent's anchor per spec.
Comment export cleanup β Synthetic tracked-change rows for the sidebar no longer fabricate spurious w:comment elements on export.
cli-v0.21.0
What's New
Core preset for AI agents β Ships two statically validated tools (superdoc_inspect, superdoc_perform_action) with 40 LLM-safe actions: change text, rewrite blocks, add comments, move/delete tables, attach numbering, reply to comments, format text, and more.
Tracked paragraph-property changes β Agents and users can now track numbering and alignment changes (w:pPrChange). Full round-trip: track it, export to Word, import back, accept/reject in the review UI.
Comment threading β reply_to_comment action and proper parentId wiring in comments.create so threads survive import/export.
Citation hyperlinks with tracked changes β Hyperlinks now preserve w:ins/w:del marks through DOCX export and re-import (fixed structural insertion of tracked citations).
MCP core preset support β Serve the core preset tools over Model Context Protocol with MCP_PRESET=core.
Improvements
Large-document performance β 50s β 16s on headless 38-page redlines. Skips whole-doc linked-style CSS decorations when the editor runs view-only, and blocks.list now returns visible text (skips tracked-deleted runs) so re-editing resolves offsets correctly.
Tracked-change decision interface β Side-targeted reject: pass side: 'inserted' | 'deleted' to trackChanges.decide and resolve only half a replacement. Survives one-sided deletions correctly.
System prompt narrowing β excludeActions parameter shrinks both the tool enum and the prompt documentation (no phantom actions, no hallucination bait). getSystemPrompt and getTools stay coherent by construction.
createAgentToolkit β Single options object returns {tools, systemPrompt, dispatch} with preset + exclusions applied to all three. No more forgetting to pass excludeActions to every function.
Receipt token hygiene β Per-item lists (executedOperations, selectedTargets) capped at 8 entries; full counts in executedOperationCount / selectedTargetCount. Stops 200-paragraph font changes from costing thousands of prompt tokens.
Python SDK parity β Core preset, actions, dispatch with exclusion guards, create_agent_toolkit, full ActionArgs types.
Provider-native tool formats β getTools supports 'vercel' (flat {name, description, inputSchema}), 'openai' (Chat-Completions-nested), 'anthropic' ({name, description, input_schema} with cache_control).
Fixes
Cell shading on export β tables.setShading({ color: null }) now deletes background attr on both table-scoped and cell-scoped clear paths; cells stop rendering as shaded after a cleared shade is re-exported.
Tracked pPrChange edge cases β One-sided replacement survivors downgrade to plain insert/delete. pPrChange inside kept tracked tables resolves via id, not through mark-based child planner. Tracked numbering attach guards against blank authors. Synthetic tracked-change rows no longer leak as empty comments on export. pPrChange no longer positional in review graph (no comment detach, no text-range capture).
Border rendering β Thick borders paint at authored width (no 2x multiplier); test aligned with SD-3028 spec.
Native CLI binary prompt assets β Bun-compiled CLI binaries embed system-prompt.md and now serve get-system-prompt without TOOLS_ASSET_NOT_FOUND.
Hyperlink edge case β Final-doc export flattens tracked pPrChange so .docx carries only accepted numbering; accepting a tracked table by id cascades to resolve contained pPr changes.
Prompt asset errors β readPromptFile now distinguishes ENOENT (missing asset) from permission/IO failures (TOOLS_ASSET_UNREADABLE with underlying cause).
CLI tracked mode transport β attach_numbering, add_list_items, lists.setType in changeMode:'tracked' now pass the flag in both input and options dialects so tracked changes survive CLI transport.
move_range safety β Refuses ranges containing tables, lists, or images before mutating (teaches the model the constraint and prevents silent data loss).
reply_to_comment contract fix β Sends only {text, parentId, parentCommentId} with no target (threads inherit parent's anchor per spec); both SDK transport and in-process hosts now work.
sdk-v1.16.0-next.51
1.16.0-next.51 (2026-07-05)
Bug Fixes
- ci: install SDK Python test deps in release workflows (b4ec138), closes superdoc-dev/superdoc#3798
- cli: build SDK before native release artifacts (d3b1f0c), closes superdoc-dev/superdoc#3795
mcp-v0.12.0-next.53
0.12.0-next.53 (2026-07-05)
Bug Fixes
- ci: install SDK Python test deps in release workflows (b4ec138), closes superdoc-dev/superdoc#3798
mcp-v0.12.0-next.52
0.12.0-next.52 (2026-07-05)
Bug Fixes
- cli: build SDK before native release artifacts (d3b1f0c), closes superdoc-dev/superdoc#3795
cli-v0.17.0-next.48
0.17.0-next.48 (2026-07-05)
Bug Fixes
- cli: build SDK before native release artifacts (d3b1f0c), closes superdoc-dev/superdoc#3795
v1.44.0
Based on my analysis of the commits and codebase changes, here are the release notes:
What's New
- Side-targeted tracked change decisions β Accept or reject only the inserted or deleted half of a paired replacement via
trackChanges.decide()with thesideparameter ('inserted'/'deleted'), leaving the other half as a standalone pending change. - Tracked paragraph property changes in review API β Tracked numbering and alignment changes (w:pPrChange) now surface in
trackChanges.list()and can be accepted/rejected viatrackChanges.decide(). - List numbering metadata β
blocks.listreturns computed numbering (marker, path, kind) for numbered list items and numbered headings, plus aparagraphNumberingreference field so agents can read legal clause numbers. - Paragraph indentation metadata β
blocks.listnow exposes paragraph indentation (left, right, firstLine, hanging in twips) for layout-aware document analysis. - Visible text model for blocks.list β Text, length, preview, and ref now use the visible text model (tracked deletions excluded), matching how edit refs resolve and eliminating offset drift.
- Tracked list attach β
lists.attach()now supports tracked mode for list property changes. - Citation hyperlinks round-trip β Tracked citation hyperlinks export and import correctly through DOCX with full revision history preserved.
- LLM tools core preset β CLI and MCP expose the
execute-codecommand for running JavaScript directly against documents in headless mode.
Fixes
- Synthetic tracked-change rows no longer leak as empty comments in
comments.list()export. - Cell-scoped
tablesClearShading()now removes the background attribute correctly. - Formatting samples from
blocks.listskip deleted runs β no longer reports styling from pending deletions. - Redlined blocks with tracked deletions at the start no longer throw "offset out of range" when edited via ref.
- Headless mode skips whole-document linked-style decorations for ~3x faster large-document load (38-page redline: 50s β 16s).
- Merge conflict markers in painter-dom border-utils resolved; build no longer fails after main-into-stable merge.
vscode-v2.16.0
What's New
- Tracked-change side-targeted decisions β
trackChanges.decide()now accepts asideselector to reject only theinsertedordeletedhalf of a replacement. - Tracked paragraph-property changes β Tracked numbering and alignment changes (w:pPrChange) now appear in
trackChanges.list()and can be accepted or rejected viatrackChanges.decide(). - Tracked list operations β
lists.attach()now supports tracked changes. - Comment export β Comments and comment replies now export to DOCX, including comments on tracked changes.
- List numbering metadata β
blocks.list()now returnsnumberingandindentfields so agents can read computed list markers and legal clause numbers. - Visible text model β
blocks.list()returns the visible text model (skips tracked deletions), matching how the plan engine applies edits. Eliminates text offset drift on redlined documents. - CLI preset commands β New commands to introspect, configure, and dispatch preset operations:
preset list,preset get-catalog,preset get-tools,preset get-system-prompt,preset get-mcp-prompt,preset dispatch. - CLI execute-code command β New command to execute arbitrary operations on a document.
- LLM tools core preset β New preset providing AI-agent-optimized operations for document manipulation.
Improvements
- Large-document performance in headless mode β linked-style decorations are skipped when the editor runs view-only (~50s β ~16s on a 38-page redline).
blocks.list()length, preview, and block references now use the visible text model, eliminating stale offset calculations on edited blocks.- Tracked change decision validation tightened β
sideselector on id-target changes fails closed if the targeted half was already resolved. - Tracked paragraph-property changes now sync both paragraph and top-level numbering properties on reject.
- Block formatting sampling now draws from visible runs only, skipping tracked deletions.
- Comment export filters synthetic tracked-change rows from the comments list.
Fixes
- Citation hyperlinks now export and import correctly as tracked changes.
- Merge conflict markers in border-utils resolved.
- Cell shading clear operations now properly remove the
backgroundattribute on cell-scoped clears. - Border rendering aligned with SD-3028 authored-width specification.
- Tracked paragraph-property changes export with Word-safe decimal IDs instead of UUIDs.
- One-sided replacement survivors now downgrade to plain insertions or deletions instead of failing.
- Tracked paragraph-property changes inside kept tracked tables now resolve via ID-based decisions instead of the mark-based child planner.
- Tracked changes without a user are now guarded to prevent blank author stamps.
react-v1.15.0
Based on my analysis of the commits and changed files, here are the release notes:
What's New
- Agent tools for document automation β
superdoc_inspectandsuperdoc_perform_actiontools expose the full Document API to language models. Run headless in Node.js; bring your own LLM for redlining, template workflows, and document automation. - Comment API and export β Full CRUD on comments: create, edit, delete, resolve/reopen, move between ranges. Comments export to DOCX, including comments anchored to tracked changes. Anchor comments to tracked-change IDs directly without calculating text ranges.
- Side-targeted tracked-change decisions β Accept or reject just the inserted or deleted branch of a replacement, leaving the other half as a standalone change. Decide by id or by range.
- Tracked paragraph-property changes in the review API β Tracked numbering and alignment changes (w:pPrChange) now surface in
trackChanges.listand can be accepted/rejected viatrackChanges.decide, matching tracked text behavior. - List and paragraph numbering metadata β
blocks.listreturns computed numbering (marker, path, kind) for clause-numbered headings and list items, plus paragraph indentation for layout-aware agents. - Agent presets for OpenAI, Anthropic, Vercel, and generic providers β Tool catalog and system prompt selection by preset; dispatch tool calls through the preset's validated schema.
- CLI commands for agent presets β
preset list,preset get-catalog,preset get-tools,preset get-system-prompt,preset get-mcp-prompt,preset dispatch. - Tracked citation hyperlinks β Export and import tracked hyperlinks with revision marks preserved, so Word round-trips linked tracked text correctly for reviewable citations.
Improvements
- Large-document performance β Skip linked-style decorations in headless mode; ~50s β ~16s on a 38-page redline.
- Visible text model in blocks.list β Text, length, ref, and formatting now use visible text (skipping tracked-deleted runs), so agents resolve offsets against the same text the plan engine applies against.
- Word-safe revision IDs β Tracked changes export with decimal IDs instead of UUIDs, so Word accepts them without repair.
- Better tracked-change edge cases β Handle one-sided replacement survivors, pPrChange inside kept tracked tables, and no-user guards for tracked operations.
Bug Fixes
- Resolve merge conflict markers in border-utils that broke the build.
- Citation hyperlinks now export with correct revision mark wrapping (w:hyperlink containing w:ins/w:del).
- Reject a tracked table by id now cascades to contained paragraph-property changes.
- Cell background shading now clears on cell-scoped
tables.setShading({ color: null }). - Tracked changes no longer leak as spurious empty comments in export.
- Formatted text from styled tracked-deleted runs no longer bleeds into blocks.list formatting.