Setup fe59105d2e99a41b7000caeb86601a8e1675846d193e92204034669f5b368d60
Portable 1b6eda55b53894cf9889548116c7b6100888fb160edc84cc1592bb79f9d95b53
The update flow no longer asks the user to click Download. When
checkForUpdate detects a newer version, autoDownloadUpdate() kicks off
session.defaultSession.downloadURL against the setup URL immediately.
will-download recognises the update URL and routes the file to a
fixed %TEMP% path (bypassing the visible downloads panel entirely),
streams updateDownloadReceived/Total into the chip via
emitUpdateAvailable, and flips updateDownloadState to "ready" when
the transfer finishes.
Chip states:
idle first render before the fetch starts — clickable to
trigger the manual download (kept as a fallback).
downloading "↓ 42% — 0.3.2" — no click, just progress.
ready "✓ Install 0.3.2 & restart" — one click.
failed fall back to the pre-0.3.1 explicit-download click.
install-update-now IPC: spawns the cached setup with /S (detached,
stdio ignored), then app.quit() 400ms later so the installer can
overwrite the running exe. Our nsis/installer.nsh detects an existing
Ariadne install via the HKLM registry and skips its Ariadne prompt on
upgrades, so the /S run is fully unattended.
The one-click flow eliminates two long-standing sources of confusion:
- "Download opens a different browser" — Theseus's default session
fetches the installer itself, not a URL handoff to shell.
- "Update requires multiple wizard clicks" — /S skips them.
Extensions aren't touched by this. The framework lives in
addons-host.js + sidebar-preload.js; add-ons themselves live in
%APPDATA%\Theseus Navigator\addons\<id>\ and are a separate layer.
New extensions ship by drop-a-folder, no browser release required.
Deployed: scp + sia-upload, verified 200 + 0.3.1 in the manifest.
100 lines
5.4 KiB
HTML
100 lines
5.4 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Silent Mode — releases & 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">
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
</head>
|
|
<body>
|
|
|
|
<nav class="topnav">
|
|
<a class="brand" href="../">⛓️ Silent <span class="g">Mode</span></a>
|
|
<a href="../tools/">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>
|
|
</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.1</span></h2>
|
|
<div class="meta">Windows 64-bit · unsigned · 2026-08-31 · <b>Add-on framework + branded error pages</b> — Settings > Add-ons lists modules under <userData>/addons/; drop a folder in, restart, it's live. Notepad reference add-on ships in the box. Load failures now show a name-not-registered / unreachable / TLS / generic error page with Retry + Search + Register-on-Sirius actions; the address bar keeps the failed URL. Carries the Ariadne bundle and Startpage POST fix from 0.1.2.</div>
|
|
|
|
<div class="file">
|
|
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-Setup-0.3.1.exe">TheseusNavigator-Setup-0.3.1.exe</a> — installer</div>
|
|
<code>fe59105d2e99a41b7000caeb86601a8e1675846d193e92204034669f5b368d60</code>
|
|
</div>
|
|
<div class="file">
|
|
<div class="n"><a href="https://dl.silentmode.st/TheseusNavigator-0.3.1-portable.exe">TheseusNavigator-0.3.1-portable.exe</a> — portable</div>
|
|
<code>1b6eda55b53894cf9889548116c7b6100888fb160edc84cc1592bb79f9d95b53</code>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="rel">
|
|
<h2>Ariadne Resolver — Windows <span style="color:var(--acid)">0.1.0</span></h2>
|
|
<div class="meta">Windows 64-bit · unsigned · bundled Node runtime · 2026-07-28</div>
|
|
|
|
<div class="file">
|
|
<div class="n"><a href="https://dl.silentmode.st/AriadneResolver-Setup-0.1.0.exe">AriadneResolver-Setup-0.1.0.exe</a> — ~24 MB</div>
|
|
<code>9ab725bec5567625e5857a49b112c4fbc0f59dbdd623abd7110429306f5d0ddb</code>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="rel">
|
|
<h2>Ariadne for Android <span style="color:var(--acid)">0.11</span></h2>
|
|
<div class="meta">Android 5.0+ (API 21) · self-signed release key · 2026-08-30 · adds Sia CDN pull to the APK-bundled starter — post-install cold starts now catch up from the operator's latest published snapshot in one HTTP call</div>
|
|
|
|
<div class="file">
|
|
<div class="n"><a href="https://dl.silentmode.st/ariadne-v0.11.apk">ariadne-v0.11.apk</a> — 124 KB</div>
|
|
<code>03c95832c16cc4763acaadbf328caa7d4bd05fc7c2994f6997a79cc6890bca44</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 <file> 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>
|