-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
[Feature]: Make native chat scrolling reader-managed #98255
Copy link
Copy link
Closed
Labels
P3Low-priority cleanup, docs, polish, ergonomics, or speculative work.Low-priority cleanup, docs, polish, ergonomics, or speculative work.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.
Description
Metadata
Metadata
Assignees
Labels
P3Low-priority cleanup, docs, polish, ergonomics, or speculative work.Low-priority cleanup, docs, polish, ergonomics, or speculative work.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.
Type
Fields
Priority
None yet
Summary
Add reader-managed scroll behavior to the native iOS and Android chat transcripts.
Problem to solve
The native chat surfaces currently keep moving the transcript when new messages, active runs, or streaming assistant text arrive. That is useful at the live edge, but it works against users who have intentionally scrolled up to read earlier context, select text, or inspect a previous answer.
In long mobile conversations this makes the transcript feel unstable: a new assistant chunk, pending tool row, or finished reply can pull the reader away from what they were reading.
Proposed solution
Update the iOS SwiftUI chat view and Android Compose chat lists to follow only while the reader is already at the latest reply. When the reader scrolls away, new content should arrive offscreen, an unobtrusive "Jump to latest" affordance should appear, and tapping it should resume following.
The chat should also restore long sessions near the latest meaningful user turn instead of blindly forcing the absolute bottom, and a newly-sent prompt should be placed with some prior context visible so the response can stream into available space.
Alternatives considered
Keep always-following chat behavior. That is simpler, but it makes long transcripts harder to read and causes the app to move against user intent.
Add only a manual scroll-to-bottom button. That helps recovery, but without pausing follow mode when the reader scrolls away the transcript can still steal position during streaming.
Impact
Affected: iOS and Android app users reading or reviewing longer chat sessions.
Severity: Medium UX issue; not a crash, but it directly affects trust and readability in active assistant sessions.
Frequency: Common in longer chats and while assistant replies are streaming.
Consequence: Users lose their reading position and have to repeatedly scroll back to context they were inspecting.
Evidence/examples
The current iOS chat view updates
scrollPositionto the bottom on send, message count changes, pending run changes, and streaming text changes. Android chat lists animate to a timeline target whenever the timeline changes. Those paths are visible inapps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swiftandapps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt/ChatMessageListCard.kt.Additional information
This is a focused native-app UX contribution. It should not change gateway protocol, chat transport, or persisted message models.