Theseus Navigator — Silent Mode's Electron browser with the Ariadne resolver built in.
Fixes the "unknown invoke: fetchCloudBackup" dead-end on mobile sign-in and the empty hooks the Settings UI depended on. The shim now implements: - Local wrap: on signup it generates a BIP-39 mnemonic (@scure/bip39), derives the Nostr sk via PBKDF2+HKDF with purpose "messenger/0" (same chain Theseus runs), scrypt+AES-GCM wraps the mnemonic (@noble/hashes scrypt matching HERMES_SCRYPT N=2^15 r=8 p=1), stores it in localStorage.hermes.wrap. hasBackup/getBackup use that wrap, so a password sign-in now works on the same device. - Cloud backup: publishCloudBackup / fetchCloudBackup / removeCloudBackup / hasCloudBackup matching Theseus's dtag format (hermes.backup.v1/<sha256(bareName)[:32]>). Password unlocks the local wrap, re-wraps for the cloud copy with a fresh salt, publishes a kind:30078 to every relay, remembers the event id for later retract via NIP-09. - Phone discovery: setPhone / clearPhone / findByPhones with the same hermes.phone/<base64url(sha256(E.164))[:32]> d-tag Theseus uses, so a vCard import on the browser surfaces the same matches a Theseus user would see. - contactsUpdate / contactsRemove rounded out so the panel's contacts menu is fully wired. Also: - Default relay list bumped to [wss://hermes.x, wss://relay.silentmode.st, wss://nos.lol] in both the Theseus host and the web shim, so every publish/fetch hits our own strfry on the VPS and the cloud backup lives somewhere we control. - Theseus host: addons-host.js + main.js now understand a `width` field on sidebar panels, so the Hermes panel declares width:500 and opens at a Telegram-ish width by default (user can still drag; saved per-panel). - Panel + web messenger: forced color-scheme:dark (the brand mark has hard navy cutouts that stand out as "black inside the envelope" on a light background; dark everywhere is cheaper than theme-aware marks). - Password fields: 👁 toggle appears on every <input type="password"> via a tiny JS enhancer in both the panel and the web messenger. - Settings/signin tabs: Sign in / Sign up persistent pill, drag-to-resize contacts/thread splitter (persisted per device), 2-column always. |
||
|---|---|---|
| addon-build/docx-editor | ||
| bundled-addons | ||
| dev | ||
| docs | ||
| engine-icons | ||
| home-brand | ||
| lib | ||
| nsis | ||
| scripts | ||
| snapshots | ||
| tests | ||
| addon-inject-preload.js | ||
| addon-tab-preload.js | ||
| addon-update-pubkeys.js | ||
| addon-updater.js | ||
| addons-host.js | ||
| address-picker-preload.js | ||
| address-picker.html | ||
| approval-preload.js | ||
| approval.html | ||
| auth-prompt-preload.js | ||
| auth-prompt.html | ||
| bcnr-origin.js | ||
| bcnr-preload.js | ||
| blocked.html | ||
| bns-indexer.js | ||
| BROWSER-PROMPT.md | ||
| chrome.html | ||
| collision-preload.js | ||
| collision.html | ||
| DESIGN-bns-indexer-service.md | ||
| DESIGN-integrated-wallet.md | ||
| DESIGN-password-manager.md | ||
| DESIGN-wallet-multi-account-amendment.md | ||
| downloads-preload.js | ||
| downloads.html | ||
| engine-picker-preload.js | ||
| engine-picker.html | ||
| error-preload.js | ||
| error.html | ||
| GOTCHAS.md | ||
| home-preload.js | ||
| home.html | ||
| js-dialog-preload.js | ||
| js-dialog.html | ||
| lang-picker-preload.js | ||
| lang-picker.html | ||
| LICENSE | ||
| link-status-preload.js | ||
| link-status.html | ||
| main.js | ||
| messages-preload.js | ||
| messages.html | ||
| no-badge-preload.js | ||
| package-lock.json | ||
| package.json | ||
| PACKAGING-PROMPT.md | ||
| panel-grip-preload.js | ||
| panel-grip.html | ||
| panel-header-preload.js | ||
| panel-header.html | ||
| PENDING.md | ||
| popover-preload.js | ||
| popover.html | ||
| preload.js | ||
| pw-fill-preload.js | ||
| pw-fill.html | ||
| quicklinks-preload.js | ||
| quicklinks.html | ||
| README.md | ||
| RELEASE-HANDOFF.md | ||
| ROADMAP-identity-wallet.md | ||
| SESSION-PROMPT-identity-wallet.md | ||
| settings-preload.js | ||
| settings.html | ||
| sidebar-preload.js | ||
| strip-icons.js | ||
| test-installer.wsb | ||
| theseus-id-preload.js | ||
| THIRD-PARTY-NOTICES.md | ||
| TRADEMARKS.md | ||
| unlock-preload.js | ||
| unlock.html | ||
| webapps.js | ||
Theseus Navigator
The browser — the consumer face of the stack. Native .bch support with the
resolver built in, so a user installs one app instead of modifying their
operating system. Named for the thread through the labyrinth: the chain is the
thread.
Scope
- Electron shell (Chromium engine, no forking): tabs, address bar, history.
- In-process
.bchresolution — no system daemon, no NRPT, no OS trust-store changes; reusesbns.jsfrom the BNS repo as a library. - Record handling:
hrender,ipconnect,p/s3via in-app gateway,uredirect. - TLS via cert-verify hook (Electron
setCertificateVerifyProc) against the BNS root / on-chaintlsfingerprints — no OS store touched. - Provenance indicator: shows whether a page came from the chain / Sia / a direct server, with NFT category and record type — the decentralized padlock.
Status: not started
Build it in its own session/repo. The ready-to-paste brief is
BROWSER-PROMPT.md (a reference copy in this folder; canonical source is
D:\Dev\NameCoin\BROWSER-PROMPT.md — if they diverge, NameCoin wins). It points
here and reuses the resolver core. theseus.bch is registered and should
eventually serve the browser's own homepage over the protocol it implements.
Roadmap
BUILD-ROADMAP.md Stage 5.