You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug] Scope message selection to the active conversation #4077
PR #4105 addresses the chrome-contamination half of this issue.
Root cause confirmed: zero select-none / user-select on any interactive message chrome — the hover action bar, quick-reaction buttons, reaction pills, and inline add-reaction trigger were all selection-transparent, so a native macOS drag-select swept them up along with message text.
Fix: added Tailwind select-none to the two interaction roots — MessageActionBar (desktop/src/features/messages/ui/MessageActionBar.tsx:438) and MessageReactions (desktop/src/features/messages/ui/MessageReactions.tsx:247). user-select: none propagates to children, so quick reactions, the more-actions menu, reaction pills, the inline picker trigger, and the emoji-picker popover are all excluded.
Out of scope for this PR: full channel↔thread selection isolation in split view would require clipping selection at component boundaries (user-select: contain is not universally supported). Suggest evaluating a follow-up based on real-world reports after this lands.
Out of scope: message bodies, timestamps, and ordinary metadata remain selectable per the issue's expected behavior — only overlaid interactive chrome is excluded.
Verification: tsc --noEmit clean; build:e2e clean; reaction-order / inbox-reactions playwright specs fail identically on unmodified main (pre-existing env flake, unrelated to this change). Manual macOS reproduction would confirm drag-select now stops at the chrome boundary.
Root cause: the conversation split view never scoped native drag-selections, so a selection starting in one pane could cross into sibling panes and pull in hover chrome (action bars, quick reactions, reaction pills, emoji pickers, popovers) along the way.
The fix:
Channel / thread / right-auxiliary panes now carry a data-selection-pane marker.
Hover chrome and overlays that must never participate in a selection are marked data-selection-exclude + select-none.
A useConversationSelectionScope hook on the shared conversation root listens for selectionchange; once a drag is anchored inside a pane, the escaping focus end is clamped back to the pane boundary — so channel selection stays in the channel, thread selection stays in the thread.
Message text, timestamps, and ordinary metadata remain selectable; composers, inputs, contenteditables, and dialogs/popovers keep their native behavior.
Still reproducible on macOS Desktop v0.5.28: copying a few messages pastes the quick-reaction emojis (👍 😂 ❤️) after every message, plus "Copy code block" and the "NEW" divider, with extra blank lines in between. #4105 looks like it would fix the main part of this. Could someone take a look at it?
Activity
fix(desktop): keep hover action bar & reaction pills out of text sele…
iroiro147 commentedon Aug 1, 2026
PR #4105 addresses the chrome-contamination half of this issue.
select-none/user-selecton any interactive message chrome — the hover action bar, quick-reaction buttons, reaction pills, and inline add-reaction trigger were all selection-transparent, so a native macOS drag-select swept them up along with message text.select-noneto the two interaction roots —MessageActionBar(desktop/src/features/messages/ui/MessageActionBar.tsx:438) andMessageReactions(desktop/src/features/messages/ui/MessageReactions.tsx:247).user-select: nonepropagates to children, so quick reactions, the more-actions menu, reaction pills, the inline picker trigger, and the emoji-picker popover are all excluded.user-select: containis not universally supported). Suggest evaluating a follow-up based on real-world reports after this lands.tsc --noEmitclean;build:e2eclean; reaction-order / inbox-reactions playwright specs fail identically on unmodifiedmain(pre-existing env flake, unrelated to this change). Manual macOS reproduction would confirm drag-select now stops at the chrome boundary.iroiro147 commentedon Aug 2, 2026
Fixed in #4272.
Root cause: the conversation split view never scoped native drag-selections, so a selection starting in one pane could cross into sibling panes and pull in hover chrome (action bars, quick reactions, reaction pills, emoji pickers, popovers) along the way.
The fix:
data-selection-panemarker.data-selection-exclude+select-none.useConversationSelectionScopehook on the shared conversation root listens forselectionchange; once a drag is anchored inside a pane, the escaping focus end is clamped back to the pane boundary — so channel selection stays in the channel, thread selection stays in the thread.palmentropyc commentedon Nov 11, 2026
Still reproducible on macOS Desktop v0.5.28: copying a few messages pastes the quick-reaction emojis (👍 😂 ❤️) after every message, plus "Copy code block" and the "NEW" divider, with extra blank lines in between. #4105 looks like it would fix the main part of this. Could someone take a look at it?