Files
rigdoctor/CHANGELOG.md
T
jessey 2f6cab72c4
release / release (push) Successful in 14s
feat: shared PTY terminal (M12 Tier 3) + readable form controls
- feat(share): host-consented interactive terminal over the relay. The host shares
  a real PTY shell (core/pty_session.py); the guest renders it with pyte and sends
  keystrokes (gui/terminal_widget.py) — vim/top/tab-completion/Ctrl-C work. Runs as
  the host's user (never root). The host reads along live and can type too, e.g. a
  sudo password, which stays local and is never sent to the guest. Off by default.
  Guest also pulls inventory on join (req_full).
- fix(gui): style all form controls (QLineEdit/QPlainTextEdit/spin boxes/combo/
  terminals) dark-on-light-text — Fusion defaulted them to unreadable light-on-light.
- replaces the command/response shell with the full PTY; adds pyte to the gui extra.

Verified end-to-end against the deployed relay (guest keystroke ran on host PTY).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 20:16:22 +02:00

193 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Changelog
All notable changes to RigDoctor are recorded here. Format follows
[Keep a Changelog](https://keepachangelog.com/); 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.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 `sudo`
password — 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`, default `wss://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 serve` starts 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 if
`notify-send` isn'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 + `.desktop` on 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 via `elevate_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 uses `QTextEdit.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" (for `dmidecode` board/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 **`.run` installer** 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, links
`rigdoctor`/`rigdoctor-gui` into `~/.local/bin`, and adds a desktop entry. Re-run to
upgrade; `--uninstall` to remove.
- **Self-extracting `.run` installer** via `packaging/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 update` now 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-tools` added 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 (`fsync` per sample), size-based rotation,
GPU-lost/recovered event markers, atomic status file; `rigdoctor record run|start|stop|
status|report` (foreground `run` is 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 to `main`,
builds wheel + sdist and publishes a Gitea release `v<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, `.deb` optional.
### 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 (D1D15); **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.