From 019e4d0b0120cbfd8bfc6e20d076326be701c98c Mon Sep 17 00:00:00 2001 From: elkaix Date: Tue, 25 Aug 2026 12:52:54 -0400 Subject: [PATCH 1/2] fix: make desktop release shell explicit Run desktop package configuration with Bash on both platform jobs so Windows does not interpret Bash environment variables with PowerShell. Add a release workflow regression gate for both configuration steps. --- .github/workflows/desktop-release.yml | 2 ++ scripts/release/release-workflows.test.mjs | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/.github/workflows/desktop-release.yml b/.github/workflows/desktop-release.yml index 492d83ef8..9377d96c2 100644 --- a/.github/workflows/desktop-release.yml +++ b/.github/workflows/desktop-release.yml @@ -171,6 +171,7 @@ jobs: - run: pnpm install --frozen-lockfile - name: Configure desktop release + shell: bash env: DESKTOP_CHANNEL: ${{ needs.prepare.outputs.channel }} DESKTOP_VERSION: ${{ needs.prepare.outputs.version }} @@ -355,6 +356,7 @@ jobs: - run: pnpm install --frozen-lockfile - name: Configure desktop release + shell: bash env: DESKTOP_CHANNEL: ${{ needs.prepare.outputs.channel }} DESKTOP_VERSION: ${{ needs.prepare.outputs.version }} diff --git a/scripts/release/release-workflows.test.mjs b/scripts/release/release-workflows.test.mjs index 346f5212c..901e5b117 100644 --- a/scripts/release/release-workflows.test.mjs +++ b/scripts/release/release-workflows.test.mjs @@ -6,6 +6,12 @@ import test from 'node:test'; const root = resolve(import.meta.dirname, '../..'); const read = (path) => readFileSync(resolve(root, path), 'utf8'); +void test('desktop releases configure both platforms with Bash', () => { + const workflow = read('.github/workflows/desktop-release.yml'); + const configuredWithBash = workflow.match(/^ - name: Configure desktop release\n shell: bash$/gmu); + assert.equal(configuredWithBash?.length ?? 0, 2); +}); + void test('release workflow uses full push-boundary lane signals and isolated jobs', () => { const workflow = read('.github/workflows/release.yml'); const desktopJob = workflow.slice( From a3e0dea391197404624bec9da8068c744186dff7 Mon Sep 17 00:00:00 2001 From: elkaix Date: Tue, 25 Aug 2026 13:09:29 -0400 Subject: [PATCH 2/2] test: scope desktop shell checks by platform Verify the macOS and Windows release jobs independently so one duplicated shell declaration cannot mask a missing platform configuration. --- scripts/release/release-workflows.test.mjs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/release/release-workflows.test.mjs b/scripts/release/release-workflows.test.mjs index 901e5b117..381755a42 100644 --- a/scripts/release/release-workflows.test.mjs +++ b/scripts/release/release-workflows.test.mjs @@ -8,8 +8,10 @@ const read = (path) => readFileSync(resolve(root, path), 'utf8'); void test('desktop releases configure both platforms with Bash', () => { const workflow = read('.github/workflows/desktop-release.yml'); - const configuredWithBash = workflow.match(/^ - name: Configure desktop release\n shell: bash$/gmu); - assert.equal(configuredWithBash?.length ?? 0, 2); + const configuredWithBash = /^ - name: Configure desktop release\n shell: bash$/mu; + const windowsStart = workflow.indexOf('\n windows:'); + assert.match(workflow.slice(workflow.indexOf('\n mac:'), windowsStart), configuredWithBash); + assert.match(workflow.slice(windowsStart, workflow.indexOf('\n publish:', windowsStart)), configuredWithBash); }); void test('release workflow uses full push-boundary lane signals and isolated jobs', () => {