Skip to content

feat: add background monitoring mode with system tray support #1275

@shm11C3

Description

@shm11C3

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:

  • Closing the main window does not stop monitoring (when the user has opted in).
  • The app remains accessible from the system tray.
  • The tray menu can reopen the main window.
  • The tray menu can pause and resume monitoring.
  • The tray menu can fully quit the app.
  • Historical data continues to be recorded while the window is closed.
  • The close behavior is explained to users clearly at least once (first-run dialog).
  • Setting persists across restarts.

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions