theseus/statusbar.html
Local Dev 7898e78ff4 Initial commit — Silent Mode baseline (2026-07-29)
Snapshot of the decentralized-web stack at the point of the resolver+Theseus
rebuild deploy. Includes:

- Argus (BNS engine + resolver daemon + Sia gateway)
- AriadneResolver (Windows Inno installer bundle + Android APK sources +
  Firefox extension)
- TheseusNavigator (Electron browser)
- site/ (silentmode.st content, deployed to Sia at bns/silentmode/)
- design docs, roadmap, protocol spec

Secrets excluded via .gitignore: Argus/sia-s3.json, Argus/wallets.json,
Argus/ca/*.key,*.crt. Build outputs, node_modules, and bundled runtimes
also excluded.

Shipped hashes on dl.silentmode.st at this commit:
  AriadneResolver-Setup-0.1.0.exe    5bcb216eef31ea28ed767e4134ab74bd5ac69dfbd365fd249e9e6938e55c986a
  TheseusNavigator-Setup-0.0.1.exe   7c735e88bad2da3347145adba3016c8f626a18b8422289c8c6ba471972e2952b
  TheseusNavigator-0.0.1-portable.exe 008fd84445babeabb401b2bca40ea9466b24b0e6d6c85104da7640c5c5c84521
  ariadne-v0.2.apk                   635c8f04d44ef855a8390b9eeddb8cd2d50622e81cc4e5004e8daffc1bb0425c
2026-07-29 13:54:34 +02:00

57 lines
3 KiB
HTML

<!doctype html>
<html>
<head><meta charset="utf-8">
<style>
:root { color-scheme: dark; font-family: system-ui, sans-serif; }
html, body { margin: 0; height: 100%; }
body { display: flex; align-items: center; gap: 8px; padding: 0 12px;
background: #0b0f18; color: #8b93a7; font-size: 11.5px; white-space: nowrap;
overflow: hidden; border-top: 1px solid #ffffff10; user-select: none; }
.dot { width: 8px; height: 8px; border-radius: 50%; background: #5e6678; flex: none; }
.dot.chain { background: #d6ff3d; } .dot.sia { background: #b39ddb; }
.dot.server { background: #4fd1a5; } .dot.web { background: #8b93a7; } .dot.err { background: #f6768a; }
#host { color: #e7eaf1; }
#src { color: #bfeae4; }
.reg { color: #d6ff3d; }
.sep { color: #3a4152; }
#records { color: #6f7789; font-family: ui-monospace, monospace; }
#cert { color: #6f7789; margin-left: auto; font-family: ui-monospace, monospace;
overflow: hidden; text-overflow: ellipsis; }
</style></head>
<body>
<span class="dot" id="dot"></span>
<span id="host"></span>
<span id="sep1" class="sep" hidden>·</span>
<span id="src"></span>
<span id="sep2" class="sep" hidden>·</span>
<span class="reg" id="reg"></span>
<span id="records"></span>
<span id="cert"></span>
<script>
const $ = (id) => document.getElementById(id);
function clear() { for (const id of ["host","src","reg","records","cert"]) $(id).textContent = ""; $("sep1").hidden = $("sep2").hidden = true; }
window.theseus.onNav((d) => {
const dot = $("dot"); dot.className = "dot";
clear();
if (!d || d.kind === "home") { $("host").textContent = "Theseus — decentralized web navigator"; return; }
if (d.kind === "resolving") { $("host").textContent = "resolving " + d.host + " on the BCH chain…"; return; }
if (d.kind === "nxdomain") { dot.classList.add("err"); $("host").textContent = d.host + " → not registered on chain (NXDOMAIN)"; return; }
if (d.kind === "error") { dot.classList.add("err"); $("host").textContent = "error: " + (d.error || "resolution failed"); return; }
if (d.kind === "web") {
dot.classList.add("web");
$("host").textContent = d.host || "";
$("sep1").hidden = false; $("src").textContent = "web (ICANN DNS)";
return;
}
// kind === "ok": a resolved BNS name
const cls = (d.source || "").includes("chain") ? "chain" : (d.source || "").includes("Sia") ? "sia" : (d.source || "").includes("server") ? "server" : "web";
dot.classList.add(cls);
$("host").textContent = d.host || "";
$("sep1").hidden = false; $("src").textContent = "served from " + (d.source || "chain");
if (d.registry || d.tld) { $("sep2").hidden = false; $("reg").textContent = (d.registry || "BCNR") + (d.tld ? " ·." + d.tld : ""); }
if (d.records && d.records.length) $("records").textContent = " [" + d.records.join(",") + "]";
if (d.category) $("cert").textContent = "cert " + String(d.category).slice(0, 16) + "…";
});
</script>
</body>
</html>