Skip to content

Merge main into stable#3777

Merged
caio-pizzol merged 18 commits into
stablefrom
merge/main-into-stable-2026-06-26
Jun 26, 2026
Merged

Merge main into stable#3777
caio-pizzol merged 18 commits into
stablefrom
merge/main-into-stable-2026-06-26

Conversation

@superdoc-bot

@superdoc-bot superdoc-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Summary

  • creates merge/main-into-stable-2026-06-26 from stable
  • merges main into the candidate branch
  • opens the promotion PR to stable

Auto-created by promote-stable workflow.

superdoc-bot Bot and others added 17 commits June 23, 2026 13:22
## Summary

Merges latest stable patches into main with a real merge commit so stable release tags remain reachable from main.

This keeps `@next` prerelease version calculation ahead of the latest published stable release.

## Merge requirement

This PR must be merged with GitHub's merge-commit option. Squash or rebase merging will discard stable ancestry and break `@next` version calculation again.

## Conflict handling

Merge status: `clean`.

Version-only release artifact conflicts are auto-resolved to keep stable's already-published versions. Non-version conflicts fail this workflow instead of committing conflict markers.

---
_Auto-created by sync-patches workflow._

Source-PR: #3762
Closes #3762

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: d11d4f4fa2d1b53fb4c1515f4e1866aeb22a6bde
Ported-Public-Prefix: superdoc/public
…ed-textrewrite-batch-corrupts-later-rewrite

fix(plan-engine): prevent tracked rewrite batches from corrupting later rewrites (SD-3478)

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: fe95fa3ce5448926a1c5df49bb0367d8346790b1
Ported-Public-Prefix: superdoc/public
feat: document diffing upgrades

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: 51517137444ab5cf3a865566705071ed1fabca20
Ported-Public-Prefix: superdoc/public
…d-heading-styles-render-with-incorrect-font

fix: resolve heading style conflicts to inherit Word's built in styles

Note: this ports only the public subtree changes from a mixed source commit (2 public paths, 1 non-public path ignored).

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: d52147092a9f313397b649bd0146edbaf7155e2c
Ported-Public-Prefix: superdoc/public
fix: cjk wrapping after numeric run in long-word line breaking

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: 30f3ada5c4f406a4d176488f9aeabae9f10c5823
Ported-Public-Prefix: superdoc/public
…-integration-coverage-for-sd-3363-one-field

test: add collaboration MERGEFIELD DOCX export integration coverage

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: 92f104c3b32f809ea9f88d7d60a923362e75cfe6
Ported-Public-Prefix: superdoc/public
fix: open font dropdown on input click

Note: this ports only the public subtree changes from a mixed source commit (2 public paths, 2 non-public paths ignored).

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: dead128c31124ce4e548ec384c5f8cb90f0f9af6
Ported-Public-Prefix: superdoc/public
Note: this ports only the public subtree changes from a mixed source commit (143 public paths, 1697 non-public paths ignored).

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: a98541aadff55fe90583c5bb1baf83cb29ba157f
Ported-Public-Prefix: superdoc/public
…-edits

fix(super-editor): keep editing-mode typing inside tracked changes plain [SD-3502]

Note: this ports only the public subtree changes from a mixed source commit (4 public paths, 1 non-public path ignored).

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: a16e7e7e4967f8ccc87645e10296e740dc39e346
Ported-Public-Prefix: superdoc/public
fix: render nested sdt

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: b6f6a1fcce021873c80b510f87489d6782b2cdaf
Ported-Public-Prefix: superdoc/public
## Summary

Merges stable back into main with a real merge commit so stable release tags remain reachable from main.

## Resolution

- Kept stable's published release versions for release artifacts.
- Kept SDK Python platform pins aligned to 1.19.1.
- Preserved the stable SD-3502 tracked-changes fix and regression test.
- Preserved main's SuperDoc Word sidecar dev scripts while taking the stable 1.43.1 package version.

## Merge Requirement

Merge this PR with GitHub's merge-commit option. Squash or rebase merging would discard stable ancestry and break next prerelease version calculation.

## Verification

