.agents/memory/2026-02-23-signet-system-tray-app-tauri-v2-plan-delivery.md

1.8 KiB

2026-02-23 Session Notes

Signet System Tray App (Tauri v2) — Plan Delivery

The session began with a comprehensive implementation plan for the Signet system tray app. This feature gives users a persistent, visible handle on the daemon without needing a terminal or browser, targeting Linux first with platform abstraction for future macOS/Windows support.

The plan documents a split-responsibility architecture: Rust handles tray lifecycle, native menus, and process management (start/stop daemon), while TypeScript runs a polling loop using the existing @signet/sdk to derive daemon state and update the display via IPC. This approach avoids duplicating SDK logic (types, retry, error handling) in Rust while leveraging Rust's strength in OS-level operations.

The tray app shows context-aware menus: when the daemon is running, users see options to open the dashboard, stop, or restart; when stopped, a simple start button appears. Icon state reflects daemon health (normal, gray/stopped, red/error). The polling loop runs every 5 seconds when stable and 2 seconds when stopped to detect startup quickly.

Directory structure mirrors typical Tauri v2 projects with TypeScript source (src-ts/), Rust backend (src-tauri/), and platform-specific implementations behind a DaemonManager trait. Icons are 32x32 PNGs. Process management mirrors existing logic from packages/daemon/src/service.ts, supporting systemd when available and falling back to direct process management.

Implementation is planned in 8 phases: project scaffold, Rust core (main/lib/tray), platform abstraction, IPC commands, TypeScript state/menu builders, polling loop, icons, and build verification. Autostart, notifications, and platform-specific launchd/Windows support are deferred to future phases.