Skip to content

[5/9] Harden the macOS loader and launcher - #5

Open
friendly-ripper wants to merge 2 commits into
stack/04-features-settings-syncfrom
stack/05-macos-launcher
Open

friendly-ripper wants to merge 2 commits into
stack/04-features-settings-syncfrom
stack/05-macos-launcher

Conversation

@friendly-ripper

@friendly-ripper friendly-ripper commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

Part 5 of 9 · base stack/04-features-settings-sync · 2 commits

The macOS loader could keep going with a bad path or a dangling string and then run the wrong thing, quietly. This PR makes both the loader and the launcher stop with a readable message instead.

What changes

  • The loader no longer keeps a pointer into an autoreleased string. A missing settings file or game path fails with a message on stderr instead of being ignored. Symlinks are resolved and the loader runs the resolved path, so launching through a link no longer injects a dylib path that does not exist.
  • The launcher uses the Xsolla updater directly and drops unused view state. Required entitlements are compared without redundant reapplication flags, and UI work stays on the main actor. The rsync bridge owns its patch handles and reports read, write, patch, and close failures instead of dropping them.

Behavior changes

  • A broken install stops with a message the player can read. It no longer launches with a missing settings file, a missing game path, or a dylib path that does not exist.

Testing

Built with xmake. Every commit was built on macOS arm64. Nothing was run in the game.

tashcan added 2 commits October 15, 2026 16:40
The loader kept a pointer into an autoreleased string, ignored
a missing settings file or game path, then executed a relative
path. Each case now fails with a message on stderr.

Symlinks are resolved, so launching through a link no longer
injects a dylib path that does not exist.
The launcher uses the Xsolla updater directly and drops unused
view state. Required entitlements are compared without
redundant reapplication flags, and UI work stays on the main
actor.

The rsync bridge owns its patch handles and reports read,
write, patch and close failures instead of dropping them.
@friendly-ripper
friendly-ripper added this pull request to stack #9 October 18, 2026 16:31
@friendly-ripper
friendly-ripper force-pushed the stack/05-macos-launcher branch from ec3a418 to 3619c15 Compare October 18, 2026 18:49
@friendly-ripper
friendly-ripper force-pushed the stack/05-macos-launcher branch 2 times, most recently from 8a1a809 to f7ff4a2 Compare October 19, 2026 22:19
@friendly-ripper
friendly-ripper force-pushed the stack/05-macos-launcher branch from f7ff4a2 to be4b160 Compare October 20, 2026 16:06
@friendly-ripper
friendly-ripper force-pushed the stack/05-macos-launcher branch 2 times, most recently from 26c9b34 to b4c9501 Compare October 21, 2026 23:46
@friendly-ripper
friendly-ripper force-pushed the stack/05-macos-launcher branch from b4c9501 to 8d17f3d Compare October 22, 2026 00:43
@friendly-ripper
friendly-ripper force-pushed the stack/05-macos-launcher branch 2 times, most recently from 44477d3 to df8e545 Compare October 24, 2026 23:26
@friendly-ripper friendly-ripper changed the title [5/8] Harden the macOS loader and launcher [5/9] Harden the macOS loader and launcher Oct 24, 2026
@friendly-ripper
friendly-ripper force-pushed the stack/05-macos-launcher branch 2 times, most recently from 01dadd4 to e98acff Compare October 28, 2026 18:15
@friendly-ripper
friendly-ripper force-pushed the stack/05-macos-launcher branch from e98acff to ae49356 Compare November 2, 2026 14:23
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