Skip to content

Commit 76aead6

Browse files
committed
Merge branch 'main' into stable
2 parents 694920f + 9ad0fa7 commit 76aead6

3,249 files changed

Lines changed: 61731 additions & 12911 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/scripts/package-lock.json

Lines changed: 1096 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.github/scripts/risk-assess.mjs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,13 @@ function buildHaikuPrompt(files, diff) {
104104
105105
## Critical paths (rendering/layout can break):
106106
- packages/layout-engine/ (style-engine, layout-engine, pm-adapter, layout-bridge, measuring, painters)
107-
- packages/super-editor/src/core/super-converter/ (DOCX import/export)
108-
- packages/super-editor/src/core/presentation-editor/ (editor↔layout bridge)
107+
- packages/super-editor/src/editors/v1/core/super-converter/ (DOCX import/export)
108+
- packages/super-editor/src/editors/v1/core/presentation-editor/ (editor↔layout bridge)
109109
- packages/superdoc/src/core/ (main entry core)
110110
- packages/word-layout/
111111
112112
## Sensitive paths (editing behavior):
113-
- packages/super-editor/src/extensions/ and src/core/
113+
- packages/super-editor/src/editors/v1/extensions/ and src/editors/v1/core/
114114
- packages/superdoc/src/
115115
- packages/layout-engine/contracts/
116116
- packages/esign/, shared/
@@ -181,8 +181,8 @@ function buildSonnetPrompt(pr, title, diff, haikuResult) {
181181
## Project Context
182182
Critical subsystems:
183183
- **Layout Engine** (packages/layout-engine/): style resolution, pagination, DOM painting, PM adapter
184-
- **Super Converter** (packages/super-editor/src/core/super-converter/): DOCX import/export
185-
- **Presentation Editor** (packages/super-editor/src/core/presentation-editor/): bridges editor ↔ layout
184+
- **Super Converter** (packages/super-editor/src/editors/v1/core/super-converter/): DOCX import/export
185+
- **Presentation Editor** (packages/super-editor/src/editors/v1/core/presentation-editor/): bridges editor ↔ layout
186186
- **Word Layout** (packages/word-layout/): Word document layout algorithms
187187
188188
Sensitive: editor extensions, editor core, superdoc package, shared utilities, esign.

.github/scripts/risk-label.mjs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ const CRITICAL_PATHS = [
1111
'packages/layout-engine/layout-bridge/',
1212
'packages/layout-engine/measuring/',
1313
'packages/layout-engine/painters/',
14-
'packages/super-editor/src/core/super-converter/',
15-
'packages/super-editor/src/core/presentation-editor/',
14+
'packages/super-editor/src/editors/v1/core/super-converter/',
15+
'packages/super-editor/src/editors/v1/core/presentation-editor/',
1616
'packages/superdoc/src/core/',
1717
'packages/word-layout/',
1818
];
1919

2020
const SENSITIVE_PATHS = [
21-
'packages/super-editor/src/extensions/',
22-
'packages/super-editor/src/core/',
21+
'packages/super-editor/src/editors/v1/extensions/',
22+
'packages/super-editor/src/editors/v1/core/',
2323
'packages/superdoc/src/',
2424
'packages/layout-engine/contracts/',
2525
'packages/esign/',

.github/scripts/risk-label.test.mjs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ describe('classify', () => {
1919

2020
it('sensitive: extensions', () => {
2121
assert.equal(
22-
classify(['packages/super-editor/src/extensions/bold/bold.ts']).level,
22+
classify(['packages/super-editor/src/editors/v1/extensions/bold/bold.ts']).level,
2323
'sensitive',
2424
);
2525
});
@@ -70,7 +70,7 @@ describe('classify', () => {
7070
it('critical: super-converter', () => {
7171
assert.equal(
7272
classify([
73-
'packages/super-editor/src/core/super-converter/v2/importer/foo.js',
73+
'packages/super-editor/src/editors/v1/core/super-converter/v2/importer/foo.js',
7474
]).level,
7575
'critical',
7676
);
@@ -107,7 +107,7 @@ describe('classify', () => {
107107
it('critical: presentation-editor', () => {
108108
assert.equal(
109109
classify([
110-
'packages/super-editor/src/core/presentation-editor/PresentationEditor.ts',
110+
'packages/super-editor/src/editors/v1/core/presentation-editor/PresentationEditor.ts',
111111
]).level,
112112
'critical',
113113
);
@@ -130,31 +130,31 @@ describe('classify', () => {
130130
it('highest risk wins when mixed', () => {
131131
const result = classify([
132132
'packages/layout-engine/style-engine/src/resolve.js',
133-
'packages/super-editor/src/extensions/bold/bold.ts',
133+
'packages/super-editor/src/editors/v1/extensions/bold/bold.ts',
134134
'apps/docs/guides/foo.mdx',
135135
]);
136136
assert.equal(result.level, 'critical');
137137
});
138138

139-
it('super-editor/src/core/ non-critical subpath is sensitive', () => {
139+
it('super-editor/src/editors/v1/core/ non-critical subpath is sensitive', () => {
140140
assert.equal(
141-
classify(['packages/super-editor/src/core/helpers/utils.js']).level,
141+
classify(['packages/super-editor/src/editors/v1/core/helpers/utils.js']).level,
142142
'sensitive',
143143
);
144144
});
145145

146146
it('downgrade: critical test-only becomes sensitive', () => {
147147
const result = classify([
148148
'packages/layout-engine/style-engine/__tests__/resolve.test.js',
149-
'packages/super-editor/src/core/super-converter/__tests__/import.test.js',
149+
'packages/super-editor/src/editors/v1/core/super-converter/__tests__/import.test.js',
150150
]);
151151
assert.equal(result.level, 'sensitive');
152152
assert.equal(result.downgraded, true);
153153
});
154154

155155
it('downgrade: sensitive test-only becomes low', () => {
156156
const result = classify([
157-
'packages/super-editor/src/extensions/bold/bold.test.ts',
157+
'packages/super-editor/src/editors/v1/extensions/bold/bold.test.ts',
158158
]);
159159
assert.equal(result.level, 'low');
160160
assert.equal(result.downgraded, true);

.github/workflows/ci-superdoc.yml

Lines changed: 101 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ on:
77
pull_request:
88
branches: [main, 'release/**']
99
paths-ignore:
10-
- '.github/workflows/**'
1110
- 'apps/docs/**'
1211
- 'apps/mcp/**'
1312
- 'apps/vscode-ext/**'
@@ -26,7 +25,7 @@ concurrency:
2625
cancel-in-progress: true
2726

2827
jobs:
29-
validate:
28+
build:
3029
runs-on: ubuntu-latest
3130
steps:
3231
- uses: actions/checkout@v6
@@ -40,7 +39,7 @@ jobs:
4039

4140
- uses: oven-sh/setup-bun@v2
4241
with:
43-
bun-version: 1.3.10
42+
bun-version: 1.3.11
4443

4544
- name: Install canvas system dependencies
4645
run: |
@@ -72,24 +71,109 @@ jobs:
7271
- name: Typecheck
7372
run: pnpm run type-check
7473

75-
- name: Run unit tests
76-
run: pnpm test
74+
unit-tests:
75+
needs: build
76+
runs-on: ubuntu-latest
77+
strategy:
78+
fail-fast: false
79+
matrix:
80+
include:
81+
- name: super-editor-1
82+
shard: '1/4'
83+
- name: super-editor-2
84+
shard: '2/4'
85+
- name: super-editor-3
86+
shard: '3/4'
87+
- name: super-editor-4
88+
shard: '4/4'
89+
- name: other-packages
90+
shard: ''
91+
steps:
92+
- uses: actions/checkout@v6
93+
94+
- uses: pnpm/action-setup@v4
95+
96+
- uses: actions/setup-node@v6
97+
with:
98+
node-version-file: .nvmrc
99+
cache: pnpm
100+
101+
- uses: oven-sh/setup-bun@v2
102+
with:
103+
bun-version: 1.3.11
104+
105+
- name: Install canvas system dependencies
106+
run: |
107+
sudo apt-get update
108+
sudo apt-get install -y \
109+
build-essential \
110+
libcairo2-dev \
111+
libpango1.0-dev \
112+
libjpeg-dev \
113+
libgif-dev \
114+
librsvg2-dev \
115+
libpixman-1-dev
116+
117+
- name: Install dependencies
118+
run: pnpm install
119+
120+
- name: Build
121+
run: pnpm run build
122+
123+
- name: Run super-editor tests (shard ${{ matrix.shard }})
124+
if: matrix.name != 'other-packages'
125+
working-directory: packages/super-editor
126+
env:
127+
NODE_OPTIONS: '--max-old-space-size=4096'
128+
run: >-
129+
pnpm exec vitest run --pool forks --minWorkers 1 --maxWorkers 1
130+
--shard=${{ matrix.shard }}
131+
--exclude='**/decrypt-docx.integration*'
132+
--exclude='**/contract-conformance*'
133+
134+
- name: Run other package vitest tests
135+
if: matrix.name == 'other-packages'
136+
env:
137+
NODE_OPTIONS: '--max-old-space-size=4096'
138+
VITEST_MAX_WORKERS: '1'
139+
VITEST_MIN_WORKERS: '1'
140+
run: pnpm exec vitest run '--project=!*super-editor*'
141+
142+
- name: Run bun tests
143+
if: matrix.name == 'other-packages'
144+
run: |
145+
pnpm -r --parallel \
146+
--filter @superdoc/document-api \
147+
--filter @superdoc/layout-engine --filter @superdoc/style-engine \
148+
--filter @superdoc/geometry-utils --filter @superdoc/word-layout \
149+
--filter @superdoc/common --filter @font-utils \
150+
--filter @locale-utils --filter @url-validation \
151+
test
152+
153+
- name: Run SDK scripts tests
154+
if: matrix.name == 'other-packages'
155+
run: pnpm --prefix packages/sdk run test:scripts
77156

78157
- name: Run memory profiling tests (non-blocking)
158+
if: matrix.name == 'other-packages'
79159
continue-on-error: true
80160
run: pnpm --filter @superdoc/layout-tests run test:memory
81161

82162
- name: Run slow tests
163+
if: matrix.name == 'other-packages'
83164
run: pnpm test:slow
84165

85166
- name: Install Playwright for UMD smoke test
167+
if: matrix.name == 'other-packages'
86168
run: pnpm --filter @superdoc/umd-smoke-test exec playwright install --with-deps chromium
87169

88170
- name: Run UMD smoke test
171+
if: matrix.name == 'other-packages'
89172
working-directory: packages/superdoc/tests/umd-smoke
90173
run: pnpm test
91174

92175
cli-tests:
176+
needs: build
93177
runs-on: ubuntu-latest
94178
steps:
95179
- uses: actions/checkout@v6
@@ -103,7 +187,7 @@ jobs:
103187

104188
- uses: oven-sh/setup-bun@v2
105189
with:
106-
bun-version: 1.3.10
190+
bun-version: 1.3.11
107191

108192
- name: Install dependencies
109193
run: pnpm install
@@ -113,3 +197,14 @@ jobs:
113197

114198
- name: Run CLI tests
115199
run: pnpm run test:cli
200+
201+
validate:
202+
if: always()
203+
needs: [build, unit-tests, cli-tests]
204+
runs-on: ubuntu-latest
205+
steps:
206+
- name: Check results
207+
run: |
208+
if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then
209+
exit 1
210+
fi

.github/workflows/release-esign.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ on:
88
- main
99
paths:
1010
- 'packages/esign/**'
11+
- 'packages/superdoc/**'
12+
- 'packages/layout-engine/**'
13+
- 'packages/super-editor/**'
14+
- 'packages/ai/**'
15+
- 'packages/word-layout/**'
16+
- 'packages/preset-geometry/**'
1117
- 'pnpm-workspace.yaml'
1218
- '!**/*.md'
1319
workflow_dispatch:

.github/workflows/release-template-builder.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ on:
88
- main
99
paths:
1010
- 'packages/template-builder/**'
11+
- 'packages/superdoc/**'
12+
- 'packages/layout-engine/**'
13+
- 'packages/super-editor/**'
14+
- 'packages/ai/**'
15+
- 'packages/word-layout/**'
16+
- 'packages/preset-geometry/**'
1117
- 'pnpm-workspace.yaml'
1218
- '!**/*.md'
1319
workflow_dispatch:

.github/workflows/spec-review.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ on:
55
pull_request:
66
types: [opened]
77
paths:
8-
- 'packages/super-editor/src/core/super-converter/v2/importer/**'
9-
- 'packages/super-editor/src/core/super-converter/v2/exporter/**'
10-
- 'packages/super-editor/src/core/super-converter/v3/handlers/**'
8+
- 'packages/super-editor/src/editors/v1/core/super-converter/v2/importer/**'
9+
- 'packages/super-editor/src/editors/v1/core/super-converter/v2/exporter/**'
10+
- 'packages/super-editor/src/editors/v1/core/super-converter/v3/handlers/**'
1111

1212
concurrency:
1313
group: spec-review-${{ github.event.pull_request.number }}

.github/workflows/sync-patches.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ jobs:
7676
else
7777
echo "Merge conflict — attempting auto-resolution of release artifacts..."
7878
79-
# Auto-resolve expected conflicts: package.json version and CHANGELOG.md.
79+
# Auto-resolve expected conflicts: package.json versions.
8080
# For these files, keep main's version (semantic-release manages them per-branch).
81-
for f in packages/superdoc/package.json packages/superdoc/CHANGELOG.md; do
81+
for f in packages/superdoc/package.json packages/esign/package.json packages/template-builder/package.json apps/vscode-ext/package.json; do
8282
if git diff --name-only --diff-filter=U | grep -qF "$f"; then
8383
echo " Auto-resolving $f (keeping main's version)"
8484
git checkout --ours "$f"

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ lerna-debug.log*
3535
.vitepress/.cache
3636
.vitepress/dist
3737

38-
packages/super-editor/src/tests/data/*/
38+
packages/super-editor/src/editors/v1/tests/data/*/
3939

4040
packages/word-layout/tests/**/*.js
4141
packages/word-layout/tests/**/*.d.ts
@@ -75,6 +75,7 @@ tests/layout-snapshots
7575
tests/layout/candidate/
7676
tests/layout/reference/
7777
tests/layout/reports/
78+
tmp/layout-compare/
7879
test-corpus/
7980
.pnpm-store
8081
devtools/visual-testing/pnpm-lock.yaml

0 commit comments

Comments
 (0)