711cb73ea5
Add docs/PERFORMANCE.md documenting the post-Phase-4 startup slowdown: the ~290ms increase is entirely Fyne 2.5.3->2.6.3's w.Show() cost, not the Service/domain/UI refactor. Includes the GOSENTRY_TIMING method and warm-run results table so it can be reproduced. Wire the startup re-measurement into the existing Fyne 2.6.3->2.7.x upgrade task in ROADMAP.md so 2.7's effect on w.Show() gets checked. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.4 KiB
3.4 KiB
Roadmap
This file tracks planned GoSentry work that is larger than a single bug fix.
Post-Field-Test Cleanup
After real-world use confirms the main workflows, clean up temporary stabilization code and development scaffolding.
Cleanup checklist:
- Review and remove debug-oriented diagnostics that are no longer useful.
- Remove excessive defensive checks once behavior is proven and covered by the right tests.
- Remove obsolete compatibility cleanup, such as old autostart migration code, after the transition window is over.
- Delete stale generated files and old build artifacts from local/release flows.
- Revisit tests and remove ones that only lock in temporary implementation details instead of real user-facing behavior.
- Simplify README notes that were useful during early setup but are too noisy for normal users.
- Recheck
.gitignore, Docker scripts, and packaging scripts for rules or branches that only supported early experiments.
Tray Interaction
Improve tray icon interaction: click the tray icon to show and focus the main window.
- Unblocked by Fyne 2.7.0, which added
desktop.App.SetSystemTrayWindow(window). On Windows, macOS, and most Linux it shows the associated window on left-click; any tray menu then moves to right-click. There is still no raw click / double-click callback, so the behavior is single left-click (the conventional tray gesture), not the double-click originally sketched here. - The project is currently on Fyne 2.6.3, so this depends on a Fyne 2.6.3 -> 2.7.x upgrade first (minor bump; re-verify the CGO build under MSYS2 UCRT64 and check for 2.7 breaking changes). Track the upgrade as its own task.
- As part of that upgrade, re-measure startup time with the
GOSENTRY_TIMINGmethod recorded in PERFORMANCE.md. The Fyne 2.5.3 -> 2.6.3 bump added ~290 ms to startup, all insidew.Show(); check whether 2.7 recovers any of it or holds steady, and append the result to PERFORMANCE.md. - After upgrading, the change in
src/ui/run.go(configureSystemTray) is small: calldesk.SetSystemTrayWindow(w)alongsideSetSystemTrayMenu(menu). Keep the existing "Show" menu item, which the Fyne docs recommend for less-compliant Linux systems.
Delivery And Packaging
Keep a single portable binary as the baseline delivery format. It is simple to test, easy to copy between machines, and matches the current storage model where runtime YAML files live next to the executable by default.
Planned delivery variants:
- Windows portable
.zipwithgosentry.exe,README.md, andCHANGELOG.md. - Linux portable
.tar.gzarchives forlinux-amd64andlinux-arm64. - Debian/Ubuntu
.debpackage once the Linux runtime paths are settled. - Windows installer later, likely Inno Setup first and MSI/WiX only if needed.
- AppImage as a possible Linux GUI-friendly format after the core workflow is stable.
- Flatpak only after the desktop integration story is clearer.
- winget manifest after stable public Windows releases exist.
Packaging design note:
- Portable builds can keep settings and jobs next to the executable.
- Installer/package builds should move runtime data to per-user locations:
%APPDATA%\GoSentryon Windows, and XDG directories such as~/.config/gosentryand~/.local/share/gosentryon Linux.
Initial priority:
- Windows portable
.zip. - Linux portable
.tar.gzfor amd64 and arm64. - Debian/Ubuntu
.deb. - Windows installer.