feat: Steam game & library detection (M6) — 0.8.0 #2

Merged
jessey merged 1 commits from feat/m6-steam-detection into main 2026-05-22 05:44:43 +00:00
Owner

The first slice of M6 (gaming-environment checks): detect a user's Steam
libraries and the games installed in each — also the D12 "pick a game"
foundation.

  • core/steam.py: multi-install/library discovery (libraryfolders.vdf, symlink
    dedupe, native/Flatpak/Snap), appmanifest_*.acf scan with runtime/Proton/
    redist filtering, scan cache + new-game diff. Stdlib only. VDF keys read
    case-insensitively (e.g. lastupdated vs SizeOnDisk).
  • Libraries are opt-in (config steam_libraries); the flat TOML writer now
    emits list/array values.
  • GUI Games page: library checkboxes with per-library counts, game list,
    background rescan on every launch, NEW badge + sidebar count for games
    installed since the last scan (acknowledged when viewed).
  • CLI: rigdoctor games / games libraries [--enable|--disable|--all|--json]
    (headless-complete, D17).
  • Tests for VDF parse, scan, tool filter, cache diff, config list round-trip.
  • Docs (MODULES/ROADMAP) updated; version 0.7.3 -> 0.8.0.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

The first slice of M6 (gaming-environment checks): detect a user's Steam libraries and the games installed in each — also the D12 "pick a game" foundation. - core/steam.py: multi-install/library discovery (libraryfolders.vdf, symlink dedupe, native/Flatpak/Snap), appmanifest_*.acf scan with runtime/Proton/ redist filtering, scan cache + new-game diff. Stdlib only. VDF keys read case-insensitively (e.g. lastupdated vs SizeOnDisk). - Libraries are opt-in (config steam_libraries); the flat TOML writer now emits list/array values. - GUI Games page: library checkboxes with per-library counts, game list, background rescan on every launch, NEW badge + sidebar count for games installed since the last scan (acknowledged when viewed). - CLI: rigdoctor games / games libraries [--enable|--disable|--all|--json] (headless-complete, D17). - Tests for VDF parse, scan, tool filter, cache diff, config list round-trip. - Docs (MODULES/ROADMAP) updated; version 0.7.3 -> 0.8.0. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
jessey added 1 commit 2026-05-22 05:43:56 +00:00
The first slice of M6 (gaming-environment checks): detect a user's Steam
libraries and the games installed in each — also the D12 "pick a game"
foundation.

- core/steam.py: multi-install/library discovery (libraryfolders.vdf, symlink
  dedupe, native/Flatpak/Snap), appmanifest_*.acf scan with runtime/Proton/
  redist filtering, scan cache + new-game diff. Stdlib only. VDF keys read
  case-insensitively (e.g. lastupdated vs SizeOnDisk).
- Libraries are opt-in (config steam_libraries); the flat TOML writer now
  emits list/array values.
- GUI Games page: library checkboxes with per-library counts, game list,
  background rescan on every launch, NEW badge + sidebar count for games
  installed since the last scan (acknowledged when viewed).
- CLI: rigdoctor games / games libraries [--enable|--disable|--all|--json]
  (headless-complete, D17).
- Tests for VDF parse, scan, tool filter, cache diff, config list round-trip.
- Docs (MODULES/ROADMAP) updated; version 0.7.3 -> 0.8.0.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
jessey merged commit d7f07dd7c0 into main 2026-05-22 05:44:43 +00:00
jessey deleted branch feat/m6-steam-detection 2026-05-22 05:44:55 +00:00
Sign in to join this conversation.