This commit is contained in:
@@ -137,22 +137,15 @@ About as one collapsible release per entry. So a release edits one file and the
|
||||
stays readable offline. Keep the `## <version> — <date>` / `- bullet` shape; anything else
|
||||
in the file is skipped as prose, and a bullet wrapped onto a second line is rejoined.
|
||||
|
||||
**The same file is what a TV shows after it updates itself.** `ui/whatsnew/` puts the
|
||||
running build's changelog entry over the launcher once, and `Settings.whatsNewSeenVersion`
|
||||
(device state, deliberately not a synced preference — what is new is a property of the APK
|
||||
on *this* set) records that it has been. `whatsNewDecision` is the pure rule and holds the
|
||||
three cases that must not show a panel: a version already recorded, a **fresh install**
|
||||
(no record and nobody signed in — everything is new to that TV, so it is marked seen during
|
||||
setup instead), and a build the changelog does not describe, which is marked seen rather
|
||||
than shown as an empty panel. Signed out *with* a record is neither: the notes belong over
|
||||
the launcher, so that launch waits. Things to preserve — it is an overlay composed after
|
||||
`HomeScreen`, not a branch of `AppRoot`'s `when`, so the cached rows are already drawn
|
||||
behind it and nothing about it can delay startup; the version is recorded on dismissal,
|
||||
so a set switched off mid-panel is told again rather than never; and the Continue button
|
||||
points every direction back at itself, or one press of Down walks into rows the viewer
|
||||
cannot see behind the scrim. `maxChangesFor` derives the bullet count from the screen for
|
||||
the same reason detail panes derive their height — a panel that overruns a 720p set has no
|
||||
scrollbar to aim at and hides its own button.
|
||||
**An update is acknowledged once with a toast.** `ui/whatsnew/whatsNewDecision` compares the
|
||||
running build with `Settings.whatsNewSeenVersion`, and `AppRoot` briefly says “Memby has been
|
||||
updated to version …” over the launcher before recording it. The record is device state,
|
||||
deliberately not a synced preference: what is new is a property of the APK on *this* set.
|
||||
Two quiet cases matter: a **fresh install** has not updated from anything, so setup records
|
||||
the current build without announcing it; and a signed-out set with an older record waits
|
||||
until somebody signs in, because the notice belongs over the launcher. The changelog is no
|
||||
longer part of this decision — release history remains available in Settings → About, while
|
||||
local or unreleased builds still receive the same one-time update acknowledgement.
|
||||
|
||||
**Forced updates are server-controlled.** `server/internal/appupdate` decides `none` /
|
||||
`optional` / `mandatory` from the client's `X-Memby-Version` header against an
|
||||
|
||||
Reference in New Issue
Block a user