Skip to content

feat(mobile): add channel scroll navigation - #4239

Open
tellaho wants to merge 5 commits into
mainfrom
tho/mobile-channel-scroll-navigation
Open

feat(mobile): add channel scroll navigation#4239
tellaho wants to merge 5 commits into
mainfrom
tho/mobile-channel-scroll-navigation

Conversation

@tellaho

@tellaho tellaho commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Category: improvement
User Impact: Mobile readers can jump directly to their oldest unread message and return to the latest message with compact directional controls.
Problem: Opening an active channel at its newest message makes it easy to miss where unread conversation began, while moving back through history lacks a lightweight route to the live edge.
Solution: Capture the channel's unread boundary when it opens, offer an accessible up-chevron beneath the app bar to reach that stable target, then reveal the inverse down-chevron at the bottom whenever the reader is away from latest. Deep links retain precedence, and live-follow, pagination, composer resizing, and explicit scroll ownership continue to use the existing timeline behavior.

File changes

mobile/lib/features/channels/channel_detail_page.dart
Captures the channel's read state at open time and passes a stable unread snapshot into the timeline before the normal deferred read update advances it.

mobile/lib/features/channels/channel_detail_page/message_list.dart
Adds mutually exclusive oldest-unread and latest navigation, with accessible icon controls positioned at opposite edges of the message surface while preserving existing follow and deep-link behavior.

mobile/test/features/channels/channel_detail_page_test.dart
Covers the unread target, compact inverse controls, accessible tooltips, and placement beneath the frosted app bar.

Reproduction steps

  1. Open a Flutter mobile channel that has unread messages without entering through a message or thread deep link.
  2. Confirm an up-chevron appears directly below the channel app bar while the timeline remains at latest.
  3. Tap the up-chevron and confirm the timeline scrolls to the oldest message that was unread when the channel opened.
  4. Confirm the unread control is replaced by a down-chevron at the bottom of the timeline.
  5. Tap the down-chevron and confirm the timeline returns to latest and resumes following new messages.

Screenshots

At latest — up-chevron to oldest unread Away from latest — down-chevron to latest
Up-chevron beneath the mobile channel app bar Down-chevron above the mobile channel composer

Real iPhone 17 Pro Simulator captures from the neutral buzz-mobile-scroll-to channel.

Originating Buzz thread: buzz://message?channel=5b16c478-22d8-4ddd-951a-6036e19b81ff&id=6a78af32d7ac6f531b182c4e70dd5a04c503a2dab2ce2c0c74b2c6baa5921741&thread=6a78af32d7ac6f531b182c4e70dd5a04c503a2dab2ce2c0c74b2c6baa5921741

npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w and others added 2 commits August 1, 2026 20:18
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho

tellaho commented Aug 2, 2026

Copy link
Copy Markdown
Contributor Author

@codex

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 30192c8d1f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread mobile/lib/features/channels/channel_detail_page/message_list.dart Outdated
Comment thread mobile/lib/features/channels/channel_detail_page.dart Outdated
Comment thread mobile/lib/features/channels/channel_detail_page.dart Outdated
npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w and others added 3 commits August 1, 2026 21:08
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho
tellaho marked this pull request as ready for review August 2, 2026 04:17
@tellaho
tellaho requested a review from a team as a code owner August 2, 2026 04:17
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.

1 participant