Skip to content

Split Steam runtime and game runner routing#50

Merged
weter11 merged 1 commit into
mainfrom
codex-l55ptu
Jun 21, 2026
Merged

Split Steam runtime and game runner routing#50
weter11 merged 1 commit into
mainfrom
codex-l55ptu

Conversation

@weter11

@weter11 weter11 commented Jun 21, 2026

Copy link
Copy Markdown
Owner

Motivation

  • Prevent Proton bootstrap from running against the background Steam host prefix by decoupling which runtime hosts background Steam from which runtime hosts the game.
  • Let real Proton trees run games via their proton run script so Proton's bundled protonfixes run naturally, and provide a fallback fixup mechanism for plain Wine/wine-tkg.
  • Provide deterministic detection and routing across the full 6-row support matrix and surface clear errors/warnings for unknown runner configurations.

Description

  • Added runner classification (RunnerKind) and classify_runner + validate_steam_runtime_runner_path in src/utils.rs, including unit tests exercising Proton/plain-Wine/Unknown cases and the 6-row support-matrix routing decisions.
  • Changed background Steam startup in WineTkgRunner::prepare_prefix to never fall back to the game runner: it now resolves a wine-tkg/plain Wine runner or extracts and invokes Proton's bundled wine64 directly for background Steam (bare wine invocation), and surfaces clear LaunchError for unknown/missing cases.
  • Added game-runner classification in the game launch path so real Proton with protonfixes uses proton run unchanged, while plain Wine / Proton-without-protonfixes uses bare wine and runs the new Rhai fixup layer; merged fixup outputs (env and DLL override fragments) into the final environment/overrides in wine_tkg runner.
  • Implemented a working Rhai fixup subsystem in src/launch/fixups/mod.rs with FixupContext/FixupResult, seed scripts (3–5 examples), ResolveGameFixupsStage in the pipeline, and wiring to PipelineContext/Runner LaunchContext so results are applied before final command construction.
  • Instrumented launch verification with protonfixes_routed: bool and rhai_fixup_applied: Option<String> in LaunchVerification and included these fields in the concise launch summary metadata; added a small UI validation warning for Steam Runtime Runner pointing at unknown paths.
  • Added rhai = { version = "1", features = ["sync"] } to Cargo.toml and included unit tests for the fixup loader (including malformed-script handling).

Testing

  • Ran the full test suite with cargo test -q, and all new and existing unit tests passed (tests exercised classify_runner, Rhai fixup loader including malformed-script behavior, and runner routing logic).
  • Attempted cargo build --release -q in this CI-like environment but the build process timed out before completion; no compiler errors were emitted during the work that produced these changes.
  • Added/updated unit tests: runner classification tests, fixup seed-script execution test, malformed-script error test, and ensured existing infra/runner tests were updated and continue to pass under cargo test.

Codex Task

@weter11 weter11 closed this Jun 21, 2026
@weter11 weter11 reopened this Jun 21, 2026
@weter11 weter11 merged commit dcaba7e into main Jun 21, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant