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

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>
This commit is contained in:
2026-05-22 07:43:31 +02:00
parent f25ac939cc
commit 0642eb4712
12 changed files with 879 additions and 9 deletions
+16
View File
@@ -5,6 +5,22 @@ All notable changes to RigDoctor are recorded here. Format follows
(`MAJOR.MINOR.PATCH`, pre-1.0). `__version__` and `pyproject.toml` must match the git
release tag (so the auto-updater, D18, can compare versions).
## [0.8.0] - 2026-05-22
### Added
- **Gaming environment checks (M6) — Steam game detection.** RigDoctor now finds your Steam
libraries (across multiple drives, via `libraryfolders.vdf`) and the games installed in each
(parsing `appmanifest_*.acf` — stdlib only, no Steam tooling needed). Runtimes, Proton builds,
and redistributables are filtered out.
- **Opt-in libraries:** detected libraries are listed with a per-library game count; you check
the ones to scan. Nothing is scanned until you pick a library.
- **Background scan on every launch:** the GUI rescans the selected libraries in the background
when it opens and flags games installed since the last scan with a **NEW** badge plus a count
on the **Games** sidebar item (cleared when you view the page). Results are cached
(`~/.local/state/rigdoctor/games.json`) so the list shows instantly.
- **CLI:** `rigdoctor games` lists detected games; `rigdoctor games libraries
[--enable PATH | --disable PATH | --all]` lists/selects libraries (headless-complete, D17).
- Config now supports list values (TOML arrays); `steam_libraries` records the selected libraries.
## [0.7.3] - 2026-05-21
### Fixed
- Shared terminal now has **scrollback** — large output (e.g. `ls -la`) can be scrolled up to