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.
Was only .bch. The daemon and CA already handle these four TLDs; the NRPT
rule was the missing piece that made .p2p / .bit / .nav queries never reach
the daemon at all (they went to ICANN's normal DNS and NXDOMAIN'd).
Dual TLDs (.de .ru .dev .ltd) intentionally NOT here. They need the
daemon's DNS-forwarding path to work reliably for unregistered names,
and there's still an open EDNS/AAAA forwarding bug in bnsd.js that
would break most German/Russian sites if we NRPT'd .de.
Adding more native TLDs (.x .sia .dgb .nt from Theseus's expanded set)
needs a CA rotation first — the current CA's nameConstraints only permit
bch/p2p/bit/deviant/nav/test/bcnr. Deferred.