Repository navigation
Update notice: slide-in pill, highlights pop-up, download card; updater polling fix - #600
Merged
Merged
Conversation
The amber banner under the top bar is gone. When a newer release is found, a pill slides out of the right edge (icon, "Update available", version and size, Dismiss / View) and settles 10 dp short of the edge with the theme-accent outline the dialogs use. Dismiss slides it back off for this session only; the old Skip persisted the version for good and left Settings as the only way back. View slides it off and opens a pop-up with the release's quick highlights (five short lines, title plus one sentence, "Full notes" for the GitHub page), Later / Update now. Update now, from the pop-up, Settings or About, runs the download as a card over the home screen: progress, bytes of total, speed, time left, Cancel, and Retry / Release page on failure. UpdateManager publishes the download as a StateFlow and no longer calls the dialog-creating HttpUtils.download overload, so the first-launch setup screen can no longer appear during an update. HttpUtils gains downloadToFile(), a byte-level progress download with no UI of its own. update.json carries three new optional fields the app reads from this build on and older builds ignore: highlights (from <!-- update-highlight: Title | text --> comments in the notes file, else the first bullet list after the lead paragraph), size (bytes per flavor, for the pill and the download card) and publishedAt. release_notes.py writes highlights.json; release.yml and the notes check carry it through and print it in the job summary. Settings lists the highlights in place of the one-line notes when the release has them.
…polls update.json was read from the release-asset URL, so GitHub counted every in-app check as a download of the release: 846,893 of the repo's 992,611 "downloads" measured on 2026-09-18 were polling, and the checks fired on every launch, every Settings open and every About dialog with no throttle. App: check(ctx, force) answers automatic checks from the cache for six hours after the last successful one; only the Settings button and the prerelease toggle force a network check. The cache is per channel, so flipping the toggle can no longer serve the other channel's answer. The stable channel reads raw.githubusercontent.com/…/manifest/update.json and the prerelease channel …/manifest/update-pre.json, which count nothing and have no per-IP API limit; each falls back to the old path (release asset / GitHub API walk) until the branch exists. Manifests may carry an absolute apkUrl map, preferred over resolving the apk name against releases/latest, which also fixes a cached prerelease resolving its APK against the wrong release. CI: update.json gains the apkUrl map; after the release is created, release.yml commits update-pre.json (every cut) and update.json (stable cuts) to the orphan manifest branch. The release asset stays attached for installs older than this code.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Update notice as a slide-in pill, highlights pop-up and download card
Device-proven 2026-10-10 on a vc96 test build of this branch (pill → View → highlights → Update now → card at 36 MB/s → install sheet).
What changes for the user
UpdateManagerno longer calls the dialog-creatingHttpUtils.download(activity, …)overload, so the black first-launch setup screen can no longer appear during an update.Updater polling fix (agreed 2026-09-18)
manifestbranch (update.jsonstable,update-pre.jsonevery cut): no download counter, no API rate limit. Falls back to the release asset / API walk until the branch exists (first release from this code creates it). The asset stays attached for older installs.update.json
New optional fields, ignored by older builds:
highlights(from<!-- update-highlight: Title | text -->comments in the notes file, else the first bullet list after the lead paragraph),size(bytes per flavor),publishedAt,apkUrl(absolute per flavor).scripts/release_notes.pywriteshighlights.json; release-notes-check run 38106121718 extracted four from the 3.1.6-pre3 notes.Rollout
The first release cut from this branch is the first to carry highlights/size and to create the manifest branch; installs older than it keep the old behaviour. Delta (small) updates are a separate follow-up on their own branch.
CI: build-artifacts 38106437995 green (b02d58e, all four flavors); 38109096573 on the final commit.