Umbrella issue. Tracks the background-monitoring + system-tray feature set as a whole. The work is split into focused child issues that each ship independently; this issue is the discussion thread and progress board for the family.
Summary
Allow HardwareVisualizer to keep collecting metrics after the main window is closed, with a system-tray entry point to reopen the app, pause/resume collection, or quit cleanly. Originally written as a single feature issue; now restructured into discrete shippable units.
Motivation
A hardware monitor only delivers value while it is running. Today the app stops monitoring when the window is closed. Background mode + a tray entry turns the app into a passive, always-on tool — the same value pattern as Stats (macOS) and Open Hardware Monitor (Windows). It also unblocks #1401 (live tray widget) by making collection independent of window visibility.
Children
Related
Future follow-ups (not in scope of this umbrella; track separately when needed)
- Launch on login — depends on [B]; trivial via
tauri-plugin-autostart once the persisted setting exists.
- Reduced polling frequency while backgrounded — needs a config knob and per-mode collector cadence; not blocking the v1 UX.
- Threshold-based notifications — adjacent feature; would consume the same EventBus.
- macOS LSUIElement / Dock-hidden mode — opt-in accessory app behavior; tracked separately if user demand surfaces.
Platform Notes
Background-mode UX is highest-value on Windows; macOS works the same way once tray is registered. Linux tray support varies by desktop environment — [B] handles the fallback so users on AppIndicator-less environments are not stranded.
Acceptance Criteria (umbrella)
This issue is "done" when [A]+[B]+[C] are merged. Each child carries its own DoD. From a user-visible standpoint the umbrella ships when:
Open questions
- First-run dialog default (Continue vs Quit highlighted)?
- Should
Pause also pause history persistence, or only sensor collection? Decided in [C]: only collection; the archive worker stays subscribed and is naturally idle when no snapshots flow.
- Linux: do we accept icon-only / no-color fallback on AppIndicator-less environments, or document an extension as a soft requirement? Decided in [B]: graceful fallback to "quit on close" with a banner; we do not require an extension.
Umbrella issue. Tracks the background-monitoring + system-tray feature set as a whole. The work is split into focused child issues that each ship independently; this issue is the discussion thread and progress board for the family.
Summary
Allow HardwareVisualizer to keep collecting metrics after the main window is closed, with a system-tray entry point to reopen the app, pause/resume collection, or quit cleanly. Originally written as a single feature issue; now restructured into discrete shippable units.
Motivation
A hardware monitor only delivers value while it is running. Today the app stops monitoring when the window is closed. Background mode + a tray entry turns the app into a passive, always-on tool — the same value pattern as Stats (macOS) and Open Hardware Monitor (Windows). It also unblocks #1401 (live tray widget) by making collection independent of window visibility.
Children
feat(app): tray adapter — Open / Quit menu skeleton.feat: close-to-tray setting + first-run dialog.HARDVIZ_CLOSE_TO_BACKGROUNDenv var. First-run dialog. Linux fallback when tray fails. macOS Dock policy stays Regular (LSUIElement is out of scope).feat: pause / resume monitoring.MonitoringState::Paused(the Phase 5 state machine value that's currently a stub).Related
feat: live hardware metrics in the tray (Stats-like widget). Depends only on feat(app): system tray adapter — Open / Quit menu skeleton #1422 ([A]); does not require [B] or [C] to land first.MonitoringStatemachine that the children above consume.Future follow-ups (not in scope of this umbrella; track separately when needed)
tauri-plugin-autostartonce the persisted setting exists.Platform Notes
Background-mode UX is highest-value on Windows; macOS works the same way once tray is registered. Linux tray support varies by desktop environment — [B] handles the fallback so users on AppIndicator-less environments are not stranded.
Acceptance Criteria (umbrella)
This issue is "done" when [A]+[B]+[C] are merged. Each child carries its own DoD. From a user-visible standpoint the umbrella ships when:
Open questions
Pausealso pause history persistence, or only sensor collection? Decided in [C]: only collection; the archive worker stays subscribed and is naturally idle when no snapshots flow.