Force an immediate version check instead of waiting for the 30-minute poll.
Reuses the background update check; no-op while awaiting restart after an update.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The update prompt and changelog dialogs inherited the app's light text color on a
default light Fusion background, making them unreadable. Style QDialog/QMessageBox
with the dark theme and readable text.
First milestone release — a complete, installable, self-updating RigDoctor:
live monitoring, crash capture + health report, desktop GUI, user-local
install/uninstall, and token-gated self-update with real release notes.
- feat(gui): in-app uninstaller — Setup "Uninstall RigDoctor" button and
`rigdoctor uninstall [--purge]`; removes venv/launchers/desktop entry
(detached so it can delete its own venv), with optional purge of
settings/token/logs (core/uninstall.py)
- feat(gui): in-app changelog — sidebar "Changelog" link listing release
history fetched from the update server (updates.list_releases)
- chore: versioning rules + automation (D21) — git-cliff --bumped-version,
packaging/bump.sh, cliff.toml [bump] (pre-1.0: breaking -> minor)
- chore(release): stamp 0.1.0; milestone policy recorded in D19
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- feat(ci): set each Gitea release body from the matching CHANGELOG section
(was hardcoded "Automated release for…")
- feat(updater): show "What's new" — release notes dialog before applying (GUI)
and in `rigdoctor update` (CLI); fetch_latest/update_state now return notes
- feat(gui): "Restart now" button relaunches the app after an update is applied
- fix(packaging): build the self-extracting .run with a pure-Python extractor
(packaging/make_run.py) instead of makeself, so it attaches to every release
(it was silently skipped before)
- chore: adopt Conventional Commits + git-cliff (cliff.toml, packaging/
changelog.sh) for changelog generation going forward (D20)
- chore(gui): drop internal module refs (M4, M5, …) from Setup descriptions
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- GUI re-checks for new releases while running (every update_check_minutes,
default 30; 0 disables), so a newly published version is detected without a
restart; re-checks pause after an update is applied (awaiting restart)
- Health page "Run with admin" button: runs all checks incl. root-only SMART
via `pkexec rigdoctor report --json`, so the full report is available from the
UI (cancel keeps prior results)
- version 0.0.8, CHANGELOG
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Display v<version> (from __version__) beneath the Live indicator in the sidebar.
Bump version to 0.0.3 and update CHANGELOG.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
PySide6/Qt front-end over the stdlib sensor core (only gui/ imports Qt).
- sidebar navigation + stacked pages (Dashboard live; Logs/Health/Inventory
placeholders for M3-M5)
- live dashboard: circular gauges (GPU temp/load, CPU temp, memory) plus
collapsible per-subsystem cards with progress bars and metric rows
- background sampling thread -> Qt signal so the UI stays responsive
- temperature colors: icey-blue (cold) -> green -> orange -> red (hot)
- dark theme via QSS + Fusion
Supporting changes:
- cpu source: order temps as package, then cores numerically (fixes CLI too)
- render: expose format_value/metric_label, shared by CLI and GUI
- cli: `rigdoctor gui` (lazy import; prints install hint if PySide6 missing)
- pyproject: rigdoctor-gui script + [gui] extra (PySide6)
- gitignore: *.egg-info/, build/, dist/
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>