site/releases/index.html
Local Dev 91ed42cd04 Ariadne 0.1.13: /api/status + per-source enable toggles in policy.json
Every subsystem is now individually switchable and reports its own state.

GET http://127.0.0.1/api/status returns:
- daemon: version, startedAt, uptimeSec, policy, permittedTlds, ports,
          upstream, gateway
- index:  size, nameCacheSize, warmStart {source, at, size}
- sources.snapshotHttps:  enabled, urls, lastAttempt/Success/Status/Error,
                          winnerUrl, notModified count, refreshes count, ETags
- sources.electrumWss:    enabled, lastAttempt/Success/Error, failStreak, refreshes
- sources.perQueryLookup: enabled, gateway, lastAttempt, hits/misses/errors
- sources.diskCache:      enabled, path, exists, size, mtime
- sources.localApi:       enabled, endpoints[]
- policyFile:             path, exists

policy.json schema extended with a sources.<name>.enabled block, hot-reloaded
by the existing loadPolicyOverride() on the same 5-second tick as the
collision policy. Each refresh/lookup path guards on its flag, so an operator
can isolate any subsystem without a restart:
  - snapshotHttps off  -> daemon skips dl.silentmode.st/Sia polling
  - electrumWss off    -> daemon skips chipnet WSS refresh
  - perQueryLookup off -> DNS handler misses fall straight through to forward
  - diskCache off      -> no write to and no read from bns-name-snapshot.json
  - localApi off       -> /api/* return 503 with a hint pointing at policy.json

Verified locally on port 18080: /api/status returned the full JSON with a
snapshot warm-start from dl.silentmode.st recorded in warmStart, ETag captured
in sources.snapshotHttps.etags, disk cache path/size/mtime populated.

Deployed dl.silentmode.st + Sia. sha256 a16d10759efede4412f4fdb52d59424bf56bbb258bb002ab930f4a5a5aef8a41.

The matching Theseus panel UI (source table with the toggles + a Copy-status
button that fetches /api/status) belongs in the Theseus release; not touched
here to avoid colliding with settings-preload.js work in flight from a
parallel session.
2026-10-01 00:08:57 +02:00

109 lines
8.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Silent Mode">
<meta property="og:title" content="Silent Mode — releases &amp;amp; checksums">
<meta property="og:url" content="https://silentmode.st/releases">
<meta property="og:image" content="https://silentmode.st/brand/og.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<title>Silent Mode — releases &amp; checksums</title>
<style>
:root{--bg:#0b0e14;--panel:#141a24;--line:rgba(255,255,255,.09);--ink:#e7eaf1;--mut:#8b98a9;--dim:#5e6678;--acid:#d6ff3d}
*{box-sizing:border-box}
body{margin:0;background:radial-gradient(1100px 560px at 50% -12%,#16202e,var(--bg));
color:var(--ink);font:16px/1.65 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
.wrap{max-width:820px;margin:0 auto;padding:3.5rem 1.2rem 4rem}
a{color:var(--acid)}
h1{font-size:1.8rem;margin:0 0 .3rem}
h1 .g{color:var(--acid)}
.lede{color:var(--mut);margin:.2rem 0 2rem}
.rel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px 22px;margin-bottom:16px}
.rel h2{font-size:1.15rem;margin:0 0 .2rem}
.rel .meta{color:var(--dim);font-size:12.5px;margin-bottom:1rem}
.file{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}
.file .n{font-size:14px;color:var(--ink)}
.file .n a{text-decoration:none}
.file code{display:block;font-family:ui-monospace,monospace;font-size:11.5px;color:#c9d4e3;
word-break:break-all;margin-top:4px}
.note{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--acid);
border-radius:10px;padding:14px 18px;color:var(--mut);font-size:13.5px;margin-top:1.6rem}
.note b{color:var(--ink)}
footer{color:var(--dim);font-size:12.5px;margin-top:2.5rem;text-align:center}
</style>
<link rel="stylesheet" href="shared.css?v=20260910">
<link rel="icon" type="image/svg+xml" href="favicon.svg">
</head>
<body>
<nav class="topnav">
<a class="brand" href="./"><svg class="logo" viewBox="0 0 32 20" aria-hidden="true"><rect class="l1" x="1.5" y="3.5" width="17" height="13" rx="6.5" ry="6.5" fill="none" stroke-width="2.6"/><rect class="l2" x="13.5" y="3.5" width="17" height="13" rx="6.5" ry="6.5" fill="none" stroke-width="2.6"/></svg>Silent <span class="g">Mode</span></a>
<a href="theseus">Theseus</a>
<a href="prometheus">Prometheus</a>
<a href="sirius">Sirius</a>
<a href="hephaestus">Hephaestus</a>
<a href="helios">Helios</a>
<a href="hermes">Hermes</a>
<a href="tools">Tools</a>
</nav>
<div class="wrap">
<h1>Silent <span class="g">Mode</span> — releases</h1>
<p class="lede">Canonical SHA-256 checksums for every published build. This page lives at the on-chain
name <code>releases.silentmode.bch</code>; the name pins where it is served from, so a tampered
mirror cannot change what you check against here.</p>
<div class="rel">
<h2>Theseus Navigator <span style="color:var(--acid)">0.3.60</span></h2>
<div class="meta">Windows 64-bit · unsigned · 2026-09-30 · <b>0.3.60 — pick your browsing language from the URL bar; per plug-in settings</b> — A new globe chip next to the URL-bar star switches the language your browser presents to websites (the <code style="display:inline">Accept-Language</code> header and <code style="display:inline">navigator.language</code>) with one click, or set it under Settings › General › Website language. <b>Automatic</b> follows your operating system; pin a specific language when you want a site to consistently serve you in Spanish or Russian even on a system in another language. Every entry point stays in sync — the toolbar chip, the Website-language row and the existing Anti-fingerprinting Language row all edit the same underlying value. Settings › Plug-ins is now compact: one row per plug-in with the on/off toggle on the right and update controls beside it; clicking a plug-in's title opens its own settings page with the full description and the Uninstall button, so everyday actions stay in front and dangerous ones don't sit next to them.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-Setup-0.3.60.exe">TheseusNavigator-Setup-0.3.60.exe</a> — installer</div>
<code>e44fceb6740b99e9b2fe66461fea5f5b70323350d874a77e9fd4dc19caa3ebb0</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-0.3.60-portable.exe">TheseusNavigator-0.3.60-portable.exe</a> — portable</div>
<code>286d756faec6af9f617b30c21030cc49e881fedb917f4dea4aec8cbd24042f99</code>
</div>
</div>
<div class="rel">
<h2>Ariadne Resolver — Windows <span style="color:var(--acid)">0.1.13</span></h2>
<div class="meta">Windows 64-bit · unsigned · bundled Node runtime · 2026-10-01 · <b>0.1.13 — every subsystem is switchable and reports its own state</b> — New endpoint <code style="display:inline">http://127.0.0.1/api/status</code> returns a full state report: daemon version + startup + policy + permitted TLDs + ports + upstream + gateway; index size + warm-start source; and per-source <code style="display:inline">enabled</code>/<code style="display:inline">lastAttempt</code>/<code style="display:inline">lastSuccess</code>/<code style="display:inline">lastError</code>/counters for <b>snapshotHttps</b>, <b>electrumWss</b>, <b>perQueryLookup</b>, <b>diskCache</b>, <b>localApi</b>. Same JSON drives a settings UI (once Theseus's Plug-ins panel picks it up) and is a support-ready "current state" dump. <code style="display:inline">C:\ProgramData\Ariadne\policy.json</code> extended with a <code style="display:inline">sources.&lt;name&gt;.enabled</code> block (hot-reloaded every 5 s alongside the collision policy) — flip any source off to isolate a path or measure without it. Includes 0.1.12 (orphan-safe upgrade + local BNS indexer API). Upgrades in place.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/AriadneResolver-Setup-0.1.13.exe">AriadneResolver-Setup-0.1.13.exe</a> — ~24 MB</div>
<code>a16d10759efede4412f4fdb52d59424bf56bbb258bb002ab930f4a5a5aef8a41</code>
</div>
</div>
<div class="rel">
<h2>Ariadne for Android <span style="color:var(--acid)">0.20</span></h2>
<div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-09-28 · <b>0.20 — every live TLD, fresh snapshot</b> — Every live BNS TLD is claimed by the on-device resolver. The app took its TLD list from the registry's legacy advertised set (nine TLDs), so a name under a newer TLD was only intercepted once it had turned up in the local index; the app now reads the registry's routable list (every TLD on the public listing, 24 today), and ships a bootstrap list matching it for cold start. The cold-start snapshot it pulls from the CDN is now refreshed every ten minutes from the gateway's index instead of by hand, so a fresh install sees names registered minutes ago rather than weeks. Same signing key; installs over 0.19.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/ariadne-v0.20.apk">ariadne-v0.20.apk</a> — 150 KB</div>
<code>e7362e356de14f010646f3c60908ccd4bbd8030914f7e6a5dc2722d9dcf5e51e</code>
</div>
<div class="file">
<div class="n">Signing certificate — SHA-256 (the same key signs every future release)</div>
<code>46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c</code>
</div>
</div>
<div class="note"><b>How to verify.</b> After downloading, compute the file's SHA-256 and compare it to
the value above — on Windows: <code style="display:inline">certutil -hashfile &lt;file&gt; SHA256</code>;
on Android, hash the downloaded <code style="display:inline">.apk</code> on a computer before you move
it to the phone, or use any file-hashing app. Nothing here is signed by an authority your device
already trusts — <b>by design</b> — so it will warn about an unrecognized app; the checksum is the
real check. The machine-readable manifest is at
<a href="https://dl.silentmode.st/releases-manifest.json">releases-manifest.json</a>.</div>
<footer>Silent Mode — a Deviant project. Alpha software on a test network.</footer>
</div>
</body>
</html>