theseus/PENDING.md

115 lines
6.3 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.131: Mail promoted to Sidebar quicklink, Nostr signer ships, panels free RAM when idle, Game.X in SM cards Silent Mode Mail is no longer an extension. The 0.1.0 panel was a black screen (iframe to mail.silentmode.st which sends X-Frame-Options: DENY; the browser rendered the block page and still fired the iframe's load event, so the 5-second "did it embed?" watchdog saw it as loaded and the fallback never swapped in). The whole extension existed to put one "Open Mail" button in a panel — that is exactly what a sidebar quicklink does, without taking a panel slot or an Extensions row. So: - settings.quickLinks default list gains silentmail at the top (Silent Mode Mail → https://mail.silentmode.st/). - migrateAegisRename grew a mail retirement block: any existing extensions/mail/ folder on the user's box moves to addons-backups/mail-migrated-<stamp>/ on first boot of this Theseus, so the old extension vanishes from Settings instead of sitting there with a broken panel. - "mail" added to the first-party reserved-ids list so no community add-on can claim the id after retirement. Nostr NIP-07 signer finally ships. The bundled-addons/nostr/ folder was sitting untracked in the main checkout, so the detached-HEAD build worktree 0.3.130 used never saw it (same reason build/, tor/, snapshots/ have to be hand-copied into the worktree). This build committed the folder and copied it in. Puts window.nostr on https + localhost pages; identity is Hermes's key (one npub for DMs and public notes). Per-origin read/sign grants; kinds 0/3/5/10002 re-prompt every time with no remember option. Sidebar panel apps free their render tree after idle. closeLeftPanel used to keep the loaded page warm forever — great for fast reopen, bad for RAM when the user docks a heavy panel (Hermes, Pithos, Aegis) once and never comes back. A 2-minute idle timer now blanks the panel to about:blank after close; reopen within the window still reuses the loaded page (cancelLeftPanelIdleUnload on open), reopen after the window reloads fresh. LEFT_PANEL_IDLE_MS = 2 * 60 * 1000. Right-side sidebar view (webapp tabs — Telegram, X, WhatsApp, AI chat) is longer- lived by design and untouched here. Startpage layout: - Game.X takes SilentMode.X's slot in the Silent Mode cards (stub description + a built-in gamepad brand mark until game.x goes live). SilentMode.X moves to the quick-links strip as the 5th slot. Still TODO: push the swap into the remote home-cards.json for existing profiles. - Light-theme palette flip under body.light. The @media (prefers-color-scheme: light) block only triggered on OS-level light preference; picking the "light" background preset left --ink white against a white page, so hero titles, card titles, slot labels and the ".bch" extension read as pale ghosts. Added a full body.light { --ink; --mut; --card; --line; ... } block plus overrides for the hero + card translucent panels (dark-glass → light-glass on light theme) and the ctx-menu / modal. Dark theme untouched.
2026-10-30 00:38:08 +02:00
Last updated: 2026-10-29 (post-0.3.130 batch).
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.131: Mail promoted to Sidebar quicklink, Nostr signer ships, panels free RAM when idle, Game.X in SM cards Silent Mode Mail is no longer an extension. The 0.1.0 panel was a black screen (iframe to mail.silentmode.st which sends X-Frame-Options: DENY; the browser rendered the block page and still fired the iframe's load event, so the 5-second "did it embed?" watchdog saw it as loaded and the fallback never swapped in). The whole extension existed to put one "Open Mail" button in a panel — that is exactly what a sidebar quicklink does, without taking a panel slot or an Extensions row. So: - settings.quickLinks default list gains silentmail at the top (Silent Mode Mail → https://mail.silentmode.st/). - migrateAegisRename grew a mail retirement block: any existing extensions/mail/ folder on the user's box moves to addons-backups/mail-migrated-<stamp>/ on first boot of this Theseus, so the old extension vanishes from Settings instead of sitting there with a broken panel. - "mail" added to the first-party reserved-ids list so no community add-on can claim the id after retirement. Nostr NIP-07 signer finally ships. The bundled-addons/nostr/ folder was sitting untracked in the main checkout, so the detached-HEAD build worktree 0.3.130 used never saw it (same reason build/, tor/, snapshots/ have to be hand-copied into the worktree). This build committed the folder and copied it in. Puts window.nostr on https + localhost pages; identity is Hermes's key (one npub for DMs and public notes). Per-origin read/sign grants; kinds 0/3/5/10002 re-prompt every time with no remember option. Sidebar panel apps free their render tree after idle. closeLeftPanel used to keep the loaded page warm forever — great for fast reopen, bad for RAM when the user docks a heavy panel (Hermes, Pithos, Aegis) once and never comes back. A 2-minute idle timer now blanks the panel to about:blank after close; reopen within the window still reuses the loaded page (cancelLeftPanelIdleUnload on open), reopen after the window reloads fresh. LEFT_PANEL_IDLE_MS = 2 * 60 * 1000. Right-side sidebar view (webapp tabs — Telegram, X, WhatsApp, AI chat) is longer- lived by design and untouched here. Startpage layout: - Game.X takes SilentMode.X's slot in the Silent Mode cards (stub description + a built-in gamepad brand mark until game.x goes live). SilentMode.X moves to the quick-links strip as the 5th slot. Still TODO: push the swap into the remote home-cards.json for existing profiles. - Light-theme palette flip under body.light. The @media (prefers-color-scheme: light) block only triggered on OS-level light preference; picking the "light" background preset left --ink white against a white page, so hero titles, card titles, slot labels and the ".bch" extension read as pale ghosts. Added a full body.light { --ink; --mut; --card; --line; ... } block plus overrides for the hero + card translucent panels (dark-glass → light-glass on light theme) and the ctx-menu / modal. Dark theme untouched.
2026-10-30 00:38:08 +02:00
## Staged for the next release (post-0.3.130)
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.
Theseus 0.3.131: Mail promoted to Sidebar quicklink, Nostr signer ships, panels free RAM when idle, Game.X in SM cards Silent Mode Mail is no longer an extension. The 0.1.0 panel was a black screen (iframe to mail.silentmode.st which sends X-Frame-Options: DENY; the browser rendered the block page and still fired the iframe's load event, so the 5-second "did it embed?" watchdog saw it as loaded and the fallback never swapped in). The whole extension existed to put one "Open Mail" button in a panel — that is exactly what a sidebar quicklink does, without taking a panel slot or an Extensions row. So: - settings.quickLinks default list gains silentmail at the top (Silent Mode Mail → https://mail.silentmode.st/). - migrateAegisRename grew a mail retirement block: any existing extensions/mail/ folder on the user's box moves to addons-backups/mail-migrated-<stamp>/ on first boot of this Theseus, so the old extension vanishes from Settings instead of sitting there with a broken panel. - "mail" added to the first-party reserved-ids list so no community add-on can claim the id after retirement. Nostr NIP-07 signer finally ships. The bundled-addons/nostr/ folder was sitting untracked in the main checkout, so the detached-HEAD build worktree 0.3.130 used never saw it (same reason build/, tor/, snapshots/ have to be hand-copied into the worktree). This build committed the folder and copied it in. Puts window.nostr on https + localhost pages; identity is Hermes's key (one npub for DMs and public notes). Per-origin read/sign grants; kinds 0/3/5/10002 re-prompt every time with no remember option. Sidebar panel apps free their render tree after idle. closeLeftPanel used to keep the loaded page warm forever — great for fast reopen, bad for RAM when the user docks a heavy panel (Hermes, Pithos, Aegis) once and never comes back. A 2-minute idle timer now blanks the panel to about:blank after close; reopen within the window still reuses the loaded page (cancelLeftPanelIdleUnload on open), reopen after the window reloads fresh. LEFT_PANEL_IDLE_MS = 2 * 60 * 1000. Right-side sidebar view (webapp tabs — Telegram, X, WhatsApp, AI chat) is longer- lived by design and untouched here. Startpage layout: - Game.X takes SilentMode.X's slot in the Silent Mode cards (stub description + a built-in gamepad brand mark until game.x goes live). SilentMode.X moves to the quick-links strip as the 5th slot. Still TODO: push the swap into the remote home-cards.json for existing profiles. - Light-theme palette flip under body.light. The @media (prefers-color-scheme: light) block only triggered on OS-level light preference; picking the "light" background preset left --ink white against a white page, so hero titles, card titles, slot labels and the ".bch" extension read as pale ghosts. Added a full body.light { --ink; --mut; --card; --line; ... } block plus overrides for the hero + card translucent panels (dark-glass → light-glass on light theme) and the ctx-menu / modal. Dark theme untouched.
2026-10-30 00:38:08 +02:00
- **LANDED: Nostr NIP-07 signer** — new bundled add-on `bundled-addons/nostr/`
(0.1.0) plus host support. Puts `window.nostr` on https + localhost pages so
any Nostr client (Primal, Coracle, Snort, nostrudel) can sign with the
identity Theseus already holds. **Needs a Theseus release**: it changes
`main.js` and bundles a new add-on, so the extension OTA alone cannot
deliver it. **MISSED 0.3.130** — the folder is untracked (`??` in git
status), so the detached-HEAD build worktree never saw it. For 0.3.131
the ship script must either `git add` the folder first or `cp -r` it
into the build worktree the same way `build/`, `tor/`, `snapshots/`
are copied.
- [lib/nostr-signer.js](lib/nostr-signer.js) — new. Crypto half:
`getPublicKey`, `signEvent` (BIP340 via nostr-tools `finalizeEvent`),
nip04 + nip44 encrypt/decrypt. Recomputes `pubkey`/`id` rather than
trusting the page.
- [main.js](main.js) — `global._nostrAPI` next to `_hermesAPI`.
- Identity is Hermes's key (`nostrKeyFromRoot(messengerRoot)`); vault
with no mnemonic reports no identity instead of failing obscurely.
- Policy per-origin (read vs sign), kinds 0/3/5/10002 re-prompt every
time with no remember option.
- Tests: `scratchpad/signer-test.mjs`, `nostr-policy-test.mjs`,
`nostr-e2e.mjs`.
- **LANDED: Home — SilentMode.X moved to the quick-links strip, Game.X
takes its place in the Silent Mode cards.** [home.html](home.html)
`defaultState().sections.sm` and `.q`. Game.X entry uses a built-in
`game` brand mark (new SVG in `BRAND`); the real description and
favicon will come from the live site once game.x is up (currently a
stub). SilentMode.X moves into the slots strip as the 5th quick-link.
**Still TODO:** update the remote cache at
`https://dl.silentmode.st/home-cards.json` so existing profiles pick
the swap up without resetting (local `sections.sm` isn't reseeded by
`migrateCards` — only the remote fetch rewrites it for installed
users).
- **LANDED: Mail is now a Sidebar quicklink, not an extension.** The
user flagged two things in one: the Mail add-on's 0.1.0 panel was a
black screen (iframe + XFO: DENY), AND Mail conceptually belongs
under Settings → Sidebar (webapp quicklinks) rather than Settings →
Extensions. Both resolved by dropping the extension form entirely:
- `settings.quickLinks` default list in [main.js](main.js) gains
`{ id: "silentmail", url: "https://mail.silentmode.st/", title:
"Silent Mode Mail" }` as the first entry.
- `migrateAegisRename()` grew a mail retirement block: on first boot
of this Theseus, any installed `extensions/mail/` folder moves to
`addons-backups/mail-migrated-<stamp>/`. The one-off `mail/`
directory I added under `bundled-addons/` earlier in this session
is removed again (the quicklink + retire is the right path).
- `"mail"` added to the first-party reserved-ids list so a community
add-on can't claim the id after retirement.
- The quicklink does exactly what the old extension's "Open Mail"
button did (new tab at `mail.silentmode.st`), without taking a
panel slot or an Extensions row.
- **LANDED: Left-side sidebar panels free their render tree after idle.**
[main.js](main.js) `closeLeftPanel`: closed panels used to keep their
loaded page (`leftPanelLoadedId` kept, webContents warm) forever —
great for fast reopen, bad for RAM when the user docks a heavy
app-like panel (Hermes, Pithos, mail) once and never comes back.
Now a 2-minute idle timer blanks the panel to `about:blank` after
close, dropping iframes/media/listeners; reopen inside the window
still reuses the loaded page (`cancelLeftPanelIdleUnload` on open).
`LEFT_PANEL_IDLE_MS = 2 * 60 * 1000`. Does NOT touch the right-side
`sidebar` view (webapp tabs — Telegram, X, WhatsApp, AI chat) — those
are longer-lived by design; follow-up decision whether to apply the
same idle unload there.
- **LANDED: Startpage light theme palette flip under `body.light`.**
[home.html](home.html): the existing `@media (prefers-color-scheme:
light)` block only flipped tokens when the OS preferred light. Picking
the "light" background preset (`body.light`, set by `applyBg()`) left
`--ink` white against a white page, so hero title, SM card titles,
slot labels and the ".bch" extension read as pale ghosts. Added a
full `body.light { --ink; --mut; --card; --line; ... }` block plus
overrides for the hero/card translucent panels (dark-glass → light-
glass on light theme so the dark text inside reads), the ctx-menu
and modal (white surfaces, dark text). Dark theme untouched.
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.