site-theseus-x: standalone landing page for the theseus.x BCNR name

Standalone dir alongside site-sirius-x. Same brand family (dark bg + acid
green, sticky nav, rounded-square favicon in the sibling shape) with a
compass-diamond mark specific to Theseus Navigator = ship metaphor.

Contents:
- assets/favicon.svg  — 64x64 rounded dark square + acid compass diamond
- assets/logo.svg     — same mark + wordmark for OpenGraph previews
- index.html          — hero, what-it-is, features grid, download panels
                        for Windows setup / portable and Ariadne Android,
                        SHA-256 verify block, footer

Live hashes match releases-manifest.json (0.0.9 Windows + 0.11 APK).

Uploaded to Sia bucket bns/theseus/ (sia-upload.js output records the
canonical `{"s3":"bns/theseus/"}` value). Not resolvable via
silentmode.bch gateway yet — the on-chain BCNR record for theseus.x is
the user's wallet action (see the follow-up register instructions).
This commit is contained in:
Local Dev 2026-08-31 04:33:09 +02:00
commit f2b6ad66bf
3 changed files with 317 additions and 0 deletions

11
assets/favicon.svg Normal file
View file

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<!-- theseus.x — Navigator compass mark. Rounded dark square (matches the
sirius.x sibling family) with a 4-arm compass diamond in Silent Mode
acid green. Reads as "compass / navigator" at 16x16 tab-icon size.
Top-and-bottom arm is fully saturated; horizontal arm is softened so
"north" (up) is unmistakable — the ship metaphor without a wordmark. -->
<rect width="64" height="64" rx="12" fill="#0b0e14"/>
<path d="M32 6 L38 32 L32 58 L26 32 Z" fill="#d6ff3d"/>
<path d="M6 32 L32 27 L58 32 L32 37 Z" fill="#d6ff3d" opacity="0.55"/>
<circle cx="32" cy="32" r="3" fill="#0b0e14"/>
</svg>

After

Width:  |  Height:  |  Size: 690 B

15
assets/logo.svg Normal file
View file

@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 96">
<!-- theseus.x wordmark for OpenGraph previews. Compass mark on the left,
wordmark on the right; kept single-color so it survives dark and
light preview cards without a background box. -->
<g>
<rect x="8" y="16" width="64" height="64" rx="12" fill="#0b0e14"/>
<path d="M40 22 L46 48 L40 74 L34 48 Z" fill="#d6ff3d"/>
<path d="M14 48 L40 43 L66 48 L40 53 Z" fill="#d6ff3d" opacity="0.55"/>
<circle cx="40" cy="48" r="3" fill="#0b0e14"/>
</g>
<text x="88" y="60" font-family="system-ui, -apple-system, Segoe UI, Roboto, sans-serif"
font-size="30" font-weight="600" fill="#e7eaf1" letter-spacing=".5">
theseus<tspan fill="#d6ff3d">.x</tspan>
</text>
</svg>

After

Width:  |  Height:  |  Size: 768 B

291
index.html Normal file
View file

