The connector only drove web pages. Add-on sidebar panels — Aegis's wallet, Hermes's messenger, Pithos's storage panel, anything with a sidebar-panel capability — were walled off: list_tabs skipped them and webContents() refused anything that was not kind:"web". Panels are now first-class tabs with a negative id, kind:"panel", and an addon/panelId pair. Each open panel is listed next to the real tabs; a closed one is still listed so a client can see what exists. screenshot / snapshot / read_page_text / click / type / press_key / paste_html / paste_text / wait_for / upload_file / evaluate all work on them with the same TabDriver a web page uses. navigate / activate_tab / close_tab refuse panels — the user owns panel visibility, not the connector. Approval is per add-on under a synthetic theseus-panel://<addon> origin, so Aegis is approved once and every Aegis panel is reachable from then on. The approval modal titles itself "Let Claude control the Aegis panel?" when the origin is a panel origin, and the body explains the panel is read, not the whole browser profile. Origin pinning is skipped (the panel is served from the add-on scheme and never navigates under us); password-field refusal and the action log still apply, so a PIN input in a wallet panel is never typed into and every call is in the connector's log.
3.7 KiB
Pending — uncommitted Theseus changes
Working-tree state that hasn't been committed or shipped. Read this before touching the same files. Update when you land or add work.
Format: each group has a session: label so parallel sessions can see
what belongs to whom and coordinate. Naming convention:
YYYY-MM-DD:short-slug for date-bounded work, or parallel:<theme> for
work owned by a session that isn't the current one.
Last updated: 2026-10-28.
Releases are no longer recorded here: the live version and hashes are in
../site/releases-manifest.json and https://dl.silentmode.st/releases-manifest.json,
and each release commit is Theseus 0.3.x: ... in git history.
Staged for the next release (post-0.3.128)
Queue of asks for the next cut. Items marked LANDED are edited in the working tree waiting for a bump + build. Items marked TODO still need the code change.
- TODO: Home — swap
SilentMode.Xout,Game.Xin on the Silent Mode cards section (home.html:366-375defaultState().sections.sm). Game.X should pick up its own description + favicon from the live site, so the entry is a stub ({ title: "Game.X", url: "https://game.x/", brand: "game" }) until game.x goes live. SilentMode.X moves to a short link somewhere else — the user suggested either under the search field, at the bottom of the home page, or in the quicklinks (sections.q). The canonical remote list athttps://dl.silentmode.st/home-cards.jsonneeds the same swap so existing profiles pick it up without a reset (localsections.smisn't reseeded bymigrateCards— the remote cache is the only way through to installed users).game.xisn't resolving yet (no s3 pointer on-chain, no manifest); wait until the service is up before baking its description/favicon. - LANDED: Claude connector reaches add-on sidebar panels (Aegis, Hermes,
Pithos, and any other sidebar add-on). The tab-control hook now exposes
each open panel as a tab with a negative id,
kind: "panel",addonandpanelIdfields (main.jspanelCtrlEntries/tabControlHook.list). The connector'suse()branches to_usePanel, approves control under a synthetictheseus-panel://<addonId>origin (one approval covers every panel owned by that add-on), skips origin pinning (panels load from the add-on scheme and never change under us) and drives the panel'swebContentswith the sameTabDriveras a web tab.navigate/activate_tab/close_tabrefuse panels — the user owns panel visibility. The approval modal says "Let Claude control the Aegis panel?" when the origin is a panel origin. list_tabs returns closed panels too so a client can see what exists;webContents(-N)throws " is not open; ask the user to open the panel from the sidebar first" until the user docks it. Password-field refusal and the action log still apply.
session: parallel:collision-policy
Owner's focus: BCNR ↔ ICANN name collision handling. Not mine — leave for that session to land or bundle by explicit ask.
- Android / mobile: ../AriadneResolver/mobile/app/AndroidManifest.xml, BchFetcher.java, Bns.java, build.ps1 — mobile-side collision changes.
- Repo-wide:
.gitignoregained a/.keys/line (harmless).
Live state
Shipped hashes live at ../site/releases-manifest.json and
https://dl.silentmode.st/releases-manifest.json. On-chain pointer at
releases.silentmode.bch. See GOTCHAS.md for the release
gotchas.