# 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-08-02. --- ## session: `2026-08-02:theseus-ux-polish` Owner's focus: Theseus UX polish + downloads. Everything below bundles into one commit + one Theseus rebuild + redeploy. ### Settings — General - **Startup group** at the top of `#general` with "Open previous windows and tabs" toggle (moved up from below). - **Appearance** replaced with three visual **theme cards**: System / Light / Dark. `System` follows `nativeTheme.themeSource = "system"` so it tracks the OS. Legacy `settings.theme` values outside `{system, light, dark}` fall back to `system`. - Files: [settings.html](settings.html), [main.js](main.js) (`applyTheme` already handles all three values). ### Settings — new Search section - Sidebar gets a **Search** top-level item between General and Naming. - Search-engine controls moved OUT of General into this section. - Only **enabled** engines listed in the main "Additional search engines" block, grouped by kind (`Search engines` / `AI answer engines`), drag-reorder within a kind, toggle to disable, ✕ to delete custom. - **+ Add search engine** button toggles a catalog panel below with built-in engines the user hasn't enabled (each with `+ Add`) + a "Or add a custom URL" form. - Files: [settings.html](settings.html) (nav, section, CSS `.engcat`, JS). ### Settings — dropdown color-scheme + layout - `:root { color-scheme: dark }` + `@media (prefers-color-scheme: light)` override. Native `` groups options with `` by kind. Drag-reorder constrained to same-kind (a cross-kind drop would re-group on next render). ### Chrome / toolbar - **Loadbar collapses to 0px when idle** (`.loadbar { height: 0 }`, `.loadbar.on { height: 2px }`, 120ms transition). Previously reserved a permanent 2px strip below the address bar. - **Downloads button** (`#downloads`) between the search box and Tor toggle. Subscribes to `onDownloads` for badge + spin/done/err class. - Files: [chrome.html](chrome.html). ### Downloads (new feature) - New files: [downloads.html](downloads.html), [downloads-preload.js](downloads-preload.js). Both added to `build.files` in [package.json](package.json). - `installDownloadTracker()` in main.js hooks `session.defaultSession.on("will-download", …)`. In-memory list only; no cross-session persistence. - IPC surface: `downloads-get`, `toggle-downloads`, `close-downloads`, `downloads-resize`, `download-open`, `download-show`, `download-cancel`, `download-clear`, `downloads-clear-all`. - New `downloadsPop` WebContentsView, positioned via `positionDownloads()` from `layout()`. - Preload exposes `getDownloads`, `toggleDownloads`, `onDownloads`. ### Preview harness - [_preview.html](_preview.html) — `window.DL_ITEMS` seed + `__toggleDownloads` overlay; stub `window.theseus.getDownloads / onDownloads / toggleDownloads`; `kind` on stub engines; LLM catalog trimmed to Perplexity + Phind. - [_settings-preview.html](_settings-preview.html) — `kind` on stub engines; LLM catalog trimmed. --- ## session: `parallel:collision-policy` Owner's focus: BCNR ↔ ICANN name collision handling. Present in the working tree, not mine. Leave for that session to land or bundle by explicit ask. ### Chrome + main-process changes - [main.js](main.js) — big block of new IPC around collision policy + soft-collision picker + electrum discovery. - [popover.html](popover.html), [popover-preload.js](popover-preload.js) — collision switcher on the site-info popover. - [preload.js](preload.js) — `collisionSwitch` + `collisionState`. - [settings-preload.js](settings-preload.js) — same. ### Settings - Entire **Naming** section in [settings.html](settings.html) (BCNR/ICANN collision policy radio group + remembered choices reset button). Untouched by my changes. ### New files (untracked in git) - [collision.html](collision.html), [collision-preload.js](collision-preload.js) — the soft-collision "Open with…" prompt window (referenced from `main.js:219`). --- ## 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.