Repository navigation
macOS support: fix launch signing, restart/update, release CI - #171
Open
notryanfraser wants to merge 7 commits into
Open
notryanfraser wants to merge 7 commits into
notryanfraser wants to merge 7 commits into
Conversation
- Set bundle identifier, version, and export path for the macOS preset - Sign with Xcode codesign instead of Godot's built-in signer; the built-in ad-hoc signature gets the binary SIGKILLed at exec on current macOS (exit 137, launchd error 163) - Ignore local build/ output Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The published 0.2.0 macOS.zip ships as wiki.rhythia.net; match it so local and CI exports are the same app to macOS. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- restartGame passed the relaunch script to /bin/sh without -c, so sh treated it as a filename and the game never came back on macOS/Linux - macOS relaunch resolved Rhythia.app/Contents instead of the .app - Quote paths passed to the shell - Updatum detects .app bundles via AppContext.BaseDirectory, which Godot points at Contents/Resources, so it would sync updates inside the running bundle; swap the .app ourselves on macOS instead Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Settings toggle uses Cmd+O on macOS (Ctrl+O elsewhere) - Search box no longer captures keypresses held with Cmd - Drop unused Constants.ROOT_FOLDER (cwd is / when launched from Finder) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Exports all three presets from the committed export_presets.cfg on release publish (or manual dispatch) and uploads Windows.zip, Linux.zip, and macOS.zip with the same layout as current releases. - macOS exports on a macOS runner since the preset signs with Xcode codesign; the job launches the app to catch signing regressions - Godot version comes from .github/godot_version.txt, same as CI - Fix the opengl3 compatibility launchers: the .sh passed the flag as one quoted argument, the .bat only worked from the game folder - Stop ignoring export_presets.cfg, it is tracked and CI needs it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Builds are ad-hoc signed (no Developer ID), so document Open Anyway and the xattr command for the first launch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Hey! Some context first: I put this together to help someone who was frustrated with how Rhythia runs on their ARM Mac. While looking into it I found the 0.2.0
macOS.zipdoesn't actually launch on current macOS (it gets killed right away), so this grew into getting macOS builds working properly. No pressure to merge any of it. If you'd rather take only some pieces, or redo them your own way, go for it.Why the macOS build doesn't launch
Godot's built-in ad-hoc signer (
codesign/codesign=1in the macOS preset) produces a signature that current macOS rejects: the binary is SIGKILLed at exec (exit 137, launchd error 163). Re-signing the same app with Apple'scodesignfixes it, so the preset now uses the Xcode codesign option (3). That also means macOS builds have to be exported on a Mac.Changes
wiki.rhythia.net(same as the 0.2.0 release), version 0.2.0, Apple codesignrestartGame()passed the relaunch script to/bin/shwithout-c, soshtreated it as a filename and the game never came back. macOS also resolvedRhythia.app/Contentsinstead of the.app. Paths are quoted now..appthroughAppContext.BaseDirectory, which Godot points atContents/Resources, so it would sync the update inside the running bundle. On macOS the app is now swapped by a small script instead (the old app is restored if the copy fails). Windows/Linux still go through Updatum unchanged..github/workflows/release.yml): on release publish, exports Windows/Linux on Ubuntu and macOS on a macOS runner, then uploadsWindows.zip/Linux.zip/macOS.zipwith the same layout as the current releases. The macOS job launches the app so a bad signature fails CI. Godot version comes from.github/godot_version.txt..shpassed"--rendering-driver opengl3"as a single argument, so Godot ignored it, and the.batonly worked from inside the game folder.Constants.ROOT_FOLDERand stopped ignoringexport_presets.cfg(it's tracked and CI needs it)Testing
macOS.ziplaunches on Metal Forward+. Imported 76.sspmmaps (0 corrupt), played a full map with Autoplay (100%, no errors), and checked that the song timer runs at real speed.dotnet format --verify-no-changesanddotnet csharpier check .passNotes
AI usage
This was done with Claude Code (Anthropic). I reviewed the changes and tested the build on my Mac as described above.
🤖 Generated with Claude Code