Skip to content

fix(mobile): avoid bottom-edge scroll bounce - #5911

Open
cachacon-ai wants to merge 1 commit into
block:mainfrom
cachacon-ai:fix/mobile-ios-bottom-bounce
Open

fix(mobile): avoid bottom-edge scroll bounce#5911
cachacon-ai wants to merge 1 commit into
block:mainfrom
cachacon-ai:fix/mobile-ios-bottom-bounce

Conversation

@cachacon-ai

Copy link
Copy Markdown

Summary

  • keep passive channel live updates pinned without restarting bottom-edge animations
  • skip thread-tail scrolls when the newly laid-out tail is already visible
  • only follow live agent activity when the reader was at its tail, using a coalesced instant correction

Validation

  • cd mobile && flutter test test/features/channels/channel_detail_page_test.dart
  • cd mobile && flutter analyze lib/features/channels/channel_detail_page.dart lib/features/channels/thread_detail_page.dart lib/features/channels/agent_activity/agent_activity_sheet.dart test/features/channels/channel_detail_page_test.dart

Fixes repeated iOS rubber-banding during rapid agent updates while preserving user-detached scroll positions.

Signed-off-by: cachacon-ai <189557328+cachacon-ai@users.noreply.github.com>
@cachacon-ai
cachacon-ai requested a review from a team as a code owner August 14, 2026 21:35

@themiguelamador themiguelamador left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR fails two required mobile gates. The pinned Dart formatter rewrites agent_activity_sheet.dart, message_list.dart, and the new widget test, so dart format --output=none --set-exit-if-changed . exits nonzero. After formatting, the file-size ratchet also rejects thread_detail_page.dart at 1,004 lines against the 1,000-line cap. These failures block just mobile-check/CI even though the behavior tests pass.

I fixed both in commit f6e17b624 (branch review/pr-5911-fix): applied the repository formatter and removed the redundant four-line explanation around the self-explanatory threadTailIsVisible() guard, bringing the file to 999 lines without changing behavior.

Verified with the focused channel detail suite (122 tests), just mobile-check, all 1,400 mobile tests, and git diff --check. Per repository policy, I did not run Flutter build/run/clean/upgrade commands.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants