diff --git a/frontend/src/components/tasks/TaskDetailsPanel.tsx b/frontend/src/components/tasks/TaskDetailsPanel.tsx index 3c6537cd..518c98fa 100644 --- a/frontend/src/components/tasks/TaskDetailsPanel.tsx +++ b/frontend/src/components/tasks/TaskDetailsPanel.tsx @@ -179,6 +179,32 @@ export function TaskDetailsPanel({ } }, [executionState, isOpen, selectedAttempt, fetchDiff]); + // Refresh diff when coding agent completes or changes state + useEffect(() => { + if (!executionState || !isOpen || !selectedAttempt) return; + + const isCodingAgentComplete = + executionState.execution_state === 'CodingAgentComplete'; + const isCodingAgentFailed = + executionState.execution_state === 'CodingAgentFailed'; + const isComplete = executionState.execution_state === 'Complete'; + const hasChanges = executionState.has_changes; + + // Fetch diff when coding agent completes, fails, or task is complete and has changes + if ( + (isCodingAgentComplete || isCodingAgentFailed || isComplete) && + hasChanges + ) { + fetchDiff(); + } + }, [ + executionState?.execution_state, + executionState?.has_changes, + isOpen, + selectedAttempt, + fetchDiff, + ]); + // Handle ESC key locally to prevent global navigation useEffect(() => { if (!isOpen || isDialogOpen) return;