block / block/buzz

feat(mobile): allow selecting and copying a portion of message text

Open
#6,165 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.