Skip to content

fix(release): replace hermit with native tool setup on Windows job#1018

Merged
wpfleger96 merged 2 commits into
mainfrom
duncan/windows-release-native-toolchain
Jun 12, 2026
Merged

fix(release): replace hermit with native tool setup on Windows job#1018
wpfleger96 merged 2 commits into
mainfrom
duncan/windows-release-native-toolchain

Conversation

@wpfleger96

Copy link
Copy Markdown
Collaborator

hermit has no Windows support — its bootstrap script only branches on Darwin and Linux, so cashapp/activate-hermit crashes with HERMIT_STATE_DIR_RAW: unbound variable on windows-latest. The Release Windows job has depended on hermit for its entire toolchain since it was added, so it has never succeeded; the codesign OIDC failure earlier in the pipeline masked it until that was fixed.

This replaces activate-hermit in the Windows job with pinned native setup actions, matching the exact versions hermit pins:

  • dtolnay/rust-toolchain at 1.95.0 (from rust-toolchain.toml), with targets: x86_64-pc-windows-msvc folded in — this replaces the separate rustup target add step.
  • actions/setup-node at 24.14.0.
  • pnpm/action-setup at 11.4.0 (matches packageManager in package.json).

just desktop-install-ci is replaced with its one-line body, pnpm install --frozen-lockfile, dropping the just dependency entirely (just is itself a hermit-managed tool and was used for this single recipe).

cmake is left to the Windows runner's preinstalled copy; the existing CMAKE_POLICY_VERSION_MINIMUM env is unchanged. The macOS and Linux jobs are untouched — they use hermit correctly on supported platforms.

hermit has no Windows support — its bootstrap script only handles Darwin
and Linux, so activate-hermit crashes with an unbound-variable error on
windows-latest. The Windows release job has never succeeded since it was
added; the OIDC codesign failure masked it until now. Install node, pnpm,
and the rust toolchain via pinned setup actions matching the hermit
manifest versions, and inline the single-line desktop-install-ci recipe
since just is itself a hermit-managed tool.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Comment thread .github/workflows/release.yml Fixed
Comment thread .github/workflows/release.yml Dismissed
… cache-poisoning

zizmor flags actions/setup-node in this release workflow (contents: write,
feeds a signed installer) as a cache-poisoning vector because its static model
treats setup-node's package-manager-cache as default-on. Our pinned v4.4.0 sets
no cache input and does not cache, but the analyzer can't see that. Setting
package-manager-cache: false makes the intent explicit and clears the error-level
alert; it is a real no-write knob on v5 and an ignored input on v4.4.0.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
@wpfleger96 wpfleger96 merged commit 2fef8d6 into main Jun 12, 2026
23 checks passed
@wpfleger96 wpfleger96 deleted the duncan/windows-release-native-toolchain branch June 12, 2026 21:58
tlongwell-block pushed a commit that referenced this pull request Jun 13, 2026
* origin/main: (33 commits)
  fix(desktop): make Windows release compile cleanly (#1029)
  Add production Docker Compose bundle (#985)
  feat(profile): show active turn badges on agent profile panel and popover (#1026)
  chore(release): release version 0.3.20 (#1027)
  fix(release): resolve Windows sidecar path and Linux AppImage updater format (#1024)
  chore(release): release version 0.3.19 (#1014)
  fix(release): ignore prerelease tags in changelog generation (#1021)
  fix: repair main build after cross-PR merge skew (#1020)
  feat(agents): show per-turn duration and prune dead turns within ~25s of host crash (#1017)
  fix(release): replace hermit with native tool setup on Windows job (#1018)
  feat(acp): surface error-class outcomes to the activity feed only, never the channel (#1010)
  fix(desktop): migrate Sprout workspace storage (#1016)
  feat(auth): force token refresh on rejected token (401/403), never the browser (#1015)
  fix(release): mark prerelease versions so they do not become latest (#1013)
  feat(acp): implement systemPrompt with protocol version gating (#981)
  fix(release): update repository name check from block/sprout to block/buzz (#1012)
  feat(release): all-OS desktop builds + universal auto-update manifest (#1011)
  Add relay disconnect UX: friendly errors, reconnect, cached identity (#1004)
  feat(agents): add active turn indicators to Agents Menu (#1005)
  ci: add fork guards to docker, release, and auto-tag workflows (#1007)
  ...

Co-authored-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants