fix(ui): fix ToolCallStatus duplicate label + add fade-in to standalone cards
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 15s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 44s

- Fix ToolCallStatus label duplication: label span was shown twice when
  failed/done; consolidate into a single span with correct copy
- Add animate-in fade-in duration-300 wrapper to standalone Gen-UI cards
  and streaming orphan cards in main.tsx (already present in ToolCallStatus
  expanded view)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
gongzhiyong
2026-04-11 22:34:59 +08:00
co-authored by Claude Sonnet 4.6
parent 3b1ce32bc4
commit 19cb2e42bc
2 changed files with 19 additions and 18 deletions
+1 -2
View File
@@ -101,8 +101,7 @@ function ToolCallRow({
) : (
<Loader2 className="size-3.5 animate-spin shrink-0" />
)}
<span>{label}</span>
<span>{isFailed ? `失败 · ${label}` : isDone ? (canExpand ? (expanded ? "收起" : "查看结果") : `已完成 · ${label}`) : (tc.name ? (TOOL_LOADING_MAP[tc.name] ?? `正在${label}...`) : "思考中...")}</span>
<span>{isFailed ? `${label} · 失败` : isDone ? (canExpand ? `${label} · ${expanded ? "收起" : "查看结果"}` : `${label} · 已完成`) : (tc.name ? (TOOL_LOADING_MAP[tc.name] ?? `正在${label}...`) : "思考中...")}</span>
</button>
{expanded && uiItem && stream && components && (
<div className="mt-2 ml-7">
+18 -16
View File
@@ -538,14 +538,15 @@ function App() {
return tc.name && ui.name === nameMap[tc.name];
}))
.map((ui: UIMsgLocal) => (
<LoadExternalComponent
key={ui.id}
stream={thread}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
message={ui as any}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
components={ComponentMap as any}
/>
<div key={ui.id} className="animate-in fade-in duration-300">
<LoadExternalComponent
stream={thread}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
message={ui as any}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
components={ComponentMap as any}
/>
</div>
))}
{/* Text reply */}
@@ -593,14 +594,15 @@ function App() {
})
)
.map((ui: UIMsgLocal) => (
<LoadExternalComponent
key={ui.id}
stream={thread}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
message={ui as any}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
components={ComponentMap as any}
/>
<div key={ui.id} className="animate-in fade-in duration-300">
<LoadExternalComponent
stream={thread}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
message={ui as any}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
components={ComponentMap as any}
/>
</div>
))}
<div ref={bottomRef} />