From a693160dcb0b2fcf37436d40e87ecccd13d31deb Mon Sep 17 00:00:00 2001 From: Collin Bachman <3395010+bachmacintosh@users.noreply.github.com> Date: Thu, 8 Oct 2026 11:06:56 -0400 Subject: [PATCH 1/3] Chore: Move from corepack to devEngines for Node 26 Signed-off-by: Collin Bachman <3395010+bachmacintosh@users.noreply.github.com> --- .nvmrc | 1 - mise.toml | 2 +- package.json | 13 ++++- pnpm-lock.yaml | 139 ++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 151 insertions(+), 4 deletions(-) delete mode 100644 .nvmrc diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index 7baf24be..00000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -24.21.0 \ No newline at end of file diff --git a/mise.toml b/mise.toml index 157c1568..6a7e1ac3 100644 --- a/mise.toml +++ b/mise.toml @@ -1,2 +1,2 @@ [settings] -idiomatic_version_file_enable_tools = ["node"] +idiomatic_version_file_enable_tools = ["node", "pnpm"] diff --git a/package.json b/package.json index 0d489b3c..c3d930ba 100644 --- a/package.json +++ b/package.json @@ -27,5 +27,16 @@ "typescript": "7.0.2", "vitest": "5.0.3" }, - "packageManager": "pnpm@12.9.1" + "devEngines": { + "packageManager": { + "name": "pnpm", + "version": "^12.9.1", + "onFail": "download" + }, + "runtime": { + "name": "node", + "version": "^24.21.0", + "onFail": "download" + } + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 63521642..1b714cf6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,7 +7,7 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.9.1 + specifier: ^12.9.1 version: 12.9.1 packages: @@ -175,6 +175,9 @@ importers: '@vitest/coverage-v8': specifier: 5.0.3 version: 5.0.3(vitest@5.0.3) + node: + specifier: runtime:^24.21.0 + version: runtime:24.21.0 oxfmt: specifier: 0.72.0 version: 0.72.0 @@ -1207,6 +1210,138 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + node@runtime:24.21.0: + resolution: + type: variations + variants: + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-rseyRkr7mfB4wZywbSAdVDvTsxHLoHEoK84bF8l+WLs= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-aix-ppc64.tar.gz + targets: + - cpu: ppc64 + os: aix + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-vtfupTJeEQjzLOUijd1qXw8IpJnuQqp0Qq6lg3AvYFc= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-darwin-arm64.tar.gz + targets: + - cpu: arm64 + os: darwin + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-FGLLOzBGuBXPjqQ209pFDsGp8R2sflpGsK2lMF1+gJc= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-darwin-x64.tar.gz + targets: + - cpu: x64 + os: darwin + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-ckKCw7Q67JmKqVJzgEZbRdIp4CG1gDX19PYwleq/5dU= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-arm64.tar.gz + targets: + - cpu: arm64 + os: linux + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-UcXVMGbukpILYXg7A7Buy5nzZhFg97Fcp36EdBFaZ7w= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-ppc64le.tar.gz + targets: + - cpu: ppc64le + os: linux + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-Xy+jdCLgx13jXBaG/lHXgyTywqj+LMI5pB2cAAop2Tg= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-s390x.tar.gz + targets: + - cpu: s390x + os: linux + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-PWNAX8ZaDS0pdsHwvC/Se7C9ByEkaecFqsPwOuWrTJw= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-x64-musl.tar.gz + targets: + - cpu: x64 + os: linux + libc: musl + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-bh24fvWLiBnl1UAu/xU2SRsY7djre+5e94l4duiNxf8= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-x64.tar.gz + targets: + - cpu: x64 + os: linux + - resolution: + archive: zip + bin: + node: node.exe + integrity: sha256-h3mxveHTn41CDjtXqmV7OYka9DTT3kSpGQRM7AZ4WSE= + prefix: node-v24.21.0-win-arm64 + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-win-arm64.zip + targets: + - cpu: arm64 + os: win32 + - resolution: + archive: zip + bin: + node: node.exe + integrity: sha256-FY92hbRN5R9sDfHRU1JsvNPhvHOajfxgdyHO913p5UE= + prefix: node-v24.21.0-win-x64 + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-win-x64.zip + targets: + - cpu: x64 + os: win32 + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-MEiwgR4VjKDYZytZyDmGF2PhREkpgNjSmzad/uRXR+Q= + type: binary + url: https://unofficial-builds.nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-arm64-musl.tar.gz + targets: + - cpu: arm64 + os: linux + libc: musl + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-AacT402pjntNKjGR7nyj+T3QOE0aLvI8N5shYe5uEzo= + type: binary + url: https://unofficial-builds.nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-x64-musl.tar.gz + targets: + - cpu: x64 + os: linux + libc: musl + version: 24.21.0 + hasBin: true + obug@2.2.1: resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==} engines: {node: '>=12.20.0'} @@ -2048,6 +2183,8 @@ snapshots: nanoid@3.3.19: {} + node@runtime:24.21.0: {} + obug@2.2.1: {} obug@3.0.0: {} From 29202ef5cf844e6b482d1c50ed504d9098542be5 Mon Sep 17 00:00:00 2001 From: Collin Bachman <3395010+bachmacintosh@users.noreply.github.com> Date: Thu, 8 Oct 2026 11:22:33 -0400 Subject: [PATCH 2/3] Use specific pnpm version until fix lands Signed-off-by: Collin Bachman <3395010+bachmacintosh@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c3d930ba..374d2c96 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "devEngines": { "packageManager": { "name": "pnpm", - "version": "^12.9.1", + "version": "12.9.1", "onFail": "download" }, "runtime": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1b714cf6..56535df6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,7 +7,7 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: ^12.9.1 + specifier: 12.9.1 version: 12.9.1 packages: From 1f77337058a0df3d8fe9cc1cfc8aa4e3c97d4333 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 8 Oct 2026 15:32:28 +0000 Subject: [PATCH 3/3] Fix lowest peers check failing on devEngines npm view read the root package.json, rejected its pnpm devEngines with EBADDEVENGINES, and the error JSON was piped onward as the version since the step lacked pipefail. Point npm at RUNNER_TEMP so it skips the manifest, and run the step with the explicit bash shell for pipefail. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_019iS1UYdMG1ykMN9dT1seHj Signed-off-by: Claude --- .github/workflows/pr.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 469a4c9f..a952b56b 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -71,6 +71,8 @@ jobs: # satisfying each package's required peer dependencies (e.g. valibot ^1.0.0 → 1.0.0) to catch # use of features they lack. Optional peers (i.e. TypeScript) are covered by their own matrix. - name: Install Lowest Peer Dependencies + # Explicit bash adds pipefail, so a failing `npm view` fails the step instead of being piped onward + shell: bash run: | { echo "### Lowest Peer Dependencies" @@ -83,7 +85,8 @@ jobs: name="$(jq -r '.name' "$manifest")" specifiers=() while IFS=$'\t' read -r peer range; do - version="$(npm view "$peer@$range" version --json | jq -r 'if type == "array" then .[] else . end' | sort -V | head -n 1)" + # --prefix keeps npm from reading the root package.json, whose devEngines (pnpm) npm rejects + version="$(npm view "$peer@$range" version --json --prefix "$RUNNER_TEMP" | jq -r 'if type == "array" then .[] else . end' | sort -V | head -n 1)" if [[ -z "$version" ]]; then echo "::error file=$manifest::No published version of $peer satisfies $range." exit 1