theseus/PENDING.md

153 lines
8.9 KiB
Markdown
Raw Normal View History

Theseus: download tracker, search split, discover-more tier, UX polish Bundle of UX + feature work. Split from packaging by intent so the diff is reviewable; the next Theseus rebuild ships it. Features - Download tracker (new): session.on("will-download") → per-item state {id, filename, url, mime, total, received, state, savePath, startedAt} with updated/done event handlers. New downloadsPop WebContentsView loads downloads.html (new file) + downloads-preload.js (new file); panel positioned under a new #downloads toolbar button between search and Tor. Full IPC: downloads-get, toggle/close/resize-downloads, download-open/show/cancel/clear, downloads-clear-all. In-memory only — cross-session persistence is a future addition. Button badge shows active count + spin/done/err color. - Search engines split by kind + tier: * kind: "search" | "llm" — separate headers in picker + settings ("Search with" / "Ask an AI"). Empty sections hidden. * tier: "catalog" | "extra" — Settings now has THREE panes behind the "+ Add search engine" button: curated catalog, wider discoverable bank filtered by a live search input, custom URL form. * DEFAULT_ENABLED unchanged (5 major engines). * Custom user-added engines carry tier="custom" (never in catalog/extra panes). - 9 tier="extra" engines added (all non-login ?q=): Marginalia, Stract, Yep, Presearch, MetaGer, Qwant, Swisscows, Naver, Baidu. Same rot rule as LLMs: if one starts bouncing to a login gate, drop it. Bug fixes - Loadbar collapses to 0px when idle (was reserving a permanent 2px strip below the address bar). .loadbar {height:0} + .loadbar.on {height:2px} + 120ms transition. - Native <select> popup theme sync via :root { color-scheme: dark } + @media(prefers-color-scheme: light). nativeTheme.themeSource already drives prefers-color-scheme, so the OS popup color follows the app theme automatically (fixed light popup on dark app / vice versa). - .ctl layout flipped to flex-direction: row with flex-wrap so anti-fingerprint mode + value fields fit side-by-side. Settings restructure - General section: Startup group at the top ("Open previous windows and tabs" toggle), then Appearance below with three visual THEME CARDS (System / Light / Dark) — small mock-browser previews per theme, Firefox-style, active card gets a blue ring. System pipes through to nativeTheme.themeSource = "system". - Search promoted to a top-level sidebar item between General and Naming. Search-engine controls moved out of General into Search. - Search section: enabled list shows only enabled engines, grouped by kind, drag-reorder within a kind. "+ Add search engine" opens the catalog/extras/custom-URL panel. Search engine catalog trims (already flagged in prior work) - Removed ChatGPT / Claude / You.com (login-gated ?q=). - Removed SearXNG (federated; every single-instance default rots). Docs - TheseusNavigator/PENDING.md and GOTCHAS.md born with this work (see the HANDOFF.md commit for the convention). - PENDING.md's own "session: 2026-08-02:theseus-ux-polish" group will be emptied after this ship lands. Preview harness - _preview.html + _settings-preview.html stubs updated with kind + tier + downloads seed + tier="extra" samples so the preview reflects reality. Both files are gitignored — local only. Coordination - Parallel session's collision-policy work (chrome.html registry chips, popover switcher, Naming section, in-tab collision prompt) already landed in commits 256079d/42b340f/b0d6375/78dddda. This commit adds cleanly on top.
2026-08-02 15:31:47 +02:00
# 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.
Theseus 0.3.130: startpage sidebar fills the panel, searchbar stops auto-growing, Store Claude Desktop detected Startpage sidebar is now a real left column that starts at the Theseus title's top edge and runs the full page height. The slot grid is 3 columns stretched to the full sidebar width, with enough rows to cover the sidebar vertically (count derived from the main column's height on each render, and re-derived on viewport resize). Empty cells sit as semi-transparent dashed outlines in the exact position a filled tile would occupy, so the grid reads as one uniform surface; any empty cell doubles as the "add link" surface and clicking it opens the Add-link modal with that cell pre-pinned, so new links land exactly where the click did instead of being pushed to the end. The dedicated "+" button is gone — the pin-location is the click target. A "Theseus v0.3.X — What's new" link appears under the search tip, pointing at silentmode.st/releases; version comes from a new getVersion exposed on window.home over the existing app-version IPC. Chrome toolbar: 0.3.128's "give the searchbox more room while typing" rule is removed — focusing the search field was pulling the drag handle with it, which made the URL / search ratio impossible to set by hand. The URL bar now caps at 75% of the pair's shared budget via a hard CSS max-width (so a wide urlBarWidthPx stored under the old 80% ceiling clamps on load without the user having to re-drag), and the drag floor matches at 25 % so the search field always keeps at least a quarter of the pair. Claude connector: bumped bundled-addons/claude-connector from 0.2.0 to 0.2.1. The clients.cjs Store-install detection and the panel-access work shipped in 0.3.129's bundled 0.2.0, but seedBundledAddons only overwrites the installed copy when the bundle is strictly newer, so every user with an existing 0.2.0 kept the stale pre-fix copy from %APPDATA%/Theseus/extensions/claude-connector/. The version bump surfaces the Store-install detection ("Claude Desktop not installed on this computer" was false on every Microsoft Store install) and the add-on-panel approvals split in the connector panel, both of which were already in-tree but gated behind the version check.
2026-10-29 14:46:29 +02:00
Last updated: 2026-10-29.
Theseus: download tracker, search split, discover-more tier, UX polish Bundle of UX + feature work. Split from packaging by intent so the diff is reviewable; the next Theseus rebuild ships it. Features - Download tracker (new): session.on("will-download") → per-item state {id, filename, url, mime, total, received, state, savePath, startedAt} with updated/done event handlers. New downloadsPop WebContentsView loads downloads.html (new file) + downloads-preload.js (new file); panel positioned under a new #downloads toolbar button between search and Tor. Full IPC: downloads-get, toggle/close/resize-downloads, download-open/show/cancel/clear, downloads-clear-all. In-memory only — cross-session persistence is a future addition. Button badge shows active count + spin/done/err color. - Search engines split by kind + tier: * kind: "search" | "llm" — separate headers in picker + settings ("Search with" / "Ask an AI"). Empty sections hidden. * tier: "catalog" | "extra" — Settings now has THREE panes behind the "+ Add search engine" button: curated catalog, wider discoverable bank filtered by a live search input, custom URL form. * DEFAULT_ENABLED unchanged (5 major engines). * Custom user-added engines carry tier="custom" (never in catalog/extra panes). - 9 tier="extra" engines added (all non-login ?q=): Marginalia, Stract, Yep, Presearch, MetaGer, Qwant, Swisscows, Naver, Baidu. Same rot rule as LLMs: if one starts bouncing to a login gate, drop it. Bug fixes - Loadbar collapses to 0px when idle (was reserving a permanent 2px strip below the address bar). .loadbar {height:0} + .loadbar.on {height:2px} + 120ms transition. - Native <select> popup theme sync via :root { color-scheme: dark } + @media(prefers-color-scheme: light). nativeTheme.themeSource already drives prefers-color-scheme, so the OS popup color follows the app theme automatically (fixed light popup on dark app / vice versa). - .ctl layout flipped to flex-direction: row with flex-wrap so anti-fingerprint mode + value fields fit side-by-side. Settings restructure - General section: Startup group at the top ("Open previous windows and tabs" toggle), then Appearance below with three visual THEME CARDS (System / Light / Dark) — small mock-browser previews per theme, Firefox-style, active card gets a blue ring. System pipes through to nativeTheme.themeSource = "system". - Search promoted to a top-level sidebar item between General and Naming. Search-engine controls moved out of General into Search. - Search section: enabled list shows only enabled engines, grouped by kind, drag-reorder within a kind. "+ Add search engine" opens the catalog/extras/custom-URL panel. Search engine catalog trims (already flagged in prior work) - Removed ChatGPT / Claude / You.com (login-gated ?q=). - Removed SearXNG (federated; every single-instance default rots). Docs - TheseusNavigator/PENDING.md and GOTCHAS.md born with this work (see the HANDOFF.md commit for the convention). - PENDING.md's own "session: 2026-08-02:theseus-ux-polish" group will be emptied after this ship lands. Preview harness - _preview.html + _settings-preview.html stubs updated with kind + tier + downloads seed + tier="extra" samples so the preview reflects reality. Both files are gitignored — local only. Coordination - Parallel session's collision-policy work (chrome.html registry chips, popover switcher, Naming section, in-tab collision prompt) already landed in commits 256079d/42b340f/b0d6375/78dddda. This commit adds cleanly on top.
2026-08-02 15:31:47 +02:00
---
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.
Theseus: download tracker, search split, discover-more tier, UX polish Bundle of UX + feature work. Split from packaging by intent so the diff is reviewable; the next Theseus rebuild ships it. Features - Download tracker (new): session.on("will-download") → per-item state {id, filename, url, mime, total, received, state, savePath, startedAt} with updated/done event handlers. New downloadsPop WebContentsView loads downloads.html (new file) + downloads-preload.js (new file); panel positioned under a new #downloads toolbar button between search and Tor. Full IPC: downloads-get, toggle/close/resize-downloads, download-open/show/cancel/clear, downloads-clear-all. In-memory only — cross-session persistence is a future addition. Button badge shows active count + spin/done/err color. - Search engines split by kind + tier: * kind: "search" | "llm" — separate headers in picker + settings ("Search with" / "Ask an AI"). Empty sections hidden. * tier: "catalog" | "extra" — Settings now has THREE panes behind the "+ Add search engine" button: curated catalog, wider discoverable bank filtered by a live search input, custom URL form. * DEFAULT_ENABLED unchanged (5 major engines). * Custom user-added engines carry tier="custom" (never in catalog/extra panes). - 9 tier="extra" engines added (all non-login ?q=): Marginalia, Stract, Yep, Presearch, MetaGer, Qwant, Swisscows, Naver, Baidu. Same rot rule as LLMs: if one starts bouncing to a login gate, drop it. Bug fixes - Loadbar collapses to 0px when idle (was reserving a permanent 2px strip below the address bar). .loadbar {height:0} + .loadbar.on {height:2px} + 120ms transition. - Native <select> popup theme sync via :root { color-scheme: dark } + @media(prefers-color-scheme: light). nativeTheme.themeSource already drives prefers-color-scheme, so the OS popup color follows the app theme automatically (fixed light popup on dark app / vice versa). - .ctl layout flipped to flex-direction: row with flex-wrap so anti-fingerprint mode + value fields fit side-by-side. Settings restructure - General section: Startup group at the top ("Open previous windows and tabs" toggle), then Appearance below with three visual THEME CARDS (System / Light / Dark) — small mock-browser previews per theme, Firefox-style, active card gets a blue ring. System pipes through to nativeTheme.themeSource = "system". - Search promoted to a top-level sidebar item between General and Naming. Search-engine controls moved out of General into Search. - Search section: enabled list shows only enabled engines, grouped by kind, drag-reorder within a kind. "+ Add search engine" opens the catalog/extras/custom-URL panel. Search engine catalog trims (already flagged in prior work) - Removed ChatGPT / Claude / You.com (login-gated ?q=). - Removed SearXNG (federated; every single-instance default rots). Docs - TheseusNavigator/PENDING.md and GOTCHAS.md born with this work (see the HANDOFF.md commit for the convention). - PENDING.md's own "session: 2026-08-02:theseus-ux-polish" group will be emptied after this ship lands. Preview harness - _preview.html + _settings-preview.html stubs updated with kind + tier + downloads seed + tier="extra" samples so the preview reflects reality. Both files are gitignored — local only. Coordination - Parallel session's collision-policy work (chrome.html registry chips, popover switcher, Naming section, in-tab collision prompt) already landed in commits 256079d/42b340f/b0d6375/78dddda. This commit adds cleanly on top.
2026-08-02 15:31:47 +02:00
Theseus 0.3.130: startpage sidebar fills the panel, searchbar stops auto-growing, Store Claude Desktop detected Startpage sidebar is now a real left column that starts at the Theseus title's top edge and runs the full page height. The slot grid is 3 columns stretched to the full sidebar width, with enough rows to cover the sidebar vertically (count derived from the main column's height on each render, and re-derived on viewport resize). Empty cells sit as semi-transparent dashed outlines in the exact position a filled tile would occupy, so the grid reads as one uniform surface; any empty cell doubles as the "add link" surface and clicking it opens the Add-link modal with that cell pre-pinned, so new links land exactly where the click did instead of being pushed to the end. The dedicated "+" button is gone — the pin-location is the click target. A "Theseus v0.3.X — What's new" link appears under the search tip, pointing at silentmode.st/releases; version comes from a new getVersion exposed on window.home over the existing app-version IPC. Chrome toolbar: 0.3.128's "give the searchbox more room while typing" rule is removed — focusing the search field was pulling the drag handle with it, which made the URL / search ratio impossible to set by hand. The URL bar now caps at 75% of the pair's shared budget via a hard CSS max-width (so a wide urlBarWidthPx stored under the old 80% ceiling clamps on load without the user having to re-drag), and the drag floor matches at 25 % so the search field always keeps at least a quarter of the pair. Claude connector: bumped bundled-addons/claude-connector from 0.2.0 to 0.2.1. The clients.cjs Store-install detection and the panel-access work shipped in 0.3.129's bundled 0.2.0, but seedBundledAddons only overwrites the installed copy when the bundle is strictly newer, so every user with an existing 0.2.0 kept the stale pre-fix copy from %APPDATA%/Theseus/extensions/claude-connector/. The version bump surfaces the Store-install detection ("Claude Desktop not installed on this computer" was false on every Microsoft Store install) and the add-on-panel approvals split in the connector panel, both of which were already in-tree but gated behind the version check.
2026-10-29 14:46:29 +02:00
## Staged for the next release (post-0.3.129)
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.
Theseus 0.3.130: startpage sidebar fills the panel, searchbar stops auto-growing, Store Claude Desktop detected Startpage sidebar is now a real left column that starts at the Theseus title's top edge and runs the full page height. The slot grid is 3 columns stretched to the full sidebar width, with enough rows to cover the sidebar vertically (count derived from the main column's height on each render, and re-derived on viewport resize). Empty cells sit as semi-transparent dashed outlines in the exact position a filled tile would occupy, so the grid reads as one uniform surface; any empty cell doubles as the "add link" surface and clicking it opens the Add-link modal with that cell pre-pinned, so new links land exactly where the click did instead of being pushed to the end. The dedicated "+" button is gone — the pin-location is the click target. A "Theseus v0.3.X — What's new" link appears under the search tip, pointing at silentmode.st/releases; version comes from a new getVersion exposed on window.home over the existing app-version IPC. Chrome toolbar: 0.3.128's "give the searchbox more room while typing" rule is removed — focusing the search field was pulling the drag handle with it, which made the URL / search ratio impossible to set by hand. The URL bar now caps at 75% of the pair's shared budget via a hard CSS max-width (so a wide urlBarWidthPx stored under the old 80% ceiling clamps on load without the user having to re-drag), and the drag floor matches at 25 % so the search field always keeps at least a quarter of the pair. Claude connector: bumped bundled-addons/claude-connector from 0.2.0 to 0.2.1. The clients.cjs Store-install detection and the panel-access work shipped in 0.3.129's bundled 0.2.0, but seedBundledAddons only overwrites the installed copy when the bundle is strictly newer, so every user with an existing 0.2.0 kept the stale pre-fix copy from %APPDATA%/Theseus/extensions/claude-connector/. The version bump surfaces the Store-install detection ("Claude Desktop not installed on this computer" was false on every Microsoft Store install) and the add-on-panel approvals split in the connector panel, both of which were already in-tree but gated behind the version check.
2026-10-29 14:46:29 +02:00
- **LANDED: Searchbox no longer auto-grows on focus; URL/search ratio
capped at 75/25.** Reverts the 0.3.128 "give the searchbox more room
while typing" rule — focusing the searchbox was pulling the drag handle
with it and making the ratio hard to set by hand. Changes in
[chrome.html](chrome.html): dropped the
`.urlsearch:has(.searchbox:focus-within) .searchbox { flex: 2 1 480px }`
rule and its `.14s` transition on `.searchbox`; added
`max-width: 75%` to `.urlwrap` so a stored `urlBarWidthPx` from the old
80 % ceiling clamps on load without the user having to redrag; bumped
the drag `MIN_SHARE` 0.20 → 0.25 so new drags can't push the search
bar below 25 % of the shared budget. 0.3.128's typing-wider effect
stays off; the user owns the ratio again.
- **LANDED: Startpage sidebar runs the full page height alongside the
hero; slots fill the whole sidebar panel; empty cells double as the
"add link" surface.** [home.html](home.html):
- **Page layout restructured.** Hero + homepage are now wrapped in a
single `.page` grid (`grid-template-columns: minmax(240, 280) 1fr`)
with the sidebar `<aside>` as a true left column and `.main-col` on
the right holding the hero on top of the SM cards. The sidebar's
top edge now aligns with the Theseus logo + search box instead of
starting below them. Hero top padding dropped (page handles it);
hero stays centered inside the main column.
- **Sidebar fills the panel vertically.** `.sidebar { align-self:
stretch }` makes the aside match the main column's height.
`.slots-list { grid-template-columns: repeat(3, 1fr); width: 100% }`
stretches cells to the sidebar's full width (icons stay 48 px,
centered inside the wider cell; labels gain `max-width: 100%` so
they center over the cell). A new `minSlotsForFill()` computes row
count from `.main-col` height on each render; a ResizeObserver
re-renders on viewport resize so new rows appear (or drop off) as
the window changes.
- **Empty tiles top-aligned.** `.slot-empty` switched to
`flex-direction: column; justify-content: flex-start` so the dashed
tile sits at the top of its 72×68 cell — same Y as a filled slot's
`.tile` (which sits above its label). Before this the dashed box
was centered in the cell while filled tiles were top-aligned, so
the two read as misaligned.
- **Chromeless sidebar.** `.left-column` renamed to `.sidebar`,
`.right-column` renamed to `.cards-wrap`; the new `.section.chromeless`
modifier removes background, inset border, and padding box on the
sidebar so it blends with the page body. The SM cards area keeps
its soft panel (the cards area is "the rest of the page", not the
sidebar).
- **Dedicated `.slot-add` cell removed; dashed outline semi-transparent.**
`.slot-empty::before` has `content: ""` (no "+" glyph) and renders at
.18 opacity on container hover, .35 on this-cell hover, strong acid
only on drop-hot — so empty cells never compete visually with the
real icons. Clicking any empty cell opens the Add-link modal with
that cell's index pre-pinned (`openModal(sec, i, pinSlot)` carries
the pin through `editKey` to the save handler), so the new link
lands exactly where the user clicked.
- `layoutSlots()` default `minSlots` still 18 (fallback for the first
render before layout is measured); render() passes the dynamic
value from `minSlotsForFill()` which uses it as a floor.
- **LANDED: Startpage shows running version + link to release notes.**
New line under the "Tip: hello.bch" hint on [home.html](home.html):
"Theseus v0.3.X — What's new ↗", linking to
`https://silentmode.st/releases`. Version comes from
`window.home.getVersion()` (added to [home-preload.js](home-preload.js);
wired to the existing `app-version` IPC — no new backend). Visible on
every startpage load so a user who just updated has a one-click path to
the changelog without hunting for a chrome chip that only shows when a
NEWER version is out.
- **LANDED: Claude connector detects Microsoft Store install of Claude
Desktop.** [bundled-addons/claude-connector/addon.json](bundled-addons/claude-connector/addon.json)
bumped from 0.2.0 to 0.2.1 so Theseus's `seedBundledAddons` reseeds the
stale copy sitting in `%APPDATA%\Theseus\extensions\claude-connector\`
on first boot of the next Theseus. The actual detection code (Store
package path under `%LOCALAPPDATA%\Packages\Claude_<pub>\LocalCache\
Roaming\Claude\` + fallback to `AnthropicClaude` / `Programs\Claude` /
`Program Files\Claude`) is already in the tree in
[bundled-addons/claude-connector/lib/clients.cjs](bundled-addons/claude-connector/lib/clients.cjs);
it just wasn't reaching installed users because the addon version
hadn't been bumped — `seedBundledAddons` skips the overwrite when
user version >= bundle version. User-visible symptom: the connector
panel showed Claude Desktop as "Not installed on this computer" on
every box where Claude Desktop is the Store install (which is the
default modern install).
- **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. The connector panel.html now splits site
approvals from panel approvals into their own sections, with the add-on's
own title ("Aegis panel") above the mono origin string and a ✕ Remove
button that goes through the existing `remove-origin` IPC.
Theseus: download tracker, search split, discover-more tier, UX polish Bundle of UX + feature work. Split from packaging by intent so the diff is reviewable; the next Theseus rebuild ships it. Features - Download tracker (new): session.on("will-download") → per-item state {id, filename, url, mime, total, received, state, savePath, startedAt} with updated/done event handlers. New downloadsPop WebContentsView loads downloads.html (new file) + downloads-preload.js (new file); panel positioned under a new #downloads toolbar button between search and Tor. Full IPC: downloads-get, toggle/close/resize-downloads, download-open/show/cancel/clear, downloads-clear-all. In-memory only — cross-session persistence is a future addition. Button badge shows active count + spin/done/err color. - Search engines split by kind + tier: * kind: "search" | "llm" — separate headers in picker + settings ("Search with" / "Ask an AI"). Empty sections hidden. * tier: "catalog" | "extra" — Settings now has THREE panes behind the "+ Add search engine" button: curated catalog, wider discoverable bank filtered by a live search input, custom URL form. * DEFAULT_ENABLED unchanged (5 major engines). * Custom user-added engines carry tier="custom" (never in catalog/extra panes). - 9 tier="extra" engines added (all non-login ?q=): Marginalia, Stract, Yep, Presearch, MetaGer, Qwant, Swisscows, Naver, Baidu. Same rot rule as LLMs: if one starts bouncing to a login gate, drop it. Bug fixes - Loadbar collapses to 0px when idle (was reserving a permanent 2px strip below the address bar). .loadbar {height:0} + .loadbar.on {height:2px} + 120ms transition. - Native <select> popup theme sync via :root { color-scheme: dark } + @media(prefers-color-scheme: light). nativeTheme.themeSource already drives prefers-color-scheme, so the OS popup color follows the app theme automatically (fixed light popup on dark app / vice versa). - .ctl layout flipped to flex-direction: row with flex-wrap so anti-fingerprint mode + value fields fit side-by-side. Settings restructure - General section: Startup group at the top ("Open previous windows and tabs" toggle), then Appearance below with three visual THEME CARDS (System / Light / Dark) — small mock-browser previews per theme, Firefox-style, active card gets a blue ring. System pipes through to nativeTheme.themeSource = "system". - Search promoted to a top-level sidebar item between General and Naming. Search-engine controls moved out of General into Search. - Search section: enabled list shows only enabled engines, grouped by kind, drag-reorder within a kind. "+ Add search engine" opens the catalog/extras/custom-URL panel. Search engine catalog trims (already flagged in prior work) - Removed ChatGPT / Claude / You.com (login-gated ?q=). - Removed SearXNG (federated; every single-instance default rots). Docs - TheseusNavigator/PENDING.md and GOTCHAS.md born with this work (see the HANDOFF.md commit for the convention). - PENDING.md's own "session: 2026-08-02:theseus-ux-polish" group will be emptied after this ship lands. Preview harness - _preview.html + _settings-preview.html stubs updated with kind + tier + downloads seed + tier="extra" samples so the preview reflects reality. Both files are gitignored — local only. Coordination - Parallel session's collision-policy work (chrome.html registry chips, popover switcher, Naming section, in-tab collision prompt) already landed in commits 256079d/42b340f/b0d6375/78dddda. This commit adds cleanly on top.
2026-08-02 15:31:47 +02:00
## 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.
Theseus: download tracker, search split, discover-more tier, UX polish Bundle of UX + feature work. Split from packaging by intent so the diff is reviewable; the next Theseus rebuild ships it. Features - Download tracker (new): session.on("will-download") → per-item state {id, filename, url, mime, total, received, state, savePath, startedAt} with updated/done event handlers. New downloadsPop WebContentsView loads downloads.html (new file) + downloads-preload.js (new file); panel positioned under a new #downloads toolbar button between search and Tor. Full IPC: downloads-get, toggle/close/resize-downloads, download-open/show/cancel/clear, downloads-clear-all. In-memory only — cross-session persistence is a future addition. Button badge shows active count + spin/done/err color. - Search engines split by kind + tier: * kind: "search" | "llm" — separate headers in picker + settings ("Search with" / "Ask an AI"). Empty sections hidden. * tier: "catalog" | "extra" — Settings now has THREE panes behind the "+ Add search engine" button: curated catalog, wider discoverable bank filtered by a live search input, custom URL form. * DEFAULT_ENABLED unchanged (5 major engines). * Custom user-added engines carry tier="custom" (never in catalog/extra panes). - 9 tier="extra" engines added (all non-login ?q=): Marginalia, Stract, Yep, Presearch, MetaGer, Qwant, Swisscows, Naver, Baidu. Same rot rule as LLMs: if one starts bouncing to a login gate, drop it. Bug fixes - Loadbar collapses to 0px when idle (was reserving a permanent 2px strip below the address bar). .loadbar {height:0} + .loadbar.on {height:2px} + 120ms transition. - Native <select> popup theme sync via :root { color-scheme: dark } + @media(prefers-color-scheme: light). nativeTheme.themeSource already drives prefers-color-scheme, so the OS popup color follows the app theme automatically (fixed light popup on dark app / vice versa). - .ctl layout flipped to flex-direction: row with flex-wrap so anti-fingerprint mode + value fields fit side-by-side. Settings restructure - General section: Startup group at the top ("Open previous windows and tabs" toggle), then Appearance below with three visual THEME CARDS (System / Light / Dark) — small mock-browser previews per theme, Firefox-style, active card gets a blue ring. System pipes through to nativeTheme.themeSource = "system". - Search promoted to a top-level sidebar item between General and Naming. Search-engine controls moved out of General into Search. - Search section: enabled list shows only enabled engines, grouped by kind, drag-reorder within a kind. "+ Add search engine" opens the catalog/extras/custom-URL panel. Search engine catalog trims (already flagged in prior work) - Removed ChatGPT / Claude / You.com (login-gated ?q=). - Removed SearXNG (federated; every single-instance default rots). Docs - TheseusNavigator/PENDING.md and GOTCHAS.md born with this work (see the HANDOFF.md commit for the convention). - PENDING.md's own "session: 2026-08-02:theseus-ux-polish" group will be emptied after this ship lands. Preview harness - _preview.html + _settings-preview.html stubs updated with kind + tier + downloads seed + tier="extra" samples so the preview reflects reality. Both files are gitignored — local only. Coordination - Parallel session's collision-policy work (chrome.html registry chips, popover switcher, Naming section, in-tab collision prompt) already landed in commits 256079d/42b340f/b0d6375/78dddda. This commit adds cleanly on top.
2026-08-02 15:31:47 +02:00
- 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).
Theseus: download tracker, search split, discover-more tier, UX polish Bundle of UX + feature work. Split from packaging by intent so the diff is reviewable; the next Theseus rebuild ships it. Features - Download tracker (new): session.on("will-download") → per-item state {id, filename, url, mime, total, received, state, savePath, startedAt} with updated/done event handlers. New downloadsPop WebContentsView loads downloads.html (new file) + downloads-preload.js (new file); panel positioned under a new #downloads toolbar button between search and Tor. Full IPC: downloads-get, toggle/close/resize-downloads, download-open/show/cancel/clear, downloads-clear-all. In-memory only — cross-session persistence is a future addition. Button badge shows active count + spin/done/err color. - Search engines split by kind + tier: * kind: "search" | "llm" — separate headers in picker + settings ("Search with" / "Ask an AI"). Empty sections hidden. * tier: "catalog" | "extra" — Settings now has THREE panes behind the "+ Add search engine" button: curated catalog, wider discoverable bank filtered by a live search input, custom URL form. * DEFAULT_ENABLED unchanged (5 major engines). * Custom user-added engines carry tier="custom" (never in catalog/extra panes). - 9 tier="extra" engines added (all non-login ?q=): Marginalia, Stract, Yep, Presearch, MetaGer, Qwant, Swisscows, Naver, Baidu. Same rot rule as LLMs: if one starts bouncing to a login gate, drop it. Bug fixes - Loadbar collapses to 0px when idle (was reserving a permanent 2px strip below the address bar). .loadbar {height:0} + .loadbar.on {height:2px} + 120ms transition. - Native <select> popup theme sync via :root { color-scheme: dark } + @media(prefers-color-scheme: light). nativeTheme.themeSource already drives prefers-color-scheme, so the OS popup color follows the app theme automatically (fixed light popup on dark app / vice versa). - .ctl layout flipped to flex-direction: row with flex-wrap so anti-fingerprint mode + value fields fit side-by-side. Settings restructure - General section: Startup group at the top ("Open previous windows and tabs" toggle), then Appearance below with three visual THEME CARDS (System / Light / Dark) — small mock-browser previews per theme, Firefox-style, active card gets a blue ring. System pipes through to nativeTheme.themeSource = "system". - Search promoted to a top-level sidebar item between General and Naming. Search-engine controls moved out of General into Search. - Search section: enabled list shows only enabled engines, grouped by kind, drag-reorder within a kind. "+ Add search engine" opens the catalog/extras/custom-URL panel. Search engine catalog trims (already flagged in prior work) - Removed ChatGPT / Claude / You.com (login-gated ?q=). - Removed SearXNG (federated; every single-instance default rots). Docs - TheseusNavigator/PENDING.md and GOTCHAS.md born with this work (see the HANDOFF.md commit for the convention). - PENDING.md's own "session: 2026-08-02:theseus-ux-polish" group will be emptied after this ship lands. Preview harness - _preview.html + _settings-preview.html stubs updated with kind + tier + downloads seed + tier="extra" samples so the preview reflects reality. Both files are gitignored — local only. Coordination - Parallel session's collision-policy work (chrome.html registry chips, popover switcher, Naming section, in-tab collision prompt) already landed in commits 256079d/42b340f/b0d6375/78dddda. This commit adds cleanly on top.
2026-08-02 15:31:47 +02:00
## 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.