surface release notes: a what's-new popup after an update #105

Closed
opened 2026-08-16 15:52:36 +00:00 by nalum · 0 comments
Owner

After an update, nothing tells the family what changed — the server quietly becomes a new version under the web app, and a new APK just opens onto the same screens. The release notes exist (the release pipeline publishes them on the forge), but nobody sees them unless an admin goes looking.

Show a "What's new" popup the first time the app opens after an update, carrying that version's release notes.

Design

  • The server serves the notes. The web canon forbids external requests and the forge is not something every phone should talk to. A new SystemService/ReleaseNotes RPC (all signed-in roles — release notes are household news, not admin business) returns the running server version plus the release entry (title, body, url) for a requested version — empty means the server's own. The server derives the per-tag endpoint from the existing update feed (releases/latest → releases/tags/<tag>), with the same timeout, body cap and URL sanitising as CheckForUpdate, and caches per tag in memory: releases are immutable.
  • Web: after sign-in, compare the server version against the last-seen version in the namespaced device prefs (eagraiclainne.prefs.<uid>). Different → open a Sheet with the notes ("shown-once content opens in a Sheet", per the canon). A brand-new profile/device records the version silently — a first visit is not an update. The seen-mark is written only after the sheet actually shows, so an unreachable feed retries next open instead of losing the notes.
  • Android: same dance against BuildConfig version name and a device pref, fetching the notes for the APK's own version through the new RPC, shown as a bottom sheet.
  • Notes render as plain pre-wrapped text first; the pipeline's notes are line-oriented. Fancier markdown can come later if the notes ever need it.

Definition of done

  • Deploying a new server version greets each member once with that version's notes on the web; installing a new APK does the same on Android.
  • The RPC has its PermissionMatrix entry; make check passes; verified against the live deploy.
After an update, nothing tells the family what changed — the server quietly becomes a new version under the web app, and a new APK just opens onto the same screens. The release notes exist (the release pipeline publishes them on the forge), but nobody sees them unless an admin goes looking. Show a "What's new" popup the first time the app opens after an update, carrying that version's release notes. ### Design - **The server serves the notes.** The web canon forbids external requests and the forge is not something every phone should talk to. A new `SystemService/ReleaseNotes` RPC (all signed-in roles — release notes are household news, not admin business) returns the running server version plus the release entry (title, body, url) for a requested version — empty means the server's own. The server derives the per-tag endpoint from the existing update feed (`releases/latest` → `releases/tags/<tag>`), with the same timeout, body cap and URL sanitising as `CheckForUpdate`, and caches per tag in memory: releases are immutable. - **Web**: after sign-in, compare the server version against the last-seen version in the namespaced device prefs (`eagraiclainne.prefs.<uid>`). Different → open a Sheet with the notes ("shown-once content opens in a Sheet", per the canon). A brand-new profile/device records the version silently — a first visit is not an update. The seen-mark is written only after the sheet actually shows, so an unreachable feed retries next open instead of losing the notes. - **Android**: same dance against `BuildConfig` version name and a device pref, fetching the notes for the APK's own version through the new RPC, shown as a bottom sheet. - Notes render as plain pre-wrapped text first; the pipeline's notes are line-oriented. Fancier markdown can come later if the notes ever need it. ### Definition of done - Deploying a new server version greets each member once with that version's notes on the web; installing a new APK does the same on Android. - The RPC has its `PermissionMatrix` entry; `make check` passes; verified against the live deploy.
nalum added reference v1.5.0 2026-08-16 15:52:36 +00:00
nalum closed this issue 2026-08-16 19:44:49 +00:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
eagraiclainne/app#105
No description provided.