ce5f830393
release / release (push) Successful in 2m13s
Crash-capture logger (M3): - crash-safe JSONL (fsync per sample), size-based rotation, GPU-lost/recovered markers, atomic status file - CLI: record run/start/stop/status/report (run = systemd-ready entrypoint) - shared core.reccontrol so CLI + GUI drive the same recorder - crashlog tests (writer, rotation, reader, summary, recorder) GUI: - Recording/Logs page: start/stop/interval controls, live status, post-crash report - shared render helpers (format_raw/headline, render_summary) Docs/decisions: - GUI-first (D17); CLI keeps full parity - D8 revised: user-local self-updating install primary, .deb optional - planned: M12 session sharing (D16), M13 no-root auto-update from public repo (D18) - versioning + CHANGELOG convention (D19) Infra: - .gitea/workflows/release.yml: build wheel+sdist and publish a Gitea release v<version> on push to main - align version to the 0.0.x release line; bump to 0.0.2 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
68 lines
3.6 KiB
Markdown
68 lines
3.6 KiB
Markdown
# RigDoctor — Roadmap (DRAFT v0.2)
|
||
|
||
Phased so the seed use case (capturing the RTX 3070 crash / black-screen events) is solved
|
||
early, before the broader "tool for all Linux gamers" work. Stack: Python 3 + Qt/PySide6;
|
||
Ubuntu + NVIDIA first; `.deb` distribution (see `DECISIONS.md`).
|
||
|
||
## Phase 0 — Workspace & spec *(done)*
|
||
- [x] Create repo + docs scaffold
|
||
- [x] Settle the foundational decisions D1–D11 (name, language, platform/GPU priority, MVP
|
||
scope, trigger model, packaging, scope-of-action, GUI/tray)
|
||
- [x] Lock the MVP scope (M1 + M3 + M4, NVIDIA-only)
|
||
|
||
## Phase 1 — MVP: capture *this* crash (Essential bundle, NVIDIA-only, CLI)
|
||
- [x] M1 sensor core (NVIDIA via nvidia-smi + hwmon for CPU/RAM/NVMe), stdlib-only
|
||
- [x] M3 crash-capture logger (JSONL, fsync per sample, GPU-lost detection, size rotation)
|
||
- [x] Manual trigger mode (`rigdoctor record run/start/stop/status`); `systemd --user`
|
||
service + other trigger modes in Phase 4 (`run` is already the service entrypoint)
|
||
- [ ] M4 health report (Xid/panic/OOM/MCE/AER/thermal scan + driver-mismatch + snapshot,
|
||
suggested fixes only — D9)
|
||
- [x] `record report` post-crash summary (peak temps/power per subsystem, events, last N samples)
|
||
- **Exit criteria:** user can run it during gaming and, after a freeze/black-screen, see the
|
||
last readings + a plausible cause.
|
||
|
||
## Phase 2 — Live monitor (terminal)
|
||
- [ ] M2 TUI dashboard (current/min/max, grouped, throttle highlighting)
|
||
- [ ] M8 basic alerting (overheat/throttle/GPU-lost notifications)
|
||
|
||
## Phase 3 — Diagnostics breadth
|
||
- [ ] M5 system inventory + exportable report
|
||
- [ ] M6 gaming environment checks (suggest-only)
|
||
- [ ] SMART integration (smartmontools if present)
|
||
|
||
## Phase 4 — Desktop UI & installer
|
||
- [ ] M10 desktop GUI (PySide6: dashboard, log browser, report viewer, logger controls)
|
||
- [ ] M11 tray / menu-bar applet (QSystemTrayIcon: live M1 readouts + Run Diagnostic +
|
||
supporting actions — D13)
|
||
- [ ] Guided diagnostic session (pick game → focused M3 capture → M4 scan → findings),
|
||
shared by tray/GUI/CLI
|
||
- [ ] Logger trigger modes: always-on + game-launch (D12 — wrapper first:
|
||
`rigdoctor wrap %command%` + global Steam compat-tool; zero-config watcher
|
||
(Steam RunningAppID + /proc) and GameMode hook follow)
|
||
- [ ] M9 interactive installer (GPU detection, module menu, apt dependency resolution,
|
||
service enable + trigger-mode pick)
|
||
- [ ] `.deb` packaging (D8) declaring per-bundle deps incl. python3-pyside6 for Desktop UI
|
||
|
||
## Phase 5 — Breadth (later)
|
||
- [ ] AMD GPU support in M1 (Steam Deck / Radeon)
|
||
- [ ] Intel GPU best-effort
|
||
- [ ] M13 auto-update (D18) — launch-time version check + no-root self-update of the
|
||
user-local install from the public Gitea releases; GUI prompt + `rigdoctor update`
|
||
- [ ] (Later, separate milestone) Optional auto-apply of suggested fixes behind explicit
|
||
consent — currently out of scope (D9)
|
||
|
||
## Phase 6 — Session sharing / remote assist (M12, D16)
|
||
Escalating ladder, built in order:
|
||
- [ ] Tier 1: `share export` — diagnostic bundle (inventory + recent log + report); B opens
|
||
it in RigDoctor. One-way, safest.
|
||
- [ ] Tier 2: live read-only view (local server + user-chosen tunnel: Tailscale/cloudflared/
|
||
SSH; no hosted relay), token-gated, A approves, revocable.
|
||
- [ ] Tier 3: gated interactive terminal (wrap tmate/sshx; read-only default, read-write on
|
||
explicit consent), with session audit log.
|
||
|
||
> **Out of scope:** stress/repro module (D7); multi-distro support and packaging beyond
|
||
> Ubuntu/apt + `.deb` (D15) — a thin seam is kept but not built out.
|
||
|
||
> **Dropped:** stress / repro module (D7) — not on the roadmap.
|
||
</content>
|