Theseus 0.3.115: AI picker chevron now visible; strip + picker refresh after favicon fetch

The sidebar AI button's chevron badge grows from a 10 px grey ghost in
the corner to a 14 px acid-coloured circle that reads at a glance, so
Pick AI engine is actually discoverable. Click or Enter still opens
the picker overlay; right-click on the AI button still works too.

Also wires emitQuickLinksState() into the icon-fetch completion path.
Before 0.3.115 the sidebar strip and the picker overlay kept showing
the engine sym emoji until some other state change re-emitted the
quicklinks payload. Now a freshly-fetched favicon lights up in the
strip and the picker on the same tick it finishes caching.
This commit is contained in:
Local Dev 2026-10-26 10:50:47 +02:00
parent 8bb5b3d26a
commit f87173fde4
3 changed files with 14 additions and 5 deletions

View file

@ -273,6 +273,10 @@ function fetchEngineIcon(host) {
fs.writeFileSync(f + ".tmp", got.buf); fs.renameSync(f + ".tmp", f);
iconFetches.delete(host);
emitEngines(); // the toolbar and the picker repaint with the real icon
// The sidebar-strip LLM button and the picker overlay also read engine
// favicons; without this they stay on the sym emoji until some other
// state change re-emits the quicklinks payload.
try { emitQuickLinksState(); } catch {}
return f;
})();
iconFetches.set(host, p);

View file

@ -1,6 +1,6 @@
{
"name": "theseus-navigator",
"version": "0.3.114",
"version": "0.3.115",
"license": "MPL-2.0",
"description": "Theseus Navigator — a browser that follows the thread. By Silent Mode, a Deviant project.",
"author": "Silent Mode",

View file

@ -54,10 +54,15 @@
.llm.on { background: var(--acid-tint); box-shadow: inset 2px 0 0 var(--acid); color: var(--ink); }
.llm .glyph { font-size: 16px; line-height: 1; }
.llm img { width: 18px; height: 18px; display: block; }
.llm .chev { position: absolute; right: 1px; bottom: 1px; width: 10px; height: 10px;
display: grid; place-items: center; color: var(--mut); background: var(--bg);
border: 1px solid var(--line2); border-radius: 3px; font-size: 7px; line-height: 1; padding: 0; cursor: pointer; }
.llm .chev:hover { color: var(--ink); }
/* Chevron is the discoverable "pick AI" affordance — kept small so it
doesn't crowd the AI icon, but with the acid accent so it reads at
a glance and a bigger hit target through padding. */
.llm .chev { position: absolute; right: -2px; bottom: -2px; width: 14px; height: 14px;
display: grid; place-items: center; color: var(--bg); background: var(--acid);
border: 2px solid var(--bg); border-radius: 50%; font-size: 9px; font-weight: 800;
line-height: 1; padding: 0; cursor: pointer; box-shadow: 0 1px 3px rgba(0,0,0,.5); }
.llm .chev:hover { background: #fff; }
.llm .chev:focus-visible { outline: 2px solid var(--acid); outline-offset: 2px; }
</style></head>
<body>
<div class="strip">