@ -0,0 +1,291 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>theseus.x — the browser that speaks Bitcoin Cash names</title>
<meta name="description" content="Theseus Navigator: a Chromium-based browser with native BCH name resolution built in. No OS-level daemon, no DNS shim, no root-store install. Windows + Android.">
<link rel="icon" href="/assets/favicon.svg" type="image/svg+xml">
<link rel="mask-icon" href="/assets/favicon.svg" color="#d6ff3d">
<meta property="og:type" content="website">
<meta property="og:site_name" content="theseus.x">
<meta property="og:title" content="theseus.x — the browser that speaks Bitcoin Cash names">
<meta property="og:description" content="Native .bch / BCNR resolution in a Chromium browser. No daemon, no root-store install. Windows + Android.">
<meta property="og:url" content="https://theseus.x/">
<meta property="og:image" content="https://theseus.x/assets/logo.svg">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="theseus.x — the browser that speaks Bitcoin Cash names">
<meta name="twitter:description" content="Native BCNR resolution in a Chromium browser. No daemon, no root-store install.">
<style>
:root{
--bg:#0b0e14; --panel:#141a24; --panel2:#18202c; --line:rgba(255,255,255,.09);
--ink:#e7eaf1; --mut:#8b98a9; --dim:#5e6678; --acid:#d6ff3d;
--chain:#d6ff3d; --sia:#b39ddb; --srv:#4fd1a5; --ok:#4fd1a5; --warn:#ffc75f;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
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}
a{color:var(--acid)}
.wrap{max-width:980px;margin:0 auto;padding:0 1.2rem}
.topnav{position:sticky;top:0;z-index:20;display:flex;gap:2px;align-items:center;flex-wrap:wrap;
padding:10px 1.2rem;background:rgba(11,14,20,.82);backdrop-filter:blur(10px);
border-bottom:1px solid var(--line)}
.topnav .brand{font-weight:600;color:var(--ink);text-decoration:none;margin-right:14px;font-size:15px;letter-spacing:.2px;display:flex;align-items:center;gap:8px}
.topnav .brand .g{color:var(--acid)}
.topnav .brand svg{width:20px;height:20px}
.topnav a{color:var(--mut);text-decoration:none;padding:6px 12px;border-radius:8px;font-size:14px}
.topnav a:hover{color:var(--ink);background:var(--panel)}
.topnav a.here{color:var(--acid);background:rgba(214,255,61,.08)}
.topnav a.get{margin-left:auto;background:rgba(214,255,61,.10);color:var(--acid);font-weight:500}
.topnav a.get:hover{background:rgba(214,255,61,.18)}
header.hero{text-align:center;padding:5rem 1.2rem 1.5rem}
.mark{display:inline-block}
.mark svg{width:80px;height:80px;filter:drop-shadow(0 4px 24px rgba(214,255,61,.18))}
h1{font-size:clamp(2rem,5.5vw,2.9rem);margin:.9rem 0 .3rem;letter-spacing:-.5px}
h1 .g{color:var(--acid)}
.tag{color:var(--mut);font-size:1.05rem;max-width:660px;margin:0 auto}
.cta{margin-top:1.8rem;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.btn{display:inline-block;text-decoration:none;padding:11px 20px;border-radius:10px;background:#4b7bec;color:#fff;font-size:14px;border:none;cursor:pointer;font-family:inherit;transition:filter .1s}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}
.btn.acid{background:var(--acid);color:#0b0e14;font-weight:600}
.btn:hover{filter:brightness(1.12)}
section{padding:2.6rem 0;border-top:1px solid var(--line);margin-top:2.5rem}
section:first-of-type{border-top:none;margin-top:1.5rem}
h2{font-size:1.5rem;margin:0 0 .4rem}
h3{font-size:1.1rem;margin:0 0 .35rem}
.lede{color:var(--mut);margin:0 0 1.6rem;max-width:720px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px 20px}
.card h3{margin:0 0 .5rem;display:flex;align-items:center;gap:8px}
.card p{margin:0;color:var(--mut);font-size:14px}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none}
.d-chain{background:var(--chain)} .d-sia{background:var(--sia)} .d-srv{background:var(--srv)}
.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:14px;margin-top:1.4rem}
.note.warn{border-left-color:var(--warn)}
.note b{color:var(--ink)}
code,.mono{background:#0e131b;border:1px solid var(--line);border-radius:6px;padding:1px 6px;font-family:ui-monospace,monospace;font-size:13px}
pre{background:#0e131b;border:1px solid var(--line);border-radius:10px;padding:12px 14px;overflow-x:auto;
font-family:ui-monospace,monospace;font-size:12.5px;color:var(--ink);margin:.8rem 0}
/* Downloads: platform cards */
.plats{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:1rem}
@media (max-width:720px){.plats{grid-template-columns:1fr}}
.plat{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px 22px}
.plat .lbl{color:var(--acid);font:600 11px/1 system-ui;letter-spacing:.22em;text-transform:uppercase}
.plat h3{margin:.4rem 0 .3rem;font-size:1.15rem}
.plat p{margin:0;color:var(--mut);font-size:13.5px}
.plat .meta{color:var(--dim);font-size:12px;margin-top:.6rem}
.plat .btns{margin-top:.9rem;display:flex;gap:8px;flex-wrap:wrap}
.plat .btns .btn{padding:9px 16px;font-size:13.5px}
.plat .hashes{margin-top:.9rem;padding-top:.7rem;border-top:1px solid var(--line);font-size:11.5px;color:var(--dim)}
.plat .hashes .h{display:flex;gap:8px;flex-wrap:wrap;align-items:baseline;margin-top:4px}
.plat .hashes .h b{color:var(--mut);font-weight:600;min-width:70px}
.plat .hashes code{font-family:ui-monospace,monospace;font-size:10.5px;color:#c9d4e3;word-break:break-all;background:transparent;border:none;padding:0}
footer{color:var(--dim);font-size:12.5px;margin:3rem 0 2rem;text-align:center}
footer a{color:var(--mut)}
</style>
</head>
<body>
<nav class="topnav">
<a class="brand" href="/">
<svg viewBox="0 0 64 64" aria-hidden="true">
<rect width="64" height="64" rx="12" fill="#0b0e14"/>
<path d="M32 6 L38 32 L32 58 L26 32 Z" fill="#d6ff3d"/>
<path d="M6 32 L32 27 L58 32 L32 37 Z" fill="#d6ff3d" opacity=".55"/>
<circle cx="32" cy="32" r="3" fill="#0b0e14"/>
</svg>
<span>theseus<span class="g">.x</span></span>
</a>
<a href="#what">What it is</a>
<a href="#features">Features</a>
<a href="#download">Download</a>
<a href="#verify">Verify</a>
<a href="https://sirius.x/" title="Register a BCNR name">sirius.x</a>
<a class="get" href="#download">Get Theseus</a>
</nav>
<header class="hero">
<div class="mark">
<svg viewBox="0 0 64 64" aria-hidden="true">
<rect width="64" height="64" rx="12" fill="#0b0e14"/>
<path d="M32 6 L38 32 L32 58 L26 32 Z" fill="#d6ff3d"/>
<path d="M6 32 L32 27 L58 32 L32 37 Z" fill="#d6ff3d" opacity=".55"/>
<circle cx="32" cy="32" r="3" fill="#0b0e14"/>
</svg>
</div>
<h1>Theseus <span class="g">Navigator</span></h1>
<p class="tag">A Chromium-based browser that resolves Bitcoin&nbsp;Cash names on the
device itself. No OS-level daemon, no DNS shim, no root-store install. Type
<code>silentmode.bch</code>, get the on-chain answer, see which registry &amp;
which storage served it.</p>
<div class="cta">
<a class="btn acid" href="#download">Download for Windows</a>
<a class="btn ghost" href="#download">Android APK</a>
<a class="btn ghost" href="#what">How it works</a>
</div>
</header>
<div class="wrap">
<section id="what">
<h2>What it is</h2>
<p class="lede">Theseus is a browser built around the assumption that names should
be resolved by the person using them, not by an intermediary. It ships an
embedded resolver (Ariadne) that watches the BCH chain directly and answers
name lookups locally — the app <i>is</i> both the browser and the resolver.
Every page carries a badge showing which registry produced the record
(BCNR, ICANN) and which backend served the bytes (on-chain, Sia, direct IP,
or a plain HTTPS fallback).</p>
<div class="grid">
<div class="card">
<h3><span class="dot d-chain"></span> On-chain first</h3>
<p>Every dotted host is asked of BCNR before anything else. If the chain
answers, that answer wins — no matter what any DNS operator says. If
BCNR has no record, Theseus falls through to the clearnet.</p>
</div>
<div class="card">
<h3><span class="dot d-sia"></span> Trust one thing</h3>
<p>The app is the trust boundary. No daemon, no root cert, no proxy in the
middle. Uninstall it and BCNR is gone from that machine — nothing lingers
in the OS.</p>
</div>
<div class="card">
<h3><span class="dot d-srv"></span> Warm from the first click</h3>
<p>A bundled beacon snapshot loads before the first navigation can fire; a
background delta refresh keeps the index current every 30&nbsp;s; a Sia
snapshot pull on boot catches long-idle installs up in one HTTP call.</p>
</div>
</div>
</section>
<section id="features">
<h2>What's inside</h2>
<p class="lede">Everything a mainstream browser has, plus what the chain enables.</p>
<div class="grid">
<div class="card">
<h3>Native BCNR</h3>
<p>Type a name, get the on-chain record. <code>h</code> serves from the chain,
<code>s3</code> from Sia storage, <code>ip</code> direct-connects, <code>u</code>
redirects. TLS fingerprint pinning against the on-chain <code>tls</code> record
for <code>ip</code> hops.</p>
</div>
<div class="card">
<h3>window.bcnr API</h3>
<p>Every page can call <code>window.bcnr.resolveName(…)</code>,
<code>isRegistered(…)</code>, <code>getBcnrTlds()</code>, and
<code>getRecordVersion(…)</code>. dApps don't need to ship their own resolver.</p>
</div>
<div class="card">
<h3>Password manager</h3>
<p>Local vault, deterministic derivation from a BIP-39 seed. Same seed on a
different device produces the same passwords. Autofill on demand — never
watches the page for you.</p>
</div>
<div class="card">
<h3>Tor toggle</h3>
<p>One click routes everything through a bundled Tor client — pluggable
transports included for hostile networks. Off by default; nothing is
proxied without your say-so.</p>
</div>
<div class="card">
<h3>Anti-fingerprinting</h3>
<p>Timezone / locale / language / geolocation can be shown, hidden, spoofed
with a plausible decoy, or set manually. Media-device labels blanked by
default so <code>enumerateDevices</code> can't leak an audiooutput ID.</p>
</div>
<div class="card">
<h3>Privacy by default</h3>
<p>Cookies, cache, storage, and history clear on quit unless you opt in.
Camera and microphone denied by default. WebRTC IP policy set to
public-only.</p>
</div>
<div class="card">
<h3>Nothing to install elsewhere</h3>
<p>Ariadne resolver is baked in. Every other browser on the machine can
stay untouched. If you also want system-wide BCNR, the standalone
Ariadne Resolver is a separate download.</p>
</div>
<div class="card">
<h3>Small, auditable</h3>
<p>Under 100 MB, Electron + a few kilobytes of BCNR glue. Source at
<a href="https://silentmode.st/">silentmode.st</a>. Reproducible builds
with <code>SOURCE_DATE_EPOCH</code>.</p>
</div>
</div>
</section>
<section id="download">
<h2>Download</h2>
<p class="lede">Latest is <b>0.0.9</b>. Windows installer + portable, and an
Android build (Ariadne mobile — same brand, phone form factor).</p>
<div class="plats">
<div class="plat">
<div class="lbl">Desktop · Windows 64-bit</div>
<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.0.9 · ~93 MB · unsigned</div>
<div class="btns">
<a class="btn acid" href="https://dl.silentmode.st/TheseusNavigator-Setup-0.0.9.exe">Installer</a>
<a class="btn ghost" href="https://dl.silentmode.st/TheseusNavigator-0.0.9-portable.exe">Portable .exe</a>
</div>
<div class="hashes" id="hashes-win">
<div class="h"><b>Installer</b><code>5452a34f211176cf04b7ea77a70fb838f0031b6ea0faed2cd270eae989b20c60</code></div>
<div class="h"><b>Portable</b><code>ee602a016caf022452b2096ca683cf4bb4cea93ded1352192910c581a962d9ae</code></div>
</div>
</div>
<div class="plat">
<div class="lbl">Mobile · Android 5.0+ (API 21)</div>
<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.11 · ~124 KB · self-signed release key</div>
<div class="btns">
<a class="btn acid" href="https://dl.silentmode.st/ariadne-v0.11.apk">Download APK</a>
</div>
<div class="hashes" id="hashes-android">
<div class="h"><b>APK</b><code>03c95832c16cc4763acaadbf328caa7d4bd05fc7c2994f6997a79cc6890bca44</code></div>
<div class="h"><b>Signing key</b><code>46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c</code></div>
</div>
</div>
</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
manifest is at
<a href="https://dl.silentmode.st/releases-manifest.json">releases-manifest.json</a>.</div>
</section>
<section id="verify">
<h2>Verify what you downloaded</h2>
<p class="lede">The hashes above are the same ones published at
<a href="https://silentmode.bch/releases/">silentmode.bch/releases</a> (Sia
mirror, name-anchored) and inside the on-chain
<code>releases.silentmode.bch</code> pointer. Three independent surfaces —
they should all agree.</p>
<pre>Windows PowerShell:
Get-FileHash TheseusNavigator-Setup-0.0.9.exe -Algorithm SHA256
macOS / Linux:
sha256sum TheseusNavigator-Setup-0.0.9.exe
Expected:
5452a34f211176cf04b7ea77a70fb838f0031b6ea0faed2cd270eae989b20c60</pre>
</section>
<footer>
<p>theseus.x is a BCNR name resolving to a Sia-hosted static site.
Source and issues: <a href="https://silentmode.st/">silentmode.st</a>.
Alpha software on a test network.</p>
</footer>
</div>
</body>
</html>