diff --git a/src/core/webview/ClaudeDevProvider.ts b/src/core/webview/ClaudeDevProvider.ts index cfa2092..d37056f 100644 --- a/src/core/webview/ClaudeDevProvider.ts +++ b/src/core/webview/ClaudeDevProvider.ts @@ -451,7 +451,7 @@ export class ClaudeDevProvider implements vscode.WebviewViewProvider { timeout: 3_000, }) await this.initClaudeDevWithHistoryItem(historyItem) // clears task again, so we need to abortTask manually above - await this.postStateToWebview() + // await this.postStateToWebview() // new claude dev instance will post state when it's ready. having this here sent an empty messages array to webview leading to virtuoso having to reload the entire list } break diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx index 9bac29e..c9c208a 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -55,6 +55,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie const [didScrollUp, setDidScrollUp] = useState(false) const lastScrollTopRef = useRef(0) const [didClickScrollToBottom, setDidClickScrollToBottom] = useState(false) + const [didClickCancel, setDidClickCancel] = useState(false) useEffect(() => { // if last message is an ask, show user ask UI @@ -134,6 +135,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie setEnableButtons(true) setPrimaryButtonText("Resume Task") setSecondaryButtonText(undefined) + setDidClickCancel(false) // special case where we reset the cancel button state break case "resume_completed_task": setTextAreaDisabled(false) @@ -141,6 +143,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie setEnableButtons(true) setPrimaryButtonText("Start New Task") setSecondaryButtonText(undefined) + setDidClickCancel(false) break } break @@ -283,6 +286,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie const handleSecondaryButtonClick = useCallback(() => { if (isStreaming) { vscode.postMessage({ type: "cancelTask" }) + setDidClickCancel(true) return } @@ -653,7 +657,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie style={{ opacity: primaryButtonText || secondaryButtonText || isStreaming - ? enableButtons || isStreaming + ? enableButtons || (isStreaming && !didClickCancel) ? 1 : 0.5 : 0, @@ -675,7 +679,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie {(secondaryButtonText || isStreaming) && (