build: Move Node toolchain to 26 LTS #27

Closed
opened 2026-11-03 16:15:15 +00:00 by mira · 1 comment
Collaborator

Maintenance/quality. Purpose: keeps meets #3 (tagged releases and compose smoke test pass) on a supported toolchain.

Standard: https://git.s1d3sw1ped.com/s1d3sw1ped/forge-standards/src/branch/master/forge-toolchain.md (Node row). Node 26 "Lithium" has been Active LTS since 2026-10-28 (v26.13.0). Node 24 went to Maintenance LTS on 2026-10-20. Justin approved the move on 2026-11-03.

What uses Node today (master)

  • .forgejo/workflows/ci.yaml: two setup-node@v4 steps with node-version: "24"
  • .forgejo/workflows/release.yaml: node-version: "24"
  • .nvmrc: 24
  • Dockerfile: FROM node:24-alpine AS ui-builder (move to node:26-alpine)
  • ui/package.json (Svelte 5, Vite 8) and ui/package-lock.json. No engines field.

Acceptance criteria

  1. Every Node pin is set to 26: CI node-version, .nvmrc, engines (if present), and any Docker base image or Node package.
  2. Install, build and test pass on Node 26 in CI, and the PR links the green run.
  3. Lockfiles are regenerated if needed (npm install on Node 26 with the bundled npm). Commit them only if they actually change.
  4. Nothing about the product behaves differently.
  5. Preflight: if the repo has a preflight, its Node check (found/required/fix) requires 26.
  6. The Docker image builds with node:26-alpine, and the compose smoke test still passes.

Scope: only the Node version. setup-node stays on @v4 and other deps stay where they are.

Maintenance/quality. Purpose: keeps meets #3 (tagged releases and compose smoke test pass) on a supported toolchain. Standard: https://git.s1d3sw1ped.com/s1d3sw1ped/forge-standards/src/branch/master/forge-toolchain.md (Node row). Node 26 "Lithium" has been Active LTS since 2026-10-28 (v26.13.0). Node 24 went to Maintenance LTS on 2026-10-20. Justin approved the move on 2026-11-03. ## What uses Node today (master) - `.forgejo/workflows/ci.yaml`: two `setup-node@v4` steps with `node-version: "24"` - `.forgejo/workflows/release.yaml`: `node-version: "24"` - `.nvmrc`: 24 - `Dockerfile`: `FROM node:24-alpine AS ui-builder` (move to `node:26-alpine`) - `ui/package.json` (Svelte 5, Vite 8) and `ui/package-lock.json`. No `engines` field. ## Acceptance criteria 1. Every Node pin is set to 26: CI `node-version`, `.nvmrc`, `engines` (if present), and any Docker base image or Node package. 2. Install, build and test pass on Node 26 in CI, and the PR links the green run. 3. Lockfiles are regenerated if needed (`npm install` on Node 26 with the bundled npm). Commit them only if they actually change. 4. Nothing about the product behaves differently. 5. Preflight: if the repo has a preflight, its Node check (found/required/fix) requires 26. 6. The Docker image builds with `node:26-alpine`, and the compose smoke test still passes. Scope: only the Node version. setup-node stays on @v4 and other deps stay where they are.
Owner

Ash, this one's yours: move helix-proxy's Node pins to 26 per the issue. It touches CI and release workflows, so Blake will review the PR alongside me.

Ash, this one's yours: move helix-proxy's Node pins to 26 per the issue. It touches CI and release workflows, so Blake will review the PR alongside me.
linus closed this issue 2026-11-03 20:05:38 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
s1d3sw1ped/helix-proxy#27
No description provided.