Settings page UX restructure.
- Nav bar: reordered to General, Language, Search, Passwords, Performance,
Privacy, Names & Certificates, Plug-ins, Ariadne's Thread, Aegis,
Extensions, Sidebar, Apps. Dropped the top-level Theseus ID entry;
Theseus ID is reachable from General now. Added two new top-level
entries — Ariadne's Thread and Aegis — each a small landing section
that chevrons into the existing plug-in sub-page (Ariadne) or opens the
wallet panel via openPanel("aegis:main") (Aegis).
- General section: first four rows are now Make-Theseus-default, Theseus
Shield (chevron + on/off toggle), Startup (restore tabs), Updates
(version + Check button), followed by a Theseus ID chevron row.
Appearance / Developer tools / Registries / About stay below in the
same order. Removed the "Default handling" sub-head; the default-
browser and file-associations rows moved to the top. The Shield row
uses listAddons() + setAddonEnabled("blocker", on) for state; the
chevron falls back to openPanel("blocker:main").
- Names & Certificates: dropped the always-on BNS row at the top.
- Plug-ins main page: Ariadne's Thread and Aegis rows removed — they
moved to top-level. The page now links into the new landing sections.
Hidden placeholders keep the DOM ids (ariadneStatusMain, aegisCheckMain
…) so the shared refresh code keeps working. Sub-pages (plugins-
ariadne, plugins-aegis) untouched.
- Extensions list: Hermes and Pithos hidden from the list (they live in
the Sidebar card now). docx-editor and pdf-editor sort last within
each group so smaller utilities stay near the top.
- Toolbar add-on strip (chrome.html): same last-sort rule for docx-editor
and pdf-editor, applied to the rank() ordering so unknown keys without
a saved dockOrder keep registration order and the editors land past
them.
- Sidebar section: added two cards at the top. "Theseus native apps"
(Hermes + Pithos) and "Third-party apps" (the sidebar quick-links /
Web apps). Native apps appear first. The Extension panels section
still lists everything else that opens from the strip; Hermes and
Pithos are filtered out of it so they don't appear twice.
- Version bumped to 0.3.122. No new IPCs — reuses listAddons,
setAddonEnabled, openPanel, sidebarLeftPanels, addonInvoke.
|
||
|---|---|---|
| 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).