Repository navigation
ci: build the macOS dmg on GitHub's macOS runner - #99
Merged
Merged
Conversation
A release's Apple Silicon dmg is built by `npm run dist:mac` on a hosted macos-latest runner when the release is published, or on demand for a given tag. The dmg is uploaded as a workflow artifact only; attaching it to the release stays a maintainer step, so a run publishes nothing by itself. probe:package:mac runs after the build but does not gate it: the runner has no `claude`, so its two agent checks fail there. The other 31 passed on macos-26-arm64, keystroke checks included. Its result goes to the run summary and its log is uploaded next to the dmg. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FUu5otMQRyP8XPWx9QnyoB
The probe ran but could not fail the run: without `claude` on the runner, its two agent checks always failed, so a broken dmg looked the same as a good one. claude is now installed after the dmg is uploaded, and the probe step gates the job. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FUu5otMQRyP8XPWx9QnyoB
…o do CONTRIBUTING's release order now names the workflow as an alternative to the build Mac. docs/lessons/macos.md gains the runner's measurements (direct Electron download, UI scripting allowed, claude found in ~/.local/bin), which the workflow's comments cite. The /usr/local/bin link is dropped: the runner's login shell already finds ~/.local/bin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FUu5otMQRyP8XPWx9QnyoB
Contributor
Author
|
Updated after a review pass:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
.github/workflows/mac.yml. When a release is published (or on demand, for a given tag), a hostedmacos-latestrunner runs the samenpm run dist:macthe build Mac runs, uploads the arm64 dmg as a workflow artifact, and then runsnpm run probe:package:macagainst it. Nothing is attached to the release: the maintainer puts the dmg from a green run intorelease/and runsnpm run release:githubas before (now also written in CONTRIBUTING). The token iscontents: read.The probe gates the run. Its two agent checks need
claude, so the workflow installs it (pinned, not signed in) after the dmg is uploaded; nothing it brings can reach the artifact. The runner allows UI scripting, so the keystroke, Cmd+Q and close-dialog checks run too. The probe's result goes to the run summary and its log is uploaded. The runner's measured behaviour is recorded indocs/lessons/macos.md(items 21–23).Tested on my fork with
workflow_dispatchforv0.2.24(release commitc0d42a7): run 40501610608 at this PR's headaf9125d, 33/33.Not tested:
release: publishedtrigger. GitHub reads the workflow from the release's own commit, so it fires only for releases cut after this file is on master; for earlier releases useworkflow_dispatchwith the tag.FAILED (k/n); the cause is in the uploaded log.Related issue
Fixes #73. See also #98.
Which area(s)?
Checklist
npm testpasses — run on macOS only: 2592 pass, 18 fail, all in Linux-only suites (desktop entry install, watchers, pty working directory); this PR changes no source. The Linux result is upstream CI's.npm run typecheckandnpm run lintpass (alsonpm run buildandnpm run measure:bundle)npm run probe:*(see CONTRIBUTING → Testing) —probe:package:mac: 33/33 locally on an Apple M3 and 33/33 on the runner🤖 Generated with Claude Code
https://claude.ai/code/session_01FUu5otMQRyP8XPWx9QnyoB