Wire KeepRunningInTray to runtime so tray, close, and autostart follow the saved setting.
Autostart entries pass --start-in-tray only when the tray is enabled; Settings warns that the notification icon needs a restart (Fyne limitation). Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -113,8 +113,10 @@ flowchart LR
|
||||
7. Autostart:
|
||||
`UpdateSettings` in the Service calls `autostart.Manager.Set`. The Manager
|
||||
interface has two implementations: Windows writes a `.lnk` shortcut to the
|
||||
user Startup folder; Linux writes an XDG Autostart `.desktop` file. Both
|
||||
entries pass `--start-in-tray`.
|
||||
user Startup folder; Linux writes an XDG Autostart `.desktop` file. When
|
||||
`KeepRunningInTray` is enabled the entry passes `--start-in-tray`; when it is
|
||||
off the entry launches the executable without that flag so the main window
|
||||
opens after sign-in.
|
||||
|
||||
8. Error surfacing:
|
||||
Background errors (failed JSON saves, cleanup errors) are emitted as
|
||||
|
||||
@@ -4,6 +4,20 @@ All notable GoSentry changes are recorded in this file.
|
||||
|
||||
## 1.0.1 - 2026-08-04
|
||||
|
||||
**KeepRunningInTray is wired to runtime; autostart respects the tray setting.**
|
||||
|
||||
**Application:**
|
||||
|
||||
- **Keep running in the system tray** now controls behaviour: with the tray on
|
||||
(default), closing the window hides it and autostart uses `--start-in-tray`;
|
||||
with the tray off, closing quits the app and autostart opens the main window.
|
||||
- Saving a tray change updates close behaviour and the autostart entry
|
||||
immediately. The notification-area icon follows the saved value after a
|
||||
restart; Settings shows a hint when a restart is needed (Fyne cannot add or
|
||||
remove the icon mid-session).
|
||||
- A stale autostart shortcut that still passes `--start-in-tray` no longer hides
|
||||
the window when the tray setting is off — saved config wins over the CLI flag.
|
||||
|
||||
**The branded theme is the default, Fyne's built-in theme is System, and the
|
||||
test suite is leaner.**
|
||||
|
||||
|
||||
@@ -5,6 +5,22 @@ Completed work is recorded in [CHANGELOG.md](CHANGELOG.md), not here.
|
||||
|
||||
## Open Items
|
||||
|
||||
### Dynamic tray icon toggle
|
||||
|
||||
Fyne exposes `SetSystemTrayIcon` and related APIs only at application startup.
|
||||
There is no supported way to register or remove the notification-area icon
|
||||
after the process is running.
|
||||
|
||||
GoSentry now honours `KeepRunningInTray` from config: close behaviour and the
|
||||
autostart entry update immediately when the user saves Settings; the tray icon
|
||||
follows the saved value on the next launch. Settings shows a restart hint when
|
||||
the tray checkbox changes.
|
||||
|
||||
Revisit when Fyne adds a documented API for mid-session tray registration, or
|
||||
when a stable cross-platform approach exists without reaching into driver
|
||||
internals. Until then, removing the restart hint and applying the icon on save
|
||||
is blocked.
|
||||
|
||||
### Update check from GitHub releases
|
||||
|
||||
Releases are published as GitHub Releases (tags like `v0.12.0`, built by
|
||||
|
||||
@@ -70,6 +70,16 @@ change to their shape has to stay compatible on its own.
|
||||
functions sit at 0% on purpose. Both lists live in
|
||||
[TESTS.md](TESTS.md) — check them before reporting a test as redundant or a
|
||||
coverage gap as an oversight.
|
||||
- **`KeepRunningInTray` controls tray and close behavior.** When enabled (the
|
||||
default), the app registers a system tray icon at launch, closing the window
|
||||
hides it, and autostart passes `--start-in-tray`. When disabled, no tray icon
|
||||
is registered at launch, closing the window quits the app, and autostart opens
|
||||
the main window. Toggling the setting in Settings updates close behavior and
|
||||
rewrites the autostart entry immediately; the tray icon itself follows the
|
||||
saved value only after a restart because Fyne has no API to add or remove it
|
||||
mid-session (see [ROADMAP.md](ROADMAP.md)).
|
||||
- **`--start-in-tray` defers to config.** A stale autostart shortcut that still
|
||||
passes the flag does not hide the window when `KeepRunningInTray` is off.
|
||||
|
||||
## Out of scope
|
||||
|
||||
|
||||
+18
-2
@@ -93,11 +93,12 @@ Tests schedule parsing and validation.
|
||||
|
||||
**Package:** `domain`
|
||||
|
||||
Tests the normalization rule shared by every consumer of the jobs-list density
|
||||
setting.
|
||||
Tests autostart argument helpers and the jobs-list density normalization rule.
|
||||
|
||||
| Test | Purpose |
|
||||
|------|---------|
|
||||
| `TestAutostartArguments` | Verifies `AutostartArguments` returns `--start-in-tray` when the tray is enabled and an empty string when it is off. |
|
||||
| `TestResolveStartHidden` | Verifies hidden autostart requires both the CLI flag and `KeepRunningInTray`. |
|
||||
| `TestJobListViewIsCompact` | Verifies only the exact `"compact"` value selects one-line rows: empty, differently-cased, and unrecognised values all read as detailed. |
|
||||
| `TestDefaultConfigUsesDetailedJobList` | Verifies `DefaultConfig` selects the detailed job list. |
|
||||
|
||||
@@ -387,6 +388,8 @@ Tests Windows autostart via shortcuts in the Startup folder.
|
||||
| `TestStartupShortcutPathUsesUserStartupFolder` | Verifies that the shortcut path resolves into `%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup`. |
|
||||
| `TestCreateStartupShortcutHandlesCyrillicPath` | Verifies that `.lnk` files are created correctly when the executable path contains Cyrillic characters. |
|
||||
| `TestCreateStartupShortcutHandlesSpaces` | Verifies that `.lnk` files are created with correct `TargetPath` and `--start-in-tray` arguments when the path contains spaces. |
|
||||
| `TestCreateStartupShortcutWithoutTrayFlag` | Verifies that autostart shortcuts omit `--start-in-tray` when the tray setting is off. |
|
||||
| `TestAutostartStatusRequiresMatchingTrayFlag` | Verifies `AutostartStatus` reports a problem when the shortcut arguments do not match `KeepRunningInTray`. |
|
||||
|
||||
---
|
||||
|
||||
@@ -400,6 +403,19 @@ Tests Linux autostart via XDG Desktop Entry files.
|
||||
| Test | Purpose |
|
||||
|------|---------|
|
||||
| `TestLinuxAutostartStartsInTray` | Verifies that the XDG Desktop Entry is created with `--start-in-tray` in the `Exec=` field. |
|
||||
| `TestLinuxAutostartWithoutTrayFlag` | Verifies that the desktop entry omits `--start-in-tray` when the tray setting is off. |
|
||||
|
||||
---
|
||||
|
||||
### src/ui/tray_test.go
|
||||
|
||||
**Package:** `ui`
|
||||
|
||||
Tests startup helpers for tray and autostart interaction.
|
||||
|
||||
| Test | Purpose |
|
||||
|------|---------|
|
||||
| `TestResolveStartHiddenUsesDomainHelper` | Verifies the UI startup helper stays aligned with `domain.ResolveStartHidden`. |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user