From 37a68fc5c08e1ba2b0e44af949ffe18858db68f9 Mon Sep 17 00:00:00 2001 From: Jiayuan Zhang Date: Tue, 17 Feb 2026 01:34:59 +0800 Subject: [PATCH] feat(desktop): add collapsible queued message panel --- .../src/components/queued-message-bar.tsx | 79 +++++++++++++------ 1 file changed, 54 insertions(+), 25 deletions(-) diff --git a/apps/desktop/src/renderer/src/components/queued-message-bar.tsx b/apps/desktop/src/renderer/src/components/queued-message-bar.tsx index 32b058d3..55a6fdda 100644 --- a/apps/desktop/src/renderer/src/components/queued-message-bar.tsx +++ b/apps/desktop/src/renderer/src/components/queued-message-bar.tsx @@ -1,3 +1,4 @@ +import { useMemo, useState } from 'react' import type { QueuedLocalMessage } from '../hooks/use-local-chat' interface QueuedMessageBarProps { @@ -8,45 +9,73 @@ interface QueuedMessageBarProps { } export function QueuedMessageBar({ messages, isRunning, onRemove, onClear }: QueuedMessageBarProps) { + const [expanded, setExpanded] = useState(false) + if (messages.length === 0) return null const statusText = isRunning ? 'Agent is running. Queued messages will send automatically.' : 'Queued messages are being sent.' + const firstMessagePreview = useMemo(() => { + const text = messages[0]?.text ?? '' + if (text.length <= 120) return text + return `${text.slice(0, 120)}...` + }, [messages]) + return (
-
- +
+
{messages.length} queued message{messages.length > 1 ? 's' : ''} - - +
+
+ {messages.length > 1 && ( + + )} + +
{statusText}
-
- {messages.slice(0, 3).map((item) => ( -
-
{item.text}
- + {expanded ? ( +
+
+ {messages.map((item) => ( +
+
{item.text}
+ +
+ ))}
- ))} - {messages.length > 3 && ( -
- +{messages.length - 3} more +
+ ) : ( +
+
+ {firstMessagePreview}
- )} -
+ {messages.length > 1 && ( +
+ +{messages.length - 1} more +
+ )} +
+ )}
)