Skip to content

feat(profile): embed live activity feed in profile aux panel#1380

Draft
tellaho wants to merge 20 commits into
mainfrom
tho/profile-live-activity-embed
Draft

feat(profile): embed live activity feed in profile aux panel#1380
tellaho wants to merge 20 commits into
mainfrom
tho/profile-live-activity-embed

Conversation

@tellaho

@tellaho tellaho commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

Stacked on PR-3 (the activity-feed rebuild). When a managed agent is live, the Profile auxiliary panel replaces the static "Activity log → View" ingress row with an embedded live activity feed (h-48, ~192px). Clicking the embed — or pressing Enter/Space — opens the existing full activity view. When the agent is idle, the original ingress row is shown unchanged.

What changed

  • Replaces the Profile Info Activity log → View ingress with an embedded h-48 live feed when useActiveAgentTurns reports the agent is live.
  • Reuses the PR-3 ManagedAgentSessionPanel / AgentSessionTranscriptList components (same feed, height-constrained).
  • Embedded live feed supports optional transcript auto-tail.
  • Multi-channel: the embed scopes to one active channel; if the agent is working across several, a small #channel pill switcher swaps the feed (via channelId into ManagedAgentSessionPanel). Falls back to the next active channel if the selected one goes idle.

Checks (Bart, in-worktree)

  • pnpm exec biome check
  • pnpm typecheck
  • pnpm test
  • pnpm check:file-sizes && pnpm check:px-text
  • Pre-push hooks: desktop-test, rust-tests, desktop-tauri-test, mobile-test

Notes

  • Draft — stacked on tho/activity-feed-rebuild; base will retarget to main once PR-3 lands. Review of the rebuilt feed itself belongs in PR-3.
  • Commits: c1de233b (embed), 6a52216d (per-channel scoping + switcher).

Co-authored-by: Taylor Ho taylorkmho@gmail.com
Signed-off-by: Taylor Ho taylorkmho@gmail.com

@tellaho tellaho force-pushed the tho/activity-feed-rebuild branch 2 times, most recently from 62606eb to 618f550 Compare June 30, 2026 17:18
@tellaho tellaho force-pushed the tho/profile-live-activity-embed branch from 36b91b0 to be9f530 Compare June 30, 2026 19:04
Base automatically changed from tho/activity-feed-rebuild to main June 30, 2026 19:19
@tellaho tellaho force-pushed the tho/profile-live-activity-embed branch from be9f530 to dcb1ea5 Compare June 30, 2026 19:37
npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w and others added 17 commits July 1, 2026 00:17
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Synthesize a minimal profile activity agent for declared-owned relay agents so observer and active-turn bridges track the same pubkey.
- Relax the profile live activity embed to accept the shared activity-agent shape instead of requiring a full local managed-agent record.
- Extract the activity-agent resolver from the oversized profile panel to keep desktop file-size guards intact.
- Add an E2E regression covering a viewer-owned relay-only agent switching from the static activity row to the live activity embed.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Derive profile embed scope from observer feed data so the pane stays mounted
after turn_completed, matching full activity panel behavior without changing
active-turn store semantics for working badges.

