diff --git a/ui/src/components/task-chat/TaskChatBubble.tsx b/ui/src/components/task-chat/TaskChatBubble.tsx index 82478bcf0a0..714e7c2628a 100644 --- a/ui/src/components/task-chat/TaskChatBubble.tsx +++ b/ui/src/components/task-chat/TaskChatBubble.tsx @@ -41,7 +41,7 @@ export function TaskChatBubble({ item }: TaskChatBubbleProps) { return (
{ it("maps each family to its icon and verb", () => { expect(toolTaxonomy("Bash")).toEqual({ family: "terminal", - icon: SquareTerminal, + icon: Terminal, verbLabel: "Running a command", }); expect(toolTaxonomy("Shell").family).toBe("terminal"); @@ -38,14 +37,15 @@ describe("toolTaxonomy", () => { expect(toolTaxonomy("Read")).toEqual({ family: "read", - icon: Book, + icon: BookOpen, verbLabel: "Reading files", }); expect(toolTaxonomy("NotebookRead").family).toBe("read"); + // Round-4 board feedback: edits share the terminal glyph. expect(toolTaxonomy("Edit")).toEqual({ family: "edit", - icon: SquarePen, + icon: Terminal, verbLabel: "Editing files", }); expect(toolTaxonomy("Write").family).toBe("edit"); @@ -87,10 +87,10 @@ describe("toolTaxonomy", () => { describe("toolTaxonomy multi-word ACP titles", () => { it("classifies by the first word", () => { - expect(toolTaxonomy("Read File").icon).toBe(Book); - expect(toolTaxonomy("Edit File").icon).toBe(SquarePen); - expect(toolTaxonomy("Write File").icon).toBe(SquarePen); - expect(toolTaxonomy("Terminal").icon).toBe(SquareTerminal); + expect(toolTaxonomy("Read File").icon).toBe(BookOpen); + expect(toolTaxonomy("Edit File").icon).toBe(Terminal); + expect(toolTaxonomy("Write File").icon).toBe(Terminal); + expect(toolTaxonomy("Terminal").icon).toBe(Terminal); }); }); diff --git a/ui/src/components/task-chat/tool-taxonomy.ts b/ui/src/components/task-chat/tool-taxonomy.ts index 9364519f844..c9ee6579f75 100644 --- a/ui/src/components/task-chat/tool-taxonomy.ts +++ b/ui/src/components/task-chat/tool-taxonomy.ts @@ -6,15 +6,14 @@ * tools. */ import { - Book, + BookOpen, Brain, ChevronsLeftRightEllipsis, MessageSquareReply, Network, Search, SearchCode, - SquarePen, - SquareTerminal, + Terminal, Wrench, } from "lucide-react"; import type { ComponentType, SVGProps } from "react"; @@ -70,11 +69,12 @@ export function mcpToolSegment(name: string): string | null { } const FAMILY_META: Record, Omit> = { - terminal: { icon: SquareTerminal, verbLabel: "Running a command" }, + terminal: { icon: Terminal, verbLabel: "Running a command" }, grep: { icon: SearchCode, verbLabel: "Grepping" }, search: { icon: Search, verbLabel: "Searching" }, - read: { icon: Book, verbLabel: "Reading files" }, - edit: { icon: SquarePen, verbLabel: "Editing files" }, + read: { icon: BookOpen, verbLabel: "Reading files" }, + // Board round-4 feedback asked for the terminal glyph on edits as well. + edit: { icon: Terminal, verbLabel: "Editing files" }, web: { icon: ChevronsLeftRightEllipsis, verbLabel: "Fetching the web" }, agent: { icon: Network, verbLabel: "Delegating" }, other: { icon: Wrench, verbLabel: "Working" }, diff --git a/ui/src/index.css b/ui/src/index.css index b2efaa013b1..7957c605b72 100644 --- a/ui/src/index.css +++ b/ui/src/index.css @@ -592,6 +592,10 @@ CSS-only typewriter, no per-char timers. Text appended to an existing block lands instantly; history omits the class entirely. */ .tc-typewriter-stream .paperclip-markdown > * { animation: tc-typewriter var(--motion-typewriter-reveal) var(--motion-typewriter-steps) both; } +/* Interstitial narration matches the tool rows (text-xs): prose-sm sets its + own font-size on .paperclip-markdown, so the wrapper's text-xs alone can't + shrink it — this scoped override wins on specificity. */ +.tc-interstitial .paperclip-markdown { font-size: var(--text-xs); line-height: var(--text-xs--line-height); } /* Scroll-to-latest pill (stock shadcn MessageScrollerButton motion, tokenized). The pill is centered with translateX(-50%), so the keyframes carry the X