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

10 KiB
Raw Blame History

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.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.