Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ jobs:
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v4
with:
node-version: 22
node-version: "26.12.1"
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm release:verify
- run: pnpm bench:size:research
- uses: astral-sh/setup-uv@v6
with:
version: '0.12.10'
version: "0.12.10"
- run: uv sync --frozen
- run: uv run python -m unittest training.test_export training.test_data_sources training.test_quality training.test_calibration training.test_experiment_objectives training.test_release_candidate training.test_navigation training.test_navigation_augmentation training.test_evaluate_navigation training.test_typo
1 change: 1 addition & 0 deletions .node-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
26.12.1
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
engine-strict=true
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Rebuild the index when your menu changes. You do not need to assemble separate n

## Try it locally

Use Node.js 22.12+ and pnpm 12.4.1 in this repository:
Use Node.js 26.12.1+ on the 26.x line and pnpm 12.4.1. Vercel builds may use patched Node.js 24.22.1+ on the 24.x line until Node 26 is supported there. These minimums include the CVE-2026-111497 Brotli decoder fix; `.node-version` and CI select 26.12.1:

```sh
pnpm install --frozen-lockfile
Expand Down
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
"bench:size:research": "node --import tsx bench/size-research.ts",
"bench:browser": "node --import tsx bench/browser.ts",
"release:verify": "pnpm check && pnpm test:contracts && pnpm test:parity && pnpm build && pnpm bench:size",
"test:demo": "node --import tsx bench/demo-check.ts"
"test:demo": "node --import tsx bench/demo-check.ts",
"preinstall": "node scripts/check-node.mjs"
},
"devDependencies": {
"@types/node": "24.10.1",
Expand All @@ -23,5 +24,8 @@
"tsx": "4.21.0",
"typescript": "5.9.3",
"vite": "7.3.5"
},
"engines": {
"node": "^24.22.1 || ^26.12.1"
}
}
3 changes: 3 additions & 0 deletions pnpm-workspace.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@ packages:
- packages/core
allowBuilds:
esbuild: true

# Reject Node runtimes without the CVE-2026-111497 security fix.
engineStrict: true
16 changes: 16 additions & 0 deletions scripts/check-node.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// CVE-2026-111497 is fixed in these Node.js security releases.
const [major, minor, patch] = process.versions.node.split(".").map(Number);
const minimum = new Map([
[24, [22, 1]],
[26, [12, 1]],
]).get(major);
if (
!Number.isInteger(patch) ||
!minimum ||
minor < minimum[0] ||
(minor === minimum[0] && patch < minimum[1])
) {
throw new Error(
"CVE-2026-111497: use Node.js 26.12.1+ on the 26.x line (or patched Node.js 24.22.1+ where Vercel requires 24.x).",
);
}
Loading