chore: land the remaining low-severity items from the whole-project review
Phase 11 of PROJECT_REVIEW_PLAN.md: the themed cleanup pass over every low-severity finding still open (2.2-2.3, 3.4-3.6, 4.3-4.7, 6.4-6.7, 7.1-7.3, 8.2-8.3, 9.1-9.4, and the under-documented decisions in §10/§11). Behavioral fixes: - Reassign duplicate job IDs in a hand-edited jobs.json instead of letting two jobs share one runtime, schedule entry, and SeedStats bucket. - Disambiguate run-log file names that collide within the same second. - Compute AvgDurationMS as DurationSumMS/TimedRunCount instead of an incremental integer mean, so it always matches the seeded-from-logs average instead of drifting from truncation error. - Clean absolute paths in ResolveConfiguredPath so two spellings of the same jobs file do not trigger a spurious adoption. - Report InstallDesktopIcon failures through ErrorOccurred instead of discarding them silently. - Move settingsView's blocking AutostartStatus (PowerShell on Windows) off the UI thread. - Give notify-timing.tsv its own extension so CleanupLogs no longer manages it as a run log. - Replace the settingsView Save handler's second copy of validateConfig's rules with a bare parse, letting the Service's own error surface. Cleanups: - Delete collectActivity, the dead yaml tags on RunRecord, and the logArguments/LogArguments alias. - Fold the two systemTrayRegistered/mainWindowHidden globals into one trayState instance Run owns and threads through Settings and the single-instance reveal path. - Fix stale comments/docs: the frozen window-size restore claim, a reference to a renamed recordRun, README's "Pause all" and notification wording, the PowerShell quoting note for TESTS.md's coverage command, and scripts/test.bat's UTF-8 checkmarks under a non-UTF-8 code page. - Document the single-instance fallback's consequence and the unauthenticated instance-channel port in STANDARDS.md; record the config-shim retirement plan in ROADMAP.md. 3.5, 7.3, and 9.4 turned out to already be fixed by earlier phases; no change needed for those three. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+22
-2
@@ -18,15 +18,35 @@ machine):** average **773 ms** per toast (695–874 ms), dominated by PowerShell
|
||||
cold start. Re-run the script when comparing after a native toast implementation.
|
||||
|
||||
**App-side timing:** each failure notification appends one line to
|
||||
`logs/notify-timing.log` (`ms_after_run`, `ms_fyne_do`, `ms_send`,
|
||||
`logs/notify-timing.tsv` (`ms_after_run`, `ms_fyne_do`, `ms_send`,
|
||||
`ms_app_total`). These columns end when Fyne returns from `SendNotification`; OS
|
||||
toast latency is not included.
|
||||
toast latency is not included. The `.tsv` extension keeps it out of
|
||||
`runner.CleanupLogs`, which only manages `.log` files — this file is
|
||||
diagnostic instrumentation for this item, not job output, and should be
|
||||
removed (or unified with the run-log retention policy under its own knob) once
|
||||
the native-toast direction below lands and the timing data is no longer
|
||||
needed.
|
||||
|
||||
**Direction:** add `src/platform/notify/` with a native Windows toast (WinRT or
|
||||
a maintained Go wrapper), used for failure notifications on Windows. Keep Fyne
|
||||
`SendNotification` on Linux (DBus / xdg-desktop-portal) unless profiling shows it
|
||||
needs the same treatment.
|
||||
|
||||
### Retire the config compatibility shims
|
||||
|
||||
Two read-only shims in `storage.loadOrCreateConfig` rewrite an old file into
|
||||
the current shape on the next save, so each becomes dead the moment a user's
|
||||
config has been saved once by a build that has it:
|
||||
|
||||
- `Config.JobsDir` (pre-0.15, superseded by `Config.JobsFile`).
|
||||
- `Theme == "default"` (pre-1.0.1, superseded by `ThemeSystem`).
|
||||
|
||||
Neither has an expiry. Remove both — the field, the migration branch, and
|
||||
`TestLoadOrCreateConfigMigratesJobsDir` /
|
||||
`TestLoadOrCreateConfigMigratesLegacyThemeDefault` — once a release has shipped
|
||||
long enough that a config file still carrying either old shape is not a
|
||||
realistic upgrade path GoSentry needs to support.
|
||||
|
||||
### Dynamic tray icon toggle
|
||||
|
||||
Fyne exposes `SetSystemTrayIcon` and related APIs only at application startup.
|
||||
|
||||
Reference in New Issue
Block a user