Skip to content

feat: release a signed, notarized Desktop Tools DMG - #28

Merged
iamnbutler merged 2 commits into
mainfrom
release
Oct 15, 2026
Merged

iamnbutler merged 2 commits into
mainfrom
release

Conversation

@iamnbutler

@iamnbutler iamnbutler commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Release side of #27. Builds with assemble and sign from #29's dist/app.js.

  • .github/workflows/release.yml: workflow_dispatch (optional publish), environment release, macos-15 with Xcode 26.2, npm run check, then credentials → release → artifact upload → gh release create v<version> when publishing. Clean always runs.
  • scripts/credentials.ts: port of Ace's; imports the Developer ID cert into a disposable keychain under RUNNER_TEMP and writes the notary key path to DT_NOTARY_KEY.
  • scripts/release.ts: port of Ace's; assemble, sign, notarize (submit/wait 20m/info), staple with retry, spctl, then a DMG with an Applications link that is signed, notarized, stapled, validated, and assessed. Output: build/release/desktop-tools-<version>-macos-arm64.dmg.

Needs in the release environment:

  • Secrets: DT_CERTIFICATE_P12 (base64), DT_CERTIFICATE_PASSWORD, DT_NOTARY_PRIVATE_KEY (.p8 contents)
  • Variables: DT_CODESIGN_IDENTITY, DT_NOTARY_KEY_ID, DT_NOTARY_ISSUER

Verified: both scripts type-check strict against the real dist/app.js, and npm run check passes; the credentials guard refuses outside Actions. Not yet run end to end (needs the app lane and the credentials).

Built in Ace

Written with Claude Code outside Ace, coordinating with the study lead's Ace session; no Ace surface was needed for this lane.

Refs #27

Why: scripts/release.ts | the app and its DMG are both notarized, stapled, and assessed by spctl before upload; notarytool info, not wait, decides the outcome
Why: scripts/credentials.ts | signing material lives only in a disposable keychain under RUNNER_TEMP, removed by the always-run clean step
@iamnbutler
iamnbutler marked this pull request as ready for review October 15, 2026 23:42
@iamnbutler
iamnbutler merged commit 9b98474 into main Oct 15, 2026
2 checks passed
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.

1 participant