Skip to content

Releases: superdoc-dev/superdoc

sdk-v1.20.0

Choose a tag to compare

@superdoc-bot superdoc-bot released this 05 Jul 19:30

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

Choose a tag to compare

@superdoc-bot superdoc-bot released this 05 Jul 19:32

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

Choose a tag to compare

@superdoc-bot superdoc-bot released this 05 Jul 10:33

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

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

Choose a tag to compare

@superdoc-bot superdoc-bot released this 05 Jul 19:02

1.16.0-next.51 (2026-07-05)

Bug Fixes

mcp-v0.12.0-next.53

mcp-v0.12.0-next.53 Pre-release
Pre-release

Choose a tag to compare

@superdoc-bot superdoc-bot released this 05 Jul 18:56

0.12.0-next.53 (2026-07-05)

Bug Fixes

mcp-v0.12.0-next.52

mcp-v0.12.0-next.52 Pre-release
Pre-release

Choose a tag to compare

@superdoc-bot superdoc-bot released this 05 Jul 10:21

0.12.0-next.52 (2026-07-05)

Bug Fixes

cli-v0.17.0-next.48

cli-v0.17.0-next.48 Pre-release
Pre-release

Choose a tag to compare

@superdoc-bot superdoc-bot released this 05 Jul 10:23

0.17.0-next.48 (2026-07-05)

Bug Fixes

v1.44.0

Choose a tag to compare

@superdoc-bot superdoc-bot released this 04 Jul 02:28

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 the side parameter ('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 via trackChanges.decide().
  • List numbering metadata β€” blocks.list returns computed numbering (marker, path, kind) for numbered list items and numbered headings, plus a paragraphNumbering reference field so agents can read legal clause numbers.
  • Paragraph indentation metadata β€” blocks.list now 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-code command 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.list skip 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

Choose a tag to compare

@superdoc-bot superdoc-bot released this 04 Jul 02:30

What's New

  • Tracked-change side-targeted decisions β€” trackChanges.decide() now accepts a side selector to reject only the inserted or deleted half 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 via trackChanges.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 returns numbering and indent fields 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 β€” side selector 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 background attribute 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

Choose a tag to compare

@superdoc-bot superdoc-bot released this 04 Jul 02:29

Based on my analysis of the commits and changed files, here are the release notes:

What's New

  • Agent tools for document automation β€” superdoc_inspect and superdoc_perform_action tools 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.list and can be accepted/rejected via trackChanges.decide, matching tracked text behavior.
  • List and paragraph numbering metadata β€” blocks.list returns 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.