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

@ -16,6 +16,7 @@ void main() {
AppRelease app = testApp,
String? previousTag = 'notes-v0.18.0',
List<Commit> commits = const [],
String? whatsNew,
}) => releaseNotes(
app: app,
version: const Version(0, 19, 0),
@ -24,8 +25,31 @@ void main() {
certificate: certificate,
fdroidFingerprint: fingerprint,
signer: signer,
whatsNew: whatsNew,
);
test("with what's new, the notes give it in place of the commits", () {
final text = notes(
commits: const [Commit(hash: 'a', subject: 'feat: tiles')],
whatsNew: '- Tiles on the first start.\n\n- Flags.\n',
);
expect(
text,
contains(
"the project's instance.\n"
'\n'
"### What's new\n"
'\n'
'- Tiles on the first start.\n'
'- Flags.\n'
'\n'
'### Installing\n',
),
);
expect(text, isNot(contains('### Features')));
});
test("a release's notes list its features and fixes, oldest first, "
'without their types and scopes', () {
final text = notes(