This document is for contributors and maintainers.
- Swift: 6.2+
- Platform: macOS
Commands:
swift build
swift test
swift run MdMonitor
swift run mdm helpmake app
make dmg
make install
make install-localLocal packaging defaults to ad-hoc signing. Release artifacts from GitHub Actions should use a stable Developer ID signature.
- Project uses SemVer.
- Release tags use
v<major>.<minor>.<patch>. - Keep
packaging/Info.plistversion fields aligned with the tag.
- Ensure
masteris clean. - Run:
make release-tag VERSION=x.y.z
- CI workflow
.github/workflows/release.ymlbuilds artifacts and publishes the release automatically.
Set repository secrets before release:
SPARKLE_PRIVATE_KEY: base64 Ed25519 private seed (decoded 32 bytes)SPARKLE_PUBLIC_KEY: base64 Ed25519 public key (must matchSUPublicEDKeyinpackaging/Info.plist)
Signed release artifacts are optional. If these secrets are omitted, CI falls back to the previous ad-hoc signing flow and still publishes the release.
APPLE_DEVELOPER_ID_CERT_P12_BASE64: base64-encoded.p12file containing theDeveloper ID ApplicationcertificateAPPLE_DEVELOPER_ID_CERT_PASSWORD: password for the.p12certificate exportAPPLE_NOTARY_KEY_ID: App Store Connect API key id fornotarytoolAPPLE_NOTARY_ISSUER_ID: App Store Connect issuer id fornotarytoolAPPLE_NOTARY_PRIVATE_KEY_BASE64: base64-encoded.p8private key fornotarytool
If only the notarization secrets are omitted, CI still signs with Developer ID but skips notarization.
- Verbose event logging switch:
Sources/MdMMenuBar/Diagnostics.swift - Debug logs are written to daily log files next to markdown output.