Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
7a7846f
chore: merge stable into main (#2858)
superdoc-bot[bot] Apr 17, 2026
8b1da54
docs(pm-adapter): note why w:bar is not normalized
caio-pizzol Apr 18, 2026
68dcff2
feat: support rendering of column line separators (#2088)
JoaaoVerona Apr 18, 2026
bda5d4f
fix(sdk): raise asyncio StreamReader buffer in Python AsyncHostTransp…
michaelreavant Apr 20, 2026
89a481d
docs: add michaelreavant to community contributors (#2866)
superdoc-bot[bot] Apr 20, 2026
4ac72bf
docs: add JoaaoVerona to community contributors (#2859)
superdoc-bot[bot] Apr 20, 2026
41722f5
fix: prevent text overlap when multi-column sections span pages (SD-1…
luccas-harbour Apr 20, 2026
a9caa8e
chore(deps): update dependency rollup to v4.60.2 (#2863)
renovate[bot] Apr 20, 2026
9c05a6f
feat(corpus): seed worktree pulls from the primary repo via hardlink …
caio-pizzol Apr 20, 2026
f229576
feat(math): implement m:box and m:borderBox converters (#2750)
Abdeltoto Apr 20, 2026
fc840db
fix: remove toolbar window listeners on unmount (#2783)
ArturQuirino Apr 20, 2026
cc0a336
docs: add ArturQuirino to community contributors (#2868)
superdoc-bot[bot] Apr 20, 2026
301265d
docs: update Angular integration examples for modern APIs (#2781)
ArturQuirino Apr 20, 2026
4d290cb
chore(deps): update dependency @anthropic-ai/claude-agent-sdk to v0.2…
renovate[bot] Apr 20, 2026
db64892
chore(deps): update vue monorepo to v3.5.32 (#2865)
renovate[bot] Apr 20, 2026
df44933
fix(math): preserve italic on variables inside function-wrapped limit…
caio-pizzol Apr 20, 2026
ff220a9
feat(toolbar): auto-derive font-option style from label/key (SD-2611)…
caio-pizzol Apr 20, 2026
f778c4a
SD-2447 - fix: tab stop computation and alignment for TOC styles (#2731)
chittolinag Apr 20, 2026
f3bfc71
refactor(config): consolidate track-changes config under modules.trac…
caio-pizzol Apr 20, 2026
7142f4e
fix(math): split multi-char m:r text per character to match Word (SD-…
caio-pizzol Apr 21, 2026
1f827f4
fix(react): stabilize user/users/modules props to prevent re-init fli…
caio-pizzol Apr 21, 2026
797b0b4
feat(layout): enable odd/even header-footer support (w:evenAndOddHead…
gpardhivvarma Apr 21, 2026
344be7a
fix: image not being contained within cell (#2775)
chittolinag Apr 21, 2026
43bb2e6
fix: table cell selection with context menu in collab (#2822)
artem-harbour Apr 21, 2026
781b8cd
fix: serif fallback for serif-like fonts (#2870)
artem-harbour Apr 21, 2026
adf4ea6
fix(layout-bridge): keep footnote fragments within the reserved band …
tupizz Apr 21, 2026
bc809f8
fix: allow putting cursor after inline sdt field (#2763)
VladaHarbour Apr 21, 2026
b36ae6a
Merge branch 'main' into nick/stable-4-21-2026
harbournick Apr 21, 2026
4015206
fix(react): restore SuperDocTransactionEvent export and wire onTransa…
harbournick Apr 21, 2026
c084563
fix(layout): respect explicit column widths when drawing separators
harbournick Apr 21, 2026
97f78c9
fix(importer): parse evenAndOddHeaders ST_OnOff values correctly
harbournick Apr 21, 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
415 changes: 113 additions & 302 deletions .github/scripts/package-lock.json

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,9 @@ Special thanks to these community members who have contributed code to SuperDoc:
<a href="https://github.com/baristaGeek"><img src="https://github.com/baristaGeek.png" width="50" height="50" alt="baristaGeek" title="Esteban Vargas" /></a>
<a href="https://github.com/Anuj52"><img src="https://github.com/Anuj52.png" width="50" height="50" alt="Anuj52" title="Anuj Chaudhary" /></a>
<a href="https://github.com/Abdeltoto"><img src="https://github.com/Abdeltoto.png" width="50" height="50" alt="Abdeltoto" title="Abdel ATIA" /></a>
<a href="https://github.com/JoaaoVerona"><img src="https://github.com/JoaaoVerona.png" width="50" height="50" alt="JoaaoVerona" title="João Vitor Verona Biazibetti" /></a>
<a href="https://github.com/michaelreavant"><img src="https://github.com/michaelreavant.png" width="50" height="50" alt="michaelreavant" title="michaelreavant" /></a>
<a href="https://github.com/ArturQuirino"><img src="https://github.com/ArturQuirino.png" width="50" height="50" alt="ArturQuirino" title="ARTUR QUIRINO" /></a>

Want to see your avatar here? Check the [Contributing Guide](CONTRIBUTING.md) to get started.

Expand Down
58 changes: 54 additions & 4 deletions apps/docs/core/superdoc/configuration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ new SuperDoc({
- `viewing` - Read-only display
- `suggesting` - Track changes enabled
</Expandable>
<Info>See the [Track Changes extension](/extensions/track-changes) for accept/reject commands, and the [runnable example](https://github.com/superdoc-dev/superdoc/tree/main/examples/features/track-changes) for a complete workflow.</Info>
<Info>See the [Track Changes module](/modules/track-changes) for accept/reject commands, the Document API, and configuration. The [runnable example](https://github.com/superdoc-dev/superdoc/tree/main/examples/features/track-changes) shows a complete workflow.</Info>
</ParamField>

<ParamField path="comments" type="Object">
Expand All @@ -124,11 +124,11 @@ new SuperDoc({
</Expandable>
</ParamField>

<ParamField path="trackChanges" type="Object">
Viewing-mode visibility controls for tracked changes
<ParamField path="trackChanges" type="Object" deprecated>
<Warning>**Deprecated** — Use [`modules.trackChanges`](#track-changes-module) instead. This top-level key remains supported as an alias and will emit a one-time console warning.</Warning>
<Expandable title="properties" defaultOpen>
<ParamField path="trackChanges.visible" type="boolean" default="false">
Show tracked-change markup and threads when `documentMode` is `viewing`
Show tracked-change markup and threads when `documentMode` is `viewing`.
</ParamField>
</Expandable>
</ParamField>
Expand Down Expand Up @@ -196,6 +196,56 @@ new SuperDoc({
</Expandable>
</ParamField>

### Track changes module

<ParamField path="modules.trackChanges" type="Object">
Track changes configuration. Supersedes the top-level `trackChanges` and `layoutEngineOptions.trackedChanges` keys, which remain supported as deprecated aliases.

<Expandable title="properties" defaultOpen>
<ParamField path="modules.trackChanges.visible" type="boolean" default="false">
Show tracked-change markup and threads when `documentMode` is `viewing`.
</ParamField>
<ParamField path="modules.trackChanges.mode" type="'review' | 'original' | 'final' | 'off'">
Rendering mode for tracked changes.
- `'review'`: show insertions and deletions inline (default for editing/suggesting).
- `'original'`: show the document as it existed before tracked changes (default for viewing when `visible` is `false`).
- `'final'`: show the document with changes applied.
- `'off'`: disable tracked-change rendering.
</ParamField>
<ParamField path="modules.trackChanges.enabled" type="boolean" default="true">
Whether the layout engine treats tracked changes as active.
</ParamField>
<ParamField path="modules.trackChanges.replacements" type="'paired' | 'independent'" default="'paired'">
How a tracked replacement (adjacent insertion + deletion created by typing over selected text) surfaces in the UI and API.
- `'paired'` (default, Google Docs model): the two halves share one id and resolve together with a single accept/reject click.
- `'independent'` (Microsoft Word / ECMA-376 §17.13.5 model): each insertion and each deletion has its own id, is addressable on its own, and resolves independently.
</ParamField>
</Expandable>
</ParamField>

```javascript
new SuperDoc({
selector: '#editor',
document: 'contract.docx',
documentMode: 'viewing',
modules: {
trackChanges: { visible: true, mode: 'review' },
},
});
```

Opt into Microsoft Word / ECMA-376-style independent revisions, where each insertion and each deletion has its own id and resolves on its own:

```javascript
new SuperDoc({
selector: '#editor',
document: 'contract.docx',
modules: {
trackChanges: { replacements: 'independent' },
},
});
```

### Toolbar module

<ParamField path="modules.toolbar" type="Object">
Expand Down
5 changes: 5 additions & 0 deletions apps/docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@
]
},
"modules/comments",
"modules/track-changes",
{
"group": "Toolbar",
"tag": "NEW",
Expand Down Expand Up @@ -455,6 +456,10 @@
"source": "/extensions/slash-menu",
"destination": "/extensions/context-menu"
},
{
"source": "/extensions/track-changes",
"destination": "/modules/track-changes"
},
{
"source": "/guides/breaking-changes-v1",
"destination": "/guides/migration/breaking-changes-v1"
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/extensions/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Basic document capabilities:

### Advanced features
Complex functionality:
- **[Track Changes](/extensions/track-changes)** - Revision tracking
- **[Track Changes](/modules/track-changes)** - Revision tracking
- **[Comments](/extensions/comments)** - Discussions
- **[Field Annotation](/extensions/field-annotation)** - Form fields
- **[Document Section](/extensions/document-section)** - Locked sections
Expand Down
Loading
Loading