site audit: home, Ariadne page, Hermes downloads, releases/dl consolidation

Home: Prometheus and Hermes are live, not "designed"; new Ariadne and
Pithos cards; VPN, Bergamot and Mirrors linked; the page no longer claims
to run on nginx or to list "seven pieces".

/ariadne: new Silent Mode-headered page for the resolver family — Android
browser (APK, hash, signing key), standalone Windows resolver, how a lookup
resolves — linking out to the sovereign ariadne.x. "Ariadne" tab added to
every page's top nav; VPN and Bergamot navs normalised to the site-root
scheme while there.

Hermes: Download section (Windows installer + MSI, Android APK with hashes
from the manifest, web messenger), mobile and Windows marked live, hero
image path fixed; the brand-kit page's links were relative to a URL that
no longer has a trailing slash and the folder had never been deployed.

Releases/dl: the live dl manifest had been overwritten from a stale base
and was serving 0.3.106 to updaters while 0.3.110 was on the host; merged
(union) and reshipped. Manifest gains hermes-android/hermes-desktop; keep
policy aligned between the page (releases-page.mjs) and the VPS
(dl-vps-archive.sh, new, all products) so the page never links a build the
host no longer has. dl.silentmode.st/ now serves a generated index with
absolute links; dl-latest.sh tracked in-repo and extended with Hermes rows.
scripts/site-linkcheck.mjs resolves links the way the slash-less URLs do.
This commit is contained in:
Local Dev 2026-10-24 03:35:20 +03:00
parent 995775d085
commit 3e87ab3f81
19 changed files with 822 additions and 169 deletions

View file

