Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
c947433
SD-2541 - fix: avoid scrolling back when dragging selection (#2809)
chittolinag Apr 22, 2026
54efb13
chore: merge stable into main
github-actions[bot] Apr 22, 2026
b5d7063
Merge pull request #2895 from superdoc-dev/sync/stable-to-main-202604…
harbournick Apr 22, 2026
a178c98
fix: replace dead via.placeholder URL (#2900)
kiluazen Apr 22, 2026
6c525de
docs: add kiluazen to community contributors (#2902)
superdoc-bot[bot] Apr 22, 2026
9adf23e
feat: add w:pPrChange translator for paragraph property tracked chang…
luccas-harbour Apr 22, 2026
4e299a6
ci(behavior): parallelize tests by browser x shard matrix (#2903)
caio-pizzol Apr 22, 2026
3a53eb3
fix: improve toolbar responsiveness (#2761)
artem-harbour Apr 22, 2026
75c8f51
fix: applying formatting to header/footer (#2904)
artem-harbour Apr 22, 2026
bc9a71f
chore: merge stable into main (release conflicts auto-resolved) (#2911)
superdoc-bot[bot] Apr 22, 2026
0038b2c
ci(release): harden stable release orchestration and recovery (#2908)
harbournick Apr 22, 2026
84aa0e4
fix: prevent corrupt docx export for legacy w:pict vml rect content (…
artem-harbour Apr 22, 2026
da38a24
chore: merge stable into main (release conflicts auto-resolved) (#2913)
superdoc-bot[bot] Apr 22, 2026
f276b34
feat(pm-adapter): synthesize internal link for PAGEREF with \h switch…
kendaller Apr 22, 2026
2c38373
fix(paragraph): guard listRendering destructure against null (#2896)
kendaller Apr 22, 2026
db9add0
chore: merge stable into main (release conflicts auto-resolved) (#2915)
superdoc-bot[bot] Apr 22, 2026
d2a5168
docs: add kendaller to community contributors (#2916)
superdoc-bot[bot] Apr 22, 2026
84b5fbc
fix: rebuild fragment on geometry change (#2842)
artem-harbour Apr 22, 2026
58c3fca
ci: automate stable promotion pr preparation (#2917)
harbournick Apr 22, 2026
c3b2cef
refactor(layout): lift page metadata into ResolvedPage (#2810)
tupizz Apr 22, 2026
032d4c1
[2/16] refactor(layout): lift fragment metadata into resolved paint i…
tupizz Apr 23, 2026
c1f616e
chore: add initial scaffold for labs release check orchestration (#2919)
harbournick Apr 23, 2026
5730b6c
[3/16] refactor(layout): pre-compute SDT container keys in resolved l…
tupizz Apr 23, 2026
ffb8b45
[5/16] refactor(layout): move change detection into resolved layout s…
tupizz Apr 23, 2026
e26689e
[6/16] refactor(layout): lift paragraph/list block and measure into r…
tupizz Apr 23, 2026
94d47f1
ci: poll Labs for release qualification status in Actions
Apr 23, 2026
04aae44
[7/16] refactor(painter): extract block/measure resolution helper (#2…
tupizz Apr 23, 2026
55bf52e
[8/16] refactor(painter): remove body blocks/measures from DomPainter…
tupizz Apr 23, 2026
1c76b4f
[9/16] refactor(layout): add resolveHeaderFooterLayout helper for dec…
tupizz Apr 23, 2026
0db8e2f
docs: enhance OpenAPI specification for sign API (#2920)
andrii-harbour Apr 23, 2026
5cb9691
feat: tracked changes in headers and footers (#2922)
harbournick Apr 23, 2026
5f95114
fix: image rendering (#2796)
VladaHarbour Apr 23, 2026
9c6ccb0
[10/16] refactor(painter): deliver resolved items to decoration provi…
tupizz Apr 23, 2026
d0a36c2
fix(extract): return tables as paragraph-granular blocks (SD-2672) (#…
caio-pizzol Apr 23, 2026
3eb4571
refactor(painter): remove blockLookup — painter reads only resolved d…
tupizz Apr 23, 2026
ffef210
fix: footnote editing lag, other tcs headers and footers (#2926)
harbournick Apr 23, 2026
884c7fb
fix(pm-adapter): emit pending section break before TOC/docPartObj SDT…
tupizz Apr 24, 2026
6afb062
fix: tracked changes in headers/footers issues (#2934)
harbournick Apr 24, 2026
4372d0e
fix: header/footer undo history across story sessions (#2935)
harbournick Apr 24, 2026
59921c3
chore: merge main into stable (conflicts need resolution)
github-actions[bot] Apr 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 9 additions & 7 deletions .github/workflows/ci-behavior.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ on:
- 'packages/preset-geometry/**'
- 'tests/behavior/**'
- 'shared/**'
- '.github/workflows/ci-behavior.yml'
- '!**/*.md'
merge_group:
workflow_dispatch:
Expand All @@ -29,7 +30,8 @@ jobs:
strategy:
fail-fast: false
matrix:
shard: [1, 2, 3]
browser: [chromium, firefox, webkit]
shard: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v6

Expand All @@ -56,20 +58,20 @@ jobs:
id: pw-cache
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ steps.pw.outputs.version }}
key: playwright-${{ runner.os }}-${{ steps.pw.outputs.version }}-${{ matrix.browser }}

- name: Install Playwright browsers
- name: Install Playwright browser
if: steps.pw-cache.outputs.cache-hit != 'true'
run: pnpm exec playwright install --with-deps chromium firefox webkit
run: pnpm exec playwright install --with-deps ${{ matrix.browser }}
working-directory: tests/behavior

- name: Install Playwright system deps
if: steps.pw-cache.outputs.cache-hit == 'true'
run: pnpm exec playwright install-deps chromium firefox webkit
run: pnpm exec playwright install-deps ${{ matrix.browser }}
working-directory: tests/behavior

- name: Run behavior tests (shard ${{ matrix.shard }}/3)
run: pnpm exec playwright test --shard=${{ matrix.shard }}/3
- name: Run behavior tests (${{ matrix.browser }} shard ${{ matrix.shard }}/4)
run: pnpm exec playwright test --project=${{ matrix.browser }} --shard=${{ matrix.shard }}/4
working-directory: tests/behavior

validate:
Expand Down
9 changes: 4 additions & 5 deletions .github/workflows/release-cli.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
# Auto-releases CLI on push to:
# - main (@next channel)
# - stable (@latest channel)
# Auto-releases CLI on push to main (@next channel).
# Stable releases are orchestrated centrally by release-stable.yml.
name: 📦 Release CLI

on:
push:
branches:
- main
- stable
paths:
# Keep in sync with apps/cli/.releaserc.cjs includePaths (patch-commit-filter).
# Workflow paths trigger CI; includePaths control semantic-release commit analysis.
Expand All @@ -19,6 +17,7 @@ on:
- 'packages/ai/**'
- 'packages/word-layout/**'
- 'packages/preset-geometry/**'
- 'shared/**'
- 'scripts/semantic-release/**'
- 'pnpm-workspace.yaml'
- '!**/*.md'
Expand All @@ -29,7 +28,7 @@ permissions:
packages: write

concurrency:
group: ${{ github.ref_name == 'stable' && 'release-stable-writeback' || format('{0}-{1}', github.workflow, github.ref) }}
group: ${{ github.ref_name == 'stable' && 'release-stable' || format('{0}-{1}', github.workflow, github.ref) }}
cancel-in-progress: ${{ github.ref_name != 'stable' }}

jobs:
Expand Down
10 changes: 8 additions & 2 deletions .github/workflows/release-create.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ permissions:
packages: write

concurrency:
group: release-create-${{ github.ref }}
cancel-in-progress: true
group: ${{ github.ref_name == 'stable' && 'release-stable' || format('{0}-{1}', github.workflow, github.ref) }}
cancel-in-progress: ${{ github.ref_name != 'stable' }}

jobs:
release:
Expand All @@ -36,6 +36,12 @@ jobs:
fetch-depth: 0
token: ${{ steps.generate_token.outputs.token }}

- name: Refresh stable branch head
if: github.ref_name == 'stable'
run: |
git fetch origin "${{ github.ref_name }}" --tags
git checkout -B "${{ github.ref_name }}" "origin/${{ github.ref_name }}"

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v6
Expand Down
15 changes: 11 additions & 4 deletions .github/workflows/release-esign.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Auto-releases on push to main (@next) or stable (@latest)
# Auto-releases on push to main (@next).
# Stable releases are orchestrated centrally by release-stable.yml.
name: 📦 Release esign

on:
push:
branches:
- main
- stable
paths:
- 'packages/esign/**'
- 'packages/superdoc/**'
Expand All @@ -14,6 +14,7 @@ on:
- 'packages/ai/**'
- 'packages/word-layout/**'
- 'packages/preset-geometry/**'
- 'shared/**'
- 'pnpm-workspace.yaml'
- '!**/*.md'
workflow_dispatch:
Expand All @@ -23,8 +24,8 @@ permissions:
packages: write

concurrency:
group: release-esign-${{ github.ref }}
cancel-in-progress: true
group: ${{ github.ref_name == 'stable' && 'release-stable' || format('{0}-{1}', github.workflow, github.ref) }}
cancel-in-progress: ${{ github.ref_name != 'stable' }}

jobs:
release:
Expand All @@ -42,6 +43,12 @@ jobs:
fetch-depth: 0
token: ${{ steps.generate_token.outputs.token }}

- name: Refresh stable branch head
if: github.ref_name == 'stable'
run: |
git fetch origin "${{ github.ref_name }}" --tags
git checkout -B "${{ github.ref_name }}" "origin/${{ github.ref_name }}"

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v6
Expand Down
10 changes: 8 additions & 2 deletions .github/workflows/release-mcp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ permissions:
packages: write

concurrency:
group: release-mcp-${{ github.ref }}
cancel-in-progress: true
group: ${{ github.ref_name == 'stable' && 'release-stable' || format('{0}-{1}', github.workflow, github.ref) }}
cancel-in-progress: ${{ github.ref_name != 'stable' }}

jobs:
release:
Expand All @@ -36,6 +36,12 @@ jobs:
fetch-depth: 0
token: ${{ steps.generate_token.outputs.token }}

- name: Refresh stable branch head
if: github.ref_name == 'stable'
run: |
git fetch origin "${{ github.ref_name }}" --tags
git checkout -B "${{ github.ref_name }}" "origin/${{ github.ref_name }}"

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v6
Expand Down
15 changes: 11 additions & 4 deletions .github/workflows/release-react.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Auto-releases on push to main (@next) or stable (@latest)
# Auto-releases on push to main (@next).
# Stable releases are orchestrated centrally by release-stable.yml.
name: 📦 Release react

on:
push:
branches:
- main
- stable
paths:
- 'packages/react/**'
- 'packages/superdoc/**'
Expand All @@ -14,6 +14,7 @@ on:
- 'packages/ai/**'
- 'packages/word-layout/**'
- 'packages/preset-geometry/**'
- 'shared/**'
- 'pnpm-workspace.yaml'
- '!**/*.md'
workflow_dispatch:
Expand All @@ -23,8 +24,8 @@ permissions:
packages: write

concurrency:
group: release-react-${{ github.ref }}
cancel-in-progress: true
group: ${{ github.ref_name == 'stable' && 'release-stable' || format('{0}-{1}', github.workflow, github.ref) }}
cancel-in-progress: ${{ github.ref_name != 'stable' }}

jobs:
release:
Expand All @@ -42,6 +43,12 @@ jobs:
fetch-depth: 0
token: ${{ steps.generate_token.outputs.token }}

- name: Refresh stable branch head
if: github.ref_name == 'stable'
run: |
git fetch origin "${{ github.ref_name }}" --tags
git checkout -B "${{ github.ref_name }}" "origin/${{ github.ref_name }}"

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v6
Expand Down
23 changes: 11 additions & 12 deletions .github/workflows/release-sdk.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
# Auto-releases SDK on push to:
# - main (@next channel)
# - stable (@latest channel)
# Auto-releases SDK on push to main (@next channel).
# Stable releases are orchestrated centrally by release-stable.yml.
# Also supports manual dispatch as a fallback for one-off releases.
name: "\U0001F4E6 Release SDK"

on:
push:
branches:
- main
- stable
paths:
# Keep in sync with packages/sdk/.releaserc.cjs includePaths (patch-commit-filter).
- 'packages/sdk/**'
Expand All @@ -20,22 +18,23 @@ on:
- 'packages/ai/**'
- 'packages/word-layout/**'
- 'packages/preset-geometry/**'
- 'shared/**'
- 'scripts/semantic-release/**'
- 'pnpm-workspace.yaml'
- '!**/*.md'
workflow_dispatch:
inputs:
version:
description: "Version to release (e.g. 1.0.0-next.7). Leave empty to publish the current repo version."
description: 'Version to release (e.g. 1.0.0-next.7). Leave empty to publish the current repo version.'
required: false
type: string
dry-run:
description: "Dry run — build and validate without publishing"
description: 'Dry run — build and validate without publishing'
required: false
type: boolean
default: false
npm-tag:
description: "npm dist-tag for Node SDK publish (e.g. latest, next). Only used for manual version override."
description: 'npm dist-tag for Node SDK publish (e.g. latest, next). Only used for manual version override.'
required: false
type: string
default: latest
Expand All @@ -46,7 +45,7 @@ permissions:
id-token: write # PyPI trusted publishing (OIDC)

concurrency:
group: ${{ github.ref_name == 'stable' && 'release-stable-writeback' || format('{0}-{1}', github.workflow, github.ref) }}
group: ${{ github.ref_name == 'stable' && 'release-stable' || format('{0}-{1}', github.workflow, github.ref) }}
cancel-in-progress: ${{ github.ref_name != 'stable' }}

jobs:
Expand Down Expand Up @@ -85,15 +84,15 @@ jobs:
with:
node-version-file: .nvmrc
cache: pnpm
registry-url: "https://registry.npmjs.org"
registry-url: 'https://registry.npmjs.org'

- uses: oven-sh/setup-bun@v2
with:
bun-version: 1.3.12

- uses: actions/setup-python@v5
with:
python-version: "3.12"
python-version: '3.12'

- name: Install canvas system dependencies
run: |
Expand Down Expand Up @@ -233,15 +232,15 @@ jobs:
with:
node-version-file: .nvmrc
cache: pnpm
registry-url: "https://registry.npmjs.org"
registry-url: 'https://registry.npmjs.org'

- uses: oven-sh/setup-bun@v2
with:
bun-version: 1.3.12

- uses: actions/setup-python@v5
with:
python-version: "3.12"
python-version: '3.12'

- name: Install dependencies
run: pnpm install --frozen-lockfile
Expand Down
Loading
Loading