Skip to content

feat(installed): running-game detection + Stop, and a patient launch#143

Merged
phantomptr merged 1 commit into
mainfrom
feat/installed-running-stop
Jun 17, 2026
Merged

feat(installed): running-game detection + Stop, and a patient launch#143
phantomptr merged 1 commit into
mainfrom
feat/installed-running-stop

Conversation

@phantomptr

Copy link
Copy Markdown
Owner

Two Installed Apps improvements from real-world use.

1. Detect a running game + Stop it

A poll (3s, only while the screen is open) reuses the existing rich process list (process_list_get — title_id/app_id/kind, the same data the Processes screen shows) to find running games. The running title gets a "Playing" badge and its Play button becomes "Close game" (confirmed; appKill by app id, processKill(pid) fallback). Detection is read-only — it never touches a running or starting game; stopping is always explicit + confirmed.

2. Patient launch

Pressing Play holds a "Starting…" state and watches (read-only) for the title to actually appear in the process list before declaring it playing — first/cold launches can be slow. Play is disabled during this window so a second click can't fire a launch into a still-starting game (which is how it gets knocked back down). A slow start shows a calm "give it a moment" note — never an error, never a kill.

Safety / degradation

If the process list can't report a title (older payload/FW), the map is just empty → cards show plain "Play" as before. Nothing breaks, nothing is ever auto-stopped.

Scope / tests

  • Client-onlyprocessList/appKill/processKill already existed as commands.
  • New fetchRunningGames helper (dedupes a title's many processes, prefers a real app id, excludes self/payload/system) + 4 unit tests. 743 client tests green, typecheck/lint clean, i18n gate green (new strings in en.ts + allowlist).
  • HW: launch verified on a real PS5 (Phat, FW 5.10) — eboot.bin came up after appLaunch. (The rich title_id detection path is Tauri-direct, so it's exercised by the shipped Processes screen rather than a standalone curl.)

Release 3.3.22.

Two Installed Apps improvements requested from real use:

1. Detect a running game + stop it. A new poll (reusing the existing rich
   process list — title_id/app_id/kind, same data the Processes screen uses)
   marks the running title with a "Playing" badge and turns its Play button
   into "Close game" (confirmed; appKill by app id, processKill(pid)
   fallback). Read-only detection — it never touches a running/starting game;
   stopping is always explicit.

2. Patient launch. Pressing Play now holds a "Starting…" state and watches
   (read-only) for the title to actually appear before declaring it playing —
   first/cold launches can be slow. Play is disabled during this window so a
   second click can't fire a launch into a still-starting game (which is how
   it gets knocked back down). A slow start shows a calm "give it a moment"
   note, never an error, and never a kill.

Degrades gracefully: if the process list can't report a title (older
payload/FW), cards just show Play as before — nothing breaks. Client-only;
processList/appKill/processKill already existed. +4 helper tests; 743 green;
new strings added to en.ts + allowlist.

HW: launch verified on a real PS5 (Phat, FW 5.10) — eboot.bin came up after
appLaunch ok. Release 3.3.22.
@phantomptr phantomptr merged commit ac34e17 into main Jun 17, 2026
23 checks passed
@phantomptr phantomptr deleted the feat/installed-running-stop branch June 17, 2026 07:51
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