Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
e4fdf12
feat(track-changes): structural tracked changes for whole-table inser…
andrii-harbour Jun 3, 2026
b6822a6
feat(track-changes): render structural table tracked changes (SD-3360)
andrii-harbour Jun 3, 2026
7d5c586
feat(track-changes): author tracked table inserts + subsume cell-text…
andrii-harbour Jun 3, 2026
84dc414
refactor(track-changes): consolidate table tracked-change suppression…
andrii-harbour Jun 3, 2026
ae4b63f
feat(track-changes): author tracked table deletion (SD-3360)
andrii-harbour Jun 3, 2026
5166c38
chore(track-changes): drop ticket numbers from structural-table comments
andrii-harbour Jun 3, 2026
6ca5997
fix(track-changes): structural table review bugs + bubble labels
andrii-harbour Jun 3, 2026
df13e50
refactor(track-changes): dedupe whole-table tracked-change helpers
andrii-harbour Jun 3, 2026
4fbbb5e
Merge remote-tracking branch 'origin/main' into andrii/sd-3360-suppor…
andrii-harbour Jun 3, 2026
e8c41db
fix(track-changes): declare structural prop on TrackedSegment typedef
andrii-harbour Jun 3, 2026
772e432
fix(word-layout): resolve private package from source for bundlers
andrii-harbour Jun 3, 2026
5871019
fix(track-changes): satisfy jsdoc ratchet on trackChangesBasePlugin
andrii-harbour Jun 3, 2026
9de3969
test(document-api): update nullable-example assertion after subtype a…
andrii-harbour Jun 3, 2026
d49b47e
fix(super-converter): emit Word-compatible markup for tracked-table r…
andrii-harbour Jun 4, 2026
3039526
Merge remote-tracking branch 'origin/main' into andrii/sd-3360-suppor…
andrii-harbour Jun 4, 2026
e4811a7
test(comments-store): add test for handling errors in structural enum…
andrii-harbour Jun 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1087,5 +1087,5 @@
}
],
"marker": "{/* GENERATED FILE: DO NOT EDIT. Regenerate via `pnpm run docapi:sync`. */}",
"sourceHash": "17987fcd5f1b183fe39e797dcda5108cf64efb4eab9fac59861813a4cbe3d612"
"sourceHash": "2e3e47b8df74df6d5012419a46d3d38c436f4186f136a101035e5ce90dfdc11c"
}
5 changes: 3 additions & 2 deletions apps/docs/document-api/reference/comments/get.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ Returns a CommentInfo object with the comment text, author, date, and thread met
| `trackedChangeLink` | CommentTrackedChangeLink \| null | no | One of: CommentTrackedChangeLink, null |
| `trackedChangeStory` | StoryLocator \| null | no | One of: StoryLocator, null |
| `trackedChangeText` | string \| null | no | |
| `trackedChangeType` | enum | no | `"insert"`, `"delete"`, `"replacement"`, `"format"` |
| `trackedChangeType` | enum | no | `"insert"`, `"delete"`, `"replacement"`, `"format"`, `"structural"` |

### Example response

Expand Down Expand Up @@ -206,7 +206,8 @@ Returns a CommentInfo object with the comment text, author, date, and thread met
"insert",
"delete",
"replacement",
"format"
"format",
"structural"
]
}
},
Expand Down
3 changes: 2 additions & 1 deletion apps/docs/document-api/reference/comments/list.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,8 @@ Returns a CommentsListResult with an array of comment threads and total count.
"insert",
"delete",
"replacement",
"format"
"format",
"structural"
]
}
},
Expand Down
3 changes: 2 additions & 1 deletion apps/docs/document-api/reference/extract.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,8 @@ _No fields._
"insert",
"delete",
"replacement",
"format"
"format",
"structural"
],
"type": "string"
},
Expand Down
4 changes: 4 additions & 0 deletions apps/docs/document-api/reference/track-changes/decide.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ Returns a Receipt confirming the decision was applied; reports NO_OP if the chan
"id": {
"type": "string"
},
"range": {
"description": "Partial-range qualifier on an id target. Rejected with INVALID_INPUT for indivisible (e.g. structural) revisions.",
"type": "object"
},
"story": {
"$ref": "#/$defs/StoryLocator"
}
Expand Down
17 changes: 13 additions & 4 deletions apps/docs/document-api/reference/track-changes/get.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Retrieve a single tracked change by ID.

## Expected result

Returns a TrackChangeInfo object with the change type (`insert`, `delete`, `replacement`, `format`), author, date, affected content, and raw imported Word OOXML revision IDs (`w:id`) when available.
Returns a TrackChangeInfo object with the change type (`insert`, `delete`, `replacement`, `format`, `structural`), author, date, affected content, and raw imported Word OOXML revision IDs (`w:id`) when available. Structural changes (whole-table insert/delete) carry a `subtype` of `table-insert` or `table-delete`.

## Input fields

Expand Down Expand Up @@ -60,7 +60,8 @@ Returns a TrackChangeInfo object with the change type (`insert`, `delete`, `repl
| `id` | string | yes | |
| `insertedText` | string | no | |
| `pairedWithChangeId` | string \| null | no | |
| `type` | enum | yes | `"insert"`, `"delete"`, `"replacement"`, `"format"` |
| `subtype` | enum | no | `"table-insert"`, `"table-delete"` |
| `type` | enum | yes | `"insert"`, `"delete"`, `"replacement"`, `"format"`, `"structural"` |
| `wordRevisionIds` | object | no | |
| `wordRevisionIds.delete` | string | no | |
| `wordRevisionIds.format` | string | no | |
Expand All @@ -81,7 +82,7 @@ Returns a TrackChangeInfo object with the change type (`insert`, `delete`, `repl
},
"grouping": "standalone",
"id": "id-001",
"pairedWithChangeId": null,
"subtype": "table-insert",
"type": "insert"
}
```
Expand Down Expand Up @@ -161,12 +162,20 @@ Returns a TrackChangeInfo object with the change type (`insert`, `delete`, `repl
"null"
]
},
"subtype": {
"description": "Finer classification for structural changes (type === 'structural').",
"enum": [
"table-insert",
"table-delete"
]
},
"type": {
"enum": [
"insert",
"delete",
"replacement",
"format"
"format",
"structural"
]
},
"wordRevisionIds": {
Expand Down
21 changes: 15 additions & 6 deletions apps/docs/document-api/reference/track-changes/list.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ List all tracked changes in the document.

## Expected result

Returns a TrackChangesListResult with tracked change entries (`insert`, `delete`, `replacement`, `format`), total count, and raw imported Word OOXML revision IDs (`w:id`) when available.
Returns a TrackChangesListResult with tracked change entries (`insert`, `delete`, `replacement`, `format`, `structural`), total count, and raw imported Word OOXML revision IDs (`w:id`) when available. Structural changes (whole-table insert/delete) carry a `subtype` of `table-insert` or `table-delete`.

## Input fields

Expand All @@ -29,7 +29,7 @@ Returns a TrackChangesListResult with tracked change entries (`insert`, `delete`
| `in` | StoryLocator \| `"all"` | no | One of: StoryLocator, `"all"` |
| `limit` | integer | no | |
| `offset` | integer | no | |
| `type` | enum | no | `"insert"`, `"delete"`, `"replacement"`, `"format"` |
| `type` | enum | no | `"insert"`, `"delete"`, `"replacement"`, `"format"`, `"structural"` |

### Example request

Expand Down Expand Up @@ -75,7 +75,7 @@ Returns a TrackChangesListResult with tracked change entries (`insert`, `delete`
"targetKind": "text"
},
"id": "id-001",
"pairedWithChangeId": null,
"subtype": "table-insert",
"type": "insert"
}
],
Expand Down Expand Up @@ -123,12 +123,13 @@ Returns a TrackChangesListResult with tracked change entries (`insert`, `delete`
"type": "integer"
},
"type": {
"description": "Filter by change type: 'insert', 'delete', 'replacement', or 'format'.",
"description": "Filter by change type: 'insert', 'delete', 'replacement', 'format', or 'structural'.",
"enum": [
"insert",
"delete",
"replacement",
"format"
"format",
"structural"
]
}
},
Expand Down Expand Up @@ -192,12 +193,20 @@ Returns a TrackChangesListResult with tracked change entries (`insert`, `delete`
"null"
]
},
"subtype": {
"description": "Finer classification for structural changes (type === 'structural').",
"enum": [
"table-insert",
"table-delete"
]
},
"type": {
"enum": [
"insert",
"delete",
"replacement",
"format"
"format",
"structural"
]
},
"wordRevisionIds": {
Expand Down
6 changes: 4 additions & 2 deletions apps/docs/document-engine/sdks.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -577,6 +577,7 @@ The SDKs expose all operations from the [Document API](/document-api/overview) p
| `doc.blocks.list` | `blocks list` | List top-level blocks in document order with IDs, types, text previews, and optional full text when includeText:true. Supports pagination via offset/limit and optional nodeType filtering. |
| `doc.blocks.delete` | `blocks delete` | Delete an entire block node (paragraph, heading, list item, table, image, or sdt) deterministically. |
| `doc.blocks.deleteRange` | `blocks delete-range` | Delete a contiguous range of top-level blocks between two endpoints (inclusive). Both endpoints must be direct children of the document node. Supports dry-run preview. |
| `doc.templates.apply` | `templates apply` | Apply detected DOCX template/substrate (styles, numbering, settings, theme, font table, web settings, headers/footers, section defaults) from a source package onto the current document, preserving body content. Scopes are auto-detected from source package evidence. |
| `doc.query.match` | `query match` | Deterministic selector-based search returning mutation-grade addresses and text ranges. Use this to discover targets before any mutation. |
| `doc.ranges.resolve` | `ranges resolve` | Resolve two explicit anchors into a contiguous document range. Returns a transparent SelectionTarget, a mutation-ready ref, and preview metadata. Stateless and deterministic. |
| `doc.selection.current` | `selection current` | Read the editor's current selection as a portable SelectionInfo with a text-anchored TextTarget. Primitive for building custom comments UIs, floating toolbars, and other selection-driven components without reaching into ProseMirror internals. |
Expand Down Expand Up @@ -837,7 +838,7 @@ The SDKs expose all operations from the [Document API](/document-api/overview) p
| `doc.sections.setPageSetup` | `sections set-page-setup` | Set page size/orientation properties for a section. |
| `doc.sections.setColumns` | `sections set-columns` | Set column configuration for a section. |
| `doc.sections.setLineNumbering` | `sections set-line-numbering` | Enable or configure line numbering for a section. |
| `doc.sections.setPageNumbering` | `sections set-page-numbering` | Set page numbering format/start for a section. |
| `doc.sections.setPageNumbering` | `sections set-page-numbering` | Set page numbering format/start and chapter numbering settings for a section. |
| `doc.sections.setTitlePage` | `sections set-title-page` | Enable or disable title-page behavior for a section. |
| `doc.sections.setOddEvenHeadersFooters` | `sections set-odd-even-headers-footers` | Enable or disable odd/even header-footer mode in document settings. |
| `doc.sections.setVerticalAlign` | `sections set-vertical-align` | Set vertical page alignment for a section. |
Expand Down Expand Up @@ -1056,6 +1057,7 @@ The SDKs expose all operations from the [Document API](/document-api/overview) p
| `doc.blocks.list` | `blocks list` | List top-level blocks in document order with IDs, types, text previews, and optional full text when includeText:true. Supports pagination via offset/limit and optional nodeType filtering. |
| `doc.blocks.delete` | `blocks delete` | Delete an entire block node (paragraph, heading, list item, table, image, or sdt) deterministically. |
| `doc.blocks.delete_range` | `blocks delete-range` | Delete a contiguous range of top-level blocks between two endpoints (inclusive). Both endpoints must be direct children of the document node. Supports dry-run preview. |
| `doc.templates.apply` | `templates apply` | Apply detected DOCX template/substrate (styles, numbering, settings, theme, font table, web settings, headers/footers, section defaults) from a source package onto the current document, preserving body content. Scopes are auto-detected from source package evidence. |
| `doc.query.match` | `query match` | Deterministic selector-based search returning mutation-grade addresses and text ranges. Use this to discover targets before any mutation. |
| `doc.ranges.resolve` | `ranges resolve` | Resolve two explicit anchors into a contiguous document range. Returns a transparent SelectionTarget, a mutation-ready ref, and preview metadata. Stateless and deterministic. |
| `doc.selection.current` | `selection current` | Read the editor's current selection as a portable SelectionInfo with a text-anchored TextTarget. Primitive for building custom comments UIs, floating toolbars, and other selection-driven components without reaching into ProseMirror internals. |
Expand Down Expand Up @@ -1316,7 +1318,7 @@ The SDKs expose all operations from the [Document API](/document-api/overview) p
| `doc.sections.set_page_setup` | `sections set-page-setup` | Set page size/orientation properties for a section. |
| `doc.sections.set_columns` | `sections set-columns` | Set column configuration for a section. |
| `doc.sections.set_line_numbering` | `sections set-line-numbering` | Enable or configure line numbering for a section. |
| `doc.sections.set_page_numbering` | `sections set-page-numbering` | Set page numbering format/start for a section. |
| `doc.sections.set_page_numbering` | `sections set-page-numbering` | Set page numbering format/start and chapter numbering settings for a section. |
| `doc.sections.set_title_page` | `sections set-title-page` | Enable or disable title-page behavior for a section. |
| `doc.sections.set_odd_even_headers_footers` | `sections set-odd-even-headers-footers` | Enable or disable odd/even header-footer mode in document settings. |
| `doc.sections.set_vertical_align` | `sections set-vertical-align` | Set vertical page alignment for a section. |
Expand Down
Loading
Loading