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.
71 lines
3.7 KiB
Markdown
71 lines
3.7 KiB
Markdown
# 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.X` out, `Game.X` in** on the Silent Mode
|
|
cards section ([home.html:366-375](home.html) `defaultState().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 at `https://dl.silentmode.st/home-cards.json`
|
|
needs the same swap so existing profiles pick it up without a reset
|
|
(local `sections.sm` isn't reseeded by `migrateCards` — the remote cache
|
|
is the only way through to installed users). `game.x` isn'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"`, `addon`
|
|
and `panelId` fields ([main.js](main.js) `panelCtrlEntries` /
|
|
`tabControlHook.list`). The connector's `use()` branches to `_usePanel`,
|
|
approves control under a synthetic `theseus-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's `webContents` with the same `TabDriver` as a web
|
|
tab. `navigate` / `activate_tab` / `close_tab` refuse 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 "<addon> 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](../AriadneResolver/mobile/app/AndroidManifest.xml),
|
|
[BchFetcher.java](../AriadneResolver/mobile/app/src/com/silentmode/ariadne/BchFetcher.java),
|
|
[Bns.java](../AriadneResolver/mobile/app/src/com/silentmode/ariadne/Bns.java),
|
|
[build.ps1](../AriadneResolver/mobile/build.ps1) — mobile-side collision changes.
|
|
- Repo-wide: `.gitignore` gained 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](GOTCHAS.md) for the release
|
|
gotchas.
|