Skip to content

Track Changes: paragraph split (Enter) and paragraph-style changes are applied directly, not recorded as tracked changes #3592

@ohcedar

Description

@ohcedar

Summary

In Suggesting mode (track changes enabled), pressing Enter to split a paragraph — or splitting one programmatically — applies the split directly to the document and is not recorded as a tracked change. In Microsoft Word, pressing enter in the middle of a paragraph results in a tracked change that the reviewer can accept or reject; in SuperDoc the structural break just happens, with no redline and nothing to accept/reject.

The same applies to paragraph style changes (e.g. converting a paragraph to Heading2): they cannot be made as tracked changes either.

Steps to reproduce

  1. Open a document and enable Suggesting mode (documentMode: 'suggesting').
  2. Place the caret in the middle of a body paragraph and press Enter (or call the split command — see below).
  3. Observe the document and the tracked-changes list.

Expected

The paragraph split is recorded as a tracked change (a tracked paragraph-mark insertion), rendered as a suggestion, and can be accepted/rejected — matching Microsoft Word, where hitting Enter with Track Changes on creates a reviewable change.

Actual

The paragraph is split immediately and directly. No tracked change is created and there is no redline marker for the break — even though Suggesting mode is on. Accepting/rejecting other changes has no effect on it because it was never tracked.

Findings from investigation (v1.36.1, programmatic)

Reproduced via the editor API in Suggesting mode:

  • editor.commands.splitRunToParagraph() (the command bound to Enter for run-wrapped paragraph text) splits directly — paragraph count increases by 1 and doc.trackChanges.list(...) shows zero new entries.
  • Dispatching a real Enter keydown to the editor DOM behaves identically (direct split, 0 tracked changes).
  • editor.commands.splitBlock() returns false at a mid-paragraph caret position (it does not split inside the run node), so it is not an alternative.
  • doc.styles.paragraph.setStyle(...) with { changeMode: 'tracked' } fails with "styles.paragraph.setStyle does not support tracked mode." (doc.capabilities().operations[...] reports tracked:false / TRACKED_MODE_UNAVAILABLE for paragraph-style ops). A tracked setHeading editor command degrades to inline run formatting and drops the actual paragraph style.

This appears to be by design: the public tracked-change type is inline-only (TrackChangeType = 'insert' | 'delete' | 'format'), so structural edits (paragraph split/merge) and paragraph-style changes have no tracked representation.

Impact

For review workflows (especially programmatic / AI-assisted editing through the Document API), structural and paragraph-style edits can't be proposed as suggestions for a human to accept or reject — they must be applied directly. A common, concrete case: separating a heading sentence from following body text ("Heading. Body…" in one paragraph) and promoting it to a heading cannot be offered as tracked suggestions.

Request

Support tracked changes for at least:

  1. Paragraph split / merge (tracked paragraph-mark insertion/deletion, like Word).
  2. Paragraph style changes (styles.paragraph.setStyle) in tracked mode.

Environment

  • @harbour-enterprises/superdoc 1.36.1
  • Document loaded from .docx; body story; documentMode: 'suggesting'.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions