feat(ariadne/mobile): 0.15 — visible update states (DOWNLOADING / READY / RETRY)

Silent-background prefetch was already the model in 0.12+, but the chip
showed the same "▲ 0.14" text whether the download was running, done, or
failed. Users had no way to know they'd get "Install now" instead of
"Download & install" until they tapped.

Chip is now a small state machine driven off UpdateInstaller.Progress:

- DOWNLOADING — muted amber pill, text "▲ 0.15 · 45%" ticking live from
  onProgress. Tap = "Downloading in the background, tap again when green."
- READY — green pill, "▲ Install 0.15". A brief toast fires on state entry
  so the user sees the prefetch just completed. Tap = short confirmation
  dialog, then straight to the platform package installer.
- RETRY — appears when the prefetch fails. One tap re-runs prefetch and
  the chip returns to DOWNLOADING.

The confirmation dialog now spells out that Android replaces Ariadne in
place and reopens on the new version — matches Android's actual behaviour.
saveSession() runs before launchInstall so the newly-launched v0.15
restores tabs cleanly.

Dead code drop: promptToUpdate + downloadThenInstall (the old on-demand
progress-dialog path) — the state machine handles both silent and
tap-first flows.

Release: ariadne-v0.15.apk sha256
35532e596ec43a2da0cf49496640c72972321f5a44fa2e16d259d281a021b425
Deployed to dl.silentmode.st; site/releases-manifest.json bumped.
This commit is contained in:
Local Dev 2026-09-10 23:34:31 +02:00
parent d6c1f63043
commit 219ee56217

View file

@ -21,16 +21,16 @@
{
"id": "ariadne-android",
"product": "Ariadne for Android",
"version": "0.14",
"date": "2026-09-09",
"version": "0.15",
"date": "2026-09-10",
"platform": "android",
"minSdk": 21,
"signed": true,
"signingAuthority": null,
"signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
"changes": "Feature batch — makes the app feel like a real browser. Bookmarks: ⭐ button in the address row toggles the current URL; long-press opens the list; a Your-bookmarks section appears above Featured on the start page. Undo close tab: a floating pill offers UNDO for 5s after a closeTab. Long-press a link: Open in new tab / Copy link / Share link. Downloads: WebView.setDownloadListener wired to Android's system DownloadManager so PDFs, APKs, and media save via the platform notification. Pull-to-refresh: hand-rolled overscroll gesture (no AndroidX) with a gold pull-to-reload / release-to-reload chip. Share-target intent: Ariadne now appears in the system Share sheet and registers as a browser for http/https so links from other apps open here. Address bar polish: strips https:// and trailing / when unfocused (Chrome/Safari convention), long-press copies the full URL, a clear-× shows while typing. Splash screen: cold start paints the Ariadne mark on navy instead of the black flash.",
"changes": "Update flow gets visible states so silent-background-download → tap-to-install feels honest. On launch the app polls the manifest as before, and if a newer version exists the address-bar update chip becomes visible immediately in DOWNLOADING state — muted amber, showing '▲ 0.15 · 45%' as the prefetch runs. When the SHA-256 verifies against the manifest, the chip flips to READY: green pill, '▲ Install 0.15', and a brief toast 'Ariadne 0.15 downloaded — ready to install' announces it so the user knows. Tapping the ready chip opens a short confirmation dialog that spells out Android replaces the app in place and reopens it on the new version. If the prefetch fails (network drop mid-download) the chip becomes RETRY and one tap restarts the whole prefetch. saveSession() fires before the install intent so the newly-launched v0.15 restores tabs cleanly. No new permissions; no functional change to bookmarks / downloads / pull-to-refresh / share-target from 0.14 — this is a chip-visibility polish release.",
"files": {
"ariadne-v0.14.apk": "0deace437ccde7709cd21486c9b7b37b2a57463cead79b75672d974d3e5b11b0"
"ariadne-v0.15.apk": "35532e596ec43a2da0cf49496640c72972321f5a44fa2e16d259d281a021b425"
}
},
{