iOS UX: add channel-scoped agent profiles with threads and recent tool activity
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
## Summary
Add an agent-specific profile experience on iOS that can be scoped to the current channel and used to browse where the agent is active: channel/thread appearances and recent tool calls.
The existing profile sheet treats agents like general users. From mobile, a user can inspect identity and start a DM, but cannot answer: "Where is this agent being used in this channel?" or "What did it do recently?"
## Proposed UX
- Open an agent profile from a member row, mention, typing indicator, or activity view.
- Default to the current channel when launched from a channel or thread.
- Provide swipeable/tabs views for **Profile**, **Threads**, and **Recent activity**.
- In **Threads**, list the current channel's threads/conversations where the agent was mentioned or participated, with navigation back to each source.
- In **Recent activity**, show the agent's recent channel-scoped observer/tool transcript with timestamps and source links.
- Allow changing the channel scope when the agent is present in multiple channels.
- Keep owner-only/decrypted observer data subject to the existing authorization model; do not expose private tool payloads to unauthorized members.
## Source references
- [`user_profile_sheet.dart`](https://github.com/block/buzz/blob/2ea9385015fb922de2adf0a53e86fc5a21d07b90/mobile/lib/features/profile/user_profile_sheet.dart#L23-L80) accepts only a pubkey and has no channel/agent activity context.
- [`user_profile_sheet.dart`](https://github.com/block/buzz/blob/2ea9385015fb922de2adf0a53e86fc5a21d07b90/mobile/lib/features/profile/user_profile_sheet.dart#L117-L221) builds a general identity/profile action sheet rather than an agent workspace view.
- [`agent_activity_sheet.dart`](https://github.com/block/buzz/blob/2ea9385015fb922de2adf0a53e86fc5a21d07b90/mobile/lib/features/channels/agent_activity/agent_activity_sheet.dart#L14-L40) already has a channel-and-agent-scoped activity surface that can be reused.
- [`observer_subscription.dart`](https://github.com/block/buzz/blob/2ea9385015fb922de2adf0a53e86fc5a21d07b90/mobile/lib/features/channels/agent_activity/observer_subscription.dart#L15-L35) defines the existing channel-scoped observer key and transcript state.
## Related work
This is narrower than the workspace-wide fleet view in #4169 and the remote-agent roster in #3996. It focuses on an individual agent's channel context and recent work on iOS. See also #3907 for mobile activity visibility and #5062 for the prior THREAD/client UX report.
Contributor guide
Research direction
Start with mobile/lib/features/profile/user_profile_sheet.dart and compare it with mobile/lib/features/channels/agent_activity/agent_activity_sheet.dart and observer_subscription.dart. Define the channel-scoped agent profile flow around the existing observer key and transcript state; done means Profile, Threads, and Recent activity views support source navigation, channel changes, and the existing authorization rules.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- dart, flutter, ios
- Domain
- mobile
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100