feat(app): what's new after an update, drafted by the release tool (ADR 0030, D61)

halkyon_app's WhatsNew reads what each release changed from the app's
assets/whats_new/ (<version>.<language>.txt, English and German, a change
a line): after an update a sheet lists every release since the one the
device showed last, newest first, once; Settings shows the running
version's again, above About. Nothing on a fresh install.

tool/release.dart drafts the missing texts from the commits that count
after "Go on?" (German marked TRANSLATE:), opens them in the editor until
they fit (no mark left, F-Droid's 500 characters) and commits them with
the version. The English is the Forgejo notes' What's new, each language
F-Droid's changelog of the build, written at publishing and copied in by
tool/fdroid_repo.sh. Learn and Train bundle their texts, Learn's 0.22.0
and Train's 0.1.0 written to start.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-31 19:36:20 +01:00
commit 7727317c68
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -1535,6 +1535,34 @@ Strava. What was found, 27 Oct:
title, which, tapped, scrolls back up to the row. The row alone is the scroll view's
header, nothing pinned, so the tabs' lists need no room kept for it and stay plain
`ListView`s.
- **D61 What's new, in every Halkyon app** (the developer's; 30 and 31 Oct): after an
update, a sheet lists what changed, once per device, and Settings shows it again
(`WhatsNewTile`, in the About card), shared in halkyon_app (`WhatsNew`,
`WhatsNewOnUpdate` around the tabs, `WhatsNewScope` around the app). Before it,
Forgejo's notes listed the feat/fix subjects, and F-Droid and the Snap Store
showed nothing (the Snap Store has no field for it).
- **One file a release and language** in the app's `assets/whats_new/`
(`<version>.<language>.txt`, English and German, a change a line as `- …`),
bundled with the app; over one changelog per language, which the app and the
tool would parse by sections and which grows with each release.
- **Drafted, then edited**: `tool/release.dart`, after *Go on?*, drafts the
missing files from the commits that count (features, then fixes, without types,
scopes and closing references; German the same lines marked `TRANSLATE:`) and
opens them in `$VISUAL`/`$EDITOR` (or waits for Enter) until each lists a change,
has no mark left and fits F-Droid's 500 characters; they go into the release
commit with the version (the first release's alone, where the pubspec keeps its
version). A run stopped there keeps them for the next, the only untracked files
a release starts with. The dry run prints them, or the drafts.
- **The same text everywhere**: the English as the Forgejo notes' *What's new*, in
place of the commits' list, and each language as F-Droid's changelog of the build
(`metadata/<app id>/<locale>/changelogs/<build>.txt`, `en-US` and `de`), written
by the tool at publishing and copied in by `tool/fdroid_repo.sh`
(`HALKYON_FDROID_METADATA`), so nothing is committed twice.
- **Every release since**: someone who skipped updates sees each release's changes
since the version the device showed last (`whats_new.json` in the support
folder), newest first; over the newest alone. Nothing on a fresh install; a device
used before (an instance chosen) is shown the running version's on its first start
with this. In the app's language, else English.
## Consequences