@ -39,12 +39,29 @@ release blocks are generated from it. After adding a release to the manifest:
node scripts/releases-page.mjs # trims the manifest, rewrites the blocks
```
then scp `releases/index.html` + the manifest (both VPS paths). Do not hand-
edit the blocks; the next run overwrites them. Consumers (Theseus + Ariadne
updaters, `dl-latest.sh`) read only the first entry per product id, so
then scp `releases/index.html` + the manifest (both VPS paths) + the
generated `releases/dl-index.html` → `/opt/silent-mode/dl/index.html` (the
dl host has no shared.css, so that copy uses absolute links). Do not hand-
edit the blocks; the next run overwrites them. Consumers (Theseus + Ariadne +
Hermes updaters, `dl-latest.sh`) read only the first entry per product id, so
trimming never changes what they see. Older builds live on Sia under
`dl-archive/` and every old checksum is in git history.
**Ship to dl FROM the repo manifest, never the other way round.** On
2026-10-24 a session wrote its product's entries straight into
`/opt/silent-mode/dl/releases-manifest.json` from a stale base and silently
dropped four newer Theseus and two Ariadne entries — the auto-updater served
0.3.106 while 0.3.110 was on the host. Merge into `site/releases-manifest.json`
first (union by id+version+platform), run the script, then scp.
**Prune the VPS with `scripts/dl-vps-archive.sh`** (all products, `--dry-run`
first). Its keep table must match `KEEP` in `releases-page.mjs`, or the page
links installers the host no longer has. `/latest/` redirects are generated on
the VPS by `/opt/silent-mode/bin/dl-latest.sh` (cron, 5 min), tracked at
`VPS/SilentMode/dl-latest.sh`; a new product needs a row there too.
**Check links after editing pages:** `node scripts/site-linkcheck.mjs`.
## Old Theseus builds fill the VPS disk
`scripts/theseus-vps-archive.sh <version>` moves everything older than N-1 to

172
ariadne/index.html Normal file
View file

@ -0,0 +1,172 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Ariadne — the resolver and the mobile browser — Silent Mode</title>
<meta name="description" content="Ariadne: Silent Mode's name resolver. On Android it is a browser that resolves Bitcoin Cash names on the phone itself; on Windows a standalone system-wide resolver; inside Theseus it is built in. Downloads with SHA-256.">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Silent Mode">
<meta property="og:title" content="Ariadne — Silent Mode">
<meta property="og:description" content="The resolver behind every Silent Mode client: Android browser, standalone Windows resolver, built into Theseus.">
<meta property="og:url" content="https://silentmode.st/ariadne">
<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">
<link rel="stylesheet" href="shared.css?v=20260910">
<link rel="icon" type="image/svg+xml" href="favicon.svg">
<style>
.sov{margin:1.4rem 0 0;color:var(--dim);font-size:13px}
.sov b{color:var(--mut)}
.dl .h{font-size:11.5px;color:var(--dim);margin-top:.5rem}
.dl .h code{word-break:break-all}
</style>
</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="ariadne">Ariadne</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>
<header class="hero">
<div class="mark"><svg viewBox="0 0 64 64" aria-hidden="true" style="width:64px;height:64px"><circle cx="32" cy="32" r="30" fill="#141a24"/><path d="M14 44 C20 20, 44 20, 50 44" fill="none" stroke="#d6ff3d" stroke-width="4" stroke-linecap="round"/><path d="M20 44 C24 28, 40 28, 44 44" fill="none" stroke="#8b98a9" stroke-width="3" stroke-linecap="round"/><circle cx="32" cy="46" r="3" fill="#d6ff3d"/></svg></div>
<h1>Ariadne <span class="g">resolver</span></h1>
<p class="tag">The thread that leads out of the DNS maze. Ariadne reads names straight from the
Bitcoin Cash chain and answers on the device: no gateway to trust, no operator who can
rewrite the answer. It ships three ways: a mobile browser for Android, a standalone
system-wide resolver for Windows, and built into every Theseus install.</p>
<div class="cta">
<a class="btn acid" href="#android">Android browser</a>
<a class="btn ghost" href="#resolver">Windows resolver</a>
<a class="btn ghost" href="#how">How a lookup resolves</a>
</div>
<p class="sov">
<b>Ariadne.X</b> is the mobile browser's sovereign site, served from its own on-chain name.
Mirror: <a href="/ariadne-x/">silentmode.st/ariadne-x/</a> ·
gateway: <a href="https://navigate.st/bns/ariadne.x/">navigate.st/bns/ariadne.x/</a> ·
native with a resolver: <a href="https://ariadne.x/"><code class="inline">https://ariadne.x/</code></a>
</p>
</header>
<div class="wrap">
<figure class="shot">
<img src="theseus/img/ariadne-android-silentmode-bch.png" width="540" height="1090" alt="Ariadne for Android showing silentmode.bch resolved on the phone, with the BCN badge in the address bar" loading="lazy" style="max-width:320px;margin:0 auto">
<figcaption>silentmode.bch opened in Ariadne for Android. The badge says the name came from the chain.</figcaption>
</figure>
<!-- ============ ANDROID ============ -->
<section id="android">
<h2>Ariadne for Android</h2>
<p class="lede">A phone-sized browser that resolves Bitcoin Cash names on the device. Every lookup
asks the on-device snapshot and a live Electrum server in parallel and takes whichever answers
first; if they disagree, the chain wins. Sia-hosted pages are fetched from the bucket directly,
with no gateway in between. Tap the badge on any page to see the block and transaction behind
the name.</p>
<div class="dl">
<div>
<span class="pill p-alpha">alpha</span>
<h3>Ariadne for Android 0.52</h3>
<p><b>Ariadne's Thread</b> is one tap away inside the app: a local VPN service that resolves
names for every app on the phone, not just this browser. No root, no profile, nothing
installed at OS level. The app updates itself once installed.</p>
<div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-10-24</div>
<div class="h">SHA-256 <code class="inline">da3655262114cd0505b69c9833ea129c2808dc3fbb8c0137abd60bad15959615</code></div>
<div class="h">Signing key <code class="inline">46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c</code></div>
</div>
<div class="act">
<a class="btn acid" href="https://dl.silentmode.st/latest/ariadne.apk">Download APK</a>
<a class="btn ghost" href="https://navigate.st/bns/ariadne.x/">ariadne.x</a>
</div>
</div>
</section>
<!-- ============ WINDOWS RESOLVER ============ -->
<section id="resolver">
<h2>Ariadne Resolver for Windows</h2>
<p class="lede">For anyone who wants names working in <i>every</i> browser on the machine without
installing Theseus. It runs as a small background service that answers name lookups and mints
TLS certificates on the fly for names registered on chain. The Theseus installer offers the
same component as "Ariadne's Thread".</p>
<div class="dl">
<div>
<span class="pill p-alpha">alpha</span>
<h3>Ariadne Resolver 0.1.13</h3>
<p>Asks for administrator rights because it changes how the machine resolves names: a
background service, routing rules that send only the chain's TLDs to the local daemon, and
one root certificate <b>name-constrained</b> to those TLDs, so it cannot vouch for
<code class="inline">.com</code>. Everything reverses with the bundled uninstaller.</p>
<div class="meta">Windows 64-bit · bundled Node runtime · unsigned · 2026-10-01</div>
<div class="h">SHA-256 <code class="inline">a16d10759efede4412f4fdb52d59424bf56bbb258bb002ab930f4a5a5aef8a41</code></div>
</div>
<div class="act">
<a class="btn acid" href="https://dl.silentmode.st/latest/AriadneResolver-Setup.exe">Installer</a>
</div>
</div>
<div class="note" style="margin-top:1rem"><b>Inside Theseus.</b> The desktop browser carries the same resolver
in-process, so it needs none of this. The installer's optional "Ariadne's Thread" step installs
this standalone resolver alongside, for Chrome, Edge and everything else on the machine.</div>
</section>
<!-- ============ HOW ============ -->
<section id="how">
<h2>How a lookup resolves</h2>
<ol class="steps">
<li><b>Type a name.</b><span>Anything with a dot goes to the resolver; a bare word is a search.
The name is normalised to its registered form first.</span></li>
<li><b>Two sources, first answer wins.</b><span>The bundled on-device snapshot and a live Electrum
server are asked in parallel. If they disagree, the chain's answer is used. Nothing blocks
the navigation.</span></li>
<li><b>Read the record, serve the page.</b><span>An <code class="inline">h</code> record is a page
inside a transaction; <code class="inline">s3</code> fetches the Sia bucket directly;
<code class="inline">ip</code> connects to a host with its TLS fingerprint pinned on chain;
<code class="inline">u</code> redirects.</span></li>
<li><b>Show the proof.</b><span>The badge in the address bar names the registry and the storage
that served the bytes. Tap it for the block height and transaction.</span></li>
</ol>
</section>
<!-- ============ VERIFY ============ -->
<section id="verify">
<h2>Verify what you downloaded</h2>
<div class="grid">
<div class="card">
<h3>Android</h3>
<p>Hash the <code class="inline">.apk</code> on a computer before moving it to the phone, or use
any file-hashing app, and compare to the value above. The signing-key fingerprint matters most:
Android refuses any update signed by a different key.</p>
</div>
<div class="card">
<h3>Windows</h3>
<p><code class="inline">certutil -hashfile &lt;file&gt; SHA256</code>. The build carries no
code-signing certificate, so Windows warns about an unrecognized app. That warning is
expected; the hash is the check.</p>
</div>
<div class="card">
<h3>Every build, every hash</h3>
<p>The <a href="releases">releases page</a> lists current builds with checksums, and the
machine-readable <a href="https://dl.silentmode.st/releases-manifest.json">manifest</a> is
what the apps themselves update from.</p>
</div>
</div>
</section>
</div>
<footer>
<div>Silent Mode — a Deviant project.</div>
<div class="fine">Alpha software on a test network. Nothing here is signed by an authority your
device already trusts, by design. The SHA-256 is the real check.</div>
</footer>
</body>
</html>

View file

@ -34,14 +34,15 @@
<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>
<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="ariadne">Ariadne</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>
<header class="hero">

View file

@ -50,6 +50,7 @@
<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="ariadne">Ariadne</a>
<a href="prometheus">Prometheus</a>
<a href="sirius">Sirius</a>
<a href="hephaestus">Hephaestus</a>

View file

@ -22,6 +22,7 @@
<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="ariadne">Ariadne</a>
<a href="prometheus">Prometheus</a>
<a href="sirius">Sirius</a>
<a href="hephaestus">Hephaestus</a>

View file

@ -93,6 +93,7 @@
<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="ariadne">Ariadne</a>
<a href="prometheus">Prometheus</a>
<a href="sirius">Sirius</a>
<a href="hephaestus" class="here">Hephaestus</a>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>hermes.x — brand kit</title>
<meta name="description" content="Hermes brand kit: mark, logo lockups, avatars, banners, social cards, palette, voice.">
<link rel="icon" href="../favicon.svg" type="image/svg+xml">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="../shared.css">
<style>
.hero-mark{display:inline-flex;line-height:0}
@ -59,17 +59,17 @@
<nav class="topnav">
<a class="brand" href="../../">
<img src="../favicon.svg" alt="Hermes" width="22" height="22" style="display:block">
<img src="/favicon.svg" alt="Hermes" width="22" height="22" style="display:block">
<span>Hermes<span class="x">.X</span></span>
</a>
<a href="https://hermes.x/messenger/">Messenger</a>
<a href="./" class="here">Branding</a>
<a href="/hermes/branding/./" class="here">Branding</a>
<a href="https://theseus.x/" class="get">Get Theseus</a>
</nav>
<header class="hero">
<div class="hero-mark" aria-hidden="true">
<img src="../favicon.svg" alt="Hermes">
<img src="/favicon.svg" alt="Hermes">
</div>
<h1>Brand kit</h1>
<p class="tag">Mark, logo lockups, avatars, banners, social cards, palette, voice. One page
@ -94,18 +94,18 @@
dark inner cutouts for the flap V-fold.</p>
<div class="mark-row">
<div class="cell"><img src="../favicon.svg" alt="" width="16" height="16"><small>16 px (favicon)</small></div>
<div class="cell"><img src="../favicon.svg" alt="" width="24" height="24"><small>24 px (sidebar)</small></div>
<div class="cell"><img src="../favicon.svg" alt="" width="32" height="32"><small>32 px</small></div>
<div class="cell"><img src="../favicon.svg" alt="" width="64" height="64"><small>64 px</small></div>
<div class="cell"><img src="../favicon.svg" alt="" width="96" height="96"><small>96 px (panel)</small></div>
<div class="cell cell-sky"><img src="mark-on-sky.svg" alt="" width="64" height="64"><small>on sky</small></div>
<div class="cell cell-light"><img src="mark-on-light.svg" alt="" width="64" height="64"><small>on light</small></div>
<div class="cell"><img src="/favicon.svg" alt="" width="16" height="16"><small>16 px (favicon)</small></div>
<div class="cell"><img src="/favicon.svg" alt="" width="24" height="24"><small>24 px (sidebar)</small></div>
<div class="cell"><img src="/favicon.svg" alt="" width="32" height="32"><small>32 px</small></div>
<div class="cell"><img src="/favicon.svg" alt="" width="64" height="64"><small>64 px</small></div>
<div class="cell"><img src="/favicon.svg" alt="" width="96" height="96"><small>96 px (panel)</small></div>
<div class="cell cell-sky"><img src="/hermes/branding/mark-on-sky.svg" alt="" width="64" height="64"><small>on sky</small></div>
<div class="cell cell-light"><img src="/hermes/branding/mark-on-light.svg" alt="" width="64" height="64"><small>on light</small></div>
</div>
<div class="dl-row">
<a href="mark.svg" download>⬇️ mark.svg <code>vector master</code></a>
<a href="../favicon.svg" download>⬇️ favicon.svg <code>same, favicon slot</code></a>
<a href="/hermes/branding/mark.svg" download>⬇️ mark.svg <code>vector master</code></a>
<a href="/favicon.svg" download>⬇️ favicon.svg <code>same, favicon slot</code></a>
</div>
</section>
@ -116,39 +116,39 @@
<div class="logo-grid">
<div class="lo">
<img src="logo-horizontal.svg" alt="Hermes logo horizontal">
<img src="/hermes/branding/logo-horizontal.svg" alt="Hermes logo horizontal">
<span class="label">horizontal — default</span>
</div>
<div class="lo sky">
<img src="logo-horizontal-on-sky.svg" alt="Hermes logo on sky">
<img src="/hermes/branding/logo-horizontal-on-sky.svg" alt="Hermes logo on sky">
<span class="label">horizontal — on sky</span>
</div>
<div class="lo light">
<img src="logo-horizontal-light.svg" alt="Hermes logo light">
<img src="/hermes/branding/logo-horizontal-light.svg" alt="Hermes logo light">
<span class="label">horizontal — on light</span>
</div>
<div class="lo">
<img src="logo-stacked.svg" alt="Hermes logo stacked" style="max-height:220px">
<img src="/hermes/branding/logo-stacked.svg" alt="Hermes logo stacked" style="max-height:220px">
<span class="label">stacked — default</span>
</div>
<div class="lo sky">
<img src="logo-stacked-on-sky.svg" alt="Hermes logo stacked on sky" style="max-height:220px">
<img src="/hermes/branding/logo-stacked-on-sky.svg" alt="Hermes logo stacked on sky" style="max-height:220px">
<span class="label">stacked — on sky</span>
</div>
<div class="lo">
<img src="wordmark.svg" alt="Hermes wordmark" style="max-height:60px">
<img src="/hermes/branding/wordmark.svg" alt="Hermes wordmark" style="max-height:60px">
<span class="label">wordmark only</span>
</div>
</div>
<div class="dl-row">
<a href="logo-horizontal.svg" download>⬇️ logo-horizontal.svg</a>
<a href="logo-horizontal-on-sky.svg" download>⬇️ logo-horizontal-on-sky.svg</a>
<a href="logo-horizontal-light.svg" download>⬇️ logo-horizontal-light.svg</a>
<a href="logo-stacked.svg" download>⬇️ logo-stacked.svg</a>
<a href="logo-stacked-on-sky.svg" download>⬇️ logo-stacked-on-sky.svg</a>
<a href="wordmark.svg" download>⬇️ wordmark.svg</a>
<a href="wordmark-navy.svg" download>⬇️ wordmark-navy.svg</a>
<a href="/hermes/branding/logo-horizontal.svg" download>⬇️ logo-horizontal.svg</a>
<a href="/hermes/branding/logo-horizontal-on-sky.svg" download>⬇️ logo-horizontal-on-sky.svg</a>
<a href="/hermes/branding/logo-horizontal-light.svg" download>⬇️ logo-horizontal-light.svg</a>
<a href="/hermes/branding/logo-stacked.svg" download>⬇️ logo-stacked.svg</a>
<a href="/hermes/branding/logo-stacked-on-sky.svg" download>⬇️ logo-stacked-on-sky.svg</a>
<a href="/hermes/branding/wordmark.svg" download>⬇️ wordmark.svg</a>
<a href="/hermes/branding/wordmark-navy.svg" download>⬇️ wordmark-navy.svg</a>
</div>
</section>
@ -160,23 +160,23 @@
<div class="avatar-row">
<div class="av">
<img src="avatar-dark.png" alt="Hermes avatar dark">
<img src="/hermes/branding/avatar-dark.png" alt="Hermes avatar dark">
<span class="label">avatar-dark.png<br>1000×1000</span>
</div>
<div class="av">
<img src="avatar-light.png" alt="Hermes avatar light">
<img src="/hermes/branding/avatar-light.png" alt="Hermes avatar light">
<span class="label">avatar-light.png<br>1000×1000</span>
</div>
<div class="av">
<img src="avatar-sky.png" alt="Hermes avatar sky">
<img src="/hermes/branding/avatar-sky.png" alt="Hermes avatar sky">
<span class="label">avatar-sky.png<br>1000×1000</span>
</div>
</div>
<div class="dl-row">
<a href="avatar-dark.png" download>⬇️ avatar-dark.png</a>
<a href="avatar-light.png" download>⬇️ avatar-light.png</a>
<a href="avatar-sky.png" download>⬇️ avatar-sky.png</a>
<a href="/hermes/branding/avatar-dark.png" download>⬇️ avatar-dark.png</a>
<a href="/hermes/branding/avatar-light.png" download>⬇️ avatar-light.png</a>
<a href="/hermes/branding/avatar-sky.png" download>⬇️ avatar-sky.png</a>
</div>
</section>
@ -186,18 +186,18 @@
aspect ratios so no cropping on upload.</p>
<div class="banner-wrap">
<img src="banner-twitter.png" alt="Hermes Twitter / X banner 1500×500">
<img src="/hermes/branding/banner-twitter.png" alt="Hermes Twitter / X banner 1500×500">
<div class="label">banner-twitter.png — 1500×500 (X, LinkedIn, Facebook header)</div>
</div>
<div class="banner-wrap">
<img src="banner-hero.png" alt="Hermes website hero banner 2000×700">
<img src="/hermes/branding/banner-hero.png" alt="Hermes website hero banner 2000×700">
<div class="label">banner-hero.png — 2000×700 (website / landing hero)</div>
</div>
<div class="dl-row">
<a href="banner-twitter.png" download>⬇️ banner-twitter.png</a>
<a href="banner-hero.png" download>⬇️ banner-hero.png</a>
<a href="/hermes/branding/banner-twitter.png" download>⬇️ banner-twitter.png</a>
<a href="/hermes/branding/banner-hero.png" download>⬇️ banner-hero.png</a>
</div>
</section>
@ -207,24 +207,24 @@
renders this when hermes.x is shared), plus a square Instagram-style poster.</p>
<div class="banner-wrap">
<img src="og-card.png" alt="Hermes Open Graph card 1200×630">
<img src="/hermes/branding/og-card.png" alt="Hermes Open Graph card 1200×630">
<div class="label">og-card.png — 1200×630 (OG image / Twitter card)</div>
</div>
<div class="banner-wrap">
<img src="og-card-sky.png" alt="Hermes OG card on sky 1200×630">
<img src="/hermes/branding/og-card-sky.png" alt="Hermes OG card on sky 1200×630">
<div class="label">og-card-sky.png — 1200×630 (sky-background variant)</div>
</div>
<div class="banner-wrap" style="max-width:540px;margin-left:auto;margin-right:auto">
<img src="poster-square.png" alt="Hermes square poster 1080×1080">
<img src="/hermes/branding/poster-square.png" alt="Hermes square poster 1080×1080">
<div class="label">poster-square.png — 1080×1080 (Instagram / Mastodon)</div>
</div>
<div class="dl-row">
<a href="og-card.png" download>⬇️ og-card.png</a>
<a href="og-card-sky.png" download>⬇️ og-card-sky.png</a>
<a href="poster-square.png" download>⬇️ poster-square.png</a>
<a href="/hermes/branding/og-card.png" download>⬇️ og-card.png</a>
<a href="/hermes/branding/og-card-sky.png" download>⬇️ og-card-sky.png</a>
<a href="/hermes/branding/poster-square.png" download>⬇️ poster-square.png</a>
</div>
</section>

View file

@ -22,6 +22,7 @@
<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="ariadne">Ariadne</a>
<a href="prometheus">Prometheus</a>
<a href="sirius">Sirius</a>
<a href="hephaestus">Hephaestus</a>
@ -32,9 +33,9 @@
<header class="hero">
<div class="mark" style="line-height:0; display:inline-flex">
<img src="branding/mark.webp" alt="Hermes" width="120" height="120" style="display:block">
<img src="hermes/branding/mark.webp" alt="Hermes" width="120" height="120" style="display:block">
</div>
<h1>Hermes <span class="pill p-shipped" style="vertical-align:middle;font-size:12px;margin-left:.6rem;background:rgba(79,209,165,.12);color:#4fd1a5;padding:2px 10px;border-radius:999px">live · desktop &amp; web</span></h1>
<h1>Hermes <span class="pill p-shipped" style="vertical-align:middle;font-size:12px;margin-left:.6rem;background:rgba(79,209,165,.12);color:#4fd1a5;padding:2px 10px;border-radius:999px">live · desktop, web, Android</span></h1>
<p class="tag">End-to-end encrypted DMs over Nostr, addressed by your
on-chain registered name instead of a public-key string. Same wallet
is your identity — no email, no phone number, no company, no server that can delete
@ -112,6 +113,12 @@
<p>Messages persist to disk per identity. Close and reopen the panel and your threads are
still there, unread marks included. Seed backup lives behind your password.</p>
</div>
<div class="card">
<span class="pill p-live">live</span>
<h3>Hermes for Windows</h3>
<p>The messenger as a stand-alone desktop app, installer or MSI, for machines without
Theseus. Byte-equal with the Theseus panel; sign in with the same recovery phrase.</p>
</div>
<div class="card">
<span class="pill p-alpha">preview</span>
<h3>Web messenger</h3>
@ -119,11 +126,11 @@
the desktop browser. Same crypto, same identity, signs in with an nsec or a mnemonic.</p>
</div>
<div class="card">
<span class="pill p-upcoming">next</span>
<h3>Mobile</h3>
<p>Ariadne for Android already opens hermes.x from its menu. A native Messages tab is a
multi-release port of its own (Schnorr signatures, NIP-44 and a WebSocket client inside
the JDK-8 build); it ships in slices.</p>
<span class="pill p-live">live</span>
<h3>Hermes for Android</h3>
<p>A native app (Kotlin, Jetpack Compose) with the same identity and wire format as the
desktop and web clients: one inbox on every surface. Background delivery, in-app
auto-update verified against the release manifest, find people by phone number.</p>
</div>
<div class="card">
<span class="pill p-upcoming">planned</span>
@ -134,6 +141,40 @@
</div>
</section>
<!-- ============ DOWNLOAD ============ -->
<section id="download">
<h2>Download</h2>
<p class="lede">Alpha software on a test network. Check the SHA-256 before you install; that check
is the real one. Every hash and every older build is on the <a href="releases">releases page</a>.</p>
<div class="grid">
<div class="card">
<span class="pill p-live">Android 8.0+</span>
<h3>Hermes for Android <span style="color:var(--acid)">0.3.0</span></h3>
<p style="margin-bottom:.7rem">Self-signed release key, in-app auto-update.</p>
<p><a class="btn acid" href="https://dl.silentmode.st/latest/hermes.apk">Download APK</a></p>
<p style="margin-top:.8rem;font-size:11.5px;color:var(--dim)">SHA-256 <code class="inline" style="word-break:break-all">77d16184ba2c26fb81b79d9e4c5f98f8bfb434690c1e6acd9b7fd5f16651a6cb</code></p>
<p style="margin-top:.4rem;font-size:11.5px;color:var(--dim)">Signing key <code class="inline" style="word-break:break-all">b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7</code></p>
</div>
<div class="card">
<span class="pill p-live">Windows 64-bit</span>
<h3>Hermes for Windows <span style="color:var(--acid)">0.1.0</span></h3>
<p style="margin-bottom:.7rem">Unsigned build; Windows will warn about an unrecognized app.</p>
<p><a class="btn acid" href="https://dl.silentmode.st/latest/Hermes-Setup.exe">Installer</a>
<a class="btn ghost" href="https://dl.silentmode.st/latest/Hermes.msi">MSI</a></p>
<p style="margin-top:.5rem;font-size:11.5px;color:var(--dim)">Hermes-0.1.0-setup.exe <code class="inline" style="word-break:break-all">0adc742d54daaee2b62e7fdcbff2f0203bd50f995444487ff93233ccc6328552</code></p>
<p style="margin-top:.5rem;font-size:11.5px;color:var(--dim)">Hermes-0.1.0.msi <code class="inline" style="word-break:break-all">fa81948bba8c3d6e9306a5aa218424fd2a4bc692891f3d2543c2782207f86b3f</code></p>
</div>
<div class="card">
<span class="pill p-live">no install</span>
<h3>In Theseus, or in any browser</h3>
<p>Theseus ships Hermes as a bundled add-on: open the Hermes icon in the left sidebar or
press Ctrl+Shift+E. Without Theseus, the web messenger at
<a href="https://navigate.st/bns/hermes.x/messenger/">hermes.x/messenger</a> runs in
any browser; sign in with a recovery phrase.</p>
</div>
</div>
</section>
<!-- ============ THE IDEA ============ -->
<section class="plain">
<h2>The one idea that makes this different</h2>
@ -217,10 +258,10 @@
history stays in that browser's storage.</p>
</div>
<div class="card">
<span class="pill p-upcoming">next</span>
<h3>In Ariadne mobile</h3>
<p>Opens hermes.x from the menu today. The native Messages screen, with the same seed and the
same identity so you can message from either device, arrives in later releases.</p>
<span class="pill p-live">live</span>
<h3>On Android and Windows</h3>
<p>Native apps with the same seed and the same identity, so you can message from any
device. Ariadne for Android also opens hermes.x from its menu.</p>
</div>
</div>
</section>

View file

@ -56,7 +56,7 @@
<!-- ============ .st vs .bch — the split ============ -->
<div class="note" style="margin-top:1.6rem;font-size:14.5px;border-left-color:var(--sia)">
<b>This page is ordinary web infrastructure.</b> <code class="inline">silentmode.st</code>
runs on nginx, a rented server, an ICANN domain, and a Let's Encrypt certificate — because
runs on an ordinary web server, a rented machine, an ICANN domain, and a Let's Encrypt certificate — because
the point of this page is to <i>talk about</i> the alternative web, and the widest
audience needs no install to read it.
<br><br>
@ -71,8 +71,7 @@
<!-- ============ THE FIVE PRODUCTS ============ -->
<section class="plain">
<h2>What we build</h2>
<p class="lede">Seven pieces, each named for a figure whose role matches its function.
Each solves one part of the "how do we run a web without gatekeepers" problem, and
<p class="lede">Each piece is named for a figure whose role matches its function, and each solves one part of the "how do we run a web without gatekeepers" problem, and
all of them interoperate around one thing: a name on the Bitcoin Cash chain.</p>
<div class="grid">
@ -86,6 +85,15 @@
<p style="margin-top:.8rem"><a href="theseus">Download Theseus →</a></p>
</div>
<div class="card">
<span class="pill p-live">live</span>
<h3>Ariadne <span class="src s-chain">mobile &amp; resolver</span></h3>
<p>The mobile browser for Android that resolves names on the phone itself, with
Ariadne's Thread to make every app on the device name-aware. The same resolver
ships standalone for Windows and inside every Theseus install.</p>
<p style="margin-top:.8rem"><a href="ariadne">Get Ariadne →</a></p>
</div>
<div class="card">
<span class="pill p-live">live</span>
<h3>Sirius <span class="src s-chain">names</span></h3>
@ -105,10 +113,11 @@
</div>
<div class="card">
<span class="pill p-designed">designed</span>
<span class="pill p-live">live</span>
<h3>Prometheus <span class="src s-sia">apps</span></h3>
<p>Home for apps and programs published on chain, hosted on Sia. Categories,
signed endorsements, verified installs. Anyone can publish; nobody can gatekeep.</p>
<p>The app directory at prometheus.x. Publishers sign a listing with their name's key,
Prometheus scans the binary and attaches a signed report, and every download is
verified. Anyone can publish; nobody can gatekeep.</p>
<p style="margin-top:.8rem"><a href="prometheus">Browse Prometheus →</a></p>
</div>
@ -121,12 +130,21 @@
</div>
<div class="card">
<span class="pill p-designed">designed</span>
<span class="pill p-live">live</span>
<h3>Hermes <span class="src s-tor">messages</span></h3>
<p>End-to-end encrypted messaging over Nostr, addressed by your BNS name instead
of a public-key string. Same wallet is your identity — no email, no phone number,
no company.</p>
<p style="margin-top:.8rem"><a href="hermes">Read the design →</a></p>
<p>End-to-end encrypted messaging over Nostr, addressed by your on-chain registered
name instead of a public-key string. In Theseus, on the web at hermes.x, and as
apps for Windows and Android. No email, no phone number, no company.</p>
<p style="margin-top:.8rem"><a href="hermes">Get Hermes →</a></p>
</div>
<div class="card">
<span class="pill p-live">live</span>
<h3>Pithos <span class="src s-sia">storage</span></h3>
<p>Decentralized cloud storage you own: a desktop app, a web client and a Theseus
add-on for Sia buckets, encrypted on your device before anything leaves it. Bring
your own storage account or use the hosted option.</p>
<p style="margin-top:.8rem"><a href="/pithos/">See Pithos →</a></p>
</div>
<div class="card">
@ -138,6 +156,10 @@
</div>
</div>
<p style="color:var(--dim);font-size:13.5px;margin:1.2rem 0 0">Also shipped inside Theseus:
a one-click <a href="vpn">VPN</a>, on-device page translation with
<a href="bergamot">Bergamot</a>, and <a href="mirrors">reverse-proxy mirrors</a> for
sites that block unfamiliar browsers.</p>
</section>
<!-- ============ THE COMMON THREAD ============ -->
@ -146,7 +168,7 @@
<p class="lede">Everything above depends on one thing: a name registered on the
Bitcoin Cash chain, held in a wallet you control. That name is your address on
Prometheus, your identity on Hermes, your ranking signal on Helios, and the URL
Tools resolve. Register once; use it everywhere. Nobody issues it, nobody revokes
Theseus and Ariadne resolve. Register once; use it everywhere. Nobody issues it, nobody revokes
it, and no service you use here needs an account.</p>
<div class="cta" style="justify-content:flex-start">
<a class="btn acid" href="sirius">Register a name at Sirius →</a>

View file

@ -43,6 +43,7 @@
<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="ariadne">Ariadne</a>
<a href="prometheus">Prometheus</a>
<a href="sirius">Sirius</a>
<a href="hephaestus">Hephaestus</a>

View file

@ -1,6 +1,6 @@
{
"schema": "silentmode-releases/2",
"updated": "2026-10-23T20:42:49.763Z",
"updated": "2026-10-24T00:26:19.725Z",
"mirrors": [
"https://dl.silentmode.st/"
],
@ -47,34 +47,6 @@
"TheseusNavigator-Setup-0.3.108.exe": "d84baf7a909a856dc664848573c26bcc049f067e9878513670718530b1874bc8"
}
},
{
"id": "theseus-navigator",
"product": "Theseus Navigator",
"version": "0.3.107",
"date": "2026-10-23",
"platform": "win-x64",
"signed": false,
"signingAuthority": null,
"changes": "Home page splits the left-column links and the Silent Mode cards into two self-contained panels; the slot icons default closer to Windows desktop-shortcut size. Opt-in Claude connector hardening: the approved origin is re-checked before every CDP read or input (a mid-call navigation to an unapproved site now throws); the bearer token rotates on every stop; click(x, y) without a ref refuses when the point lies on a password or one-time-code field.",
"files": {
"TheseusNavigator-0.3.107-portable.exe": "f5a9c228e0fc83d0737b9d6210ae08c861010fdd79bd10b5c48486c7659166b4",
"TheseusNavigator-Setup-0.3.107.exe": "c0be62cf4b4279b13d5badd75af7f5607b76ae5a63b587c72b20b40428e041d9"
}
},
{
"id": "theseus-navigator",
"product": "Theseus Navigator",
"version": "0.3.106",
"date": "2026-10-22",
"platform": "win-x64",
"signed": false,
"signingAuthority": null,
"changes": "Sidebar strip's AI engine picker is now a styled overlay instead of a plain native menu. Each enabled engine is listed with its own icon (bundled color-coded tiles for ChatGPT, Grok, Gemini and Phind join the existing favicons); the current engine is highlighted with the acid accent bar and a check; a bottom row jumps to Search settings. Clicking an engine selects it as the default and opens it in the left panel in one click.",
"files": {
"TheseusNavigator-0.3.106-portable.exe": "2c299e31c812d8903f601d9c4b54385fc7335ebfc69690765f48dbcf7039b79e",
"TheseusNavigator-Setup-0.3.106.exe": "26a5752e5e7107d2718087c8831eeee3c9c25e6af61f5a3d94b537a16e5a18e4"
}
},
{
"id": "ariadne-resolver",
"product": "Ariadne Resolver (Windows)",
@ -88,6 +60,36 @@
"AriadneResolver-Setup-0.1.13.exe": "a16d10759efede4412f4fdb52d59424bf56bbb258bb002ab930f4a5a5aef8a41"
}
},
{
"id": "ariadne-android",
"product": "Ariadne for Android",
"version": "0.52",
"date": "2026-10-24",
"platform": "android",
"minSdk": 21,
"signed": true,
"signingAuthority": null,
"signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
"changes": "The updater now polls ariadne.x — manifest + APKs live in the s3://bns/ariadne/ bucket the on-chain record points to, routed through the public BNS gateway so a raw HTTPS client reaches them without the Ariadne resolver being up. Download page link also moved from silentmode.st to ariadne.x. Older clients keep polling the silentmode.st mirror; the manifest at both URLs stays in sync until the fleet has rolled over. Same signing key; installs over 0.51.",
"files": {
"ariadne-v0.52.apk": "da3655262114cd0505b69c9833ea129c2808dc3fbb8c0137abd60bad15959615"
}
},
{
"id": "ariadne-android",
"product": "Ariadne for Android",
"version": "0.51",
"date": "2026-10-24",
"platform": "android",
"minSdk": 21,
"signed": true,
"signingAuthority": null,
"signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
"changes": "Launcher switches to the pottery variant — same bust silhouette in warm terracotta on navy. New Settings → Downloads row opens the system Downloads app so saved files are easy to find. AI engine picker is now a styled list with each provider's real favicon + host, and the bottom-nav AI button carries the current engine's favicon too. Closing a tab from inside the switcher no longer flashes the homepage even for a frame (persistent navy host swaps the inner view atomically). Settings page sections are more clearly separated. Toggling the Tab switcher layout now shows a toast on save. Same signing key; installs over 0.50.",
"files": {
"ariadne-v0.51.apk": "8e5b091bf48ffe17047f91e517e9ca66e8ff4c4cdcb1a074f7b928654eae2b45"
}
},
{
"id": "ariadne-android",
"product": "Ariadne for Android",
@ -103,21 +105,6 @@
"ariadne-v0.50.apk": "4ca980c58a21101f2b3b54a864a49f71912d424d07870778da21690efb45e35b"
}
},
{
"id": "ariadne-android",
"product": "Ariadne for Android",
"version": "0.49",
"date": "2026-10-23",
"platform": "android",
"minSdk": 21,
"signed": true,
"signingAuthority": null,
"signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
"changes": "Reordering a LIVE asset card no longer reloads the homepage: Move up / Move down now shift the DOM card in place, so scroll position and already-fetched spark prices stay put. Same signing key; installs over 0.48.",
"files": {
"ariadne-v0.49.apk": "fe31b36c96133271171ef0e6a6aa3b55fcd5310cc43c824182046c82ff8fa178"
}
},
{
"id": "pithos-desktop",
"product": "Pithos",
@ -175,6 +162,65 @@
"Pithos-0.3.25-amd64.deb": "04e36e9451ab1addcc6a179dbf527fb2689e019beb7d7edb02fd0d85501c626b",
"Pithos-0.3.25-linux-x64.tar.gz": "1aea475630e8722c563e132ffa922190da08aec1ab09bedece0fbfbdfecfc307"
}
},
{
"id": "hermes-android",
"product": "Hermes for Android",
"version": "0.3.0",
"date": "2026-10-24",
"platform": "android",
"minSdk": 26,
"signed": true,
"signingAuthority": null,
"signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
"changes": "In-app auto-update. Hermes now polls dl.silentmode.st/releases-manifest.json on launch and on resume, and shows an update banner at the top of the chat list when a newer version is live. Tap Update → downloads the APK via the pinned client, SHA-256-verifies against the manifest field, then launches Android's package installer. Android refuses to install an APK signed by a different key than the running app, so a tampered manifest can at worst waste bandwidth. Same signing key as 0.2.2; installs over it. Requires the one-time Install-unknown-apps grant on first update, which Android shims via Settings.",
"files": {
"hermes-v0.3.0.apk": "77d16184ba2c26fb81b79d9e4c5f98f8bfb434690c1e6acd9b7fd5f16651a6cb"
}
},
{
"id": "hermes-android",
"product": "Hermes for Android",
"version": "0.2.2",
"date": "2026-10-24",
"platform": "android",
"minSdk": 26,
"signed": true,
"signingAuthority": null,
"signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
"changes": "Find People now accepts a phone number alongside BNS names, labels, npubs and hex pubkeys. Type +15551234567 (or 0015551234567) and Hermes hashes it locally and asks the relays for the matching kind:30078 phone-claim event — the raw number never leaves the device. Shows the Hermes identity with a verified ✓ when the owner's phone-claim carries a valid Telegram attestation, same shape as the Address Book contact matches. The input also switches to a numeric phone keyboard the moment it looks like a phone number. Same signing key as 0.2.1; installs over it.",
"files": {
"hermes-v0.2.2.apk": "b46da998caa57a6923bb4ab305c5ab1cff88fbf38f4028eb2cecceb77140f1a6"
}
},
{
"id": "hermes-android",
"product": "Hermes for Android",
"version": "0.2.1",
"date": "2026-10-24",
"platform": "android",
"minSdk": 26,
"signed": true,
"signingAuthority": null,
"signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
"changes": "Fix: real-time inbox delivery. 0.2.0 held a persistent inbox REQ at sign-in, but mobile WebSockets drop constantly (wifi/cellular transitions, OS backgrounding, keep-alive timeouts) and the REQ wasn't replayed on reconnect — the relay forgot our filter and inbound kind:1059 wraps stopped arriving until the next 15-min WorkManager poll or next outgoing send kicked a catch-up. RelayConnection now remembers active subscriptions and replays them on every onOpen, so a recipient sees messages the moment they land on the relay. Also pins the initial `since` to max(lastSeenAt, now - 7d), bounding the reconnect replay. Updates DeliveryPrefs.lastSeenAt on each decrypted wrap so background delivery stays in step.",
"files": {
"hermes-v0.2.1.apk": "014438c3c1a92dd0108d994ae411ed27bf2de58c735614498e86d11462066d61"
}
},
{
"id": "hermes-desktop",
"product": "Hermes for Windows",
"version": "0.1.0",
"date": "2026-10-23",
"platform": "win-x64",
"signed": false,
"signingAuthority": null,
"changes": "First desktop build: the Hermes messenger as a stand-alone Windows app (Tauri), byte-equal with the Theseus panel and the hermes.x web messenger. Sign in with a recovery phrase or create a new identity; same inbox on every surface.",
"files": {
"Hermes-0.1.0-setup.exe": "0adc742d54daaee2b62e7fdcbff2f0203bd50f995444487ff93233ccc6328552",
"Hermes-0.1.0.msi": "fa81948bba8c3d6e9306a5aa218424fd2a4bc692891f3d2543c2782207f86b3f"
}
}
]
}

289
releases/dl-index.html Normal file
View file

@ -0,0 +1,289 @@
<!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>dl.silentmode.st — downloads &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="https://silentmode.st/shared.css?v=20260910">
<link rel="icon" type="image/svg+xml" href="https://silentmode.st/favicon.svg">
</head>
<body>
<nav class="topnav">
<a class="brand" href="https://silentmode.st/"><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="https://silentmode.st/theseus">Theseus</a>
<a href="https://silentmode.st/ariadne">Ariadne</a>
<a href="https://silentmode.st/prometheus">Prometheus</a>
<a href="https://silentmode.st/sirius">Sirius</a>
<a href="https://silentmode.st/hephaestus">Hephaestus</a>
<a href="https://silentmode.st/helios">Helios</a>
<a href="https://silentmode.st/hermes">Hermes</a>
<a href="https://silentmode.st/tools">Tools</a>
</nav>
<div class="wrap">
<h1>Silent <span class="g">Mode</span> — downloads</h1>
<p class="lede" style="margin:0 0 .4rem">Every file on this host, newest first, with its SHA-256. Stable links: <code style="display:inline">/latest/&lt;product-file&gt;</code> always redirects to the current build. The full product pages are on <a href="https://silentmode.st/">silentmode.st</a>.</p>
<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.110</span></h2>
<div class="meta">Windows 64-bit · unsigned · 2026-10-23 · Silent Mode home cards switch from a stacked icon-above-title-above-sub layout to a horizontal one: a left stack holds the icon and the title, the description sits on the right with left-aligned text and up to three lines. Card backgrounds drop to a 55% rgba with a 10 px backdrop blur so the wallpaper reads through. Home tagline updated: Names that live on the Bitcoin Cash chain becomes Names that live on decentralized blockchain. The address-bar tip now points at hello.bch by name.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-0.3.110-portable.exe">TheseusNavigator-0.3.110-portable.exe</a> — portable</div>
<code>1e26fdeaa64b46d58dcb5912760a75c59fccaa527cf464928a21291a77604490</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-Setup-0.3.110.exe">TheseusNavigator-Setup-0.3.110.exe</a> — installer</div>
<code>8d31c55ac41e69779d49cba2b06beb692816ed3f9ef2468a4b458196f088dff9</code>
</div>
</div>
<div class="rel">
<h2>Theseus Navigator <span style="color:var(--acid)">0.3.109</span></h2>
<div class="meta">Windows 64-bit · unsigned · 2026-10-23 · Right-click on a tab now shows a Save page as submenu with PDF and Image (PNG) items. PDF uses the browser printing pipeline (A4, prints backgrounds, respects CSS @page); PNG saves the visible viewport. Both open a save dialog with a filename derived from the tab title or hostname and register the file in the downloads popup. The Claude connector design doc is now hosted at theseus.x/dev/claude-connector/DESIGN-claude-connector.md so readers do not have to leave for the forge.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-0.3.109-portable.exe">TheseusNavigator-0.3.109-portable.exe</a> — portable</div>
<code>b0d1c4acb4c010aec6ffcb9371fd29818000e967f39f07d621cc52c8d44ed3a6</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-Setup-0.3.109.exe">TheseusNavigator-Setup-0.3.109.exe</a> — installer</div>
<code>540abd41ccc253974c97aad9c7309ad870cf1e315c090dcad142f71435fef914</code>
</div>
</div>
<div class="rel">
<h2>Theseus Navigator <span style="color:var(--acid)">0.3.108</span></h2>
<div class="meta">Windows 64-bit · unsigned · 2026-10-23 · Home page: hero mark sits in front of the Theseus Navigator wordmark inside a translucent rounded panel, so the identity stays readable on any wallpaper (the tag line and the hint got matching pill backings). Left-column slots widened from a fixed 3-col grid in a 280 px panel to an auto-fill grid in a 360-440 px panel, so about five columns of 72 px tiles fit instead of three.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-0.3.108-portable.exe">TheseusNavigator-0.3.108-portable.exe</a> — portable</div>
<code>a6cd0f04a141aa26ef7dd38e71170e841800ae993e926910e76099cf430b2e0f</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-Setup-0.3.108.exe">TheseusNavigator-Setup-0.3.108.exe</a> — installer</div>
<code>d84baf7a909a856dc664848573c26bcc049f067e9878513670718530b1874bc8</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 · Every subsystem is now individually switchable and reports its own state. New endpoint http://127.0.0.1/api/status returns a full state report (daemon version + startup + policy + permitted TLDs + ports + upstream + gateway; index size + warm-start source; per-source enabled/lastAttempt/lastSuccess/lastError/counters for snapshotHttps + electrumWss + perQueryLookup + diskCache + localApi). C:\ProgramData\Ariadne\policy.json extended with a `sources.&lt;name&gt;.enabled` block (hot-reloaded every 5 s alongside the collision policy) -- flip any source off to isolate a path or measure without it. Turning localApi off returns 503 with a hint pointing at the config file. Turning diskCache off skips writing bns-name-snapshot.json AND skips reading it at warm-start. Turning snapshotHttps off skips the HTTPS refresh; electrumWss off skips the WSS refresh; perQueryLookup off skips the per-query /api/name/ fallback. Includes 0.1.12 (orphan-safe upgrade + /api/tlds + /api/name/:n + /api/registry). 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> — installer</div>
<code>a16d10759efede4412f4fdb52d59424bf56bbb258bb002ab930f4a5a5aef8a41</code>
</div>
</div>
<div class="rel">
<h2>Ariadne for Android <span style="color:var(--acid)">0.52</span></h2>
<div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-10-24 · The updater now polls ariadne.x — manifest + APKs live in the s3://bns/ariadne/ bucket the on-chain record points to, routed through the public BNS gateway so a raw HTTPS client reaches them without the Ariadne resolver being up. Download page link also moved from silentmode.st to ariadne.x. Older clients keep polling the silentmode.st mirror; the manifest at both URLs stays in sync until the fleet has rolled over. Same signing key; installs over 0.51.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/ariadne-v0.52.apk">ariadne-v0.52.apk</a> — APK</div>
<code>da3655262114cd0505b69c9833ea129c2808dc3fbb8c0137abd60bad15959615</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="rel">
<h2>Ariadne for Android <span style="color:var(--acid)">0.51</span></h2>
<div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-10-24 · Launcher switches to the pottery variant — same bust silhouette in warm terracotta on navy. New Settings → Downloads row opens the system Downloads app so saved files are easy to find. AI engine picker is now a styled list with each provider's real favicon + host, and the bottom-nav AI button carries the current engine's favicon too. Closing a tab from inside the switcher no longer flashes the homepage even for a frame (persistent navy host swaps the inner view atomically). Settings page sections are more clearly separated. Toggling the Tab switcher layout now shows a toast on save. Same signing key; installs over 0.50.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/ariadne-v0.51.apk">ariadne-v0.51.apk</a> — APK</div>
<code>8e5b091bf48ffe17047f91e517e9ca66e8ff4c4cdcb1a074f7b928654eae2b45</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="rel">
<h2>Ariadne for Android <span style="color:var(--acid)">0.50</span></h2>
<div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-10-23 · New launcher icon — the laurel-crowned bust silhouette from the Ariadne.X brand kit, recoloured gold on navy. Replaces the figure-only mark; same signing key; installs over 0.49.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/ariadne-v0.50.apk">ariadne-v0.50.apk</a> — APK</div>
<code>4ca980c58a21101f2b3b54a864a49f71912d424d07870778da21690efb45e35b</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="rel">
<h2>Pithos <span style="color:var(--acid)">0.3.26</span></h2>
<div class="meta">Windows 64-bit · unsigned · 2026-10-08 · In Theseus, Send on Telegram and Send on WhatsApp open Theseus's own Telegram and WhatsApp apps at their share screens; the share menu shows the real Telegram, WhatsApp and X icons. The sidebar's Full page button is gone (the panel's Maximize does the same).</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Pithos-0.3.26-portable.exe">Pithos-0.3.26-portable.exe</a> — portable</div>
<code>951d4e814f8f8a3e729b8dc63ae69b848dff106a1517c0ca12347985567e32b0</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Pithos-Setup-0.3.26.exe">Pithos-Setup-0.3.26.exe</a> — installer</div>
<code>e3daef6fedb72c63e893b7851108ed87a08c74ccdf6e1207bb218bda88f57e0a</code>
</div>
</div>
<div class="rel">
<h2>Pithos <span style="color:var(--acid)">0.3.26</span> <span style="color:var(--dim);font-size:.8em">Linux</span></h2>
<div class="meta">Linux 64-bit · unsigned · 2026-10-08 · In Theseus, Send on Telegram and Send on WhatsApp open Theseus's own Telegram and WhatsApp apps at their share screens; the share menu shows the real Telegram, WhatsApp and X icons. The sidebar's Full page button is gone (the panel's Maximize does the same).</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Pithos-0.3.26-x86_64.AppImage">Pithos-0.3.26-x86_64.AppImage</a> — AppImage</div>
<code>0562f5b82f8788ef44451babfb9d8799eb635ae56aece0072db18f851f40917f</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Pithos-0.3.26-amd64.deb">Pithos-0.3.26-amd64.deb</a> — Debian package</div>
<code>0aecfdccbdc30194b3d0918a7f157d82bffd37a56d88a2de9a0015df666e0334</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Pithos-0.3.26-linux-x64.tar.gz">Pithos-0.3.26-linux-x64.tar.gz</a> — tarball</div>
<code>2329527f53fa3726a9ec44a1859f235c7bb59953f9c15b71d1c5081fb5414954</code>
</div>
</div>
<div class="rel">
<h2>Pithos <span style="color:var(--acid)">0.3.25</span></h2>
<div class="meta">Windows 64-bit · unsigned · 2026-10-07 · Share opens a menu: copy the public link, open it, or send it on X, Telegram or WhatsApp. Shared links open on a page with a preview and a Download button. Pithos fills wide windows, a renamed user updates in every open view, and pithos.sia in Theseus asks for the vault PIN after a lock and reopens once it is unlocked.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Pithos-0.3.25-portable.exe">Pithos-0.3.25-portable.exe</a> — portable</div>
<code>81a498b0586263c7795643dc8cce96c96d8d9233714913d13b81ab14706f21eb</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Pithos-Setup-0.3.25.exe">Pithos-Setup-0.3.25.exe</a> — installer</div>
<code>958e962dc068a5032d1d9f18aa818b67160a93bb5e45b551fc5cf700357d4def</code>
</div>
</div>
<div class="rel">
<h2>Pithos <span style="color:var(--acid)">0.3.25</span> <span style="color:var(--dim);font-size:.8em">Linux</span></h2>
<div class="meta">Linux 64-bit · unsigned · 2026-10-08 · Share opens a menu: copy the public link, open it, or send it on X, Telegram or WhatsApp. Shared links open on a page with a preview and a Download button. Pithos fills wide windows and a renamed user updates in every open view.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Pithos-0.3.25-x86_64.AppImage">Pithos-0.3.25-x86_64.AppImage</a> — AppImage</div>
<code>1b0eabd1bb0a28435b05658cf3f5a2dcefd029b65c79dbec80e9e9e1ae135df7</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Pithos-0.3.25-amd64.deb">Pithos-0.3.25-amd64.deb</a> — Debian package</div>
<code>04e36e9451ab1addcc6a179dbf527fb2689e019beb7d7edb02fd0d85501c626b</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Pithos-0.3.25-linux-x64.tar.gz">Pithos-0.3.25-linux-x64.tar.gz</a> — tarball</div>
<code>1aea475630e8722c563e132ffa922190da08aec1ab09bedece0fbfbdfecfc307</code>
</div>
</div>
<div class="rel">
<h2>Hermes for Android <span style="color:var(--acid)">0.3.0</span></h2>
<div class="meta">Android 5.0+ (API 21) · signed · 2026-10-24 · In-app auto-update. Hermes now polls dl.silentmode.st/releases-manifest.json on launch and on resume, and shows an update banner at the top of the chat list when a newer version is live. Tap Update → downloads the APK via the pinned client, SHA-256-verifies against the manifest field, then launches Android's package installer. Android refuses to install an APK signed by a different key than the running app, so a tampered manifest can at worst waste bandwidth. Same signing key as 0.2.2; installs over it. Requires the one-time Install-unknown-apps grant on first update, which Android shims via Settings.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/hermes-v0.3.0.apk">hermes-v0.3.0.apk</a> — APK</div>
<code>77d16184ba2c26fb81b79d9e4c5f98f8bfb434690c1e6acd9b7fd5f16651a6cb</code>
</div>
<div class="file">
<div class="n">Signing certificate — SHA-256 (the same key signs every future release)</div>
<code>b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7</code>
</div>
</div>
<div class="rel">
<h2>Hermes for Android <span style="color:var(--acid)">0.2.2</span></h2>
<div class="meta">Android 5.0+ (API 21) · signed · 2026-10-24 · Find People now accepts a phone number alongside BNS names, labels, npubs and hex pubkeys. Type +15551234567 (or 0015551234567) and Hermes hashes it locally and asks the relays for the matching kind:30078 phone-claim event — the raw number never leaves the device. Shows the Hermes identity with a verified ✓ when the owner's phone-claim carries a valid Telegram attestation, same shape as the Address Book contact matches. The input also switches to a numeric phone keyboard the moment it looks like a phone number. Same signing key as 0.2.1; installs over it.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/hermes-v0.2.2.apk">hermes-v0.2.2.apk</a> — APK</div>
<code>b46da998caa57a6923bb4ab305c5ab1cff88fbf38f4028eb2cecceb77140f1a6</code>
</div>
<div class="file">
<div class="n">Signing certificate — SHA-256 (the same key signs every future release)</div>
<code>b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7</code>
</div>
</div>
<div class="rel">
<h2>Hermes for Android <span style="color:var(--acid)">0.2.1</span></h2>
<div class="meta">Android 5.0+ (API 21) · signed · 2026-10-24 · Fix: real-time inbox delivery. 0.2.0 held a persistent inbox REQ at sign-in, but mobile WebSockets drop constantly (wifi/cellular transitions, OS backgrounding, keep-alive timeouts) and the REQ wasn't replayed on reconnect — the relay forgot our filter and inbound kind:1059 wraps stopped arriving until the next 15-min WorkManager poll or next outgoing send kicked a catch-up. RelayConnection now remembers active subscriptions and replays them on every onOpen, so a recipient sees messages the moment they land on the relay. Also pins the initial `since` to max(lastSeenAt, now - 7d), bounding the reconnect replay. Updates DeliveryPrefs.lastSeenAt on each decrypted wrap so background delivery stays in step.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/hermes-v0.2.1.apk">hermes-v0.2.1.apk</a> — APK</div>
<code>014438c3c1a92dd0108d994ae411ed27bf2de58c735614498e86d11462066d61</code>
</div>
<div class="file">
<div class="n">Signing certificate — SHA-256 (the same key signs every future release)</div>
<code>b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7</code>
</div>
</div>
<div class="rel">
<h2>Hermes for Windows <span style="color:var(--acid)">0.1.0</span></h2>
<div class="meta">Windows 64-bit · unsigned · 2026-10-23 · First desktop build: the Hermes messenger as a stand-alone Windows app (Tauri), byte-equal with the Theseus panel and the hermes.x web messenger. Sign in with a recovery phrase or create a new identity; same inbox on every surface.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Hermes-0.1.0-setup.exe">Hermes-0.1.0-setup.exe</a></div>
<code>0adc742d54daaee2b62e7fdcbff2f0203bd50f995444487ff93233ccc6328552</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Hermes-0.1.0.msi">Hermes-0.1.0.msi</a></div>
<code>fa81948bba8c3d6e9306a5aa218424fd2a4bc692891f3d2543c2782207f86b3f</code>
</div>
</div>
<p style="color:var(--dim);font-size:13px;margin:0 0 1.2rem">Recent releases only. Every older build is archived on Sia under
<code style="display:inline">dl-archive/</code> and its checksum stays in this repository's history.</p>
<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>

View file

@ -43,6 +43,7 @@
<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="ariadne">Ariadne</a>
<a href="prometheus">Prometheus</a>
<a href="sirius">Sirius</a>
<a href="hephaestus">Hephaestus</a>
@ -99,34 +100,6 @@
</div>
</div>
<div class="rel">
<h2>Theseus Navigator <span style="color:var(--acid)">0.3.107</span></h2>
<div class="meta">Windows 64-bit · unsigned · 2026-10-23 · Home page splits the left-column links and the Silent Mode cards into two self-contained panels; the slot icons default closer to Windows desktop-shortcut size. Opt-in Claude connector hardening: the approved origin is re-checked before every CDP read or input (a mid-call navigation to an unapproved site now throws); the bearer token rotates on every stop; click(x, y) without a ref refuses when the point lies on a password or one-time-code field.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-0.3.107-portable.exe">TheseusNavigator-0.3.107-portable.exe</a> — portable</div>
<code>f5a9c228e0fc83d0737b9d6210ae08c861010fdd79bd10b5c48486c7659166b4</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-Setup-0.3.107.exe">TheseusNavigator-Setup-0.3.107.exe</a> — installer</div>
<code>c0be62cf4b4279b13d5badd75af7f5607b76ae5a63b587c72b20b40428e041d9</code>
</div>
</div>
<div class="rel">
<h2>Theseus Navigator <span style="color:var(--acid)">0.3.106</span></h2>
<div class="meta">Windows 64-bit · unsigned · 2026-10-22 · Sidebar strip's AI engine picker is now a styled overlay instead of a plain native menu. Each enabled engine is listed with its own icon (bundled color-coded tiles for ChatGPT, Grok, Gemini and Phind join the existing favicons); the current engine is highlighted with the acid accent bar and a check; a bottom row jumps to Search settings. Clicking an engine selects it as the default and opens it in the left panel in one click.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-0.3.106-portable.exe">TheseusNavigator-0.3.106-portable.exe</a> — portable</div>
<code>2c299e31c812d8903f601d9c4b54385fc7335ebfc69690765f48dbcf7039b79e</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-Setup-0.3.106.exe">TheseusNavigator-Setup-0.3.106.exe</a> — installer</div>
<code>26a5752e5e7107d2718087c8831eeee3c9c25e6af61f5a3d94b537a16e5a18e4</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 · Every subsystem is now individually switchable and reports its own state. New endpoint http://127.0.0.1/api/status returns a full state report (daemon version + startup + policy + permitted TLDs + ports + upstream + gateway; index size + warm-start source; per-source enabled/lastAttempt/lastSuccess/lastError/counters for snapshotHttps + electrumWss + perQueryLookup + diskCache + localApi). C:\ProgramData\Ariadne\policy.json extended with a `sources.&lt;name&gt;.enabled` block (hot-reloaded every 5 s alongside the collision policy) -- flip any source off to isolate a path or measure without it. Turning localApi off returns 503 with a hint pointing at the config file. Turning diskCache off skips writing bns-name-snapshot.json AND skips reading it at warm-start. Turning snapshotHttps off skips the HTTPS refresh; electrumWss off skips the WSS refresh; perQueryLookup off skips the per-query /api/name/ fallback. Includes 0.1.12 (orphan-safe upgrade + /api/tlds + /api/name/:n + /api/registry). Upgrades in place.</div>
@ -138,12 +111,12 @@
</div>
<div class="rel">
<h2>Ariadne for Android <span style="color:var(--acid)">0.50</span></h2>
<div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-10-23 · New launcher icon — the laurel-crowned bust silhouette from the Ariadne.X brand kit, recoloured gold on navy. Replaces the figure-only mark; same signing key; installs over 0.49.</div>
<h2>Ariadne for Android <span style="color:var(--acid)">0.52</span></h2>
<div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-10-24 · The updater now polls ariadne.x — manifest + APKs live in the s3://bns/ariadne/ bucket the on-chain record points to, routed through the public BNS gateway so a raw HTTPS client reaches them without the Ariadne resolver being up. Download page link also moved from silentmode.st to ariadne.x. Older clients keep polling the silentmode.st mirror; the manifest at both URLs stays in sync until the fleet has rolled over. Same signing key; installs over 0.51.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/ariadne-v0.50.apk">ariadne-v0.50.apk</a> — APK</div>
<code>4ca980c58a21101f2b3b54a864a49f71912d424d07870778da21690efb45e35b</code>
<div class="n"><a href="https://dl.silentmode.st/ariadne-v0.52.apk">ariadne-v0.52.apk</a> — APK</div>
<code>da3655262114cd0505b69c9833ea129c2808dc3fbb8c0137abd60bad15959615</code>
</div>
<div class="file">
<div class="n">Signing certificate — SHA-256 (the same key signs every future release)</div>
@ -152,12 +125,26 @@
</div>
<div class="rel">
<h2>Ariadne for Android <span style="color:var(--acid)">0.49</span></h2>
<div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-10-23 · Reordering a LIVE asset card no longer reloads the homepage: Move up / Move down now shift the DOM card in place, so scroll position and already-fetched spark prices stay put. Same signing key; installs over 0.48.</div>
<h2>Ariadne for Android <span style="color:var(--acid)">0.51</span></h2>
<div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-10-24 · Launcher switches to the pottery variant — same bust silhouette in warm terracotta on navy. New Settings → Downloads row opens the system Downloads app so saved files are easy to find. AI engine picker is now a styled list with each provider's real favicon + host, and the bottom-nav AI button carries the current engine's favicon too. Closing a tab from inside the switcher no longer flashes the homepage even for a frame (persistent navy host swaps the inner view atomically). Settings page sections are more clearly separated. Toggling the Tab switcher layout now shows a toast on save. Same signing key; installs over 0.50.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/ariadne-v0.49.apk">ariadne-v0.49.apk</a> — APK</div>
<code>fe31b36c96133271171ef0e6a6aa3b55fcd5310cc43c824182046c82ff8fa178</code>
<div class="n"><a href="https://dl.silentmode.st/ariadne-v0.51.apk">ariadne-v0.51.apk</a> — APK</div>
<code>8e5b091bf48ffe17047f91e517e9ca66e8ff4c4cdcb1a074f7b928654eae2b45</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="rel">
<h2>Ariadne for Android <span style="color:var(--acid)">0.50</span></h2>
<div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-10-23 · New launcher icon — the laurel-crowned bust silhouette from the Ariadne.X brand kit, recoloured gold on navy. Replaces the figure-only mark; same signing key; installs over 0.49.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/ariadne-v0.50.apk">ariadne-v0.50.apk</a> — APK</div>
<code>4ca980c58a21101f2b3b54a864a49f71912d424d07870778da21690efb45e35b</code>
</div>
<div class="file">
<div class="n">Signing certificate — SHA-256 (the same key signs every future release)</div>
@ -229,6 +216,62 @@
</div>
</div>
<div class="rel">
<h2>Hermes for Android <span style="color:var(--acid)">0.3.0</span></h2>
<div class="meta">Android 5.0+ (API 21) · signed · 2026-10-24 · In-app auto-update. Hermes now polls dl.silentmode.st/releases-manifest.json on launch and on resume, and shows an update banner at the top of the chat list when a newer version is live. Tap Update → downloads the APK via the pinned client, SHA-256-verifies against the manifest field, then launches Android's package installer. Android refuses to install an APK signed by a different key than the running app, so a tampered manifest can at worst waste bandwidth. Same signing key as 0.2.2; installs over it. Requires the one-time Install-unknown-apps grant on first update, which Android shims via Settings.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/hermes-v0.3.0.apk">hermes-v0.3.0.apk</a> — APK</div>
<code>77d16184ba2c26fb81b79d9e4c5f98f8bfb434690c1e6acd9b7fd5f16651a6cb</code>
</div>
<div class="file">
<div class="n">Signing certificate — SHA-256 (the same key signs every future release)</div>
<code>b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7</code>
</div>
</div>
<div class="rel">
<h2>Hermes for Android <span style="color:var(--acid)">0.2.2</span></h2>
<div class="meta">Android 5.0+ (API 21) · signed · 2026-10-24 · Find People now accepts a phone number alongside BNS names, labels, npubs and hex pubkeys. Type +15551234567 (or 0015551234567) and Hermes hashes it locally and asks the relays for the matching kind:30078 phone-claim event — the raw number never leaves the device. Shows the Hermes identity with a verified ✓ when the owner's phone-claim carries a valid Telegram attestation, same shape as the Address Book contact matches. The input also switches to a numeric phone keyboard the moment it looks like a phone number. Same signing key as 0.2.1; installs over it.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/hermes-v0.2.2.apk">hermes-v0.2.2.apk</a> — APK</div>
<code>b46da998caa57a6923bb4ab305c5ab1cff88fbf38f4028eb2cecceb77140f1a6</code>
</div>
<div class="file">
<div class="n">Signing certificate — SHA-256 (the same key signs every future release)</div>
<code>b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7</code>
</div>
</div>
<div class="rel">
<h2>Hermes for Android <span style="color:var(--acid)">0.2.1</span></h2>
<div class="meta">Android 5.0+ (API 21) · signed · 2026-10-24 · Fix: real-time inbox delivery. 0.2.0 held a persistent inbox REQ at sign-in, but mobile WebSockets drop constantly (wifi/cellular transitions, OS backgrounding, keep-alive timeouts) and the REQ wasn't replayed on reconnect — the relay forgot our filter and inbound kind:1059 wraps stopped arriving until the next 15-min WorkManager poll or next outgoing send kicked a catch-up. RelayConnection now remembers active subscriptions and replays them on every onOpen, so a recipient sees messages the moment they land on the relay. Also pins the initial `since` to max(lastSeenAt, now - 7d), bounding the reconnect replay. Updates DeliveryPrefs.lastSeenAt on each decrypted wrap so background delivery stays in step.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/hermes-v0.2.1.apk">hermes-v0.2.1.apk</a> — APK</div>
<code>014438c3c1a92dd0108d994ae411ed27bf2de58c735614498e86d11462066d61</code>
</div>
<div class="file">
<div class="n">Signing certificate — SHA-256 (the same key signs every future release)</div>
<code>b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7</code>
</div>
</div>
<div class="rel">
<h2>Hermes for Windows <span style="color:var(--acid)">0.1.0</span></h2>
<div class="meta">Windows 64-bit · unsigned · 2026-10-23 · First desktop build: the Hermes messenger as a stand-alone Windows app (Tauri), byte-equal with the Theseus panel and the hermes.x web messenger. Sign in with a recovery phrase or create a new identity; same inbox on every surface.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Hermes-0.1.0-setup.exe">Hermes-0.1.0-setup.exe</a></div>
<code>0adc742d54daaee2b62e7fdcbff2f0203bd50f995444487ff93233ccc6328552</code>
</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/Hermes-0.1.0.msi">Hermes-0.1.0.msi</a></div>
<code>fa81948bba8c3d6e9306a5aa218424fd2a4bc692891f3d2543c2782207f86b3f</code>
</div>
</div>
<p style="color:var(--dim);font-size:13px;margin:0 0 1.2rem">Recent releases only. Every older build is archived on Sia under
<code style="display:inline">dl-archive/</code> and its checksum stays in this repository's history.</p>
<div class="note"><b>How to verify.</b> After downloading, compute the file's SHA-256 and compare it to

View file

@ -93,6 +93,7 @@
<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="ariadne">Ariadne</a>
<a href="prometheus">Prometheus</a>
<a href="sirius" class="here">Sirius</a>
<a href="hephaestus">Hephaestus</a>
@ -308,7 +309,7 @@
<h2>Sirius vs an ordinary registrar</h2>
<p class="lede">Short version — the full breakdown across GoDaddy, Namecheap,
Cloudflare, ENS, Unstoppable Domains, and Handshake lives on the
<a href="vs"><b>comparison page</b></a>.</p>
<a href="sirius/vs"><b>comparison page</b></a>.</p>
<table>
<tr><th>What you get</th><th>Ordinary registrar</th><th>Sirius</th></tr>
<tr><td>How ownership is proven</td>

View file

@ -29,4 +29,12 @@
<url><loc>https://silentmode.st/theseus-x/</loc><priority>0.6</priority><changefreq>weekly</changefreq></url>
<url><loc>https://silentmode.st/ariadne-x/</loc><priority>0.6</priority><changefreq>weekly</changefreq></url>
<url><loc>https://silentmode.st/hephaestus.x/</loc><priority>0.6</priority><changefreq>weekly</changefreq></url>
<url><loc>https://silentmode.st/ariadne</loc></url>
<url><loc>https://silentmode.st/hermes-x/</loc></url>
<url><loc>https://silentmode.st/vpn</loc></url>
<url><loc>https://silentmode.st/mirrors</loc></url>
<url><loc>https://silentmode.st/bergamot</loc></url>
<url><loc>https://silentmode.st/brand</loc></url>
<url><loc>https://silentmode.st/tlds</loc></url>
<url><loc>https://silentmode.st/choose</loc></url>
</urlset>

View file

@ -160,8 +160,7 @@
<div class="plat">Mobile · Android 5.0+ (API 21)</div>
<h3>Theseus for Android</h3>
<p class="desc">Phone-sized browser with tap-to-verify provenance: the block and
transaction behind each name are one tap away. Still packaged as
<code class="inline">ariadne-v0.29.apk</code>; same app, same signing key.</p>
transaction behind each name are one tap away. Ships as the Ariadne APK; same app, same signing key, with its own page at <a href="ariadne">/ariadne</a>.</p>
<div class="meta">v0.19 · ~146 KB · self-signed release key · in-app auto-update</div>
<div class="buttons">
<a class="btn acid" href="https://dl.silentmode.st/latest/ariadne.apk">Download APK</a>

View file

@ -69,6 +69,7 @@
<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="ariadne">Ariadne</a>
<a href="prometheus">Prometheus</a>
<a href="sirius">Sirius</a>
<a href="hephaestus">Hephaestus</a>

View file

@ -73,6 +73,7 @@
runs on its own on-chain name, the page links there.</p>
<div class="sites">
<a class="card" href="theseus"><h3>Theseus <span class="path">/theseus</span></h3><p>The browser. Windows and Android downloads, hashes, what's inside.</p></a>
<a class="card" href="ariadne"><h3>Ariadne <span class="path">/ariadne</span></h3><p>The Android browser and the standalone Windows resolver: downloads, hashes, how a lookup resolves.</p></a>
<a class="card" href="sirius"><h3>Sirius <span class="path">/sirius</span></h3><p>Names on the Bitcoin Cash chain: how BNS1 works, live TLDs, and the way to Sirius.X to register one.</p></a>
<a class="card" href="hephaestus"><h3>Hephaestus <span class="path">/hephaestus</span></h3><p>The code forge you sign into with a wallet. Repos on the host, releases on Sia.</p></a>
<a class="card" href="prometheus"><h3>Prometheus <span class="path">/prometheus</span></h3><p>Apps and programs published on chain, hosted on Sia. In design.</p></a>
@ -82,6 +83,10 @@
<a class="card" href="choose"><h3>Choose <span class="path">/choose</span></h3><p>Two internets, twice over: the plain-language case for switching, and what to switch.</p></a>
<a class="card" href="releases"><h3>Releases <span class="path">/releases</span></h3><p>Every shipped build with its SHA-256, newest first.</p></a>
<a class="card" href="brand"><h3>Brand <span class="path">/brand</span></h3><p>Logo, wordmark, avatar and banner as SVG, free to use when writing about the project.</p></a>
<a class="card" href="/pithos/"><h3>Pithos <span class="path">/pithos/</span></h3><p>Decentralized cloud storage you own: desktop, web and Theseus add-on clients for Sia.</p></a>
<a class="card" href="vpn"><h3>VPN <span class="path">/vpn</span></h3><p>One toggle in the Theseus sidebar; paid in Bitcoin Cash, no account.</p></a>
<a class="card" href="bergamot"><h3>Bergamot <span class="path">/bergamot</span></h3><p>On-device page translation. Designed, not yet built.</p></a>
<a class="card" href="mirrors"><h3>Mirrors <span class="path">/mirrors</span></h3><p>Why some sites 503 Theseus, and how a .bch name gets you through.</p></a>
<a class="card" href="/deviant/"><h3>Deviant <span class="path">/deviant/</span></h3><p>The parent project: the wallet, Potidaea, Anthemus, Artemision and the rest.</p></a>
<a class="card" href="https://code.silentmode.st/"><h3>Forge <span class="path">code.silentmode.st</span></h3><p>The live Hephaestus instance. Browse the source of everything on this page.</p></a>
</div>
@ -101,6 +106,9 @@
<tr><td><code>theseus.x</code></td><td>The browser's sovereign site: downloads, plug-ins, community extensions</td><td><a href="https://navigate.st/bns/theseus.x/">open</a></td><td><a href="/theseus-x/">/theseus-x/</a></td></tr>
<tr><td><code>sirius.x</code></td><td>The registrar: search, register and manage names and TLDs</td><td><a href="https://navigate.st/bns/sirius.x/">open</a></td><td><a href="/sirius-x/">/sirius-x/</a></td></tr>
<tr><td><code>hephaestus.x</code></td><td>The forge's landing page</td><td><a href="https://navigate.st/bns/hephaestus.x/">open</a></td><td><a href="/hephaestus.x/">/hephaestus.x/</a></td></tr>
<tr><td><code>ariadne.x</code></td><td>The mobile browser's sovereign site: APK, Ariadne's Thread, developer docs</td><td><a href="https://navigate.st/bns/ariadne.x/">open</a></td><td><a href="/ariadne-x/">/ariadne-x/</a></td></tr>
<tr><td><code>hermes.x</code></td><td>The messenger: downloads and the web messenger</td><td><a href="https://navigate.st/bns/hermes.x/">open</a></td><td><a href="/hermes-x/">/hermes-x/</a></td></tr>
<tr><td><code>prometheus.x</code></td><td>The app directory, a live service on its own host</td><td><a href="https://navigate.st/bns/prometheus.x/">open</a></td><td>—</td></tr>
<tr><td><code>hello.bch</code></td><td>A page stored inside a single transaction</td><td><a href="https://navigate.st/bns/hello.bch">open</a></td><td>—</td></tr>
<tr><td><code>coinspectrum.deviant.bch</code></td><td>A full multi-file site on Sia</td><td><a href="https://navigate.st/bns/coinspectrum.deviant.bch">open</a></td><td>—</td></tr>
</table>
@ -112,7 +120,7 @@
<!-- ============ OTHER CLIENTS ============ -->
<section id="clients">
<h2>Other ways to reach names</h2>
<p class="lede">Theseus is the flagship and has <a href="theseus">its own page</a>.
<p class="lede">Theseus is the flagship and has <a href="theseus">its own page</a>; Ariadne has <a href="ariadne">its own</a> too.
These are the alternatives, from lightest to deepest.</p>
<div class="dl" id="relay">

View file

@ -58,15 +58,16 @@
<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="../vpn" class="here">VPN</a>
<a href="../tools">Tools</a>
<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="ariadne">Ariadne</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="vpn" class="here">VPN</a>
<a href="tools">Tools</a>
</nav>
<header class="hero">