Repository navigation
feat(mobile): Telegram-style tap menu and long-press selection on Android - #4005
Merged
Merged
Conversation
The header pills, composer field and jump-to-latest button drew the same rim, highlight and shadow from two token sets. One `island` token set now feeds `islandStyle` (React Native) and `composeIsland` (Compose), and DESIGN.md states the rule so new floating chrome reuses it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… press Android follows Telegram: a tap opens the menu anchored to the bubble (reaction island above, action island below, icons first), a long press selects the message, and selection turns the header into close, count and Copy/Screenshot islands with Reply and Feedback islands in place of the composer. Double tap no longer reacts on Android. iOS and the Web are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tion Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 6 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
The root typecheck includes the mobile tests; importing the theme type pulled React Native's timer globals into the Node packages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DoodleBears
changed the base branch from
claude/android-composer-island
to
main
November 11, 2026 12:08
…-spec # Conflicts: # apps/mobile/DESIGN.md
…and-spec # Conflicts: # apps/mobile/src/ui/design/tokens.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #3955. Stacked on #4001 (composer island). Product request: align message tap, long press and multi-select with Telegram Android, keeping our own actions. Android only.
1. Islands are one spec
The header pills, composer field and jump-to-latest button drew the same look from two token sets. Now:
islandtoken set feedsislandStyle,islandRim,islandHighlightandislandShadow(React Native) andcomposeIsland(Compose);DESIGN.mdgains an Islands rule: floating chrome over content is an opaqueraisedfill with a hairline rim, a top inner highlight and a soft shadow, never a blur, and edges fade withisland.fade.The tap menu and the selection bars below use it.
2. Tap opens the menu next to the message
ModalBottomSheetis gone. The anchored menu moves tomessage-popover.tsx, andmessage-actions.tsxandmessage-actions.android.tsxboth re-export it (iOS keeps its own sheet).3. Long press selects
SelectionBar.Not in this PR
EXPO_PUBLIC_NATIVE_ROWSon, plain-text and Markdown native rows won't open the menu or select. The flag is off by default; routing taps fromChatRecyclerViewis a follow-up.expo-blurandmasked-viewcleanup, as before.Verification
island.test.ts: the island helpers.message-popover-android.test.tsx: reaction island and actions; a reaction toggles and closes; an action runs and closes.message-bubble.test.tsx: on Android with selection, a long press selects and two taps don't react.account-hostsandpairing-certificate, which expect English text and fail under this machine's Chinese locale.pnpm lint,pnpm format:check,pnpm changelog:checkand the mobile typecheck pass.23addd8cf201,baselinearm (default flags, React rows), light and dark:🤖 Generated with Claude Code