From e52d5b7d51b5ba5f3e1c879b823d027c826b1ae2 Mon Sep 17 00:00:00 2001 From: Nicolas Varrot Date: Sun, 15 Feb 2026 17:09:14 +0000 Subject: [PATCH] fix: move message action buttons inside bubble, no more overflow clipping --- src/components/ChatMessage.tsx | 46 ++++++++++++---------------------- 1 file changed, 16 insertions(+), 30 deletions(-) diff --git a/src/components/ChatMessage.tsx b/src/components/ChatMessage.tsx index 534d2c9..e4278c8 100644 --- a/src/components/ChatMessage.tsx +++ b/src/components/ChatMessage.tsx @@ -312,27 +312,6 @@ function InternalOnlyMessage({ message }: { message: ChatMessageType }) { ); } -function CopyButton({ text }: { text: string }) { - const [copied, setCopied] = useState(false); - const handleCopy = useCallback(() => { - navigator.clipboard.writeText(text).then(() => { - setCopied(true); - setTimeout(() => setCopied(false), 2000); - }); - }, [text]); - - return ( - - ); -} - function MetadataViewer({ metadata }: { metadata?: Record }) { const [open, setOpen] = useState(false); const btnRef = useRef(null); @@ -529,29 +508,36 @@ export const ChatMessageComponent = memo(function ChatMessageComponent({ message : 'bg-[rgba(var(--pc-accent-rgb),0.08)] text-pc-text border border-[rgba(var(--pc-accent-rgb),0.2)]') : 'bg-pc-elevated/40 text-pc-text border border-pc-border shadow-[0_0_0_1px_rgba(255,255,255,0.03)]' }`}> - {/* Action buttons */} - {!isUser && !message.isStreaming && getPlainText(message).trim() && ( - - )} -
+ {/* Action buttons — bottom-right toolbar, inside the bubble */} +
+ {!isUser && !message.isStreaming && getPlainText(message).trim() && ( + + )} {onReply && ( )} {onToggleBookmark && ( )}