Spellbreak now builds locally as:
build/Spellbreak.appdist/Spellbreak-v1.0.0.dmg
The build scripts produce a universal app binary when both arm64 and x86_64 builds succeed, and they fall back cleanly to a single-arch app if the second architecture cannot be built on the current machine.
For friends, website downloads, and general outside-the-App-Store shipping:
- Build a signed app + DMG
./build-dmg.sh --sign "Developer ID Application: Your Name (TEAMID)" - Notarize the DMG
xcrun notarytool submit dist/Spellbreak-v1.0.0.dmg \ --keychain-profile "AC_PASSWORD" \ --wait xcrun stapler staple dist/Spellbreak-v1.0.0.dmg - Upload the notarized DMG to
spellbreak.app
Unsigned builds are fine for local testing, but they should be treated as beta-only artifacts.
Mac App Store submission is a different path from Developer ID distribution.
- Developer ID: website / direct download / notarized DMG
- Mac App Store: archive in Xcode, upload to App Store Connect, submit for review
Use the App Store path when you want:
- native App Store installation
- automatic update flow through Apple
- App Store review and listing
./build-app.sh
open build/Spellbreak.app./build-dmg.sh --sign "Developer ID Application: Your Name (TEAMID)"- capture screenshots from the current build
- archive in Xcode
- upload that archive to App Store Connect
spellbreak/
├── build/Spellbreak.app
├── dist/Spellbreak-v1.0.0.dmg
├── build-app.sh
├── build-dmg.sh
├── SIGNING_GUIDE.md
└── APP_STORE.md
Spellbreak-v1.0-unsigned.zipis a legacy beta artifact and should not be treated as the source of truth for current release status.- If Gatekeeper complains about an unsigned local build, that is expected until you sign + notarize the DMG.