feat(mobile): allow selecting and copying a portion of message text
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
On the mobile client, I can’t highlight part of a message and copy just that. Long-press opens the action sheet and **Copy text** puts the whole `message.content` on the clipboard. That’s fine for a short line, not for grabbing a URL, a command, or a quote out of a longer message.
## Current behavior
- Channel / thread bubbles render through `MessageContent` → `GptMarkdown` with selection off
- `MessageLongPressInkWell` owns the long-press and cancels the pointer, so the body never gets a system selection
- Forum posts have the same copy-all sheet
- Code blocks already have a copy-all button (that can stay)
## Desired behavior
- Select a substring in a message and copy it with the platform handles / context menu (iOS and Android)
- Keep the existing long-press sheet (reactions, reply, copy-all, edit, delete)
- Don’t break taps on links, mentions, channel chips, media, or reactions
## Suggested approach
Add a **Select text** row on the action sheet that puts that message into a selection mode (`SelectionArea` / `GptMarkdown(selectable: true)`), turns off the long-press interceptor while selecting, then lets the user highlight and copy. Same path for channel, thread, and forum bodies.
Happy to take a better gesture split if maintainers prefer long-press-drag to select without a mode.
I can follow with a focused `feat(mobile):` PR if this approach looks right.
## Related
None found for mobile message-body selection. Closest open issues are about other surfaces:
- #5226 — iOS *composer* long-press copy/paste menu flicker
- #5434 — code-block copy affordance
- #5827 — desktop reply-to-selected-text
- #2873 — copy an entire thread
Contributor guide
Research direction
Start at MessageContent, GptMarkdown, and MessageLongPressInkWell to trace how channel, thread, and forum bodies handle selection and long-press gestures. Compare the existing action-sheet copy-all path with Flutter's SelectionArea or selectable markdown behavior. Done means users can select and copy a substring on iOS and Android while the action sheet and taps on links, mentions, chips, media, and reactions still work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, flutter, ios
- Domain
- mobile
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100