System row changes:
* Ariadne's Thread row has a direct open: the label jumps straight to
the Ariadne plug-in sub-page (no intermediate landing). A toggle on
the right runs ariadneToggle through the existing shared hook, so
Ariadne can be turned on/off from the System page without opening it.
* Names & Certificates row gets a master toggle. ON means at least one
optional resolver is enabled; flipping it enables or disables every
optional resolver together (BNS is always on either way). The per-
resolver advanced fields are preserved, so toggling back ON restores
the same configuration.
* Aegis row is removed from System — Aegis stays as its own top-level
nav entry, so having it in two places was clutter.
* "About plug-ins on theseus.x" link moved from the System header to
the plug-ins Ariadne sub-page, where it is actually about something.
Trust surface simplified:
* Mozilla CA bundle and the Russian National CA are both always on.
The Mozilla bundle was already always-on; the Russian CA defaults
to enabled, scoped to .ru / .рф / gov.ru / online.ru. The scope
keeps the Russian CA from signing for anything else on the web, so
the UI toggle was moot — removed to shrink the Certificate trust
section. The caRuOn and caRuScope inputs remain in the DOM as
hidden placeholders so the existing init / save code keeps working.
Breadcrumbs on plugins-ariadne and plugins-aegis sub-pages now read
"System ›" instead of "Plug-ins ›" to match the renamed nav entry.
|
||
|---|---|---|
| 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-claude-connector.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 | ||
| llm-picker-preload.js | ||
| llm-picker.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.
Claude connector (MCP)
A built-in extension, off by default, that lets Claude Code or Claude Desktop on the same computer work in your signed-in Theseus tabs: open and read pages, click, type into rich editors, paste formatted text, upload files. Design: DESIGN-claude-connector.md.
Turn it on. Settings › Extensions › Claude connector. Its panel opens by itself the first time; later it is the connector icon in the toolbar dock. It shows the address, the token, the approved sites, the upload folders and a live log of every action.
Connect Claude. In the panel, click Connect next to Claude Code or
Claude Desktop. Theseus registers itself in that app's own configuration
(Claude Code through its claude mcp command, user scope; Claude Desktop in
claude_desktop_config.json, backup kept beside it) and keeps the entry
current: the token changes whenever the connector stops or is revoked, and
the entry follows. Remove takes it out again. Claude Desktop needs a
restart after a change; a running Claude Code session picks it up with /mcp.
By hand, if you prefer (panel › Set up by hand), the same entry for
Claude Code is (once; --scope user makes it available in every project):
claude mcp add --scope user --transport http theseus http://127.0.0.1:47800/mcp --header "Authorization: Bearer <token from the panel>"
Check it with claude mcp list. Claude Desktop speaks stdio only; the
panel's Claude Desktop entry is a ready claude_desktop_config.json entry
that runs stdio-shim.cjs through the Theseus executable itself
(ELECTRON_RUN_AS_NODE=1), so nothing else needs installing.
What protects you
- Listens on
127.0.0.1only, behind a random 256-bit token. Requests from web pages (anyOriginheader) and foreignHostheaders are refused. No--remote-debugging-port: each tab is driven through its ownwebContents.debugger. - Theseus asks the first time Claude acts on each site (Allow, Until Theseus restarts, Don't allow). Approved sites are listed in the panel.
- Never types or pastes into password or one-time-code fields.
- Uploads only from folders you add in the panel (none by default).
evaluate(arbitrary page JavaScript) is a separate switch, off by default.- A Claude chip in the toolbar shows while a client is connected, and the tabs it controls get a dashed outline. The chip's ✕ stops the connector at once; Revoke token in the panel issues a new token, cutting off every configured client.
Tools: list_tabs, open_tab, navigate, activate_tab, close_tab,
screenshot, read_page_text, snapshot (accessibility tree with element
refs), click, type, press_key, paste_html, paste_text,
upload_file, wait_for, and evaluate while allowed.
Tests
node tests/claude-connector-unit.test.mjs
node tests/claude-connector.test.mjs
The second starts this checkout on a throwaway profile (THESEUS_USER_DATA,
THESEUS_NO_UPDATE_CHECK) and drives a local test page over MCP: typing into
a contenteditable editor, paste_html with a heading and a link, a PNG upload,
and the refusals (password fields, a file outside the upload folder, no token,
a browser origin).