P8.3: update CHANGELOG and ROADMAP for 0.9.0 release
CHANGELOG: - Expand 0.9.0 entry to cover all pre-release work: JSON storage migration, exit-code removal, PySentry legacy cleanup, queue execution modes/overlap policies, failure notifications, Command browse button, developer docs split, icons, tray left-click, Fyne 2.7.4 upgrade. ROADMAP: - Remove resolved "Linux test build broken" item (fixed in P7.1). - Note that app/run.go was created to split dispatch logic. - Mark "Tray Interaction" section as resolved in 0.9.0; document the SetSystemTrayWindow implementation and re-measured startup time improvement (−36%). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+52
-7
@@ -2,15 +2,60 @@
|
|||||||
|
|
||||||
All notable GoSentry changes are recorded in this file.
|
All notable GoSentry changes are recorded in this file.
|
||||||
|
|
||||||
## 0.9.0 - 2026-06-23
|
## 0.9.0 - 2026-06-24
|
||||||
|
|
||||||
**Transparent per-platform icons; tray left-click to show window; Fyne 2.7.4.**
|
**Storage migrated to JSON; queue execution modes; failure notifications; tray left-click; Fyne 2.7.4.**
|
||||||
|
|
||||||
- Regenerated all icon assets with feathered color-to-alpha so the rounded-tile boundary is transparent — the opaque white halo visible on dark taskbars and trays is gone.
|
**Storage and data model:**
|
||||||
- Rebuilt `gosentry.ico` as a multi-size file (16 hand-tuned + 32/48/256 from the large PNG) and added a dedicated 16×16 `gosentry-icon-16x16.ico` for the Windows tray.
|
- Settings and jobs now stored as `gosentry.json` and `jobs.json` (2-space indented JSON).
|
||||||
- Per-platform icon wiring: Windows window/taskbar uses the ICO resource so GLFW selects the right frame per slot (no `a.SetIcon` override); Windows tray uses the 16×16 ICO; Linux titlebar uses `IconSmall()` for a crisp ~16 px `_NET_WM_ICON`.
|
On first run after upgrading, existing `gosentry.yaml` / `jobs.yaml` files are imported
|
||||||
- Left-clicking the tray icon now shows and focuses the main window (`SetSystemTrayWindow`) without opening the menu; the explicit "Show" menu item is preserved for right-click access.
|
automatically and rewritten as JSON; the YAML files are not deleted.
|
||||||
- Upgraded Fyne 2.6.3 → 2.7.4 (systray 1.11.0 → 1.12.1): startup time drops from ~644 ms to ~414 ms (−36%).
|
- Removed `SuccessExitCodes` field. Exit-code handling is now fixed: exit code 0 = success,
|
||||||
|
any nonzero exit code = failure. Jobs relying on nonzero success codes must switch to
|
||||||
|
`StartOnly` mode if the exit code is irrelevant.
|
||||||
|
|
||||||
|
**Execution modes and overlap policies:**
|
||||||
|
- Added `ExecutionMode` (parallel/sequential) and `OverlapPolicy` (skip/queue) settings in
|
||||||
|
Settings under a new Queue group.
|
||||||
|
- **Parallel mode** (default): all due jobs start simultaneously.
|
||||||
|
- **Sequential mode**: due jobs run one at a time, in order.
|
||||||
|
- **Skip policy** (default): if a job comes due while its previous run is still active, the new
|
||||||
|
run is discarded.
|
||||||
|
- **Queue policy**: if a job comes due while running, the run is held and automatically started
|
||||||
|
when the current run completes.
|
||||||
|
- Both settings are persisted to `gosentry.json` and validated on load; defaults ensure
|
||||||
|
backward compatibility.
|
||||||
|
|
||||||
|
**Notifications and command input:**
|
||||||
|
- Failed job runs now raise a desktop notification (when enabled in Settings) with the job name
|
||||||
|
and failure detail. Notifications fire for scheduled and manual runs; internal activity events
|
||||||
|
are not notified.
|
||||||
|
- Added a Browse button next to the Command field in the job dialog for file picker selection.
|
||||||
|
|
||||||
|
**UI and platform integration:**
|
||||||
|
- Removed all PySentry legacy code: registry autostart entries (Windows), systemd and desktop
|
||||||
|
file cleanup (Linux).
|
||||||
|
- Updated `.gitignore` and `.dockerignore` to track `gosentry.json` / `jobs.json` instead of
|
||||||
|
legacy YAML filenames; added `*.yaml` wildcard to ignore legacy files during import.
|
||||||
|
- Moved developer documentation (Requirements, Build, Run From Source, Project Layout, Dependencies)
|
||||||
|
out of README into `docs/DEVELOPMENT.md`. README now focuses on end-user content.
|
||||||
|
|
||||||
|
**Icons and tray:**
|
||||||
|
- Regenerated all icon assets with feathered color-to-alpha so the rounded-tile boundary is
|
||||||
|
transparent — the opaque white halo visible on dark taskbars and trays is gone.
|
||||||
|
- Rebuilt `gosentry.ico` as a multi-size file (16 hand-tuned + 32/48/256 from the large PNG)
|
||||||
|
and added a dedicated 16×16 icon for the Windows tray.
|
||||||
|
- Per-platform icon wiring: Windows window/taskbar uses the ICO resource so GLFW selects the
|
||||||
|
right frame per slot; Windows tray uses the 16×16 ICO; Linux titlebar uses `IconSmall()` for
|
||||||
|
a crisp ~16 px `_NET_WM_ICON`.
|
||||||
|
- Left-clicking the tray icon now shows and focuses the main window without opening the menu;
|
||||||
|
the explicit "Show" menu item is preserved for right-click access.
|
||||||
|
|
||||||
|
**Performance:**
|
||||||
|
- Upgraded Fyne 2.6.3 → 2.7.4 (systray 1.11.0 → 1.12.1): startup time drops from ~644 ms to
|
||||||
|
~414 ms (−36%).
|
||||||
|
- Moved Windows-only runner tests into `runner_windows_test.go` (guarded by `//go:build windows`)
|
||||||
|
to fix Linux test build.
|
||||||
|
|
||||||
## 0.8.0 - 2026-06-23
|
## 0.8.0 - 2026-06-23
|
||||||
|
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ These land together because both edit `domain/job.go` and `storage/store.go`.
|
|||||||
### Phase 8 — Docs + version
|
### Phase 8 — Docs + version
|
||||||
- [x] P8.1 — `docs/DEVELOPMENT.md`
|
- [x] P8.1 — `docs/DEVELOPMENT.md`
|
||||||
- [x] P8.2 — End-user README rewrite
|
- [x] P8.2 — End-user README rewrite
|
||||||
- [ ] P8.3 — CHANGELOG + ROADMAP updates
|
- [x] P8.3 — CHANGELOG + ROADMAP updates
|
||||||
|
|
||||||
## Definition of done
|
## Definition of done
|
||||||
|
|
||||||
|
|||||||
+14
-35
@@ -4,26 +4,14 @@ This file tracks planned GoSentry work that is larger than a single bug fix.
|
|||||||
|
|
||||||
## Refactoring Follow-Ups
|
## Refactoring Follow-Ups
|
||||||
|
|
||||||
Loose ends found while verifying the [refactoring plan](REFACTORING.md) against
|
Loose ends found while verifying the refactoring against its Definition of done.
|
||||||
its Definition of done. The architecture target is reached and verified on
|
The architecture target is reached and verified on Windows and Linux.
|
||||||
Windows, but the items below remain.
|
|
||||||
|
|
||||||
- **Linux test build is broken (correctness, not cosmetic).** `src/runner/runner_test.go`
|
- **File-size guidelines exceeded (soft limits).** The DoD suggests no `src/ui` file
|
||||||
is a shared (untagged) test file that references Windows-only symbols
|
over ~250 lines and no single file over ~400:
|
||||||
(`SysProcAttr.HideWindow`, `SysProcAttr.CmdLine`, `windowsShellCommandLine`).
|
|
||||||
The `runtime.GOOS != "windows"` guards are runtime skips and cannot save a file
|
|
||||||
that does not *compile*, so `go test ./...` fails to build on Linux. This
|
|
||||||
contradicts T5.4 ("go test -race clean on both platforms") and the DoD's
|
|
||||||
"green on Windows and Linux." Fix: move the Windows-only tests
|
|
||||||
(`TestShellCommandHidesWindow`, `TestShellCommandUsesWindowsSafeQuoting`, and any
|
|
||||||
peers touching `SysProcAttr` / `windowsShellCommandLine`) into a new
|
|
||||||
`src/runner/runner_windows_test.go` guarded by `//go:build windows`.
|
|
||||||
- **File-size guidelines exceeded.** The DoD asks for no `src/ui` file over ~250
|
|
||||||
lines and no single file over ~400:
|
|
||||||
- `src/ui/jobs_view.go` — 415 lines (over both the ~250 UI target and the ~400 cap).
|
- `src/ui/jobs_view.go` — 415 lines (over both the ~250 UI target and the ~400 cap).
|
||||||
- `src/app/operations.go` — 486 lines (over ~400).
|
- `src/app/run.go` — dispatch logic split out of `operations.go` in this release.
|
||||||
- `src/app/operations_test.go` (536) and `src/runner/runner_test.go` (421) also
|
- `src/app/operations_test.go` (536) also exceeds 400.
|
||||||
exceed 400 if the cap is read to include test files.
|
|
||||||
|
|
||||||
These are soft ("~") limits; revisit when next touching those files rather than
|
These are soft ("~") limits; revisit when next touching those files rather than
|
||||||
splitting purely for line count.
|
splitting purely for line count.
|
||||||
@@ -48,27 +36,18 @@ Cleanup checklist:
|
|||||||
- Recheck `.gitignore`, Docker scripts, and packaging scripts for rules or
|
- Recheck `.gitignore`, Docker scripts, and packaging scripts for rules or
|
||||||
branches that only supported early experiments.
|
branches that only supported early experiments.
|
||||||
|
|
||||||
## Tray Interaction
|
## Tray Interaction (Resolved in 0.9.0)
|
||||||
|
|
||||||
Improve tray icon interaction: click the tray icon to show and focus the main
|
Improve tray icon interaction: click the tray icon to show and focus the main
|
||||||
window.
|
window.
|
||||||
|
|
||||||
- Unblocked by Fyne 2.7.0, which added `desktop.App.SetSystemTrayWindow(window)`.
|
- Upgraded to Fyne 2.7.4, which provides `desktop.App.SetSystemTrayWindow(window)`.
|
||||||
On Windows, macOS, and most Linux it shows the associated window on left-click;
|
Left-clicking the tray icon now shows and focuses the main window without opening
|
||||||
any tray menu then moves to right-click. There is still no raw click /
|
the menu; the explicit "Show" menu item remains for right-click access and
|
||||||
double-click callback, so the behavior is single left-click (the conventional
|
less-compliant Linux systems.
|
||||||
tray gesture), not the double-click originally sketched here.
|
- Re-measured startup time with the `GOSENTRY_TIMING` method from [PERFORMANCE.md](PERFORMANCE.md).
|
||||||
- The project is currently on Fyne 2.6.3, so this depends on a Fyne 2.6.3 -> 2.7.x
|
The Fyne 2.6.3 -> 2.7.4 upgrade recovers ~230 ms (startup drops from ~644 ms to ~414 ms, a
|
||||||
upgrade first (minor bump; re-verify the CGO build under MSYS2 UCRT64 and check
|
−36% improvement). The 2.7.4 startup time and profile improvements are documented in PERFORMANCE.md.
|
||||||
for 2.7 breaking changes). Track the upgrade as its own task.
|
|
||||||
- As part of that upgrade, **re-measure startup time** with the `GOSENTRY_TIMING`
|
|
||||||
method recorded in [PERFORMANCE.md](PERFORMANCE.md). The Fyne 2.5.3 -> 2.6.3 bump
|
|
||||||
added ~290 ms to startup, all inside `w.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:
|
|
||||||
call `desk.SetSystemTrayWindow(w)` alongside `SetSystemTrayMenu(menu)`. Keep the
|
|
||||||
existing "Show" menu item, which the Fyne docs recommend for less-compliant
|
|
||||||
Linux systems.
|
|
||||||
|
|
||||||
## Delivery And Packaging
|
## Delivery And Packaging
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user