Skip to content

feat(composer): add live activity feed (experiment)#1575

Draft
tellaho wants to merge 4 commits into
mainfrom
tho/composer-live-activity
Draft

feat(composer): add live activity feed (experiment)#1575
tellaho wants to merge 4 commits into
mainfrom
tho/composer-live-activity

Conversation

@tellaho

@tellaho tellaho commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Category: new-feature
User Impact: Users can opt into a composer popover that previews live agent activity while keeping the current agents-working indicator as the default experience.

Problem: The composer only showed that an agent was working, which made it hard to understand what the agent was doing without opening the full activity surface. The observer path also needs real production testing, so the new UI needs to be safely hidden from everyone who has not opted in.

Solution: This adds an off-by-default Composer live activity experiment and uses it to switch the agents-working popover between the existing compact agent list and the new merged live activity preview. The default behavior stays unchanged, while the experiment gives us a production-safe way to validate observer-backed activity in the composer.

File changes

preview-features.json
Adds the Composer live activity preview feature so it appears in Settings → Experiments and remains off by default.

desktop/src/features/channels/ui/BotActivityBar.tsx
Gates the composer popover on the new experiment. The disabled state keeps the existing narrow agents-working list, while the enabled state renders the wider live-activity feed with the compact agent footer.

desktop/src/features/channels/ui/ComposerLiveActivityFeed.tsx
Adds the popover feed that merges working agents' observer transcripts, renders compact activity rows, and preserves click-through into the full agent activity surface.

desktop/src/features/channels/ui/composerLiveActivity.ts
Adds the channel-scoped merge and grouping helpers used to build a stable multi-agent activity preview.

desktop/src/features/channels/ui/composerLiveActivity.test.mjs
Covers the merge, channel filtering, stable ordering, grouping, and preview-size behavior for the new feed projection.

desktop/src/features/agents/ui/useObserverEvents.ts
Adds a multi-agent transcript hook so the composer preview can subscribe to several agent transcripts without creating unstable snapshots.

Reproduction Steps

  1. Run the desktop app and make sure the Composer live activity experiment is disabled in Settings → Experiments.
  2. Start or seed an agent working state in a channel and hover the composer agents-working indicator.
  3. Confirm the popover shows today's narrow fallback: the Agents working heading and a plain spinning agent row.
  4. Enable Composer live activity in Settings → Experiments.
  5. Hover the composer agents-working indicator again.
  6. Confirm the wider popover shows the merged live activity feed above the compact agent footer.

Screenshots/Demos

Experiment off — existing fallback behavior

image

Experiment on — live activity feed

image

Validation

  • pnpm typecheck
  • pnpm lint
  • pnpm test (1928/1928 passing)
  • lefthook pre-push / desktop-tauri-test

Coordination: buzz://message?channel=18557e3b-8753-435b-a609-bb52de029a47&thread=cf8703e2c9205e94a641d1ce4b85d00458d9aadbce91ec4d384c1474f5ad575f

npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w and others added 2 commits July 6, 2026 21:01
Replace the plain agent list in the below-composer 'Agents working'
popover with an h-48 merged live activity preview. Per-agent observer
transcripts for the channel's working agents are interleaved into one
chronological stream (stable k-way merge on item timestamps), rendered
with the compact transcript presenters from the agent activity view,
and badged per consecutive same-agent run.

- composerLiveActivity.ts: channel-scoped merge + consecutive-run
  grouping helpers, capped at 80 entries for the preview window
- ComposerLiveActivityFeed.tsx: compactPreview-variant feed with
  auto-tail via useAnchoredScroll (memoized entry snapshot so streaming
  updates re-anchor without effect churn) and explicit agent-badge
  click-through buttons — no nested interactive wrappers
- useObserverEvents.ts: useAgentTranscripts hook for index-aligned
  multi-agent snapshots with referential caching to keep
  useSyncExternalStore stable
- BotActivityBar.tsx: popover widened to w-80, feed above a compact
  per-agent footer that keeps the existing click-through rows

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Add a 'Composer live activity' entry to preview-features.json and gate
the merged live activity feed in the agents-working popover on
useFeatureEnabled("composerLiveActivity"). When the experiment is off,
the popover renders exactly the pre-feed layout (w-64, plain agent list
with sm avatars) so prod behavior is unchanged by default. The existing
agents-working/typing composer affordance is untouched either way.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho tellaho changed the title feat(composer): add live activity feed experiment feat(composer): add live activity feed (experiment) Jul 7, 2026
npub17ch4w47v05yanppke8h3m2dcuc5c9ru9g0z7n8xs42d9es9tc5mqz2jx7j and others added 2 commits July 7, 2026 13:35
…ivity

* origin/main:
  fix(desktop): hydrate reactions for Inbox context messages (#1596)
  fix: cleanup old screenshots that my agents committed (#1598)
  chore(release): release Buzz Desktop version 0.3.46 (#1585)
  fix(desktop): preserve agent model/provider when persona snapshot fields are blank (#1583)
  feat(acp,desktop): identify and reap stale agent harness processes (#1582)
  feat(desktop): active-draft badge, send-from-drafts confirm dialog, thread-deleted state (#1581)
  fix(desktop): treat baked build env vars as satisfying required agent config (#1580)
  feat(desktop): add "Copy image" to image right-click context menu (#1579)
  fix(nest): use buzz-dev symlink name for dev builds (#1587)
  fix(composer): address image-editor follow-up nits on #1491 (#1565)
  fix(desktop): render black static boot screen (#1570)
  feat(agents): group activity tool bursts (#1571)
  feat(desktop): aggregated overview rail, commit detail page, and full breadcrumbs (#1573)
  fix(desktop): fetch profiles for reaction actors and thread-reply authors (#1550)
  refactor(desktop): unify EditAgentDialog styling with PersonaDialog (#1540)
  feat(desktop): add 10-minute message grouping window (#1578)
  feat(desktop): unify sidebar section actions into a per-section ⋮ menu (#1577)
  feat(desktop): emoji avatar picker for agents + reliable picker scroll (#1576)

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
…ivity

* origin/main:
  feat(desktop): restart-required badge from spawn-time config hash (#1602)
  feat(desktop): boot-time reconcile of managed agents to relay events (#1601)
  feat(desktop): canonical <PubKey> component — hover to view/copy full keys, owner "you" labels (#1589)

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant