Skip to content

feat(release): sign and notarize macOS builds#63

Merged
wolfiesch merged 2 commits into
mainfrom
codex/signed-macos-distribution
Jul 19, 2026
Merged

feat(release): sign and notarize macOS builds#63
wolfiesch merged 2 commits into
mainfrom
codex/signed-macos-distribution

Conversation

@wolfiesch

Copy link
Copy Markdown
Collaborator

Summary

  • sign and notarize protected macOS release builds with a pinned Developer ID identity
  • preserve the existing unsigned local packaging path and defer automatic updates
  • stop releases when ZIP or DMG identity, hardened runtime, Gatekeeper, or stapled notarization checks drift

Verification

  • pnpm test:packaging
  • pnpm check
  • pnpm test
  • real Developer ID signing and Apple notarization dry run; final ZIP and DMG inspection passed

Copilot AI review requested due to automatic review settings July 19, 2026 04:08

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a protected, release-only macOS packaging path that signs with a pinned Developer ID identity, notarizes, staples, and then verifies both ZIP and DMG artifacts (while keeping the existing unsigned local packaging flow and deferring auto-updates).

Changes:

  • Introduces a signed macOS packaging command (pnpm package:mac) gated by environment/credentials, alongside the existing unsigned path.
  • Adds a macOS release identity contract plus an inspection script + tests, and wires the inspection into the release workflow to fail closed on signing/notarization/Gatekeeper drift.
  • Updates release gate documentation and release-consistency checks to reflect and enforce the new macOS signing requirements.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
SECURITY.md Documents the new macOS signing/notarization expectation starting at v0.1.24.
scripts/packaging.test.mjs Extends packaging contract tests to assert signed macOS gating + workflow wiring.
scripts/package-mac-unsigned.mjs Forces unsigned behavior via T4_MACOS_SIGNED_BUILD=0 for local builds.
scripts/package-mac-signed.mjs Adds a credential-gated signed macOS packaging entrypoint.
scripts/inspect-macos-release.test.mjs Adds tests for identity contract parsing and signature drift detection.
scripts/inspect-macos-release.mjs Implements ZIP/DMG reopening + signature/Gatekeeper/stapler verification against a pinned identity.
scripts/check-release-consistency.mjs Adds macOS identity contract checks and release gate text enforcement.
README.md Documents the new maintainer-only pnpm package:mac command.
package.json Adds package:mac and includes the new macOS inspection test in packaging tests.
electron-builder.config.mjs Gates hardened runtime, notarization, and entitlements on T4_MACOS_SIGNED_BUILD.
docs/RELEASE_GATE.md Adds macOS signing/notarization requirements to the release checklist.
docs/MACOS_SIGNING.md Adds maintainer-facing documentation for signing/notarization and secret handling.
apps/desktop/build/entitlements.mac.plist Adds macOS hardened-runtime entitlements used for signed builds.
.github/workflows/release.yml Updates the protected release job to build signed macOS artifacts and verify identity/notarization before staging.
.github/macos-release-identity.json Adds the pinned public macOS Developer ID identity contract.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread scripts/packaging.test.mjs Outdated
@wolfiesch
wolfiesch merged commit 285d101 into main Jul 19, 2026
4 checks passed
@wolfiesch
wolfiesch deleted the codex/signed-macos-distribution branch July 19, 2026 04:25
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