# 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:` 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://` 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 " 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.