Skip to content

fix: address all 10 code-review findings#15

Closed
gabrielgad wants to merge 7 commits into
split/cleanupfrom
split/review-fixes
Closed

fix: address all 10 code-review findings#15
gabrielgad wants to merge 7 commits into
split/cleanupfrom
split/review-fixes

Conversation

@gabrielgad

Copy link
Copy Markdown
Collaborator

From a high-effort multi-agent review of the branch — all 10 verified findings resolved.

Crashes / data loss: clear_tmp() reaps only dead-pid orphan scratch (no longer rm-rf's through a concurrent live session's overlay into player saves); has_steamstub_elf() bounds-checks the ELF offset instead of panicking.
Launch correctness: no_gamescope gated on the resolved seat list (matching build_cmds) not inst.together; Keen skips its launch arg when the emu binary is absent.
Concurrency isolation: standalone overlay + Keen data file namespaced per-launch; same-profile instances get distinct Proton prefixes.
Layout: fullscreen always honors the assigned monitor (never auto-spreads onto a virtual Sunshine output → wedge); tiling indexes the original window snapshot; Grid honors window_count.

Builds, 0 clippy warnings, 153 tests pass.

… isolation)

From the high-effort workflow review of the branch — all findings resolved:

Crashes / data loss:
- util.rs clear_tmp(): reap only dead-pid orphan scratch instead of rm -rf'ing the
  whole tmp/ tree (could delete through a concurrent live session's overlay into
  the player's save upperdir).
- steamless.rs has_steamstub_elf(): bounds-check the packer-controlled ELF section
  name offset so a bad offset returns 'not DRM' instead of panicking the launch.

Launch correctness (this session's gamescope-bypass + Keen work):
- execute.rs no_gamescope: gate on the resolved seat-list emptiness (matching
  build_cmds) not inst.together, so a failed together seat can't make the WM wait
  for a gamescope window that was never built and kill the game.
- keen.rs extra_launch_args(): skip --keenonline-server-data-file when the
  sideloaded emu binary is absent (lockstep with start_services' guard).

Concurrency isolation:
- standalone.rs: overlay under the per-launch namespaced tmp dir.
- keen.rs data_file_path(): per-launch namespaced (loopback port still emu-side).
- proton.rs get_prefix_path(): disambiguate two same-profile instances in one
  launch with a -p<n> suffix (first keeps its bare per-profile prefix) so Proton's
  prefix file-lock can't block the 2nd from booting.

Window-manager layout:
- niri.rs fullscreen: always honor the assigned monitor; never auto-spread onto
  another output (could land on a virtual Sunshine display → wedge). Removed the
  now-dead displays_assigned plumbing.
- niri.rs tile_windows_on_monitor: index the original window snapshot instead of
  re-fetching + stale-indexing.
- layout.rs Grid: honor window_count instead of a fixed 2x2.
Gamepad-type seats used to be the only ones getting the seat pad wired
(a phantom-controller precaution) which left kbm-type together seats padless
in-game. All input now goes to all together seats.
disable_gamescope used to gate on the launch as a whole (single lone local
seat only). Decide it per instance instead, keyed on monitor sharing: a local
instance alone on its own monitor bypasses the nested gamescope (kills the
double-compositor scan-line artifact on high-refresh panels) even when the
same launch also runs a together instance elsewhere, which keeps gamescope
for its PipeWire capture.

Window management follows: a bypassed instance is a native host-compositor
surface, so the niri backend resolves window->instance ownership through the
per-instance systemd scope (splitux-<ns>-g<game>-i<idx>.scope) instead of
trusting list order, relaxes matching to scoped-ownership, and treats
placement as best-effort rather than hard-aborting the launch.
keen-emu failures (e.g. AddrInUse from a stale port squatter) died silently
behind Stdio::null — surface them in the launch log.
Handle top-level help/version before scope re-exec and monitor probing;
subcommand help stays with clap.
Moves splitux's self-hosted CI jobs off the shared bare-metal `splitux`
runner fleet onto dedicated, ephemeral, per-job podman containers
(label splitux-ci) - Phase 2 of containerizing the org's runner fleet
(following splitux-together's Phase 1 pilot). gamescope-splitux and
gbe_fork-splitux's Linux jobs keep using the shared `splitux` label,
unaffected. Design/rationale in ~/ssh-workspace/ci-runners/README.md
on the lab.
@gabrielgad

Copy link
Copy Markdown
Collaborator Author

Landed via fast-forward merge to main (671e113) - only remaining delta was the CI runner label change, no conflicts.

@gabrielgad gabrielgad closed this Jul 3, 2026
@gabrielgad
gabrielgad deleted the split/review-fixes branch July 3, 2026 20:21
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