DocsReference

Platform notifications

How LumaSync emits OS-level notifications for connection, stream, and update events — the one-time permission banner, and the open_log_dir command.

From v1.4, LumaSync emits OS-level notifications for runtime events so you don’t have to keep the main window open. Implementation is tauri-plugin-notification + tauri-plugin-process, wired end-to-end.

Permission banner

The first time LumaSync wants to notify (typically on first USB connect or first Hue pair), a permission banner appears in the app asking for OS notification rights. Click Allow once; the decision persists per OS rules:

  • macOS · Settings → Notifications → LumaSync
  • Windows · Settings → System → Notifications → LumaSync
  • Linux · your desktop environment’s notification settings

If you deny, the event flow degrades gracefully — in-app status pills still update, only the OS toast goes away.

Events that emit a toast

Event When Severity
connection.ok Serial port opens and handshake returns HEALTHY Info
connection.lost Serial port closes mid-session or PING_TIMEOUT fires Warning
stream.started Hue Entertainment stream armed, first frame acknowledged Info
stream.stopped Mode switched to Off or the target went away Info
wled.connected WLED /json/info returned a non-zero LED count and Test acknowledged Info
update.available Auto-updater found a newer release at startup Info
update.installed Update verified and applied; restart on next launch Info
update.error Minisign verification failed or the download errored out Error
window.closed-to-tray (v1.5.2, one-shot) First time the user closes the main window — confirms LumaSync is still running in the tray Info

All toasts are local to the OS — nothing goes to a cloud push service. No Apple Push, no FCM, no third-party relay.

macOS tray template image

From v1.5.2 the macOS tray icon ships as a template image (monochrome silhouette), so the OS renders it at the correct size and respects Dark / Light menu bar mode automatically. If you saw a coloured bitmap-shaped tray on older builds, this is the fix.

Frontend log bridge

From v1.5.2 every webview console.log / console.warn / console.error call is bridged into the platform log file alongside the Rust log::* entries. The same lines that appear in DevTools also appear in ~/Library/Logs/com.lumasync.app/ (or your platform’s equivalent), so debugging a runtime issue no longer requires a DevTools window to be open. Each bridged record is prefixed [webview] to keep it distinguishable from the Rust side.

Transient notice cleanup

From v1.5.3, transient in-app notices (USB disconnect, unsupported-port) reliably clean up their auto-dismiss timers — previously a timer could leak if the view unmounted or the effect re-ran before the notice dismissed.

The open_log_dir command

LumaSync exposes an open_log_dir Tauri command that reveals the log directory in Finder / Explorer / your file manager. Triggered from:

  • Settings → About → Open log directory
  • Update modal error state → Show logs
  • Global ErrorBoundary fallback card → Show logs

Log location per OS:

OS Path
macOS ~/Library/Logs/com.lumasync.app/
Windows %LOCALAPPDATA%\com.lumasync.app\logs\
Linux ~/.local/share/com.lumasync.app/logs/

See Telemetry → Logs for what the log files actually contain.

Disabling notifications

There is no in-app toggle — notifications are on-by-default once OS permission is granted. To silence them, revoke at the OS level using the paths under Permission banner above. LumaSync respects the OS-level setting without needing a restart.

Type to search.Up and down arrowsto navigate,Enterto open.