block / block/buzz

THREAD UX: wheel scrollback and pasted agent mentions are unreliable

Open
#5,062 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

**THREAD context**

This occurs while using Buzz's channel chat and THREAD workflow. Two related composer/timeline interactions make it difficult to review prior agent work and reuse an existing agent mention.

**Describe the usability problem**

1. Mouse-wheel input over the chat does not reliably let the user move upward through prior messages in the THREAD/channel conversation.
2. Copying an existing message that contains an `@Agent Name` mention and pasting it into the composer can leave plain text rather than resolving the matching agent identity and mention metadata.

The second behavior is especially confusing because the pasted text visually still contains `@Agent Name`, but sending it may not notify or wake that agent.

**Steps to reproduce: scrollback**

1. Open a channel or THREAD with enough messages to exceed the visible viewport and initial history window.
2. Place the pointer over the message timeline.
3. Scroll upward with the mouse wheel.
4. Observe that older messages may not become reachable or older-history pagination does not reliably advance.

**Steps to reproduce: pasted mention**

1. Copy a rendered Buzz message containing an existing agent mention such as `@Inference Ops`.
2. Paste it into the channel composer.
3. Send the message without manually deleting and reselecting the name from autocomplete.
4. Observe that the pasted `@Agent Name` can remain presentation text without the agent's pubkey mention metadata.

**Expected behavior**

- Wheel-up over the timeline should move through loaded history and fetch older messages at the boundary while preserving the reader's visible position.
- A uniquely matching pasted agent mention should resolve to the eligible channel agent and produce the same mention metadata as selecting it from autocomplete.
- Ambiguous or ineligible names should remain unresolved and prompt the user to select a target; Buzz must not guess the wrong identity.

**Version and platform**

- Buzz version: unknown
- OS: unknown

**File references / additional context**

- [`TimelineMessageList.tsx`](https://github.com/block/buzz/blob/2ea9385015fb922de2adf0a53e86fc5a21d07b90/desktop/src/features/messages/ui/TimelineMessageList.tsx#L706-L749) initiates older-history loading near the virtualized timeline boundary.
- [`useUpwardPaginationWheel.ts`](https://github.com/block/buzz/blob/2ea9385015fb922de2adf0a53e86fc5a21d07b90/desktop/src/features/messages/ui/useUpwardPaginationWheel.ts#L13-L57) intercepts and suppresses upward wheel momentum around pagination.
- [`useFetchOlderMessages.ts`](https://github.com/block/buzz/blob/2ea9385015fb922de2adf0a53e86fc5a21d07b90/desktop/src/features/messages/useFetchOlderMessages.ts#L52-L80) owns older-history fetches.
- [`MessageComposer.tsx`](https://github.com/block/buzz/blob/2ea9385015fb922de2adf0a53e86fc5a21d07b90/desktop/src/features/messages/ui/MessageComposer.tsx#L784-L798) detects Buzz mention HTML during paste.
- [`normalizeMentionClipboard.ts`](https://github.com/block/buzz/blob/2ea9385015fb922de2adf0a53e86fc5a21d07b90/desktop/src/features/messages/lib/normalizeMentionClipboard.ts#L9-L31) intentionally replaces mention wrappers with plain spans, which preserves visible text but removes identity-bearing attributes.

Contributor guide

Open the contributing guide

Research direction

Start with TimelineMessageList.tsx, useUpwardPaginationWheel.ts, and useFetchOlderMessages.ts to trace wheel handling and older-history loading, then inspect MessageComposer.tsx and normalizeMentionClipboard.ts for pasted mentions. Done means upward wheel scrolling reaches older history while preserving position, and uniquely matching eligible pasted mentions retain identity metadata without resolving ambiguous names.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
desktop, frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.