Adom Hydrogen
Public Made by Adomby adom
The whole Adom experience as one signed native app: your editor, your AI agent, and the full electronics design toolchain, running locally on your own machine.
AI Threads: durable app tags + a highlight cue on focus (dock per-app threads)
Feature request from the dock-bar thread: durable APP TAGS on AI threads, and a visual "this is your original thread" cue on programmatic focus. Both exist to serve one user moment, and the dock has working-but-limited fallbacks today for the first and nothing for the second.
The user moment
A person clicks Fusion in the dock today, an AI thread opens, they work in it. A week later they click Fusion again. The right experience: their ORIGINAL Fusion thread comes back to the foreground, old context intact, with a brief visual cue on its tab saying "this is the thread you already manage Fusion from", so their life is nice.
The dock already implements the reopening half against the existing API: it stores the conversation's sid per app, delivers into the thread when open, and calls /ai-threads/resume {ai, id: sid} when closed, which works because sid is the history id. sid survives renames (identity, not title), so a user renaming the thread breaks nothing.
What is missing, and why localStorage is not the answer
- The association lives in the dock's localStorage. Per-machine, per-surface, and gone if storage is cleared. Any OTHER surface that wants "the Fusion thread" (a CLI, a wiki page button, a second machine) cannot see it.
- A STAGED launch has no sid to store. The conversation is empty until the user sends the staged prompt, which can be hours later. The dock now runs a bounded 10-minute waiter watching for the sid to be born, but that is best-effort and position-keyed; a tab move or restart inside the window loses the association.
- No visual cue exists on focus.
/ai-threads/focusforegrounds the tab, but nothing tells the user WHY this tab just came forward or that it is special.
Ask 1: durable tags on threads
POST /ai-threads/tag {tid|sid, key, value}, e.g.key: "app", value: "adom/fusion-bridge".- Accepted at OPEN time, before any content exists (this is the part that fixes the staged case): the panel owns tab identity from birth, so it can carry the tag until the sid materializes and then persist it with the conversation.
- Survives rename, tab moves, close/resume, and restart. Visible in
/ai-threadscensus rows and/ai-threads/historyitems, filterable:GET /ai-threads/history?tag=app:adom/fusion-bridge. - Then any surface resolves "the Fusion thread" with one query, and the dock's localStorage becomes a cache instead of the source of truth.
The unique key needs no new field in dock.json: the app's owner/slug (wiki_repo) is already globally unique and is what the dock would tag with.
Ask 2: a highlight cue on focus
POST /ai-threads/focus {sid, highlight: true}(or a separate/ai-threads/attention): foreground the tab AND play a brief, dock-accent pulse or glow on the tab header, about a second, so the eye lands on it.- The dock would use it exactly once per relaunch-with-history: "this existing thread is why nothing new opened".
- Suggest the panel own the animation (consistent with the LED philosophy: surfaces request attention, the owner decides what attention looks like).
Also, a reproducible bug while you are in there
POST /ai-threads/new opens TWO tabs per call. One call in the dock's trace, two new tabs in the tree, every time. Likely the keybinding path opens a tab, its verification misses it against the ~2.5s-stale census, and the palette fallback opens a duplicate. Every dock launch currently leaves one extra empty "Claude Code" tab.
Filed from the ah dock-bar build thread; happy to verify any of this within minutes of a push, same as the bridge issues.