Skip to content

Add per-game executable selection - #701

Merged
aaf2tbz merged 3 commits into
mainfrom
feature/per-game-executable-selector
Oct 1, 2026
Merged

aaf2tbz merged 3 commits into
mainfrom
feature/per-game-executable-selector

Conversation

@aaf2tbz

@aaf2tbz aaf2tbz commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Add per-game Windows executable selection for installed Steam, Ubisoft, GOG, and Epic titles. The picker starts in the current executable's folder when available, and the saved relative path is constrained to the game's install directory. Internal version metadata is aligned at 0.76.0; no Git tag is included in this PR. Create the release tag after merge to trigger release CI.

Changes

  • Add a shared backend utility to validate, persist, and resolve per-provider executable overrides.
  • Add selector controls to the Steam/Ubisoft Library hero settings and GOG/Epic game cards.
  • Use saved overrides on provider launches; retain each provider's existing automatic selection when no override exists.
  • Document the controls and install-folder restriction in the user guide.
  • Add regression coverage for persistence, invalid extensions, stale files, and paths/symlinks outside the install root.

PR Readiness

  • Real-game launch test completed for game/runtime/graphics/compatibility changes (game + method below; otherwise mark N/A)
  • No hardcoded paths, secrets, or absolute /Users/... paths introduced
  • Config/rules TOML validated if configs/mtsp-rules.toml or DLL maps changed
  • Version metadata (CMakeLists.txt, app/src-c/Makefile, package.json, package-lock.json) in sync if version bumped
  • Bottle/runtime migration and launch behavior preserved (rollback plan noted if changed)
  • Docs / compatibility matrix updated for user-facing changes
  • Regression test added for each bug fix

CI Summary

  • make -C app/src-c test — passed.
  • npm run build and npx tsc --noEmit — passed.
  • Biome CI and Prettier checks — passed; Biome reports existing non-blocking warnings.
  • clang-format --dry-run --Werror on changed C files — passed.
  • Pre-commit hook — passed.
  • GitHub Actions — all applicable workflows passed; the mandatory readiness checklist is intentionally skipped while this PR is draft.

Local toolchain

  • C backend builds and tests: make -C app/src-c test
  • C++ compiles if changed (no native C++/Obj-C files changed)
  • clang-format --dry-run --Werror passes on changed C files
  • ctest --test-dir build-native passes if tests changed (no native ctest tests changed)
  • TypeScript compiles: cd app && npx tsc --noEmit
  • Biome + Prettier pass for changed app sources
  • Shell scripts lint if changed (no shell scripts changed)
  • Rules TOML validation if changed (no rules/TOML changed)
  • DMG workflow validation if changed (no release/bundle tooling changed)
  • Real-game smoke test: pending; no game was launched against this checkout's build.
  • No hardcoded paths, secrets, or absolute /Users/... paths
  • No new files added to the repo root

Test notes

The backend and frontend test suites passed. This changes game-library launch behavior, so a real-game launch is still required before marking the PR ready. The installed /Applications/MetalSharp.app was not replaced for this PR; no game smoke test against the new build has been performed.

Risk

The selected executable is stored as a relative path under the game's install directory. With no override, the current provider launch behavior remains in effect. If an override causes a regression, remove that game's entry under config/game-executables/ (or revert this change) to restore automatic executable selection.

@aaf2tbz
aaf2tbz marked this pull request as ready for review October 1, 2026 13:11
@aaf2tbz
aaf2tbz merged commit 5e21553 into main Oct 1, 2026
14 of 15 checks passed
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