diff --git a/webui/src/components/MessageBubble.tsx b/webui/src/components/MessageBubble.tsx
index 60e94a87b..4ef4713f1 100644
--- a/webui/src/components/MessageBubble.tsx
+++ b/webui/src/components/MessageBubble.tsx
@@ -22,6 +22,12 @@ import { AttachmentTile } from "@/components/AttachmentTile";
import { CliAppMentionText } from "@/components/CliAppMentionText";
import { ImageLightbox } from "@/components/ImageLightbox";
import { MarkdownText, preloadMarkdownText } from "@/components/MarkdownText";
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipProvider,
+ TooltipTrigger,
+} from "@/components/ui/tooltip";
import { cn } from "@/lib/utils";
import { copyTextToClipboard } from "@/lib/clipboard";
import { formatTurnLatency } from "@/lib/format";
@@ -187,50 +193,60 @@ export function MessageBubble({
{media.length > 0 ? : null}
{showAssistantFooterRow ? (
-
- {showCopyButton ? (
-
- ) : null}
- {showForkButton ? (
-
- ) : null}
- {showLatencyFooter ? (
-
- {formatTurnLatency(latencyMs)}
-
- ) : null}
-
+
+
+ {showCopyButton ? (
+
+
+
+
+ {copyReplyLabel}
+
+ ) : null}
+ {showForkButton ? (
+
+
+
+
+ {forkLabel}
+
+ ) : null}
+ {showLatencyFooter ? (
+
+ {formatTurnLatency(latencyMs)}
+
+ ) : null}
+
+
) : null}
>
)}
diff --git a/webui/src/components/thread/ThreadComposer.tsx b/webui/src/components/thread/ThreadComposer.tsx
index 585a88c4e..1ac6e398a 100644
--- a/webui/src/components/thread/ThreadComposer.tsx
+++ b/webui/src/components/thread/ThreadComposer.tsx
@@ -1768,7 +1768,6 @@ export function ThreadComposer({
disabled={voiceRecorder.buttonDisabled}
aria-label={voiceButtonLabel}
aria-keyshortcuts={VOICE_SHORTCUT_ARIA}
- title={voiceButtonTooltip}
onPointerDown={voiceRecorder.beginPress}
onPointerUp={voiceRecorder.endPress}
onPointerCancel={voiceRecorder.endPress}