From 48f84e12ca35db5f7ba3e24ddd1992057138510d Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Wed, 6 May 2026 20:53:57 -0400 Subject: [PATCH 1/2] fix(changeset): add missing pr: 3102 field to windows-npm-shell-fix The changeset parser hard-fails on fragments without a `pr:` field. Closes #3102 (changeset schema violation identified in review). Co-Authored-By: Claude Sonnet 4.6 --- .changeset/windows-npm-shell-fix.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.changeset/windows-npm-shell-fix.md b/.changeset/windows-npm-shell-fix.md index f33c5d5e6..38e13b248 100644 --- a/.changeset/windows-npm-shell-fix.md +++ b/.changeset/windows-npm-shell-fix.md @@ -1,5 +1,6 @@ --- type: Fixed +pr: 3102 --- **Windows update-check no longer silently fails** — `gsd-check-update-worker` now passes `shell: true` only on Windows, allowing `execFileSync('npm', ...)` to resolve `npm.cmd` via PATHEXT. POSIX path (Linux/macOS) is unchanged. Without this fix, the worker failed with ENOENT, `latest` stayed `null`, `update_available` became `null`, and the statusline `⬆ /gsd-update` indicator never rendered for Windows users. Fixes #3103. From 46cbeb505eb5cba1f6ba8230732f2874d1fa057b Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Wed, 6 May 2026 21:01:25 -0400 Subject: [PATCH 2/2] test: ignore comments in platform-gate regex assertion --- tests/gsd-check-update-worker-platform-gate.test.cjs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/gsd-check-update-worker-platform-gate.test.cjs b/tests/gsd-check-update-worker-platform-gate.test.cjs index e20be2490..2814c8077 100644 --- a/tests/gsd-check-update-worker-platform-gate.test.cjs +++ b/tests/gsd-check-update-worker-platform-gate.test.cjs @@ -43,6 +43,9 @@ describe('gsd-check-update-worker: Windows npm spawn platform gate', () => { test('shell option is gated to process.platform === "win32"', () => { const src = fs.readFileSync(WORKER_PATH, 'utf8'); + const codeOnly = src + .replace(/\/\*[\s\S]*?\*\//g, '') + .replace(/(^|[^:])\/\/[^\n]*/g, '$1'); // Locks the platform gate. Allows whitespace/quote variation around // the comparison so trivial style fixes do not break the contract. @@ -50,7 +53,7 @@ describe('gsd-check-update-worker: Windows npm spawn platform gate', () => { /shell:\s*process\.platform\s*===\s*['"]win32['"]/; assert.match( - src, + codeOnly, platformGate, [ 'shell option must be `process.platform === "win32"`.',