Skip to content

Commit 61837c0

Browse files
JohnMcLearclaude
andauthored
chore: bump engines.node to >=22.0.0 + explicit Node 22/24/26 CI matrix (#419)
Adopts the post-#7781 plugin policy: engines.node floats on >=22.0.0, decoupled from core. Both Node 18 and Node 20 hit EOL in April 2026, so the dropped install audience is zero. The plugin's CI was pinned at a single Node major (most recently 25, which is itself EOL). Replace with an explicit `[22, 24, 26]` matrix on both backend-tests.yml and frontend-tests.yml so each supported Node major is verified against an Etherpad core that actually allows it: - Node 22 against `v2.7.3` (last core release whose engines.node floor was 22.13.0). Verifies the plugin still works on the lowest declared floor. - Node 24 against current `develop` (post-#7781 Node 24 floor). - Node 26 against current `develop` (forward-compatibility check). Local empirical verification: the plugin loaded, rendered all comment templates / toolbar icons, and served `/p/<pad>` HTTP 200 with zero ERROR/FATAL log lines on both `(Node 22.22.3, Etherpad v2.7.3)` and `(Node 24.14.0, Etherpad develop @ post-#7781)`. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 320a66b commit 61837c0

3 files changed

Lines changed: 37 additions & 4 deletions

File tree

.github/workflows/backend-tests.yml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,23 @@ jobs:
1111
if: |
1212
(github.event_name != 'pull_request')
1313
|| (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id)
14-
name: with Plugins
14+
name: with Plugins (Node ${{ matrix.node }} / core ${{ matrix.core_ref || 'develop' }})
1515
runs-on: ubuntu-latest
16+
strategy:
17+
fail-fast: false
18+
# Plugin floor is engines.node >=22 but current Etherpad core
19+
# requires >=24 (engineStrict). Each cell pairs a Node version
20+
# with a core ref that actually allows it: Node 22 against the
21+
# last tag whose core floor was 22 (v2.7.3); Node 24 / 26 against
22+
# current develop.
23+
matrix:
24+
include:
25+
- node: '22'
26+
core_ref: 'v2.7.3'
27+
- node: '24'
28+
core_ref: ''
29+
- node: '26'
30+
core_ref: ''
1631
steps:
1732
-
1833
name: Install libreoffice
@@ -25,11 +40,12 @@ jobs:
2540
uses: actions/checkout@v6
2641
with:
2742
repository: ether/etherpad-lite
43+
ref: ${{ matrix.core_ref }}
2844
path: etherpad-lite
2945
- uses: actions/setup-node@v6
3046
name: Install Node.js
3147
with:
32-
node-version: 25
48+
node-version: ${{ matrix.node }}
3349
- uses: pnpm/action-setup@v6
3450
name: Install pnpm
3551
with:

.github/workflows/frontend-tests.yml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,35 @@ on:
88
jobs:
99
test-frontend:
1010
runs-on: ubuntu-latest
11+
name: Playwright (Node ${{ matrix.node }} / core ${{ matrix.core_ref || 'develop' }})
12+
strategy:
13+
fail-fast: false
14+
# Plugin floor is engines.node >=22 but current Etherpad core
15+
# requires >=24 (engineStrict). Each cell pairs a Node version
16+
# with a core ref that actually allows it: Node 22 against the
17+
# last tag whose core floor was 22 (v2.7.3); Node 24 / 26 against
18+
# current develop.
19+
matrix:
20+
include:
21+
- node: '22'
22+
core_ref: 'v2.7.3'
23+
- node: '24'
24+
core_ref: ''
25+
- node: '26'
26+
core_ref: ''
1127

1228
steps:
1329
-
1430
name: Check out Etherpad core
1531
uses: actions/checkout@v6
1632
with:
1733
repository: ether/etherpad-lite
34+
ref: ${{ matrix.core_ref }}
1835
path: etherpad-lite
1936
- uses: actions/setup-node@v6
2037
name: Install Node.js
2138
with:
22-
node-version: 25
39+
node-version: ${{ matrix.node }}
2340
- uses: pnpm/action-setup@v6
2441
name: Install pnpm
2542
with:

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
"lint:fix": "eslint --fix ."
4040
},
4141
"engines": {
42-
"node": ">=18.0.0"
42+
"node": ">=22.0.0"
4343
},
4444
"repository": {
4545
"type": "git",

0 commit comments

Comments
 (0)