Skip to content

Commit 19f752a

Browse files
authored
Merge pull request #594 from Hack23/copilot/update-node-26-and-next-workflow-27
chore: update Node.js from 25 to 26, nightly workflow stays on 26.0.0-nightly
2 parents 08d35d4 + 5651948 commit 19f752a

10 files changed

Lines changed: 111 additions & 133 deletions

File tree

.devcontainer/devcontainer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
22
"name": "React Three.js Game Template Dev Container",
3-
"image": "mcr.microsoft.com/devcontainers/javascript-node:24-trixie",
3+
"image": "mcr.microsoft.com/devcontainers/javascript-node:26-trixie",
44
"features": {
55
"ghcr.io/devcontainers/features/github-cli:1": {},
66
"ghcr.io/devcontainers/features/node:1": {
77
"nodeGypDependencies": true,
8-
"version": "25"
8+
"version": "26"
99
}
1010
},
1111
// MCP Servers: See .github/copilot-mcp.json for Model Context Protocol configuration

.github/workflows/codeql.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ jobs:
5151
- name: Setup Node.js
5252
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
5353
with:
54-
node-version: "25"
54+
node-version: "26"
5555
cache: "npm"
5656

5757
- name: Cache dependencies

.github/workflows/copilot-setup-steps.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
- name: Setup Node.js
4747
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
4848
with:
49-
node-version: "25"
49+
node-version: "26"
5050
cache: "npm"
5151

5252
- name: Install dependencies

.github/workflows/copilot-setup.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
- name: Setup Node.js
3535
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
3636
with:
37-
node-version: '25'
37+
node-version: '26'
3838
cache: 'npm'
3939

4040
- name: Cache dependencies
@@ -214,7 +214,7 @@ jobs:
214214
- [ ] Brave Search Server - Requires API key
215215
216216
### System Dependencies
217-
- [x] Node.js 25
217+
- [x] Node.js 26
218218
- [x] Build tools
219219
- [x] Display server (Xvfb)
220220
- [x] Cypress dependencies

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ jobs:
6060
- name: Setup Node.js
6161
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
6262
with:
63-
node-version: "25"
63+
node-version: "26"
6464
cache: "npm"
6565

6666
- name: Cache Cypress binary
@@ -132,7 +132,7 @@ jobs:
132132
- name: Setup Node.js
133133
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
134134
with:
135-
node-version: "25"
135+
node-version: "26"
136136
cache: "npm"
137137

138138
- name: Install dependencies

.github/workflows/test-and-report.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
2525
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
2626
with:
27-
node-version: "25"
27+
node-version: "26"
2828
cache: "npm"
2929

3030
- name: Cache apt packages
@@ -74,7 +74,7 @@ jobs:
7474
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
7575
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
7676
with:
77-
node-version: "25"
77+
node-version: "26"
7878
cache: "npm"
7979

8080
- name: Install dependencies
@@ -147,7 +147,7 @@ jobs:
147147
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
148148
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
149149
with:
150-
node-version: "25"
150+
node-version: "26"
151151
cache: "npm"
152152

153153
- name: Install dependencies
@@ -184,7 +184,7 @@ jobs:
184184
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
185185
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
186186
with:
187-
node-version: "25"
187+
node-version: "26"
188188
cache: "npm"
189189

190190
- name: Cache Cypress binary

docs/End-of-Life-Strategy.md

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,28 @@ This document defines the strategy for managing Node.js runtime and TypeScript c
66

77
---
88

9-
## Current Status (March 2026)
9+
## Current Status (May 2026)
1010

1111
### Node.js
1212

1313
| Node.js | Release Date | Status | Bug Fixes Until | Security Fixes Until |
1414
|---------|-------------|--------|-----------------|----------------------|
15-
| **25 (Current)** | Oct 15, 2025 |**Active — in use** | Apr 1, 2026 | Jun 1, 2026 |
15+
| **26 (Current)** | Apr 22, 2026 |**Active — in use** | Oct 2027 | Apr 2029 |
16+
| 25 | Oct 15, 2025 | ⚠️ Security-only | N/A | Jun 1, 2026 |
1617
| 24 (LTS – Krypton) | May 2025 | Active LTS | Oct 2026 | Apr 28, 2028 |
1718
| 22 (LTS – Jod) | Apr 2024 | Maintenance | Oct 2025 | Apr 30, 2027 |
18-
| 20 (LTS – Iron) | Apr 2023 | Maintenance | Oct 2024 | Apr 30, 2026 |
1919

20-
> **Note:** Node.js 25 is an odd-numbered "Current" release, meaning it does **not** receive LTS status. It is supported for approximately 6 months before reaching end-of-life. We use it to validate readiness for Node.js 26.
20+
> **Note:** Node.js 26 is an even-numbered release that will graduate to **Active LTS in October 2026**. It was released on April 22, 2026. The forward-compatibility workflow (`test-and-report-latest-node.yml`) currently uses `26.0.0-nightly` to validate upcoming Node.js 26 patch releases. It will be updated to `27.0.0-nightly` once Node.js 27 nightly builds are published (expected October 2026).
2121
2222
### TypeScript
2323

2424
| TypeScript | Release Date | Status | Support Until |
2525
|-----------|-------------|--------|---------------|
26-
| **6.0.2** | Mar 2026 |**Active — in use** | Until 7.0 release (~12 months) |
26+
| **6.0.3** | Mar 2026 |**Active — in use** | Until 7.0 release (~12 months) |
2727
| 5.9.x | Feb 2026 | Previous stable | Limited — security patches only |
2828
| 5.8.x | Dec 2025 | End of life | ❌ No support |
2929

30-
> **Note:** TypeScript 6.0 is a major release with breaking changes including stricter module resolution with `moduleResolution: "bundler"`, removal of implicit `global` namespace, and stricter `NodeJS` namespace handling. The project uses `@typescript-eslint 8.58.0` which supports `typescript >=4.8.4 <6.1.0`.
30+
> **Note:** TypeScript 6.0 is a major release with breaking changes including stricter module resolution with `moduleResolution: "bundler"`, removal of implicit `global` namespace, and stricter `NodeJS` namespace handling. The project uses `@typescript-eslint 8.59.2` which supports `typescript >=4.8.4 <6.1.0`.
3131
3232
---
3333

@@ -111,28 +111,24 @@ TS 7.0 | ~2027 | Future | Requires @typescript-eslint update
111111

112112
## Upcoming Milestones
113113

114-
### ⚠️ Immediate — Node.js 25 End of Bug Fixes: April 1, 2026
114+
### ✅ CompletedUpgraded to Node.js 26: May 2026
115115

116-
Node.js 25 receives its final bug-fix release around **April 1, 2026**. Security-only patches continue until **June 1, 2026**.
116+
All CI/CD workflows, devcontainer configuration, and `package.json` have been updated to Node.js 26. The forward-compatibility workflow (`test-and-report-latest-node.yml`) currently uses `26.0.0-nightly` — it will switch to `27.0.0-nightly` once Node.js 27 nightly builds are published (expected October 2026).
117117

118-
Action required: Upgrade all CI/CD workflows to Node.js 26 immediately after its release in April 2026. See [FUTURE_WORKFLOWS.md](./FUTURE_WORKFLOWS.md) for the detailed upgrade plan.
118+
### ⚠️ Upcoming — Node.js 25 Security EOL: June 1, 2026
119119

120-
### 🔜 Upcoming — Node.js 26 Release: April 2026
121-
122-
Node.js 26 is expected in **April 2026**. It will:
123-
124-
- Enter "Current" status immediately upon release
125-
- Graduate to **Active LTS in October 2026**
126-
- Be maintained (Active + Maintenance) until **April 2029**
127-
128-
**Planned upgrade:** Within **2 weeks** of the Node.js 26 release. See [FUTURE_WORKFLOWS.md](./FUTURE_WORKFLOWS.md).
120+
Node.js 25 reaches full end-of-life on **June 1, 2026**. This project has already migrated to Node.js 26 — no action required.
129121

130122
### 📅 Future — Node.js 26 Active LTS: October 2026
131123

132124
When Node.js 26 enters Active LTS, it becomes the recommended production runtime. At this point:
133125

134126
- Node.js 24 transitions from Active LTS to Maintenance LTS
135-
- The primary workflow (`test-and-report.yml`) should target Node.js 26
127+
- Update `test-and-report-latest-node.yml` to `27.0.0-nightly` (once available) or `28.0.0-nightly`
128+
129+
### 📅 Future — Node.js 27 Release: October 2026
130+
131+
Node.js 27 will be released in **October 2026** as an odd-numbered "Current" release (no LTS). When Node.js 27 nightly builds are published, update `test-and-report-latest-node.yml` from `26.0.0-nightly` to `27.0.0-nightly`. Primary workflows remain on Node.js 26 LTS.
136132

137133
### 📅 Future — Node.js 24 EOL: April 2028
138134

@@ -148,8 +144,8 @@ The project maintains two parallel test workflows and tracks toolchain versions:
148144

149145
| Workflow | Purpose | Current Node Version |
150146
|----------|---------|----------------------|
151-
| `test-and-report.yml` | Primary CI — stable, production-ready | **25** |
152-
| `test-and-report-latest-node.yml` | Forward-compat — tests next version | **25** (will become 26) |
147+
| `test-and-report.yml` | Primary CI — stable, production-ready | **26** |
148+
| `test-and-report-latest-node.yml` | Forward-compat — tests next version | **26 nightly** (`26.0.0-nightly`) |
153149

154150
When a new Node.js version is released:
155151
1. Update `test-and-report-latest-node.yml` to the new version first
@@ -159,9 +155,9 @@ When a new Node.js version is released:
159155
### TypeScript & Toolchain
160156

161157
| Tool | Current Version | Peer Constraint | Upgrade Path |
162-
|------|----------------|-----------------|--------------|
163-
| TypeScript | **6.0.2** || Follow quarterly releases |
164-
| @typescript-eslint | **8.58.0** | `typescript >=4.8.4 <6.1.0` | Must update before TS 6.1 |
158+
|------|----------------|-----------------|-------------|
159+
| TypeScript | **6.0.3** || Follow quarterly releases |
160+
| @typescript-eslint | **8.59.2** | `typescript >=4.8.4 <6.1.0` | Must update before TS 6.1 |
165161
| Vite | **8.0.3** || Follow major releases |
166162
| Vitest | **4.1.2** || Keep aligned with Vite |
167163

@@ -190,4 +186,4 @@ When a new Node.js version is released:
190186
- [@typescript-eslint Supported TypeScript Versions](https://typescript-eslint.io/users/dependency-versions/)
191187
- [Hack23 ISMS Secure Development Policy](https://github.com/Hack23/ISMS-PUBLIC)
192188
- [WORKFLOWS.md](./WORKFLOWS.md) — Current CI/CD workflow documentation
193-
- [FUTURE_WORKFLOWS.md](./FUTURE_WORKFLOWS.md)Planned Node.js 26 upgrade
189+
- [FUTURE_WORKFLOWS.md](./FUTURE_WORKFLOWS.md) — Node.js 26 upgrade (completed)

0 commit comments

Comments
 (0)