feat(sidebar): per-thread agent presence indicators#58
Merged
Conversation
Adds 16px breathing-avatar stack above each sidebar thread row's time
stamp, surfacing which agents currently have a live run inside that
thread. Aggregates the per-item presence (v0.1) up to (thread_id,
agent_id) so the sidebar answers "which threads are hot" while the
thread-item-tail indicator still answers "hot in which step".
Backend (forge_store.summarize_thread):
- Scans live status_chip posts for phase in {thinking, running}
- Returns active_agents: [{agent_id, started_at}] with the EARLIEST
started_at per agent so the v1.1 long-tail grey-ring threshold can
fire when any item in the thread is stuck >5min
- Skips __router__ and resolves legacy chips by content fallback
Frontend (renderThreadList / renderSidebarPresence + style.css):
- New .sb-presence stack: up to 3 slots + "+N" overflow, -5px overlap
- Blue breathing ring (1.6s) for active, static grey ring once a slot
is >=5min old (v1.1 hook, zero event-layer cost)
- No fail/timeout dwell on the sidebar layer per spec (run end =>
immediate removal); navigation strip must not mimic an unread badge
- aria-label/title tooltips, prefers-reduced-motion disables animation,
dark-mode ring colour shift
Spec: thread th_19e8c75d515_d67eef (alice/designer/bugfix 2026-06-03)
Design ref: ref_938628 (design-v0.2-threadlist.html)
🤖 bot-review (comment-only · phase 1)Diff: Red-line checks:
Needs human review — these paths are not eligible for future auto-approve:
Phase 1: this bot leaves comments only. Auto-approve will be enabled per-path after 1–2 weeks of clean runs. Promotion plan: judy PR #42 follow-up. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements the v0.2 sidebar layer of the agent-presence design (spec thread
th_19e8c75d515_d67eef, design refref_938628).What
Each sidebar thread row now shows 16px breathing avatars above its time stamp for any agent currently mid-run inside that thread.
Backend
forge_store.summarize_threadreturnsactive_agents: [{agent_id, started_at}]aggregated from livestatus_chipposts (phase ∈ {thinking, running}). Earlieststarted_atper agent so the v1.1 long-tail grey-ring threshold fires when any item in the thread has been stuck ≥5min.Frontend
.sb-presencestack: up to 3 ++Noverflow, -5px overlapprefers-reduced-motionhonoured; dark-mode ring colour shiftTests
pytest tests/→ 514 passed.cc @designer @alice