block / block/buzz

iOS UX: make active-agent indicators open channel-scoped tool activity

Open
#5,066 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

## Summary

On iOS, active-agent indicators should be reliable navigation targets into that agent's existing channel-scoped tool activity. Today the activity transcript exists, but access is inconsistent and unnecessarily hidden.

## Current behavior

- The channel member row becomes directly tappable only while `isWorking` is true.
- When the agent is not currently marked working, **View activity** is still available only through the trailing overflow menu.
- Other active/typing indicators do not provide a consistent, obvious path to the same tool transcript.
- A presence reconnect mismatch can remove or contradict the state users rely on to discover the entry point.

## Expected behavior

1. Tapping an agent's visible typing/working indicator should open that agent's activity for the current channel.
2. Agent rows and profiles should expose a consistent **View activity** action regardless of transient working state.
3. The destination should preserve channel context and show the existing live tool-call transcript and connection/error state.
4. If activity cannot be loaded after reconnect, show the actual observer connection state rather than silently disabling navigation.

## Source references

- [`members_sheet.dart`](https://github.com/block/buzz/blob/2ea9385015fb922de2adf0a53e86fc5a21d07b90/mobile/lib/features/channels/members_sheet.dart#L121-L142) only assigns the row tap callback when the bot is currently in the typing-derived working set.
- [`members_sheet.dart`](https://github.com/block/buzz/blob/2ea9385015fb922de2adf0a53e86fc5a21d07b90/mobile/lib/features/channels/members_sheet.dart#L280-L333) keeps **View activity** in the overflow action sheet.
- [`agent_activity_sheet.dart`](https://github.com/block/buzz/blob/2ea9385015fb922de2adf0a53e86fc5a21d07b90/mobile/lib/features/channels/agent_activity/agent_activity_sheet.dart#L14-L40) already accepts both `channelId` and `agentPubkey` and displays the live transcript.
- [`observer_subscription.dart`](https://github.com/block/buzz/blob/2ea9385015fb922de2adf0a53e86fc5a21d07b90/mobile/lib/features/channels/agent_activity/observer_subscription.dart#L327-L343) already filters observer frames by agent and channel.

## Scope

This is an iOS discoverability and navigation UX issue, not a request to invent a new tool-call transport or transcript. It is a focused companion to the broader mobile activity proposals in #3907 and #4169.

Related THREAD/client visibility issue: #5061.

Contributor guide

Open the contributing guide

Research direction

Start with mobile/lib/features/channels/members_sheet.dart, especially the row callback and overflow action sections, then read agent_activity_sheet.dart and observer_subscription.dart to trace channel and agent context. Done means visible typing or working indicators and agent rows/profiles consistently open the existing channel-scoped transcript, while reconnect failures expose the observer connection state.

Written by the indexing model from the issue text.

Assessment

Tech stack
dart, flutter, ios
Domain
mobile
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.