- git diff --check origin-https/main...HEAD
- conflict-marker scan over changed files
- JSON manifest parse
- Python pyproject parse with tomllib

Unit tests were not run locally.

Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Caio Pizzol <caio@superdoc.dev>
Source-PR: #3772
Closes #3772

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: 4db56e410744fb6ee72d90f8168db08d9e426f3a
Ported-Public-Prefix: superdoc/public
… (SD-3478) (#174)

* fix(plan-engine): use coarse tracked rewrite for large changes

Previously only synthetic batch transactions took the whole-range
tracked rewrite path. Large single tracked mutations still applied
many granular word-level diff steps, which could leave preserved
anchors visible in the accepted projection.

Add a MAX_GRANULAR_TRACKED_REWRITE_CHANGES threshold and route any
tracked mutation exceeding it (or any batch transaction) through the
coarse path, replacing the full absolute range with the replacement
text. Add corpus-fixture integration tests asserting the executor and
gift rewrite projections stay clean for both single and batched
rewrites.

* test(plan-engine): cover coarse tracked rewrite cutoff

* chore: code formatting

* fix(plan-engine): short-circuit tracked batch rewrites

---------

Co-authored-by: Luccas Correa <luccascorrea@gmail.com>

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: ff2455254631846f86dcfe66faaf77f132421ace
Ported-Public-Prefix: superdoc/public
feat(document-host): add headless document runtime package

Note: this ports only the public subtree changes from a mixed source commit (20 public paths, 1 non-public path ignored).

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: 0348ae0a6179f507de83d39e098ab46ce7cb35b1
Ported-Public-Prefix: superdoc/public
Fixed mixed font selection so toolbar shows blank instead of falling back to Arial/default.

Covered both font sources: imported DOCX run properties and editor-created textStyle.fontFamily marks.

Added screenshot coverage using examples/editor/theming?withToolbar=1, with normal example behavior unchanged.

This also fixes a toolbar bug where user apply fonts would not persist in toolbar when text was highlighted again after being changed.

Co-authored-by: Clarence Palmer <c@cepvi.dev>
Source-PR: #3748
Closes #3748

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: 000e76c15c3a2e454fa72809b9f88a9fe4746c7b
Ported-Public-Prefix: superdoc/public
Co-authored-by: VladaHarbour <dataart.vladyslava@harbourcollaborators.com>
Co-authored-by: Luccas Correa <luccascorrea@gmail.com>
Co-authored-by: Luccas Correa <luccas@harbourshare.com>
Source-PR: #3739
Closes #3739

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: 7fc0712e48812f289c0482ce11e991fef5aee665
Ported-Public-Prefix: superdoc/public
…hs, merged, overhang)

## Summary

