release: Ariadne for Android 0.19 and Ariadne Resolver 0.1.3 — co-sign rule on devices

Until now only the gateway, Theseus and the desktop reader applied the
TLD co-sign rule; phones and the Windows resolver still admitted every
registration under a cosign or hidden TLD, so the network disagreed
about which names exist. Both shipped builds now carry the rule.

Android 0.19: the JSON helpers in the new TLD-map code used throwing
getters inside methods that do not declare the checked exception, which
javac rejected under the real build (the earlier compile check ran
without -bootclasspath and stopped at the aapt R errors first). Switched
to the non-throwing opt* forms. Release-signed with the existing key.

Resolver 0.1.3: no source change beyond the resolver library already
committed; the installer picks up the source tree, so this is a version
bump and a rebuild.

Manifest, releases page, tools page and theseus page point at the new
files; dl.silentmode.st/latest redirects regenerated.
This commit is contained in:
Local Dev 2026-09-19 09:13:27 +02:00
parent 7d5fd7211b
commit e7126dbc17
4 changed files with 20 additions and 20 deletions

View file

@ -1,6 +1,6 @@
{ {
"schema": "silentmode-releases/2", "schema": "silentmode-releases/2",
"updated": "2026-09-15", "updated": "2026-09-19",
"mirrors": [ "mirrors": [
"https://dl.silentmode.st/" "https://dl.silentmode.st/"
], ],
@ -8,29 +8,29 @@
{ {
"id": "ariadne-resolver", "id": "ariadne-resolver",
"product": "Ariadne Resolver (Windows)", "product": "Ariadne Resolver (Windows)",
"version": "0.1.2", "version": "0.1.3",
"date": "2026-09-09", "date": "2026-09-19",
"platform": "win-x64", "platform": "win-x64",
"signed": false, "signed": false,
"signingAuthority": null, "signingAuthority": null,
"changes": "install.ps1 no longer dies at the CA-rotation probe on PS 5.1 (native subprocess stderr no longer trips $ErrorActionPreference=Stop; node calls go through Invoke-NodeCapture using OS-level stream redirection). Multi-source TLD cascade: comma-separated indexer list (default navigate.st,silentmode.st) then C:\\ProgramData\\Ariadne\\tlds-cache.json then electrum WSS then bundled ariadne.config.json then bootstrap; authoritative fetches refresh the cache automatically. CA import switched to X509Store direct so Cert: PSDrive doesn't have to be loaded. Inno now stops the running daemon before file replacement so upgrades no longer roll back with \"DeleteFile access denied\" on node.exe.", "changes": "Resolver library brought level with the desktop reader: per-TLD certificate registry read from the TLD beacon, current NFT owner tracked per name, the port-443 electrum route tried first, and the TLD co-sign rule (a registration under a \"cosign\" or hidden TLD is only recognised when it carries the TLD's certificate). Same daemon, same install; existing installs upgrade in place.",
"files": { "files": {
"AriadneResolver-Setup-0.1.2.exe": "5a2c9e4f3c5e1a162008641019f5ffc35968751c0440f94d3c5fe67aafb8cc5e" "AriadneResolver-Setup-0.1.3.exe": "79b920b8e4e92aa9a54653035a4873dd996b5d4a9093c43d114e0a3ee4ffb003"
} }
}, },
{ {
"id": "ariadne-android", "id": "ariadne-android",
"product": "Ariadne for Android", "product": "Ariadne for Android",
"version": "0.18", "version": "0.19",
"date": "2026-09-14", "date": "2026-09-19",
"platform": "android", "platform": "android",
"minSdk": 21, "minSdk": 21,
"signed": true, "signed": true,
"signingAuthority": null, "signingAuthority": null,
"signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c", "signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
"changes": "Security fix and desktop parity. The app no longer carries any storage credentials: Sia-hosted (s3) content is fetched through the public relay at navigate.st, exactly as Theseus does — earlier builds signed their own S3 requests with an embedded key. Name resolution now uses the same canonical model as the desktop resolver (names are label.tld; coinspectrum.x and coinspectrum.bch are distinct), which also fixes on-device lookups against the bundled and mirrored index that previously always missed. BCNR-first on any TLD once the chain knows a name (poutakidis.de, syskypo.de), the active TLD list refreshed from the per-TLD registry via navigate.st/api/tlds, the port-443 electrum route tried first for mobile carriers, record precedence matching Theseus (subdomain + ip first, p never under a subdomain), relay HTML base-href stripped, and start-page cards refreshed from dl.silentmode.st/home-cards.json like the desktop start page.", "changes": "Consensus fix: the on-device index now applies the TLD co-sign rule. A name registered under a TLD whose owner set policy \"cosign\" or switched the TLD off (hidden) only counts when the registration transaction also carries the TLD's own certificate, exactly as the gateway, Theseus and the desktop resolver decide it, so every client agrees on which names exist. The index reads the per-TLD certificate registry and its policy history from the TLD beacon at build time; if that beacon cannot be reached it keeps the previous behaviour instead of returning an empty index. No UI changes.",
"files": { "files": {
"ariadne-v0.18.apk": "920272deb1ff3cb163d609882f4fdaf422c163648b96944d16670ba0ba2ac5bf" "ariadne-v0.19.apk": "d2f4ad359e7ac36c1d0729100aef613be968cd17b153e94e124f8500fcbfc711"
} }
}, },
{ {

View file

@ -71,22 +71,22 @@
</div> </div>
<div class="rel"> <div class="rel">
<h2>Ariadne Resolver — Windows <span style="color:var(--acid)">0.1.2</span></h2> <h2>Ariadne Resolver — Windows <span style="color:var(--acid)">0.1.3</span></h2>
<div class="meta">Windows 64-bit · unsigned · bundled Node runtime · 2026-09-09 · <b>Actually works this time</b> — 0.1.1's persistent install log caught the bug 0.1.0 had had silently all along: install.ps1 died at the CA-rotation probe because PowerShell 5.1's <code style="display:inline">$ErrorActionPreference=Stop</code> plus a native subprocess writing to stderr = "NativeCommandError", killing the script before it could register the daemon or add the last NRPT rule. 0.1.2 routes every node call through <code style="display:inline">Invoke-NodeCapture</code> (Windows-level stream redirection, PS 5.1 doesn't touch the streams). TLD list now cascades: comma-separated indexer list → local cache → electrum WSS → bundled snapshot → bootstrap, and any authoritative fetch refreshes <code style="display:inline">C:\ProgramData\Ariadne\tlds-cache.json</code>. CA import via .NET X509Store direct (no <code style="display:inline">Cert:</code> PSDrive dependency). Upgrades stop the running daemon before file replacement so <code style="display:inline">node.exe</code> is no longer held open during install.</div> <div class="meta">Windows 64-bit · unsigned · bundled Node runtime · 2026-09-19 · <b>Same rules as every other client</b> — Resolver library brought level with the desktop reader: per-TLD certificate registry read from the TLD beacon, current NFT owner tracked per name, the port-443 electrum route tried first, and the TLD co-sign rule (a registration under a "cosign" or hidden TLD is only recognised when it carries the TLD's certificate). Same daemon, same install; existing installs upgrade in place.</div>
<div class="file"> <div class="file">
<div class="n"><a href="https://dl.silentmode.st/AriadneResolver-Setup-0.1.2.exe">AriadneResolver-Setup-0.1.2.exe</a> — ~24 MB</div> <div class="n"><a href="https://dl.silentmode.st/AriadneResolver-Setup-0.1.3.exe">AriadneResolver-Setup-0.1.3.exe</a> — ~24 MB</div>
<code>5a2c9e4f3c5e1a162008641019f5ffc35968751c0440f94d3c5fe67aafb8cc5e</code> <code>79b920b8e4e92aa9a54653035a4873dd996b5d4a9093c43d114e0a3ee4ffb003</code>
</div> </div>
</div> </div>
<div class="rel"> <div class="rel">
<h2>Ariadne for Android <span style="color:var(--acid)">0.18</span></h2> <h2>Ariadne for Android <span style="color:var(--acid)">0.19</span></h2>
<div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-09-14 · <b>0.18 — security fix + desktop parity</b> — Security fix and desktop parity. The app no longer carries any storage credentials: Sia-hosted (s3) content is fetched through the public relay at navigate.st, exactly as Theseus does — earlier builds signed their own S3 requests with an embedded key. Name resolution now uses the same canonical model as the desktop resolver (names are label.tld; coinspectrum.x and coinspectrum.bch are distinct), which also fixes on-device lookups against the bundled and mirrored index that previously always missed. BCNR-first on any TLD once the chain knows a name (poutakidis.de, syskypo.de), the active TLD list refreshed from the per-TLD registry via navigate.st/api/tlds, the port-443 electrum route tried first for mobile carriers, record precedence matching Theseus (subdomain + ip first, p never under a subdomain), relay HTML base-href stripped, and start-page cards refreshed from dl.silentmode.st/home-cards.json like the desktop start page.</div> <div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-09-19 · <b>0.19 — co-sign rule</b> — Consensus fix: the on-device index now applies the TLD co-sign rule. A name registered under a TLD whose owner set policy "cosign" or switched the TLD off (hidden) only counts when the registration transaction also carries the TLD's own certificate, exactly as the gateway, Theseus and the desktop resolver decide it, so every client agrees on which names exist. The index reads the per-TLD certificate registry and its policy history from the TLD beacon at build time; if that beacon cannot be reached it keeps the previous behaviour instead of returning an empty index. No UI changes.</div>
<div class="file"> <div class="file">
<div class="n"><a href="https://dl.silentmode.st/ariadne-v0.18.apk">ariadne-v0.18.apk</a> — 146 KB</div> <div class="n"><a href="https://dl.silentmode.st/ariadne-v0.19.apk">ariadne-v0.19.apk</a> — 146 KB</div>
<code>920272deb1ff3cb163d609882f4fdaf422c163648b96944d16670ba0ba2ac5bf</code> <code>d2f4ad359e7ac36c1d0729100aef613be968cd17b153e94e124f8500fcbfc711</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

@ -251,7 +251,7 @@
<h3>Ariadne for Android</h3> <h3>Ariadne for Android</h3>
<p>Phone-sized browser with tap-to-verify provenance — the block and <p>Phone-sized browser with tap-to-verify provenance — the block and
transaction behind each name are one tap away.</p> transaction behind each name are one tap away.</p>
<div class="meta">v<span data-live="android-version">0.18</span> · ~146 KB · self-signed release key · in-app auto-update</div> <div class="meta">v<span data-live="android-version">0.19</span> · ~146 KB · self-signed release key · in-app auto-update</div>
<div class="btns"> <div class="btns">
<a class="btn acid" href="https://dl.silentmode.st/latest/ariadne.apk">Download APK</a> <a class="btn acid" href="https://dl.silentmode.st/latest/ariadne.apk">Download APK</a>
</div> </div>

View file

@ -138,7 +138,7 @@
<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.18 · ~146 KB · self-signed release key · in-app auto-update</div> <div class="meta">v0.19 · ~146 KB · self-signed release key · in-app auto-update</div>
<div class="buttons"> <div class="buttons">
<a class="btn acid" href="https://dl.silentmode.st/latest/ariadne.apk">Download APK</a> <a class="btn acid" href="https://dl.silentmode.st/latest/ariadne.apk">Download APK</a>
</div> </div>
@ -245,7 +245,7 @@
TLDs to the local daemon, imports one root certificate <b>name-constrained</b> TLDs to the local daemon, imports one root certificate <b>name-constrained</b>
to those TLDs — the root cannot vouch for <code class="inline">.com</code>. to those TLDs — the root cannot vouch for <code class="inline">.com</code>.
Everything reverses with the bundled uninstaller.</p> Everything reverses with the bundled uninstaller.</p>
<div class="meta">Windows 64-bit · v0.1.2 · bundled Node runtime · unsigned build</div> <div class="meta">Windows 64-bit · v0.1.3 · bundled Node runtime · unsigned build</div>
</div> </div>
<div class="act"> <div class="act">
<a class="btn" href="https://dl.silentmode.st/latest/AriadneResolver-Setup.exe">Installer</a> <a class="btn" href="https://dl.silentmode.st/latest/AriadneResolver-Setup.exe">Installer</a>