Add per-activity-type readiness gate; implement for Steam (#76) #77

Merged
albert merged 1 commit from u/albert/76/steam-readiness into main 2026-07-02 02:14:15 +00:00
Owner

Introduces a generalized per-activity-kind readiness signal that gates
whether a kind's entries can be shown or launched, mirroring the existing
internet-status pattern (host detection -> engine state -> evaluate_entry
-> UI), and implements it for Steam so games stay hidden until the
preloaded client finishes its initial load.

  • shepherd-api: ReasonCode::NotReady { kind }
  • shepherd-host-api: HostEvent::KindReadinessChanged { kind, ready }
  • shepherd-core: kind_readiness map + set_kind_readiness; gate in
    evaluate_entry (covers both list_entries and request_launch)
  • shepherd-host-linux: steam_webhelper_running() /proc detection and a
    readiness watcher started from preload_steam, with a 120s fallback so a
    missed signal never hides games forever
  • shepherdd: seed Steam not-ready before the first snapshot; apply
    KindReadinessChanged and re-broadcast state
  • shepherd-launcher-ui: NotReady reason string (grid already hides
    !enabled entries, so tiles reappear when ready)

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_016PHMm1qE3mZUkriB8dsNUW

Fixes #76

Introduces a generalized per-activity-kind readiness signal that gates whether a kind's entries can be shown or launched, mirroring the existing internet-status pattern (host detection -> engine state -> evaluate_entry -> UI), and implements it for Steam so games stay hidden until the preloaded client finishes its initial load. - shepherd-api: ReasonCode::NotReady { kind } - shepherd-host-api: HostEvent::KindReadinessChanged { kind, ready } - shepherd-core: kind_readiness map + set_kind_readiness; gate in evaluate_entry (covers both list_entries and request_launch) - shepherd-host-linux: steam_webhelper_running() /proc detection and a readiness watcher started from preload_steam, with a 120s fallback so a missed signal never hides games forever - shepherdd: seed Steam not-ready before the first snapshot; apply KindReadinessChanged and re-broadcast state - shepherd-launcher-ui: NotReady reason string (grid already hides !enabled entries, so tiles reappear when ready) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016PHMm1qE3mZUkriB8dsNUW Fixes #76
Add per-activity-type readiness gate; implement for Steam (#76)
All checks were successful
CI / ShellCheck (pull_request) Successful in 8s
CI / CI image (pull_request) Successful in 21s
CI / Rustfmt (pull_request) Successful in 9s
CI / Test (pull_request) Successful in 2m58s
CI / Build (pull_request) Successful in 3m2s
CI / E2E (pull_request) Successful in 3m25s
CI / Android portability (shepherd-media-core) (pull_request) Successful in 29s
CI / Clippy (pull_request) Successful in 3m26s
CI / Firewall E2E (pull_request) Successful in 3m52s
127562db1b
Introduces a generalized per-activity-kind readiness signal that gates
whether a kind's entries can be shown or launched, mirroring the existing
internet-status pattern (host detection -> engine state -> evaluate_entry
-> UI), and implements it for Steam so games stay hidden until the
preloaded client finishes its initial load.

- shepherd-api: ReasonCode::NotReady { kind }
- shepherd-host-api: HostEvent::KindReadinessChanged { kind, ready }
- shepherd-core: kind_readiness map + set_kind_readiness; gate in
  evaluate_entry (covers both list_entries and request_launch)
- shepherd-host-linux: steam_webhelper_running() /proc detection and a
  readiness watcher started from preload_steam, with a 120s fallback so a
  missed signal never hides games forever
- shepherdd: seed Steam not-ready before the first snapshot; apply
  KindReadinessChanged and re-broadcast state
- shepherd-launcher-ui: NotReady reason string (grid already hides
  !enabled entries, so tiles reappear when ready)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016PHMm1qE3mZUkriB8dsNUW
Author
Owner

Tested both with and without active network connection -- Steam activities correctly do not appear until Steam itself has loaded, allowing for near-instant activity launch once they actually appear

Tested both with and without active network connection -- Steam activities correctly do not appear until Steam itself has loaded, allowing for near-instant activity launch once they actually appear
albert merged commit bb0fab8d7b into main 2026-07-02 02:14:15 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
albert/shepherd-launcher!77
No description provided.