Round 2 of table rendering fidelity for the SD-3028 epic (follows #3617). Every fix is Word-measured (300dpi probes) and gated against the layout corpus (zero unexplained changed docs per commit). 18 semantic commits.

## Linear issues addressed

| Issue | Area | Status in this PR |
|---|---|---|
| [SD-3308](https://linear.app/superdocworkspace/issue/SD-3308) | Table borders | Compound bands, conflict resolution, separate-mode bevels |
| [SD-3035](https://linear.app/superdocworkspace/issue/SD-3035) | Table styles | wholeTable shading, grid-position conditional regions |
| [SD-3309](https://linear.app/superdocworkspace/issue/SD-3309) | Table widths | Content sizing, band rules, percent-width proportions |
| [SD-3037](https://linear.app/superdocworkspace/issue/SD-3037) | Merged cells | vMerge row heights, grid-position regions, tcW emit |
| [SD-1513](https://linear.app/superdocworkspace/issue/SD-1513) | Overhanging cells | Row-boundary continuity, geometry locks |
| [SD-3038](https://linear.app/superdocworkspace/issue/SD-3038) | Nested tables | tblPr-shading verified against Word (no cell fill) |
| [SD-3345](https://linear.app/superdocworkspace/issue/SD-3345) | Harvey table bugs | Closed (tblPrEx grid, callout corners, M&A borders) |
| [SD-2969](https://linear.app/superdocworkspace/issue/SD-2969) | pct10 shading | Closed (renders gray, not white) |

## Changes by area

**Borders (SD-3308)**
- Compound borders (double, triple, 9x thinThick*) painted as Word's nested rectangles with measured band widths; interior bands straddle the gridline with a continuous middle grid.
- ECMA-376 17.4.66 border-conflict resolution (weight, style precedence, color) so shared cell edges draw exactly once, no doubling or dropped lines.
- `outset`/`inset` render Word's separate-borders bevel (raised frame, sunken cells) instead of heavy black; collapsed mode draws them as plain solid lines.

**Styles (SD-3035, SD-3037)**
- A table style's base `w:tcPr` shading is surfaced as the wholeTable conditional layer.
- firstRow/lastRow/firstColumn/lastColumn and banding resolve by GRID column, so conditional styling follows the right column across gridSpan/vMerge/gridBefore.

**Widths (SD-3309)**
- Pure-auto tables content-size like Word; column = text + band allowances per measured rules.
- Percent-width tables honor the authored grid proportions (were content-sizing); total width and column split now match Word.

**Merged / overhang (SD-3037, SD-1513)**
- vMerge-only rows keep one-line height instead of collapsing.
- Interior row boundaries paint as one continuous line across the union of both rows' extents (gridBefore/gridAfter slivers included), no gap or doubling.
- `insertTable` emits Word-style `tcW` cell widths.

## Verification

- Word-measured at 300dpi; per-commit corpus gate (HEAD reference) isolated each change to its expected doc set.
- 17 minimal ticket fixtures rendered Word vs SuperDoc: 15/17 matched pre-fix; the 2 remaining (percent widths) are fixed by the last commit.
- G5 (nested tblPr shading) and the merged-perimeter weight were investigated and disproven against Word renders; locked with regression tests rather than changed.

## Deferred (documented, low priority)

Rare border styles (wave/doubleWave, threeDEmboss/Engrave) and the dotDash vs dotDotDash distinction remain CSS approximations.

Co-authored-by: Gabriel Chittolina <163901514+chittolinag@users.noreply.github.com>
Co-authored-by: Gabriel Chittolina <gabrielchittolina1@gmail.com>
Co-authored-by: Tadeu Tupinamba <tadeu.tupiz@gmail.com>
Co-authored-by: Tadeu Tupinambá <tadeu.tupiz@gmail.com>
Source-PR: #3658
Closes #3658

Ported-From-Source-Repo: superdoc/orbit
Ported-From-Source-Commit: 814009a2d9c222443f701febf15ea5328dab7307
Ported-Public-Prefix: superdoc/public
@superdoc-bot superdoc-bot Bot requested a review from a team as a code owner June 26, 2026 15:53
@github-actions

Copy link
Copy Markdown
Contributor

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bbcc04f31d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread packages/document-host/src/rpc/server.ts
…ing (SD-3028)

The SD-3028 round-2 change made getBorderBandWidthPx paint a thick border at
the authored width (1px floor) instead of the old 2x multiplier, but left two
painter tests and two code comments asserting the doubled behavior. CI on the
main-into-stable merge fails on those two stale assertions. Update them to match
the shared helper (and the Word probe it is based on): thick width:1 -> 1px,
width:3 -> 3px.
@caio-pizzol caio-pizzol merged commit 8634f8f into stable Jun 26, 2026
58 checks passed
@caio-pizzol caio-pizzol deleted the merge/main-into-stable-2026-06-26 branch June 26, 2026 18:21
@superdoc-bot

superdoc-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in superdoc-cli v0.20.2

The release is available on GitHub release

@superdoc-bot

superdoc-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in superdoc-sdk v1.19.2

@superdoc-bot

superdoc-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in @superdoc-dev/mcp v0.15.2

The release is available on GitHub release

@superdoc-bot

superdoc-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in @superdoc-dev/fonts v0.1.3

The release is available on GitHub release

@superdoc-bot

superdoc-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in superdoc v1.43.2

The release is available on GitHub release

@superdoc-bot

superdoc-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in @superdoc-dev/react v1.14.2

The release is available on GitHub release

@superdoc-bot

superdoc-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in vscode-ext v2.15.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants