From f2b750e786f9fb41aaabe4684b1af489b8fff612 Mon Sep 17 00:00:00 2001 From: Jakub Duras Date: Mon, 2 Nov 2026 23:12:54 +0100 Subject: [PATCH] Upgrade builds, functions and CI to Node.js 26 LTS --- .nvmrc | 2 +- README.md | 6 +++--- docs/vercel-migration.md | 2 +- package-lock.json | 18 +++++++++--------- package.json | 4 ++-- vite.config.js | 2 +- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.nvmrc b/.nvmrc index a45fd52..6f4247a 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -24 +26 diff --git a/README.md b/README.md index c6486f5..11ba261 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ Major features, ordered by priority: ## Developing -Use Node.js 24 (`nvm use`) and install the locked dependencies: +Use Node.js 26 (`nvm use`) and install the locked dependencies: ```bash npm ci @@ -85,9 +85,9 @@ npm run preview -- --host 127.0.0.1 npm run test:cy ``` -The production build generates `.vercel/output` using `@sveltejs/adapter-vercel`; it does not need database credentials. Lessons and the new-experiment page are prerendered. Shared experiment pages load on the client, and the API runs on Node.js 24 functions. The PWA precaches application assets and lessons; private API responses are never cached. +The production build generates `.vercel/output` using `@sveltejs/adapter-vercel`; it does not need database credentials. Lessons and the new-experiment page are prerendered. Shared experiment pages load on the client, and the API runs on Node.js 26 functions. The PWA precaches application assets and lessons; private API responses are never cached. -Unit tests live next to the source and include parser fixtures, simulator behavior, ownership checks, origin checks and migration validation. Cypress retains the existing accessibility and visual-regression checks. CI uses Node.js 24 and `npm ci` and runs typing, coverage, builds and Cypress on pull requests. +Unit tests live next to the source and include parser fixtures, simulator behavior, ownership checks, origin checks and migration validation. Cypress retains the existing accessibility and visual-regression checks. CI uses Node.js 26 and `npm ci` and runs typing, coverage, builds and Cypress on pull requests. ## Deployment and data migration diff --git a/docs/vercel-migration.md b/docs/vercel-migration.md index 8eaff40..47b510d 100644 --- a/docs/vercel-migration.md +++ b/docs/vercel-migration.md @@ -21,7 +21,7 @@ Import `durasj/chipsandcode` into the `durasjs-projects` team. Use these setting | Project name | `chipsandcode` | | Framework | SvelteKit | | Root directory | Repository root | -| Node.js | 24.x | +| Node.js | 26.x | | Install command | `npm ci` | | Build command | `npm run build` | | Output directory | Framework default; leave the override unset | diff --git a/package-lock.json b/package-lock.json index 19e95cb..0bf1a2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "@testing-library/svelte": "5.4.2", "@types/katex": "^0.16.2", "@types/nearley": "^2.11.2", - "@types/node": "^24.0.0", + "@types/node": "^26.6.6", "@vite-pwa/assets-generator": "2.0.0", "@vite-pwa/sveltekit": "2.0.0", "@vitest/browser": "5.1.0", @@ -78,7 +78,7 @@ "yaml": "^2.8.0" }, "engines": { - "node": "24.x" + "node": "26.x" } }, "node_modules/@alloc/quick-lru": { @@ -3928,13 +3928,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.19.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.19.2.tgz", - "integrity": "sha512-93d49wCWJkCyN87MxLpNN6KXPCwFw7bVUg79mGUV1OS40JGWwVCr8n61DXCSqz7CV6/VfPkb7xec7uP2M+QHWQ==", + "version": "26.6.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.6.tgz", + "integrity": "sha512-MzQj+8Kx3XI40OmUAE6Qoh58ZMNstNNMwn2nfd3qWsfe7nDNSqJNzes4njhz6AHwrSHOffSLwXU6yb474Q4aog==", "devOptional": true, "license": "MIT", "dependencies": { - "undici-types": ">=7.24.0 <7.24.7" + "undici-types": "~8.9.0" } }, "node_modules/@types/resolve": { @@ -13525,9 +13525,9 @@ } }, "node_modules/undici-types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", - "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz", + "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==", "devOptional": true, "license": "MIT" }, diff --git a/package.json b/package.json index 29f8342..343ce44 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@testing-library/svelte": "5.4.2", "@types/katex": "^0.16.2", "@types/nearley": "^2.11.2", - "@types/node": "^24.0.0", + "@types/node": "^26.6.6", "@vite-pwa/assets-generator": "2.0.0", "@vite-pwa/sveltekit": "2.0.0", "@vitest/browser": "5.1.0", @@ -99,7 +99,7 @@ }, "type": "module", "engines": { - "node": "24.x" + "node": "26.x" }, "imports": { "#lib/*": "./src/lib/*", diff --git a/vite.config.js b/vite.config.js index 256e893..642ea91 100644 --- a/vite.config.js +++ b/vite.config.js @@ -24,7 +24,7 @@ const config = defineConfig(() => { contentPlugin(), withPwa( { - adapter: adapter({ runtime: 'nodejs24.x' }), + adapter: adapter({ runtime: 'nodejs26.x' }), preprocess: vitePreprocess({ script: true }), prerender: { entries: ['*', '/learn/hardware/boolean-logic'],