@@ -47,7 +47,7 @@ import { McpExecution } from "./McpExecution"
4747import { ChatTextArea } from "./ChatTextArea"
4848import { MAX_IMAGES_PER_MESSAGE } from "./ChatView"
4949import { useSelectedModel } from "../ui/hooks/useSelectedModel"
50- import { CircleCheck , Eye , FileDiff , ListTree } from "lucide-react"
50+ import { ChevronRight , ChevronDown , Eye , FileDiff , ListTree } from "lucide-react"
5151
5252interface ChatRowProps {
5353 message : ClineMessage
@@ -288,7 +288,11 @@ export const ChatRowContent = ({
288288 getIconSpan ( "error" , errorColor )
289289 )
290290 ) : cost !== null && cost !== undefined ? (
291- < CircleCheck className = "w-4" />
291+ isExpanded ? (
292+ < ChevronDown className = "w-4" />
293+ ) : (
294+ < ChevronRight className = "w-4" />
295+ )
292296 ) : apiRequestFailedMessage ? (
293297 getIconSpan ( "error" , errorColor )
294298 ) : (
@@ -323,7 +327,17 @@ export const ChatRowContent = ({
323327 default :
324328 return [ null , null ]
325329 }
326- } , [ type , isCommandExecuting , message , isMcpServerResponding , apiReqCancelReason , cost , apiRequestFailedMessage , t ] )
330+ } , [
331+ type ,
332+ isCommandExecuting ,
333+ message ,
334+ isMcpServerResponding ,
335+ apiReqCancelReason ,
336+ cost ,
337+ apiRequestFailedMessage ,
338+ t ,
339+ isExpanded ,
340+ ] )
327341
328342 const headerStyle : React . CSSProperties = {
329343 display : "flex" ,
@@ -890,6 +904,7 @@ export const ChatRowContent = ({
890904 } }
891905 onClick = { handleToggleExpand } >
892906 < ToolUseBlockHeader
907+ className = "group"
893908 style = { {
894909 display : "flex" ,
895910 alignItems : "center" ,
@@ -906,7 +921,8 @@ export const ChatRowContent = ({
906921 </ VSCodeBadge >
907922 ) }
908923 </ div >
909- < span className = { `codicon codicon-chevron-${ isExpanded ? "up" : "down" } ` } > </ span >
924+ < span
925+ className = { `codicon codicon-chevron-${ isExpanded ? "up" : "down" } opacity-0 group-hover:opacity-100 transition-opacity duration-200` } > </ span >
910926 </ ToolUseBlockHeader >
911927 { isExpanded && ( slashCommandInfo . args || slashCommandInfo . description ) && (
912928 < div
@@ -1116,9 +1132,19 @@ export const ChatRowContent = ({
11161132 />
11171133 )
11181134 case "api_req_started" :
1135+ // Determine if the API request is in progress
1136+ const isApiRequestInProgress =
1137+ apiReqCancelReason === null &&
1138+ apiReqCancelReason === undefined &&
1139+ ( cost === null || cost === undefined ) &&
1140+ ! apiRequestFailedMessage
1141+
11191142 return (
11201143 < >
11211144 < div
1145+ className = { `group text-sm transition-opacity ${
1146+ isApiRequestInProgress ? "opacity-100" : "opacity-40 hover:opacity-100"
1147+ } `}
11221148 style = { {
11231149 ...headerStyle ,
11241150 marginBottom :
@@ -1143,7 +1169,6 @@ export const ChatRowContent = ({
11431169 style = { { opacity : cost !== null && cost !== undefined && cost > 0 ? 1 : 0 } } >
11441170 ${ Number ( cost || 0 ) ?. toFixed ( 4 ) }
11451171 </ div >
1146- < span className = { `codicon codicon-chevron-${ isExpanded ? "up" : "down" } ` } > </ span >
11471172 </ div >
11481173 { ( ( ( cost === null || cost === undefined ) && apiRequestFailedMessage ) ||
11491174 apiReqStreamingFailedMessage ) && (
0 commit comments