site-theseus-x: stable /latest/ download links, current versions, theseus.x/dl
The Download buttons pointed at TheseusNavigator-Setup-0.3.44.exe, which the ship process had long since archived off dl.silentmode.st — a 404 for anyone arriving from theseus.x. Buttons now use dl.silentmode.st/latest/<name>, which the download host redirects to the current versioned file, so the page cannot go stale again. Versions and hashes are refreshed from the releases manifest at load (the baked-in 0.3.48 / 0.18 values are the fallback), and theseus.x/dl is a memorable landing that carries only the stable links.
This commit is contained in:
parent
74617748aa
commit
b17eb01f86
2 changed files with 90 additions and 13 deletions
46
dl/index.html
Normal file
46
dl/index.html
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>theseus.x/dl — downloads</title>
|
||||
<meta name="robots" content="noindex">
|
||||
<link rel="icon" href="/assets/favicon.svg" type="image/svg+xml">
|
||||
<style>
|
||||
:root{--bg:#0b0e14;--panel:#141a24;--line:rgba(255,255,255,.09);--ink:#e7eaf1;--mut:#8b98a9;--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;min-height:100vh;display:grid;place-items:center;padding:1.2rem}
|
||||
a{color:var(--acid)}
|
||||
.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:1.6rem 1.8rem;max-width:560px;width:100%}
|
||||
h1{margin:0 0 .3rem;font-size:1.5rem}
|
||||
.mut{color:var(--mut);font-size:.95rem;margin:0 0 1.2rem}
|
||||
.row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem 0;border-top:1px solid var(--line)}
|
||||
.row b{display:block}.row small{color:var(--mut)}
|
||||
.btn{display:inline-block;padding:.5rem .9rem;border-radius:10px;background:var(--acid);color:#0b0e14;font-weight:650;text-decoration:none;white-space:nowrap}
|
||||
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
|
||||
.foot{margin-top:1.2rem;font-size:.9rem;color:var(--mut)}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="card">
|
||||
<h1>Downloads</h1>
|
||||
<p class="mut">These links always point at the current build. Verify the SHA-256 on <a href="/#verify">theseus.x</a> before running.</p>
|
||||
<div class="row"><div><b>Theseus Navigator for Windows</b><small>installer · v<span data-live="theseus-version">0.3.48</span></small></div><a class="btn" href="https://dl.silentmode.st/latest/TheseusNavigator-Setup.exe">Installer</a></div>
|
||||
<div class="row"><div><b>Theseus Navigator, portable</b><small>single .exe, no install</small></div><a class="btn ghost" href="https://dl.silentmode.st/latest/TheseusNavigator-portable.exe">Portable</a></div>
|
||||
<div class="row"><div><b>Ariadne for Android</b><small>APK · v<span data-live="android-version">0.18</span></small></div><a class="btn ghost" href="https://dl.silentmode.st/latest/ariadne.apk">APK</a></div>
|
||||
<div class="row"><div><b>Ariadne's Thread for Windows</b><small>system-wide resolver, installed by Theseus's setup by default</small></div><a class="btn ghost" href="https://dl.silentmode.st/latest/AriadneResolver-Setup.exe">Installer</a></div>
|
||||
<p class="foot">Machine-readable: <a href="https://dl.silentmode.st/releases-manifest.json">releases-manifest.json</a> · all releases: <a href="https://silentmode.st/releases/">silentmode.st/releases</a></p>
|
||||
</div>
|
||||
<script>
|
||||
(async () => {
|
||||
try {
|
||||
const r = await fetch("https://dl.silentmode.st/releases-manifest.json", { cache: "no-store" }); if (!r.ok) return;
|
||||
const m = await r.json(); const g = (id) => (m.releases || []).find((x) => x.id === id);
|
||||
const set = (k, v) => { if (v) document.querySelectorAll('[data-live="' + k + '"]').forEach((el) => el.textContent = v); };
|
||||
set("theseus-version", g("theseus-navigator")?.version); set("android-version", g("ariadne-android")?.version);
|
||||
} catch {}
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
57
index.html
57
index.html
|
|
@ -224,7 +224,7 @@
|
|||
|
||||
<section id="download">
|
||||
<h2>Download</h2>
|
||||
<p class="lede">Latest is <b>0.3.15</b>. Windows installer + portable, and an
|
||||
<p class="lede">Latest is <b data-live="theseus-version">0.3.48</b>. Windows installer + portable, and an
|
||||
Android build (Ariadne mobile — same brand, phone form factor).</p>
|
||||
|
||||
<div class="plats">
|
||||
|
|
@ -234,14 +234,14 @@
|
|||
<h3>Theseus for Windows</h3>
|
||||
<p>Full-window desktop browser with Tor toggle and the multi-source BNS
|
||||
warm-start.</p>
|
||||
<div class="meta">v0.3.44 · installer ~118 MB (bundles Ariadne's Thread) · portable ~117 MB · unsigned</div>
|
||||
<div class="meta">v<span data-live="theseus-version">0.3.48</span> · installer ~99 MB · portable ~99 MB · unsigned</div>
|
||||
<div class="btns">
|
||||
<a class="btn acid" href="https://dl.silentmode.st/TheseusNavigator-Setup-0.3.44.exe">Installer</a>
|
||||
<a class="btn ghost" href="https://dl.silentmode.st/TheseusNavigator-0.3.44-portable.exe">Portable .exe</a>
|
||||
<a class="btn acid" href="https://dl.silentmode.st/latest/TheseusNavigator-Setup.exe">Installer</a>
|
||||
<a class="btn ghost" href="https://dl.silentmode.st/latest/TheseusNavigator-portable.exe">Portable .exe</a>
|
||||
</div>
|
||||
<div class="hashes" id="hashes-win">
|
||||
<div class="h"><b>Installer</b><code>6dd510184a3c1488ac93b7fd0194ddd239fe4e31083705afcc3c7bde0f530107</code></div>
|
||||
<div class="h"><b>Portable</b><code>346be24804db0d8a00cd76a2c89cd3bd2b9af17e5505b25ec326f30c3ceec6ad</code></div>
|
||||
<div class="h"><b>Installer</b><code data-live="theseus-setup-sha">ce5064decdd796e560e11f161d2e9271d3cd7de3bd231c942ebc2de407d0c9f7</code></div>
|
||||
<div class="h"><b>Portable</b><code data-live="theseus-portable-sha">e758c1f9a9ec376c029856fd81ed3cee4b2c848a4cf9f94d07ed74f2096ad621</code></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -250,12 +250,12 @@
|
|||
<h3>Ariadne for Android</h3>
|
||||
<p>Phone-sized browser with tap-to-verify provenance — the block and
|
||||
transaction behind each name are one tap away.</p>
|
||||
<div class="meta">v0.17 · ~146 KB · self-signed release key · in-app auto-update</div>
|
||||
<div class="meta">v<span data-live="android-version">0.18</span> · ~146 KB · self-signed release key · in-app auto-update</div>
|
||||
<div class="btns">
|
||||
<a class="btn acid" href="https://dl.silentmode.st/ariadne-v0.17.apk">Download APK</a>
|
||||
<a class="btn acid" href="https://dl.silentmode.st/latest/ariadne.apk">Download APK</a>
|
||||
</div>
|
||||
<div class="hashes" id="hashes-android">
|
||||
<div class="h"><b>APK</b><code>8a655081782ecc17a50a7fcd67c28625ccb0c905cf6b583bdd703a128b2b9b10</code></div>
|
||||
<div class="h"><b>APK</b><code data-live="android-sha">920272deb1ff3cb163d609882f4fdaf422c163648b96944d16670ba0ba2ac5bf</code></div>
|
||||
<div class="h"><b>Signing key</b><code>46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c</code></div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -263,7 +263,9 @@
|
|||
</div>
|
||||
|
||||
<div class="note"><b>Nothing is signed by an authority your device trusts</b>
|
||||
— by design. Verify the SHA-256 below before running. The machine-readable
|
||||
— by design. Verify the SHA-256 below before running. The download buttons point at
|
||||
<code>dl.silentmode.st/latest/…</code>, which always redirects to the current
|
||||
build, so a saved link never goes stale. The machine-readable
|
||||
manifest is at
|
||||
<a href="https://dl.silentmode.st/releases-manifest.json">releases-manifest.json</a>.</div>
|
||||
</section>
|
||||
|
|
@ -276,13 +278,13 @@
|
|||
<code>releases.silentmode.bch</code> pointer. Three independent surfaces —
|
||||
they should all agree.</p>
|
||||
<pre>Windows PowerShell:
|
||||
Get-FileHash TheseusNavigator-Setup-0.3.15.exe -Algorithm SHA256
|
||||
Get-FileHash <span data-live="theseus-setup-file">TheseusNavigator-Setup-0.3.48.exe</span> -Algorithm SHA256
|
||||
|
||||
macOS / Linux:
|
||||
sha256sum TheseusNavigator-Setup-0.3.15.exe
|
||||
sha256sum <span data-live="theseus-setup-file">TheseusNavigator-Setup-0.3.48.exe</span>
|
||||
|
||||
Expected:
|
||||
5452a34f211176cf04b7ea77a70fb838f0031b6ea0faed2cd270eae989b20c60</pre>
|
||||
<span data-live="theseus-setup-sha">ce5064decdd796e560e11f161d2e9271d3cd7de3bd231c942ebc2de407d0c9f7</span></pre>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
|
|
@ -293,5 +295,34 @@ Expected:
|
|||
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
// Keep versions + hashes current from the releases manifest. The text baked
|
||||
// into the page is the fallback when this fetch can't run (offline, or a
|
||||
// scheme that blocks cross-origin reads).
|
||||
(async () => {
|
||||
try {
|
||||
const r = await fetch("https://dl.silentmode.st/releases-manifest.json", { cache: "no-store" });
|
||||
if (!r.ok) return;
|
||||
const m = await r.json();
|
||||
const th = (m.releases || []).find((x) => x.id === "theseus-navigator");
|
||||
const an = (m.releases || []).find((x) => x.id === "ariadne-android");
|
||||
const set = (key, val) => { if (val == null) return; document.querySelectorAll('[data-live="' + key + '"]').forEach((el) => { el.textContent = String(val); }); };
|
||||
if (th) {
|
||||
const files = Object.keys(th.files || {});
|
||||
const setup = files.find((f) => /Setup-.*\.exe$/.test(f)), portable = files.find((f) => /-portable\.exe$/.test(f));
|
||||
set("theseus-version", th.version);
|
||||
set("theseus-setup-file", setup);
|
||||
set("theseus-setup-sha", setup && th.files[setup]);
|
||||
set("theseus-portable-sha", portable && th.files[portable]);
|
||||
}
|
||||
if (an) {
|
||||
const apk = Object.keys(an.files || {})[0];
|
||||
set("android-version", an.version);
|
||||
set("android-sha", apk && an.files[apk]);
|
||||
}
|
||||
} catch {}
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue