diff --git a/langgraph/src/components/ChatMessages.tsx b/langgraph/src/components/ChatMessages.tsx
index 4f1ffc2..f343054 100644
--- a/langgraph/src/components/ChatMessages.tsx
+++ b/langgraph/src/components/ChatMessages.tsx
@@ -332,9 +332,9 @@ export function ChatMessages({
/>
)}
- {(plainTextContent || hasThinking) && !hasToolCalls && (
+ {(plainTextContent || hasThinking) && (
-
+
{thread.isLoading && isLastAi && (
)}
@@ -345,6 +345,24 @@ export function ChatMessages({
)}
+ {/* Timestamp for tool-only messages (no text bubble) */}
+ {hasToolCalls && !plainTextContent && !hasThinking && (
+
+ {(() => {
+ const ts = (message as any).created_at;
+ const date = ts ? new Date(ts) : new Date();
+ const now = new Date();
+ const isToday = date.getFullYear() === now.getFullYear() && date.getMonth() === now.getMonth() && date.getDate() === now.getDate();
+ const hh = String(date.getHours()).padStart(2, "0");
+ const mm = String(date.getMinutes()).padStart(2, "0");
+ if (isToday) return `${hh}:${mm}`;
+ const mo = String(date.getMonth() + 1).padStart(2, "0");
+ const dd = String(date.getDate()).padStart(2, "0");
+ return `${mo}/${dd} ${hh}:${mm}`;
+ })()}
+
+ )}
+
{/* Stopped indicator: shown when AI produced no content and generation was interrupted */}
{!plainTextContent && !hasThinking && !hasToolCalls && !thread.isLoading && isLastAi && (
回复已停止
diff --git a/langgraph/src/components/ConfigPanel.tsx b/langgraph/src/components/ConfigPanel.tsx
index 706c1d1..ee8eec4 100644
--- a/langgraph/src/components/ConfigPanel.tsx
+++ b/langgraph/src/components/ConfigPanel.tsx
@@ -43,7 +43,7 @@ export function ConfigPanel({
"inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium transition-colors",
modelMode === value
? "bg-primary text-primary-foreground"
- : "bg-muted text-muted-foreground hover:bg-accent hover:text-foreground",
+ : "bg-muted text-muted-foreground hover:bg-accent/80 hover:text-foreground hover:ring-1 hover:ring-border",
)}
>
@@ -65,7 +65,7 @@ export function ConfigPanel({
"inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium transition-colors",
activeTools.size === 0
? "bg-primary text-primary-foreground"
- : "bg-muted text-muted-foreground hover:bg-accent hover:text-foreground",
+ : "bg-muted text-muted-foreground hover:bg-accent/80 hover:text-foreground hover:ring-1 hover:ring-border",
)}
>
@@ -83,7 +83,7 @@ export function ConfigPanel({
"inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium transition-colors",
isOn
? "bg-primary text-primary-foreground"
- : "bg-muted text-muted-foreground hover:bg-accent hover:text-foreground",
+ : "bg-muted text-muted-foreground hover:bg-accent/80 hover:text-foreground hover:ring-1 hover:ring-border",
)}
>