From 5170cc5f9915f273dc745905078925ae0c2d9608 Mon Sep 17 00:00:00 2001 From: Mikhail Yenuchenko Date: Tue, 4 Aug 2026 22:58:13 +0300 Subject: [PATCH] release: 1.0.1, branded theme default and test-suite review Move post-v1.0.0 changes out of the 1.0.0 changelog section into 1.0.1, where they belong: GoSentry theme as default, System label, About GitHub link, Disable auto inset, README @every docs, and the completed test-suite review. Co-authored-by: Cursor --- docs/CHANGELOG.md | 95 ++++++++++++++++++++++++++++++---------------- src/app/version.go | 2 +- 2 files changed, 63 insertions(+), 34 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index c840fd7..7f7b1bd 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -2,6 +2,68 @@ All notable GoSentry changes are recorded in this file. +## 1.0.1 - 2026-08-04 + +**The branded theme is the default, Fyne's built-in theme is System, and the +test suite is leaner.** + +**Settings:** + +- **The branded GoSentry theme is now the default.** Fresh installs, the + **Defaults** button, and configs that omit `theme` all open in the teal/amber + look; users who prefer Fyne's built-in theme can still pick **System** in + Settings. +- The Fyne built-in theme option is labelled **System** (stored as `"system"`); + configs that still say `"default"` are read as System and rewritten on save. +- The **About** repository link points at GitHub (`mixeme/gosentry`) instead of + the private Gitea mirror. + +**Jobs:** + +- The **Disable auto** row gained a top inset matching the gap below it, so it + no longer sits flush against the tab bar. + +**Documentation:** + +- The **README Schedules** section now documents `@every` in full: supported Go + duration units (`ns` through `h`), combined values such as `1h30m`, the link to + `time.ParseDuration`, the fact that days/months/years belong in cron rather + than `@every`, the one-second scheduler tick floor, cron examples for monthly + and yearly runs, and the `@hourly`/`@daily`/… descriptors. + +**Tests:** + +- Three tests with byte-identical coverage to an existing test and no unique + assertion are gone: `TestCleanupLogsKeepsFilesWithinAgeLimit`, + `TestRunDueEmptyOverlapInheritsGlobal` (its one unique setup guard moved into + `TestRunDueQueueRerunsAfterFinish`), and `TestSameWindowsPathHandlesSpaces` + (its spaces case folded into `TestSameWindowsPathIgnoresCaseAndQuotes`'s + fixture). So are two that carried no assertion at all: + `TestEmitWithNoObserversIsNoop` and `TestStoreReturnsWiredStore`. +- The four `TestFilteredJobIndexes*` tests are one table-driven + `TestFilteredJobIndexes`, matching `TestFilterValue` above it. +- `TestMainViewBuilds` is replaced by `TestMainViewRecordStartupAddsHistoryRow`, + which exercises the `recordStartup` closure for both wordings `run.go` selects + between and asserts the rows reach the History table through its cell callbacks, + including the `!windowShown` branch. +- `storage.defaultJobs` — the one accidental 0%-coverage gap the review + found — is now exercised by + `TestLoadOrCreateJobsSeedsSampleJobsOnFirstRun`, which also corrects + `docs/TESTS.md`: `TestLoadOrCreateConfigCreatesDefaultsOnFirstRun` never + touched jobs, so the "and a sample job" half of its old description was + wrong. +- `src/runner/seed_test.go`'s hand-rolled `itoa` — 18 lines of digit-by-digit + conversion in a file that already imports `strconv` — is replaced with + `strconv.FormatInt`. +- **`docs/TESTS.md`** records the `-coverpkg` command and the 84.4% baseline + (per-package figures understate the suite), design principle 9 (redundancy is + judged by comparing coverage profiles, and identical coverage alone is not + grounds for deletion), a table of the look-alike tests that are kept with the + reason each survives, and the list of functions deliberately at 0%. +- **`docs/STANDARDS.md`**'s "Intentional behavior" section points at both lists, + so the mechanism `docs/REVIEW.md` describes still reaches them. The spent test + review plan is retired. + ## 1.0.0 - 2026-07-27 **The window opens at the size it asks for, and the Jobs divider can be @@ -38,12 +100,6 @@ dragged.** **Settings:** -- **The branded GoSentry theme is now the default.** Fresh installs, the - **Defaults** button, and configs that omit `theme` all open in the teal/amber - look; users who prefer Fyne's built-in theme can still pick **System** in - Settings. -- The Fyne built-in theme option is labelled **System** (stored as `"system"`); - configs that still say `"default"` are read as System and rewritten on save. - The **Save / Cancel / Restore defaults** row sits 4 px from the left edge, as its layout always intended, rather than 8. - The caption column is as wide as the widest caption instead of a fixed width, @@ -57,16 +113,9 @@ dragged.** the rows above have to give but a dropdown — which paints its box out to the row's edge — does not, so the gap collapsed to about a pixel. The Theme row now keeps the same gap the checkbox rows have. -- The **About** repository link points at GitHub (`mixeme/gosentry`) instead of - the private Gitea mirror. **Documentation:** -- The **README Schedules** section now documents `@every` in full: supported Go - duration units (`ns` through `h`), combined values such as `1h30m`, the link to - `time.ParseDuration`, the fact that days/months/years belong in cron rather - than `@every`, the one-second scheduler tick floor, cron examples for monthly - and yearly runs, and the `@hourly`/`@daily`/… descriptors. - The **README** describes the application that exists. Its `gosentry.json` sample was three keys short of what the app writes on first run, which made the one file the user is invited to hand-edit the least accurate thing in the @@ -104,24 +153,6 @@ dragged.** split in one pass during the next whole-project review, since six separate passes would settle the same seam question six ways. -**Tests:** - -- Three tests with byte-identical coverage to an existing test and no unique - assertion are gone: `TestCleanupLogsKeepsFilesWithinAgeLimit`, - `TestRunDueEmptyOverlapInheritsGlobal` (its one unique setup guard moved into - `TestRunDueQueueRerunsAfterFinish`), and `TestSameWindowsPathHandlesSpaces` - (its spaces case folded into `TestSameWindowsPathIgnoresCaseAndQuotes`'s - fixture). -- `storage.defaultJobs` — the one accidental 0%-coverage gap the review - found — is now exercised by - `TestLoadOrCreateJobsSeedsSampleJobsOnFirstRun`, which also corrects - `docs/TESTS.md`: `TestLoadOrCreateConfigCreatesDefaultsOnFirstRun` never - touched jobs, so the "and a sample job" half of its old description was - wrong. -- `src/runner/seed_test.go`'s hand-rolled `itoa` — 18 lines of digit-by-digit - conversion in a file that already imports `strconv` — is replaced with - `strconv.FormatInt`. - ## 0.15.0 - 2026-07-26 **Settings points at the jobs file itself, not the folder holding it.** @@ -184,8 +215,6 @@ button for the logs folder.** **Jobs sidebar:** -- The **Disable auto** row gained a top inset matching the gap below it, so it - no longer sits flush against the tab bar. - The **Folder** caption moved onto the filter row itself, beside the select and the view toggle, instead of occupying its own line above it — the job list now starts a full label higher. diff --git a/src/app/version.go b/src/app/version.go index c11f844..c028b08 100644 --- a/src/app/version.go +++ b/src/app/version.go @@ -3,4 +3,4 @@ package app // Version is the application version shown in the GUI and used by build // scripts in artifact names. It is a var rather than a const so release builds // can override it with Go ldflags when CI tags a build. -var Version = "1.0.0" +var Version = "1.0.1"