Desktop: tray icon, start at logon hidden (autostart --hidden, window state never restores visible), closing hides to the tray, background signed auto-update at start and every 30 min with restart

This commit is contained in:
CRTkafa 2026-10-22 05:59:41 +08:00
parent 9f40a9ea14
commit 9a907d87e5
6 changed files with 200 additions and 13 deletions

View file

@ -482,8 +482,14 @@ The CLI and the app are one product: one version number, one set of store accoun
- Releases: [desktop-release.md](desktop-release.md) (version authority, privacy gate, macOS signing and
notarization, Forgejo builds for Linux and Windows, storebound.dev hosting, publish).
- **Updates**: Settings > Updates checks storebound.dev (stable `/desktop/latest.json` or beta
`/desktop/beta/latest.json`) only when asked; Install shows a native dialog, then the updater downloads the bundle,
`/desktop/beta/latest.json`) when asked; Install shows a native dialog, then the updater downloads the bundle,
checks its minisign signature against `plugins.updater.pubkey` and restarts (`update_check`, `update_install`).
In the background the app also checks the stable channel a minute after start and every 30 minutes, installs a
signed update silently and restarts with the same arguments (`auto_update` in `src-tauri/src/lib.rs`).
- **Tray and start at logon**: the first run registers a logon entry (`tauri-plugin-autostart`, `--hidden`): the app
starts silently in the tray, without a window. Closing the window keeps it running in the tray; the tray icon
opens it, the tray menu's Quit (macOS: Cmd+Q) quits. Turn the logon entry off in the OS (Windows: Settings > Apps >
Startup). Window state never restores "visible", so a `--hidden` start stays hidden.
- **`storebound://open?path=<absolute folder>`** (sent by `storebound desktop` in an app folder, which first puts
the folder on the machine's list): the host accepts one plain absolute path (`policy::deep_link_open_path`), syncs
the list, selects that app folder when it is on it, otherwise asks in a native dialog and adds it