diff --git a/apps/desktop/src/components/assistant-ui/tool-fallback.tsx b/apps/desktop/src/components/assistant-ui/tool-fallback.tsx index 391510f71bf..b5d65b5571e 100644 --- a/apps/desktop/src/components/assistant-ui/tool-fallback.tsx +++ b/apps/desktop/src/components/assistant-ui/tool-fallback.tsx @@ -279,11 +279,14 @@ function ToolEntry({ part }: ToolEntryProps) { const copyAction = useMemo(() => toolCopyPayload(part, view), [part, view]) + // The header trailing slot only carries the live duration timer while the + // tool is running. The copy control used to live here too, but an + // `opacity-0` (yet still clickable) button straddling the caret/duration made + // the disclosure caret hard to hit. Copy now lives in the expanded body's + // top-right, where it can't fight the caret for the right edge. const trailing = isPending && !embedded ? ( - ) : !isPending && copyAction.text ? ( - ) : undefined return ( @@ -322,7 +325,18 @@ function ToolEntry({ part }: ToolEntryProps) { {isPending && } {open && ( -
+
+ {copyAction.text && ( + + )} {!embedded && view.previewTarget && isPreviewableTarget(view.previewTarget) && ( )}