From ccf248c332a03b3cb5232cc931096ecb039eea16 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Tue, 28 Apr 2026 12:13:31 +0700 Subject: [PATCH] fix(app): contain triple-click selection to one message bubble Triple-clicking a message extended the document Range across the sibling composer and into the textarea, copying both on Cmd+C. Mark the messages region non-selectable on web and re-enable selection on each bubble's outer container so triple-click stays scoped. --- packages/app/src/components/message.tsx | 2 ++ packages/app/src/panels/agent-panel.tsx | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/app/src/components/message.tsx b/packages/app/src/components/message.tsx index fe08422c7..a2fd52421 100644 --- a/packages/app/src/components/message.tsx +++ b/packages/app/src/components/message.tsx @@ -318,6 +318,7 @@ const userMessageStylesheet = StyleSheet.create((theme) => ({ flexDirection: "row", justifyContent: "flex-end", paddingHorizontal: theme.spacing[2], + userSelect: isWeb ? "text" : "auto", }, content: { alignItems: "flex-end", @@ -492,6 +493,7 @@ export const assistantMessageStylesheet = StyleSheet.create((theme) => ({ container: { paddingHorizontal: theme.spacing[2], paddingVertical: theme.spacing[3], + userSelect: isWeb ? "text" : "auto", }, containerCompactTop: { paddingTop: 0, diff --git a/packages/app/src/panels/agent-panel.tsx b/packages/app/src/panels/agent-panel.tsx index 5cacad59b..8c48415c5 100644 --- a/packages/app/src/panels/agent-panel.tsx +++ b/packages/app/src/panels/agent-panel.tsx @@ -14,7 +14,7 @@ import { FileDropZone } from "@/components/file-drop-zone"; import type { ImageAttachment } from "@/components/message-input"; import { getProviderIcon } from "@/components/provider-icons"; import { ToastViewport, useToastHost } from "@/components/toast-host"; -import { isNative } from "@/constants/platform"; +import { isNative, isWeb } from "@/constants/platform"; import { useAgentAttentionClear } from "@/hooks/use-agent-attention-clear"; import { useAgentInitialization } from "@/hooks/use-agent-initialization"; import { useAgentInputDraft } from "@/hooks/use-agent-input-draft"; @@ -1349,6 +1349,7 @@ const styles = StyleSheet.create((theme) => ({ contentContainer: { flex: 1, overflow: "hidden", + ...(isWeb ? { userSelect: "none" as const } : {}), }, content: { flex: 1,