Sweep: mobile Ariadne updates, Deviant brand + sites, Hephaestus bootstrap, snappymail
Broad-scope commit sweeping in work from parallel sessions plus this session's
dev-only utilities. No single unifying theme — this is the "commit everything
that's ready" pass. Grouped by area below.
AriadneResolver / mobile
* Small updates to BchFetcher, Bns, MainActivity, AriadneVpnService, and the
Android manifest — from a parallel mobile-resolver session.
* AriadneResolver/mobile/webpreview/ — new local dev webview (index.html +
server.mjs) for iterating on the mobile UI without a device.
Email / SnappyMail
* Email/snappymail-plugin/silentmode-addresses — new SnappyMail plugin
(README, CSS, PHP entry, JS) for surfacing @silentmode.st address
management inside the webmail UI.
Hephaestus (Forgejo + auth-proxy)
* auth-proxy/src/oidc.ts + docker-compose.yml updates.
* scripts/bootstrap-auth.sh — idempotent script that registers the wallet
auth-proxy as Forgejo's OIDC provider after `docker compose up -d`. All
secrets read from .env — no literals in the script.
TheseusNavigator / dev tools
* dev/list-tlds.mjs — enumerate every registered BNS name grouped by TLD via
our own indexer.
* dev/show-tlds-bch.mjs — dump the full records payload of the legacy
tlds.bch name (kept as a diagnostic for the list-in-one-NFT era).
Deviant sites + brand
* site/deviant/ — new microsites (anthemus, potidaea, brand, mindmap, main
index) plus the full brand kit under site/deviant/brand/ (logos, icons,
palette, social exports as SVG source + PNG renders).
* site-sirius-x/portal.html — updates.
Coordination
* _coordination/sessions/mobile-resolver.md — parallel-session notes.
Deliberately excluded from this commit:
* scratchpad/ — this session's temp drafts (Sia doc mockups, tlds UPD payloads).
* TheseusNavigator/_prev/ — ~372 MB of prior release binaries; belongs in
a separate artefacts store, not the git tree. Add to .gitignore next pass.
2026-08-30 10:38:49 +02:00
<!doctype html>
< html lang = "en" data-theme = "signal" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
< title > Potidaea — Native-BCH Automated Swap Mechanism< / title >
< meta name = "description" content = "Potidaea — the native-BCH ASM. Counterparty-free swaps, priced by the Universal Exchange Rate, backing enforced at consensus level." >
< base href = "./" >
< link rel = "preconnect" href = "https://fonts.googleapis.com" >
< link rel = "preconnect" href = "https://fonts.gstatic.com" crossorigin >
< link href = "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,300;9..144,400;9..144,500;9..144,600&family=DM+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel = "stylesheet" >
< style >
:root {
--sky-deep: #050810;
--sky-mid: #0a0f1c;
--sky-rim: #131a2a;
--ink-soft: #b8c2d4;
--ink: #d6dde9;
--ink-bright: #f1f4fa;
--muted: #6a7488;
--acid: #d6ff3d;
--acid-glow: rgba(214,255,61,0.55);
--acid-halo: rgba(214,255,61,0.22);
}
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
background:
radial-gradient(ellipse at 30% 20%, var(--sky-mid), var(--sky-deep) 60%, #02040a),
var(--sky-deep);
color: var(--ink);
font-family: 'DM Sans', -apple-system, 'Segoe UI', Roboto, sans-serif;
min-height: 100vh;
line-height: 1.55;
}
header {
max-width: 1200px;
margin: 0 auto;
padding: 32px 32px 0;
display: flex;
align-items: center;
justify-content: space-between;
}
.wordmark {
font-family: 'Fraunces', Georgia, serif;
font-weight: 500;
font-size: 24px;
color: var(--ink-bright);
text-decoration: none;
letter-spacing: -0.02em;
}
.wordmark::after {
content: '.';
color: var(--acid);
}
nav a {
color: var(--ink-soft);
text-decoration: none;
margin-left: 24px;
font-size: 14px;
letter-spacing: 0.5px;
}
nav a:hover { color: var(--acid); }
main {
max-width: 1000px;
margin: 0 auto;
padding: 88px 32px 64px;
}
.breadcrumb {
font-family: 'JetBrains Mono', monospace;
font-size: 12px;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--muted);
margin: 0 0 20px;
}
.breadcrumb a { color: var(--muted); text-decoration: none; border-bottom: 1px dotted var(--sky-rim); }
.breadcrumb a:hover { color: var(--acid); border-bottom-color: var(--acid); }
h1 {
font-family: 'Fraunces', Georgia, serif;
font-weight: 500;
font-size: clamp(56px, 9vw, 120px);
line-height: 1;
letter-spacing: -0.03em;
margin: 0 0 24px;
color: var(--ink-bright);
}
.tagline {
font-family: 'DM Sans', sans-serif;
font-weight: 600;
font-size: 20px;
color: var(--acid);
letter-spacing: 3px;
text-transform: uppercase;
margin: 0 0 40px;
}
.lede {
font-family: 'Fraunces', serif;
font-weight: 400;
font-style: italic;
font-size: clamp(22px, 3vw, 30px);
color: var(--ink-soft);
line-height: 1.45;
margin: 0 0 32px;
max-width: 780px;
}
.prose p {
color: var(--ink);
font-size: 18px;
max-width: 720px;
margin: 0 0 20px;
}
.prose p strong { color: var(--ink-bright); }
.prose p em { color: var(--acid); font-style: italic; }
.surfaces {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 16px;
margin: 56px 0;
}
.surface {
background: rgba(19,26,42,0.5);
border: 1px solid var(--sky-rim);
border-radius: 14px;
padding: 22px 22px 24px;
}
.surface-name {
font-family: 'Fraunces', serif;
font-weight: 500;
font-size: 22px;
color: var(--ink-bright);
margin: 0 0 10px;
}
.surface-desc {
color: var(--ink-soft);
font-size: 14.5px;
line-height: 1.55;
}
.cta {
display: flex;
gap: 14px;
flex-wrap: wrap;
margin-top: 40px;
}
.btn {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 14px 24px;
border-radius: 10px;
font-weight: 600;
font-size: 15px;
text-decoration: none;
letter-spacing: 0.3px;
transition: transform 120ms ease, border-color 120ms ease;
}
.btn:hover { transform: translateY(-1px); }
.btn-primary {
background: var(--acid);
color: #0a0f1c;
}
.btn-ghost {
color: var(--ink);
background: transparent;
border: 1px solid rgba(184,194,212,0.24);
}
.btn-ghost:hover { border-color: var(--acid); color: var(--acid); }
.kicker {
font-family: 'JetBrains Mono', monospace;
font-size: 12px;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--acid);
margin: 0 0 12px;
}
.stats {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
gap: 16px;
margin: 40px 0 8px;
padding: 24px 0;
border-top: 1px solid var(--sky-rim);
border-bottom: 1px solid var(--sky-rim);
}
.stat-n {
font-family: 'JetBrains Mono', monospace;
font-weight: 500;
font-size: clamp(28px, 4vw, 40px);
color: var(--ink-bright);
letter-spacing: -1px;
}
.stat-l {
font-family: 'DM Sans', sans-serif;
font-size: 12px;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--muted);
margin-top: 4px;
}
footer {
max-width: 1200px;
margin: 80px auto 0;
padding: 32px;
border-top: 1px solid var(--sky-rim);
color: var(--muted);
font-size: 13px;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
gap: 12px;
}
footer a { color: var(--ink-soft); text-decoration: none; }
footer a:hover { color: var(--acid); }
@media (max-width: 640px) {
header { flex-direction: column; gap: 12px; align-items: flex-start; }
nav a { margin: 0 16px 0 0; }
main { padding: 40px 20px 32px; }
}
< / style >
site: add favicon link to every silentmode.st HTML page
Bulk-inserts <link rel="icon" type="image/svg+xml" href="/favicon.svg"> before
the </head> tag on every silentmode.st page that was missing it. All 36 site
HTML pages now advertise the chain-links favicon; browsers show it in tabs
and bookmarks across the whole umbrella site.
Pages touched (29): apps/, choose/*, deviant/* (7 pages under the parent
house), hephaestus/, hephaestus.x/* (9 chain-published mirror pages),
nav/ (redirect stub), register.html (redirect stub), sirius/,
sirius/register.html, store/ (redirect stub), tlds/.
Already had favicon from earlier passes (7): index.html, brand/,
tools/, prometheus/, helios/, hermes/, releases/.
Line-ending preservation: choose/index.html and sirius/register.html were
originally stored with CRLF endings; the plain Python read/write path
normalized them to LF and produced a noisy diff. Both files re-serialized as
CRLF before the favicon insert to keep the diff to +1 line each.
Deploy: rsync-equivalent tar-pipe to /opt/silent-mode/site/, plus per-file scp
for the two CRLF-corrected files. Verified live: 7 spot-checked URLs each
report exactly one <link rel="icon"> in served HTML.
2026-08-31 21:43:25 +02:00
< link rel = "icon" type = "image/svg+xml" href = "/favicon.svg" >
Sweep: mobile Ariadne updates, Deviant brand + sites, Hephaestus bootstrap, snappymail
Broad-scope commit sweeping in work from parallel sessions plus this session's
dev-only utilities. No single unifying theme — this is the "commit everything
that's ready" pass. Grouped by area below.
AriadneResolver / mobile
* Small updates to BchFetcher, Bns, MainActivity, AriadneVpnService, and the
Android manifest — from a parallel mobile-resolver session.
* AriadneResolver/mobile/webpreview/ — new local dev webview (index.html +
server.mjs) for iterating on the mobile UI without a device.
Email / SnappyMail
* Email/snappymail-plugin/silentmode-addresses — new SnappyMail plugin
(README, CSS, PHP entry, JS) for surfacing @silentmode.st address
management inside the webmail UI.
Hephaestus (Forgejo + auth-proxy)
* auth-proxy/src/oidc.ts + docker-compose.yml updates.
* scripts/bootstrap-auth.sh — idempotent script that registers the wallet
auth-proxy as Forgejo's OIDC provider after `docker compose up -d`. All
secrets read from .env — no literals in the script.
TheseusNavigator / dev tools
* dev/list-tlds.mjs — enumerate every registered BNS name grouped by TLD via
our own indexer.
* dev/show-tlds-bch.mjs — dump the full records payload of the legacy
tlds.bch name (kept as a diagnostic for the list-in-one-NFT era).
Deviant sites + brand
* site/deviant/ — new microsites (anthemus, potidaea, brand, mindmap, main
index) plus the full brand kit under site/deviant/brand/ (logos, icons,
palette, social exports as SVG source + PNG renders).
* site-sirius-x/portal.html — updates.
Coordination
* _coordination/sessions/mobile-resolver.md — parallel-session notes.
Deliberately excluded from this commit:
* scratchpad/ — this session's temp drafts (Sia doc mockups, tlds UPD payloads).
* TheseusNavigator/_prev/ — ~372 MB of prior release binaries; belongs in
a separate artefacts store, not the git tree. Add to .gitignore next pass.
2026-08-30 10:38:49 +02:00
< / head >
< body >
< header >
< a href = "../" class = "wordmark" > Deviant< / a >
< nav >
< a href = "../" > Home< / a >
< a href = "../#agora" > Agora< / a >
< a href = "../anthemus/" > Anthemus< / a >
< a href = "https://deviant.navigate.st/" target = "_blank" rel = "noopener noreferrer" > Wallet< / a >
< / nav >
< / header >
< main >
< p class = "breadcrumb" > < a href = "../" > Deviant< / a > · < a href = "../#agora" > Agora< / a > · Potidaea< / p >
< h1 > Potidaea< / h1 >
< p class = "tagline" > Counterparty-free automated swap mechanism< / p >
< p class = "lede" > One of the two markets under Agora — the one where the price is the mechanism.< / p >
< div class = "prose" >
< p > < strong > Potidaea< / strong > handles counterparty-free swaps for backed assets. Every exchange is priced by the < em > Universal Exchange Rate< / em > — rate  A ÷ rate  B, derived from genesis constants alone — and settled by consensus. < strong > No pool. No oracle. No one to ask.< / strong > < / p >
< p > The contract is the market maker, the liquidity provider, and the counterparty at once. Mint from a permissionless covenant; exit by burning your output back to its Bitcoin Cash floor; swap to any other permissionless-mint asset in a single atomic transaction.< / p >
< p > Named after Ποτίδαια — the city of Poseidon — because the liquidity behaves like ocean: MBA↔MBA depth is infinite from moment zero. Backing < em > is< / em > liquidity, elastic-mint. There is no bootstrap, no seeding, no thin-pairs, no slippage in the usual sense.< / p >
< / div >
< p class = "kicker" > — The Potidaea flow< / p >
< div class = "surfaces" >
< div class = "surface" >
< div class = "surface-name" > Genesis< / div >
< div class = "surface-desc" > One transaction seals the core parameters — backing rate, category, mint policy. Immutable after mint; no upgrade key, no admin.< / div >
< / div >
< div class = "surface" >
< div class = "surface-name" > Swap< / div >
< div class = "surface-desc" > Any address can claim against the reservoir. Sequencer + sharded reservoir + auto-assign — measured at 196 swaps/sec on a local BCHN node.< / div >
< / div >
< div class = "surface" >
< div class = "surface-name" > Redeem< / div >
< div class = "surface-desc" > Burn the output back to its BCH floor at any time. The floor is an equality the contract enforces at consensus level — not an approximation.< / div >
< / div >
< / div >
< div class = "stats" >
< div > < div class = "stat-n" > 52,998< / div > < div class = "stat-l" > Chipnet swaps< / div > < / div >
< div > < div class = "stat-n" > 0< / div > < div class = "stat-l" > Exploits< / div > < / div >
< div > < div class = "stat-n" > 100%< / div > < div class = "stat-l" > Peg integrity< / div > < / div >
< div > < div class = "stat-n" > ~52k< / div > < div class = "stat-l" > Per 32 MB block< / div > < / div >
< / div >
< div class = "cta" >
< a class = "btn btn-primary" href = "https://navigate.st/bns/potidaea.asm/" target = "_blank" rel = "noopener noreferrer" > Enter Potidaea < span aria-hidden = "true" > →< / span > < / a >
< a class = "btn btn-ghost" href = "../#agora" > About Agora < span aria-hidden = "true" > →< / span > < / a >
< / div >
< / main >
< footer >
< div > Potidaea is a market layer under < a href = "../" > Deviant< / a > · Agora.< / div >
< div > potidaea.asm · deviant.x/potidaea< / div >
< / footer >
< / body >
< / html >