polish(agents): activity feed runtime transcript pass#1053
Closed
tellaho wants to merge 20 commits into
Closed
Conversation
- Add a relay ownership endpoint backed by agent_owner_pubkey and is_agent_owner so desktop activity visibility uses the same source of truth as observer telemetry authorization. - Add a Tauri ownership command, frontend API wrapper, and useCanViewAgentActivity hook with local managed-agent optimism only while relay ownership is loading. - Replace profile popover, profile panel, and members sidebar activity gates so owned agents can open activity across different builds and worktrees without relying on local managed-agent lists. - Refactor channel agent session candidate resolution so owned agents can keep an activity panel open when channel metadata is stale, while preserving local-only lifecycle controls. - Add focused desktop unit coverage for the ownership predicate and stale-metadata session resolution path, plus E2E bridge support for ownership mocks.
- Extend canViewAgentActivity coverage for relay-backed agent sessions - Harden Tauri ownership resolution and observer relay scoping - Wire updated visibility rules through profile panel and popover surfaces
- Add transcript presentation model with Now summary, activity state, and live item highlighting - Support compact channel activity panel mode with intervention hint wiring - Refine tool, thought, metadata, and lifecycle row hierarchy for at-a-glance scanning - Share activity headline derivation with composer bot activity chip - Extend channel activity E2E coverage for Now summary and stop affordance
- Stamp each transcript item with its observer/ACP wire source during build - Show amber dev-only badges in the activity transcript for local debugging - Add unit tests covering agent_message_chunk vs agent_thought_chunk tagging
- Add a Raw switch to the agent activity panel header so users can swap between the formatted transcript and raw ACP JSON-RPC payloads. - Update the activity title to reflect raw mode and render the raw feed as the full panel content instead of a nested dark card. - Keep the existing transcript view unchanged by default and scope the raw-mode reset to agent/channel changes.
- Add turnId/sessionId to transcript items and a presentation-only grouping helper - Render each turn as user prompt first, with setup status and context integrated inline - Show turn setup as a CheckCheck tooltip; expose prompt context via a footer toggle - Expand context sections inside the message bubble; drop the outer grouping border - Add unit tests for turn metadata attachment and grouped display ordering
- Add managed agent avatar URLs to the Tauri summary and frontend ManagedAgent mapping so configured persona photos are available in channel activity views. - Carry agent pubkey and avatar data through channel session candidates, ManagedAgentSessionPanel, and AgentSessionTranscriptList. - Replace the assistant transcript bot glyph with UserAvatar, using synced profile photos first and managed-agent avatar URLs as fallback. - Include known agent pubkeys in channel profile lookups and preserve managed-agent avatars when merging agent names into profile data. - Update the E2E mock bridge managed-agent shape so seeded and created mock agents retain avatar URLs. - Polish the assistant activity row with slightly wider spacing and text-xs/font-semibold labels for the agent name and metadata.
- Replace arbitrary text-[7px]–text-[11px] sizes with Tailwind text-xs across the agent activity/session surface - AgentSessionTranscriptList, AgentSessionThreadPanel, AgentSessionToolItem, RawEventRail, and BotActivityBar - UserAvatar xs/sm size tokens now use text-xs so transcript and activity-bar avatars need no per-call font overrides
- Update channel activity candidate resolution to treat ChannelMember.isAgent the same as bot role membership. - Keep agent typing classification and Activity panel scoping aligned so agent typing does not fall through to the generic human typing row. - Add regression coverage for isAgent channel members being created as activity candidates and retained in channel scope.
…variants - Add an xs size variant to the shared Toggle component for compact pill-style controls. - Update the outline toggle variant so pressed state uses the muted visual treatment instead of the primary fill. - Simplify the agent transcript context toggle to use size="xs" and remove the visible context section count.
- Update AgentSessionToolItem to render shell command tools as a muted inline summary with a semibold status label - Parse the shell command from tool parameters and show a truncated preview before the duration and caret - Reuse tool duration formatting with result payload fallbacks for command tools that report duration_ms or elapsed_ms - Apply canonical Tailwind class names flagged by diagnostics in the touched file
- Remove the sticky Now summary card from AgentSessionTranscriptList so transcript rows no longer scroll under a pinned status element - Drop summary-only helpers, Shimmer usage, and icon imports that only supported the removed card - Remove the showInterventionHint prop plumbing from ManagedAgentSessionPanel and AgentSessionThreadPanel after the summary hint was deleted - Update the channel activity E2E expectation to assert the removed summary no longer renders
- Add agentSessionToolSummary helper to classify buzz-dev-mcp tools and build status-aware labels with parameter previews - Extend AgentSessionToolItem to use the muted compact row for shell, read_file, view_image, str_replace, todo, and hook tools while preserving Buzz relay tool UI - Add unit tests for developer tool detection, previews, and running/failed labels
…tbox - Add thumbnailSrc to compact developer tool summaries for http(s) and data:image sources - Render a tiny inline thumbnail in Viewed image rows instead of a truncated URL - Show a larger preview when the tool accordion expands and open a lightbox on click - Route relay media URLs through rewriteRelayUrl and fall back to basename text for local paths - Add unit tests for thumbnail extraction and local path fallback
- Align prompt and standalone user transcript rows to the right edge of the activity panel. - Anchor non-agent avatars on the right using flex ordering while keeping assistant messages left-aligned. - Update related Tailwind shorthand classes surfaced during the targeted component check.
- Update desktop/src/features/agents/ui/agentSessionTranscriptGrouping.ts so turn setup lifecycle events are consumed before display even when a parsed user prompt is missing - Preserve prompt context and real turn activity while dropping empty setup-only turn groups from the activity transcript - Update desktop/src/features/agents/ui/agentSessionTranscriptGrouping.test.mjs to cover promptless turns and setup-only turns so Turn started / Session ready rows do not regress
- Remove row-level Live badges and active highlight styling from assistant transcript messages, thought rows, and tool rows - Stop passing transcript active item state through AgentSessionTranscriptList once row-level activity styling is no longer rendered - Preserve the panel header Live indicator as the single source of current agent activity state
- Update desktop/src/features/agents/ui/agentSessionTranscriptGrouping.ts to group consecutive tool calls into transcript tool groups and suppress setup/context-only turn noise when no user prompt bubble exists - Update desktop/src/features/agents/ui/AgentSessionTranscriptList.tsx and AgentSessionToolItem.tsx to render grouped tool rows with tighter activity-feed spacing - Expand desktop/src/features/agents/ui/agentSessionToolSummary.ts so Buzz and generic tools use the compact summary presentation with useful previews - Adjust desktop/src/shared/ui/toggle.tsx to support the ghost prompt-context toggle styling used by the transcript footer - Add focused unit coverage for grouped tools, Buzz tool summaries, promptless turns, and setup/context-only turns
- Remove the compact layout prop from AgentSessionTranscriptList, ManagedAgentSessionPanel, and AgentSessionThreadPanel; always render the tighter transcript density - Revert consecutive tool-call grouping (tool_group segments, ToolCallGroup, segment spacing helpers) and render each tool as a normal transcript row - Add symmetric per-type row spacing: my-2.5 for messages, my-1 for tools, my-2 for other items - Simplify ToolItem wrapper padding now that grouped/compact props are gone
The labels Record was annotated Record<CompactToolKind, ...> but only spreads generic + developerToolLabels(), which excludes the buzz kind. buzz is handled by an early return in compactToolLabel, so it never indexes this map. Narrow the annotation to Exclude<CompactToolKind, "buzz"> so tsc accepts it, and drop the redundant labelsMap re-cast. No runtime behavior change. Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
This was referenced Jun 15, 2026
Collaborator
Author
|
Superseded by a 2-PR stack built fresh off current main (sidesteps this branch's conflict): #1060 (agent activity ingress + ownership, base main) → #1061 (activity-feed UI polish, stacked on #1060). The e2e observer-seed harness for live-populated screenshots will land as a separate follow-up. Closing this mega-branch. |
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.
Category: improvement
User Impact: The web desktop Activity panel (right sidebar) that streams an agent's live runtime is cleaner, easier to scan, and now respects relay ownership so people only see activity they're entitled to.
Problem: The Activity transcript was visually flat and dense — repeated agent headers, noisy tool rows, inconsistent typography, and no grouping made it hard to follow an agent's turns at a glance. Activity visibility also wasn't gated by ownership.
Solution: A polish pass across the activity-feed runtime UI: grouped ACP turns into a user-first bundle, collapsed/simplified tool and shell rows with compact summaries, standardized transcript typography, added agent avatars, inline thumbnails + lightbox for image tools, a raw ACP view toggle, and ownership-based visibility gating (relay + Tauri command + client hook). Backed by unit tests for grouping, presentation, and tool summaries.
Highlights from the commit history
Reproduction steps