- Add profileActivityFeedScope helper subscribing to observer + active-turn stores
- Render embed when feed has content, not only during live turns
- Switch header to "Recent activity" and drop elapsed timer after completion
- Export syncAgentObserverEvents for test harness replay
- Extend E2E seed helper with turn_completed and regression coverage

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Turn the embedded profile activity preview into a full-card ingress that opens the full activity feed scoped to the currently selected channel.
- Replace the explicit open-full label with a flattened accent pill that displays friendly last-live relative time such as "Just now", "1m ago", and "1h ago".
- Track latest activity timestamps per channel so persisted and live previews can render accurate last-live labels.
- Disable embedded transcript row pointer events and auto-tail the compact transcript so preview clicks route to the activity feed while new turns stay visible.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Tighten the embedded activity preview so auto-tailed transcripts use a real flex height chain and include scrollable bottom breathing room.
- Flatten compact preview message rendering by adding data-role hooks for assistant and user message shells, avatars, and bubbles.
- Scope compact preview typography and line-height overrides so embedded activity rows read denser without changing the full activity feed.
- Restyle the preview surface with a muted fill, top and bottom gradient overlays, a Latest Activity footer label, and a floating last-live pill.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Adjust the compact activity preview edge fades so the top fade is shorter and the bottom label fade has more vertical coverage.
- Keep the Latest Activity label inside the non-interactive overlay while preserving the muted preview treatment.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Remove Markdown compact/tight variants so Markdown inherits font sizing and line height from its rendering container.
- Add an explicit compact transcript variant for the profile activity preview instead of relying on deep selector overrides.
- Render agent sent-message previews through Markdown so formatting is consistent with other transcript messages.
- Keep compact preview text small while preserving the full activity feed's normal chat bubble layout.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Remove the visible assistant avatar, name, and timestamp header from activity feed message rows so agent output no longer reads like a chat-authored message.
- Move assistant message timestamps to the message body hover title, matching the timestamp tooltip pattern used by other activity rows.
- Increase transcript row spacing to `gap-4` across top-level rows and turn groups for a less cramped feed.
- Apply `leading-5` to non-compact agent activity markdown renderers while preserving the compact profile preview at `text-xs leading-4`.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Restyle runtime activity user messages as transparent bordered cards and agent sent-message cards as muted bubbles.
- Add overflow-aware max-height clamping with matching bottom fades for clipped transcript cards.
- Open source channel messages when clicking non-compact transcript bubbles that have message links.
- Make non-compact user and agent avatars open the matching profile panel while keeping compact preview avatars passive.
- Pass the agent pubkey through compact message summaries so avatar profile navigation can target the right agent.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Increase the profile live activity embed from h-48 to h-56 so the compact transcript preview shows another h-8 of content.
- Use tighter compact-preview transcript spacing for top-level rows and turn groups while preserving the full activity feed spacing.
- Keep the existing preview ingress overlay and auto-tail behavior unchanged so clicks still open the full activity feed.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Show the active channel name under the Latest Activity label when the embedded activity preview is channel-scoped.
- Increase the bottom gradient overlay from h-20 to h-28 so both overlay text lines remain readable over transcript content.
- Preserve the existing preview click behavior and channel switcher state while adding the scoped label.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Increase the Latest Activity overlay label to text-base and the scoped channel label to text-sm for better readability.
- Expand the lower gradient overlay from h-28 to h-36 so the larger two-line label has enough contrast over transcript content.
- Remove the top gradient overlay so the compact activity preview content remains unobscured above the footer label.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Replace the profile activity channel chip row with an Embla carousel that
switches channel previews inside the clipped embed card, with progress dots
and a fixed overlay that updates from the active slide index.

- Add shadcn-style Carousel wrapper and embla-carousel-react dependency
- Refactor ProfileLiveActivityEmbed to one slide per channel with lazy-mounted
  ManagedAgentSessionPanel instances (data-mounted on each slide)
- Keep overlay gradient, Latest Activity label, channel name, and dots static
  while only slide content translates within the rounded frame
- Update channels E2E for current labels and add multi-channel dot switching
  coverage including lazy-mount assertions

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Make compact activity feed typography consistently use compact text sizing across tool rows, sent-message previews, todo summaries, and shared activity row labels.
- Avoid conflicting `text-sm` and `text-xs` classes in compact message containers so compact sizing wins reliably.
- Remove the top overlay fade from the profile activity card and strengthen the bottom fade for better label and carousel-dot readability.
- Preserve the refined carousel dot hit targets and compact activity label treatment in the profile preview card.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho tellaho force-pushed the tho/profile-live-activity-embed branch from 835b230 to df07da3 Compare July 1, 2026 07:18
tellaho added 3 commits July 1, 2026 00:19
Only render pagination when two or more channel slides exist, and update
the single-channel profile activity E2E to assert dots stay hidden.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Make expandable activity row summaries full-width instead of shrink-wrapped so grouped labels stay aligned to the left edge in compact profile previews.
- Preserve the existing row spacing, chevron behavior, and open-state coloring while preventing centered-looking group labels such as `Ran 4 commands`.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Add a loading empty state for agent transcripts so active profile activity embeds show a spinner while waiting for ACP events to arrive.
- Pass the live pending state from the profile activity feed into the managed session panel with copy that sets expectations for incoming events.
- Move compact embed vertical padding from the panel wrapper to the transcript scroll container so transcript content can scroll and clip against the card bounds correctly.

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