Skip to content

Transcript scroll locks during agent runs; view rubber-bands back to sent message #111

Description

@arepodotbtc

Before filing

Closest existing issue

none found; nearest are merged PRs #72 and #46 (transcript anchoring)

What's broken

While an agent turn is running, the transcript cannot be scrolled: manual scrolling rubber-bands back to the sent message until the entire run (including silent tool activity) finishes.

Steps to reproduce

  1. Launch Berd 0.6.2 on macOS
  2. Open a chat on the Claude Code (claude-acp) harness, model Claude Fable 5 [1m]; chat had prior history (observed across multiple chats, ~100+ messages in the main one)
  3. Send a message that triggers a long agent turn with tool calls
  4. While the run indicator is active, scroll down with trackpad or wheel
  5. The view snaps back to the top of the sent message on each new content chunk; scrolling past it is impossible until the whole turn completes
    Note: this persists after the reply text looks finished, as long as the session is still running. Verified via berdctl session get showing chat_state "streaming" / is_running true while the reply appeared complete and scrolling was still locked.

What you expected to happen

Manual scroll input cancels auto-follow immediately; auto-follow resumes only if I return to the bottom.

What actually happened

Scroll position is re-anchored to my sent message on every content resize for the entire agent run, including while tools run silently after the reply text appears finished. In agentic chats a single turn can run for minutes, leaving the transcript unscrollable the whole time.

How often does it happen?

Every time — reliably reproducible

Berd version

0.6.2

Operating system

macOS (Apple Silicon)

Model and provider

Claude Fable 5 [1m] via claude-acp (Claude Code harness)

Relevant log output

[2026-08-19][04:07:09][berd_lib::services::diagnostic_log][ERROR] [diagnostic] category=renderer event=window_error app_version=0.6.2 platform=macos columnNumber=0 errorName=Error filename=tauri://localhost/ lineNumber=0 message="ResizeObserver loop completed with undelivered notifications." stack="" windowKind=main
[2026-08-19][04:07:27][... identical ...]
[2026-08-19][04:07:29][... identical ...]
These repeat at exactly the moments the rubber-banding occurs, consistent with scroll anchoring re-firing on every content resize instead of yielding to user scroll.

Screenshots, recordings, or other context

Possibly related: PR #72 and PR #46 both touched auto-follow / row anchoring in VirtualMessageTimeline.tsx; this looks like the inverse case, where the anchor set at send time keeps overriding user scroll while the session is running. Im unable to upload a video of the issue. It keeps saying upload failed. That said, it is easy to reproduce.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions