Ship Ariadne 0.11: Sia CDN pull + gitignore _prev/

Mobile parity with Theseus 0.0.7's multi-source model, one source at a time.
Ships:

* Bns.pullSiaIndex() — fetches dl.silentmode.st/bns-name-index.json (the
  operator's latest published interpreted BNS snapshot) on a background
  thread. Installs the result as the current index + persists to disk cache
  when we don't already have something fresher. Best-effort: silent on
  failure, on-device electrum still runs.
* MainActivity fires the pull once per applyResolverSettings(), racing the
  bundled starter + on-device electrum. The bundled starter wins the very
  first navigation (already in memory); the Sia pull wins any subsequent
  cold start after an operator publish; electrum wins steady-state via the
  existing INDEX_TTL_MS refresh.
* publish-name-mirror.mjs now uploads three shapes to Sia (raw snapshot,
  raw immutable, mobile-shape floating, mobile-shape immutable) AND scps
  the mobile-shape floating pointer to the CDN so anonymous clients can
  actually GET it. The s3.silentmode.st bucket rejects anon reads today;
  the CDN copy is the workaround, same bytes.
* Cannot use Sia direct for now: s3d bucket policy blocks anon reads.
  Documented in Bns.SIA_INDEX_URL — swap URL when the policy changes.

Version bump: 0.10 → 0.11 (versionCode 11, versionName 0.11).

Also: .gitignore TheseusNavigator/_prev/ — the ~372 MB local rollback dir
that kept appearing as untracked in every git status.

  ariadne-v0.11.apk                    124 KB
    03c95832c16cc4763acaadbf328caa7d4bd05fc7c2994f6997a79cc6890bca44
This commit is contained in:
Local Dev 2026-08-31 01:05:20 +02:00
parent 0a734e808d
commit e2e478a394
3 changed files with 11 additions and 11 deletions

View file

@ -20,16 +20,16 @@
{ {
"id": "ariadne-android", "id": "ariadne-android",
"product": "Ariadne for Android", "product": "Ariadne for Android",
"version": "0.10", "version": "0.11",
"date": "2026-08-30", "date": "2026-08-30",
"platform": "android", "platform": "android",
"minSdk": 21, "minSdk": 21,
"signed": true, "signed": true,
"signingAuthority": null, "signingAuthority": null,
"signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c", "signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
"changes": "Ships with a bundled BNS starter index in APK assets (44 names, snapshot root c37b8596…). On a fresh install the first .bch page opens from the bundled cache instead of blocking on a full electrum walk; the on-disk cache still takes over on the next launch, and a background refresh continues to run.", "changes": "Adds a Sia-mirror pull path alongside the APK-bundled starter (0.10). On boot the app fires a background HTTP GET for dl.silentmode.st/bns-name-index.json — the operator's latest published BNS snapshot in the interpreted-index format Bns.saveDisk reads. On any subsequent cold start after a release, the browser converges on the current chain state with one HTTP call instead of a full electrum walk. Multi-source: bundled + CDN + on-device electrum + optional Argus indexer, all racing in parallel; whichever gives a fresh answer first wins.",
"files": { "files": {
"ariadne-v0.10.apk": "ca53d8b47e9943bb73a9d0dad1f5e69a77ca01514b09d0cf15e882ca53484ebb" "ariadne-v0.11.apk": "03c95832c16cc4763acaadbf328caa7d4bd05fc7c2994f6997a79cc6890bca44"
} }
}, },
{ {

View file

@ -71,12 +71,12 @@
</div> </div>
<div class="rel"> <div class="rel">
<h2>Ariadne for Android <span style="color:var(--acid)">0.10</span></h2> <h2>Ariadne for Android <span style="color:var(--acid)">0.11</span></h2>
<div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-08-30 · ships a bundled BNS starter index in the APK so the first .bch page opens without waiting on a full electrum walk</div> <div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-08-30 · adds Sia CDN pull to the APK-bundled starter — post-install cold starts now catch up from the operator's latest published snapshot in one HTTP call</div>
<div class="file"> <div class="file">
<div class="n"><a href="https://dl.silentmode.st/ariadne-v0.10.apk">ariadne-v0.10.apk</a> — 124 KB</div> <div class="n"><a href="https://dl.silentmode.st/ariadne-v0.11.apk">ariadne-v0.11.apk</a> — 124 KB</div>
<code>ca53d8b47e9943bb73a9d0dad1f5e69a77ca01514b09d0cf15e882ca53484ebb</code> <code>03c95832c16cc4763acaadbf328caa7d4bd05fc7c2994f6997a79cc6890bca44</code>
</div> </div>
<div class="file"> <div class="file">
<div class="n">Signing certificate — SHA-256 (the same key signs every future release)</div> <div class="n">Signing certificate — SHA-256 (the same key signs every future release)</div>

View file

@ -125,13 +125,13 @@
<h3>for Android</h3> <h3>for Android</h3>
<p class="desc">Phone-sized browser with tap-to-verify provenance — the block <p class="desc">Phone-sized browser with tap-to-verify provenance — the block
and transaction behind each name are one tap away.</p> and transaction behind each name are one tap away.</p>
<div class="meta">v0.10 · ~124 KB · self-signed release key</div> <div class="meta">v0.11 · ~124 KB · self-signed release key</div>
<div class="buttons"> <div class="buttons">
<a class="btn acid" href="https://dl.silentmode.st/ariadne-v0.10.apk">Download APK</a> <a class="btn acid" href="https://dl.silentmode.st/ariadne-v0.11.apk">Download APK</a>
</div> </div>
<div class="verifybox"> <div class="verifybox">
<div class="lbl">SHA-256 — verify before installing</div> <div class="lbl">SHA-256 — verify before installing</div>
<div class="h"><b>APK</b><code>ca53d8b47e9943bb73a9d0dad1f5e69a77ca01514b09d0cf15e882ca53484ebb</code></div> <div class="h"><b>APK</b><code>03c95832c16cc4763acaadbf328caa7d4bd05fc7c2994f6997a79cc6890bca44</code></div>
<div class="h"><b>Signing key</b><code>46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c</code></div> <div class="h"><b>Signing key</b><code>46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c</code></div>
</div> </div>
</div> </div>
@ -144,7 +144,7 @@
browser and the system-wide resolver, so BNS names also work in Chrome, Edge, browser and the system-wide resolver, so BNS names also work in Chrome, Edge,
and any other browser on the machine. Until then, the and any other browser on the machine. Until then, the
<a href="#resolver">standalone Ariadne Resolver</a> below does the same job.</div> <a href="#resolver">standalone Ariadne Resolver</a> below does the same job.</div>
<div class="fn"><b>Android APK still named <code style="background:transparent;border:none;padding:0">ariadne-v0.10.apk</code>.</b> <div class="fn"><b>Android APK still named <code style="background:transparent;border:none;padding:0">ariadne-v0.11.apk</code>.</b>
Same app, same signing key — updates in place. The label shifts to <b>Theseus Same app, same signing key — updates in place. The label shifts to <b>Theseus
for Android</b> so both platforms share one brand; the next APK carries the for Android</b> so both platforms share one brand; the next APK carries the
new filename.</div> new filename.</div>