system: a what's-new sheet after an update #106
No reviewers
Labels
No labels
adr
android
area/calendar
area/design-system
area/i18n
area/jobs
area/offline
area/server
area/testing
bug
ci
duplicate
enhancement
help wanted
invalid
notifications
question
reliability
security
severity/low
severity/medium
tracking
web
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
eagraiclainne/app!106
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/whats-new"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Stacked on #104 (merge order #101 → #102 → #103 → #104 → this). Closes #105.
The gap. 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 pipeline publishes them on the forge — but nobody sees them unless an admin goes looking.
The server serves the notes. The web canon forbids external requests, and phones have no business talking to the forge either.
SystemService/ReleaseNotesreturns the running server version plus the release entry (title, body, url) for a requested tag — empty means the server's own. The per-tag endpoint is derived from the existing update feed (releases/latest→releases/tags/<tag>), withCheckForUpdate's timeout, body cap and URL sanitising, and entries are cached in memory per tag: releases are immutable, so a hit never expires, while a miss is not cached and retries. Every signed-in role may ask (matrix entry: Admin, Member, Child) — release notes are household news, not admin business. A tag with no published entry answersfound: falsehonestly, which is what a dev build's own version gets.Web. After sign-in, the shell compares the server version against a per-profile seen-mark in device localStorage (deliberately not the synced prefs — "seen" is a fact about this screen, and it stays clear of the ADR-0029 whole-message write). Different → a Sheet ("shown-once content opens in a Sheet") with the notes, pre-wrapped, plus a link to the release page. A brand-new profile records the version silently — a first visit is not an update — and the seen-mark is written only after the sheet actually shows, so an unreachable feed retries next open instead of losing the notes.
Android. The same dance against
BuildConfig.VERSION_NAMEand a device preference, fetching the notes for the APK's own version through the new RPC, shown as a bottom sheet from the signed-in shell.Verified against the live deploy: a member (not admin) fetched the real published v1.5.0 notes through the proxy — title and the pipeline's markdown body came back intact — and the dev build's own version answered
found: false, so debug builds greet nobody. Unit specs cover the fetch, the cache surviving a dead feed, the not-found answer and the not-a-version refusal.make checkand the Android unit tests are green; on-device sheet verification pending with the rest of the stack.Grew by one commit: the admin version check now opens the same release-notes sheet. When the check finds a newer release, the card offers Show the release — it fetches the latest tag through
ReleaseNotesand opens the sharedReleaseNotesSheet(extracted from the what's-new popup), which still carries the forge link. A failed fetch says so and falls back to the plain link. Verified live: the dev cluster (a pre-release of v1.5.0) reports v1.5.0 available and fetches its notes — the exact path the button drives.c43b0c195dd003d037fcTest report
Coverage: 28.2%
Updated by the check workflow · commit
d003d037fcAndroid test report
Coverage: 2.4% of lines
Updated by the android workflow · commit
d003d037fc