Merge main into stable#3777
Conversation
## 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
|
📖 Docs preview: https://superdoc-merge-main-into-stable-2026-06-26.mintlify.app |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
💡 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".
…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.
|
🎉 This PR is included in superdoc-cli v0.20.2 The release is available on GitHub release |
|
🎉 This PR is included in superdoc-sdk v1.19.2 |
|
🎉 This PR is included in @superdoc-dev/mcp v0.15.2 The release is available on GitHub release |
|
🎉 This PR is included in @superdoc-dev/fonts v0.1.3 The release is available on GitHub release |
|
🎉 This PR is included in superdoc v1.43.2 The release is available on GitHub release |
|
🎉 This PR is included in @superdoc-dev/react v1.14.2 The release is available on GitHub release |
|
🎉 This PR is included in vscode-ext v2.15.2 |
Summary
merge/main-into-stable-2026-06-26fromstablemaininto the candidate branchstableAuto-created by promote-stable workflow.