25b7a58e3c
- Style the QComboBox popup (QAbstractItemView) — it's a separate widget the theme didn't cover, so the drop-down list rendered light-on-light. - Install/Apply finding buttons used PrimaryButton (accent fill + dark text), whose fill didn't paint reliably inside the finding cards, leaving dim dark-on-dark text. New outlined ActionButton style: bright accent text on the dark card, fills accent on hover, with a min-height so the row can't crush it. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
15 KiB
15 KiB
Changelog
All notable changes to RigDoctor are recorded here. Format follows
Keep a Changelog; versioning is SemVer-style
(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.10.1] - 2026-05-22
Fixed
- Environment-page contrast. The combo-box drop-down list was rendering light-on-light (the popup view is a separate widget the theme didn't cover) — now dark with readable text.
- The Install / Apply buttons on findings were hard to read (the accent fill didn't paint reliably inside the finding cards, leaving dim dark-on-dark text). They're now an outlined style — bright accent text on the dark card, filling accent on hover — readable regardless, and given a minimum height so the row can't crush them.
[0.10.0] - 2026-05-22
Added
- Actionable Environment page (M6) — install & apply, not just advice. Findings that
recommend a tool or a setting are now one-click:
- Install buttons for GameMode, MangoHud, and cpupower (added to the M9 component catalog, so they also appear on the Setup page with the existing installer).
- Apply controls for runtime-reversible tunables — a dropdown of the live options + Apply,
via a single pkexec prompt, no reboot: CPU governor, NVIDIA persistence mode,
PCIe ASPM policy, vm.swappiness, Transparent HugePages (
core/fixes.py). The chosen value is validated against the live options before anything runs. - This is the consent-gated apply milestone D9 anticipated, scoped to safe settings (D22).
GRUB-based fixes and CPU mitigations stay suggestion-only;
rigdoctor gameenvstill prints the exact commands for headless use.
Changed
- The
Findingmodel gained optionalaction(installable component) andfix(applyable tunable) fields; the sharedfinding_cardwidget renders the matching control.
[0.9.0] - 2026-05-22
Added
- Gaming environment checks (M6) — the evaluate-and-suggest engine. A new read-only report
(D9) that flags system settings which hurt gaming stability/performance and gives the exact fix
command. Checks: PCIe ASPM, NVIDIA persistence mode, CPU governor (the three that
map to the seed-case GPU bus-drop / Xid 79), GameMode, MangoHud,
vm.swappiness, shader disk cache, Transparent HugePages, CPU mitigations, and installed Proton versions.- CLI:
rigdoctor gameenv(text or--json). - GUI: a new Environment page (findings cards, auto-runs on open), reusing the M4
health-report card style via a shared
finding_cardwidget.
- CLI:
Fixed
- Notification icon now uses the RigDoctor icon (matching the app/dock) instead of a generic stock icon — resolved from the installed icon theme, the bundled asset, then a stock fallback.
[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 (parsingappmanifest_*.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 gameslists detected games;rigdoctor games libraries [--enable PATH | --disable PATH | --all]lists/selects libraries (headless-complete, D17).
- Config now supports list values (TOML arrays);
steam_librariesrecords 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 read; it keeps a history buffer and only auto-scrolls to the bottom when you're already there.
[0.7.2] - 2026-05-21
Changed
- Removed the GUI Inventory tab — use the CLI
rigdoctor inventoryinstead. (Inventory is still collected for the relay guest view, so a remote helper still sees the host's hardware.)
Fixed
- Shared terminal caret now sits at the real cursor position (row and column) instead of the start of the line.
[0.7.1] - 2026-05-21
Fixed
- Shared terminal: a guest who joined after the host enabled the terminal stayed read-only. The host now re-sends the terminal state when a guest joins, so the terminal is available.
- Inventory page no longer jumps back to the top when it refreshes (e.g. when elevated data arrives) — scroll position is preserved and unchanged data isn't re-rendered.
- Shared terminal now follows the cursor to the bottom as output arrives (e.g.
ls -la), instead of staying scrolled up.
[0.7.0] - 2026-05-21
Added
- Shared terminal (M12, Tier 3): when the host enables it, the session shares a real PTY
shell — the guest gets an interactive terminal (vim, top, tab-completion, Ctrl-C) running on
the host as the host's user. The host reads along live and can type too, e.g. a
sudopassword — which stays local and is never sent to the guest. Off by default, host-consented. The guest also pulls the host's inventory on join.
Fixed
- Input contrast: all form controls (text fields, spin boxes, combo boxes, terminals) now use the dark theme with readable text (Fusion defaulted them to light-on-light).
[0.6.0] - 2026-05-21
Added
- Session sharing over the relay (M12): a Share tab — Start shared session (host)
hands you a short code and streams a read-only live view; Enter share code (guest) joins
someone else's session and views their sensors/health/inventory. Both connect outbound over
WebSocket to the relay (
relay_url, defaultwss://rigdoctor.jesseyvanofferen.com), gated by your Gitea access token — no port forwarding. Read-only.
[0.5.0] - 2026-05-21
Added
- Session sharing (M12, Tier 2):
rigdoctor share servestarts a read-only live view (sensors auto-refresh + health report + inventory) over a local HTTP server, gated by a random share token. Bind to localhost for local testing, or to all interfaces behind a user-chosen tunnel (Tailscale/cloudflared/SSH) for remote help. No actions, no terminal. (Tier 1 export and Tier 3 gated terminal still to come — D16.)
[0.4.1] - 2026-05-21
Fixed
- Checkbox contrast: a checked checkbox is now a clear accent-filled box with a checkmark (was hard to tell checked from unchecked on the dark theme).
[0.4.0] - 2026-05-21
Added
- Alerts (M8): desktop notifications (via
notify-send) for overheat (GPU/CPU past a threshold), GPU-lost (nvidia-smi timeout), and a new version available (fired once per version). Edge-triggered with a cooldown so it doesn't spam. Degrades gracefully ifnotify-sendisn't installed. - Notifications page: configure alerts (enable/disable, GPU/CPU temperature thresholds)
with a "Send test" button; changes apply live and persist to
config.toml. - App icon: ships a RigDoctor icon and shows it in the dock/launcher. The GUI
self-registers the icon +
.desktopon launch (and sets the Wayland app-id), so a self-update + relaunch picks it up — no need to re-run the installer.
[0.3.2] - 2026-05-21
Changed
- Replaced the per-page "Run with admin" buttons with a single password prompt at launch
(
pkexec): the GUI collects root-only data (SMART + dmidecode board/BIOS/RAM) once and caches it for the session, so Health and Inventory always show the full picture. Falls back to non-root if cancelled/unavailable; disable viaelevate_on_launch = false.
[0.3.1] - 2026-05-21
Fixed
- Changelog/release notes now render Markdown instead of showing raw
#/**markup — the in-app changelog usesQTextEdit.setMarkdown()and the update prompt renders notes as rich text (closes #1).
[0.3.0] - 2026-05-21
Added
- System inventory (M5): CPU, GPU (model/driver/VBIOS/VRAM/PCIe), motherboard/BIOS, RAM
(total + modules), storage, kernel, and display server. CLI
rigdoctor inventory(--json/--markdown/--output) and a GUI Inventory tab with Copy-as-Markdown, Save, and "Run with admin" (fordmidecodeboard/BIOS/RAM details). Fills the last GUI tab.
[0.2.0] - 2026-05-21
Added
- "Check for updates" button in the sidebar — force an immediate version check instead of waiting for the 30-minute poll.
[0.1.1] - 2026-05-21
Fixed
- Dialogs (the update prompt and changelog) were light-on-light and unreadable — they now use the dark theme with readable text.
[0.1.0] - 2026-05-21
First milestone release — a complete, installable, self-updating RigDoctor: live monitoring, crash capture + health report, desktop GUI, user-local install/uninstall, and updates.
Added
- In-app uninstaller: "Uninstall RigDoctor" button on the Setup page (and
rigdoctor uninstall [--purge]) — removes the venv, launchers, and desktop entry, with an option to also wipe settings/token/logs. Runs detached so it can delete its own venv. - In-app changelog: a "Changelog" link in the sidebar opens the release history (tags + notes) fetched from the update server.
[0.0.10] - 2026-05-21
Added
- "Restart now" button after a successful in-app update — relaunches RigDoctor for you instead of asking you to restart manually.
- Real release notes: CI now sets each Gitea release's body from the matching CHANGELOG
section (instead of "Automated release for…"), and the updater shows "What's new" — a
notes dialog before applying (GUI) and in
rigdoctor update(CLI).
Changed
- Setup page /
rigdoctor install: dropped internal module references (M4, M5, …) from the component descriptions — end users don't need them. - Adopting Conventional Commits + git-cliff (
cliff.toml,packaging/changelog.sh) to generate CHANGELOG entries from commit history going forward (D20).
Fixed
- The self-extracting
.runinstaller is now built without makeself (a pure-Python self-extractor,packaging/make_run.py), so it reliably attaches to every release — it was silently skipped before because the CI runner couldn't install makeself.
[0.0.8] - 2026-05-21
Added
- Periodic update checks: the GUI now re-checks for new releases while running (every
update_check_minutes, default 30; 0 disables), so a newly published version is detected without restarting. After applying an update, re-checks stop until restart. - "Run with admin" on the Health page: runs all checks (including root-only SMART) via
pkexec rigdoctor report --json, so the full report — not just "SMART needs root" — is available from the UI.
[0.0.7] - 2026-05-21
Added
- User-local installer
install.sh(no root): creates a private venv, linksrigdoctor/rigdoctor-guiinto~/.local/bin, and adds a desktop entry. Re-run to upgrade;--uninstallto remove. - Self-extracting
.runinstaller viapackaging/make-run.sh(makeself) — one download-and-run executable bundling the wheel +install.sh; built and attached to each release by CI. - Self-update apply (M13):
rigdoctor updatenow installs the newer version via authenticated pip (rigdoctor[gui] @ git+https://oauth2:<token>@…@<tag>); the GUI sidebar "Update to v…" button applies it and prompts to restart. Token is scrubbed from output.
[0.0.6] - 2026-05-21
Added
- Token-gated updates (M13): store a Gitea Personal Access Token, encrypted in the OS
keyring (Secret Service / GNOME Keyring via
secret-tool) with a 0600-file fallback.rigdoctor login/logout/update [--check]; GUI Setup → Update access panel (token field, "Get a token", backend status) and sidebar states (connect / up-to-date / "Update to v…" / access denied). Updates are gated to accounts on the Gitea server (D18). libsecret-toolsadded to the installer catalog (enables encrypted token storage).
Changed
- D18 update mechanism revised from anonymous public HTTP to authenticated HTTP (token) — the Gitea instance requires sign-in for all anonymous access.
[0.0.5] - 2026-05-21
Added
- M9 installer (first cut): detects distro / package manager / GPU; a catalog of optional
components (smartmontools, lm-sensors, dmidecode, pciutils, libnotify) with what each
enables;
rigdoctor install [--check] [-y]installs missing apt packages via pkexec/sudo with consent; GUI Setup tab with one-click install. Fixes the "smartmontools missing" gap in the health report. - Update check (M13, check half): on GUI launch the sidebar checks the Gitea releases API and shows "up-to-date", an "Update to v…" button if a newer release exists, or "update check unavailable" if the API can't be reached anonymously.
[0.0.4] - 2026-05-21
Added
- M4 health report: scans kernel logs (NVIDIA Xid incl. 79 "fell off the bus", kernel panic, OOM, MCE, PCIe AER, thermal, amdgpu reset), SMART health, NVIDIA driver/library mismatch, journald persistence, and live temps → prioritized plain-language findings with suggested fixes (read-only, D9).
- CLI
rigdoctor report(text +--json). - GUI Health tab: runs checks in the background; findings shown as severity-colored cards.
- Tests for the journal scanner.
[0.0.3] - 2026-05-21
Added
- Show the app version (
v<version>) in the GUI sidebar.
[0.0.2] - 2026-05-21
Added
- M3 crash-capture logger: crash-safe JSONL (
fsyncper sample), size-based rotation, GPU-lost/recovered event markers, atomic status file;rigdoctor record run|start|stop| status|report(foregroundrunis the systemd-ready entrypoint). - GUI Recording/Logs page (M10): start/stop/interval controls, live status, and the
post-crash report — driving the same recorder via shared
core.reccontrol. - Shared render helpers (
format_raw,format_headline,render_summary) used by CLI + GUI. - Tests for the crash log (writer, rotation, reader, summary, recorder).
- Gitea Actions release workflow (
.gitea/workflows/release.yml): on push tomain, builds wheel + sdist and publishes a Gitea releasev<version>with the artifacts.
Changed
- GUI-first emphasis (D17): docs reframed; the CLI keeps full parity for headless/SSH.
- CPU core temperatures ordered (package, then core 0, 4, 8, …) at the source — fixes the CLI ordering too.
- Distribution revised (D8): user-local self-updating install is primary,
.deboptional.
Planned (docs only)
- M12 session sharing / remote assist (D16); M13 no-root auto-update from the public repo (D18); versioning/changelog convention (D19).
[0.0.1] - 2026-05-21
Added
- Initial release: planning docs and decisions (D1–D15); M1 sensor core (NVIDIA GPU via
nvidia-smi, CPU via hwmon, memory + DDR5 SPD temps, NVMe); CLI (
snapshot,monitor,sources); and the M10 desktop GUI — dark dashboard with circular gauges and collapsible, temperature-colored cards.