diff --git a/apps/web/src/components/review/ConflictResolutionPanel.tsx b/apps/web/src/components/review/ConflictResolutionPanel.tsx index f4d99fd..cc55c06 100644 --- a/apps/web/src/components/review/ConflictResolutionPanel.tsx +++ b/apps/web/src/components/review/ConflictResolutionPanel.tsx @@ -1,5 +1,5 @@ import { Loader2, AlertCircle, GitMerge, CheckCircle2, ChevronDown, ChevronRight, Terminal } from 'lucide-react'; -import { useState } from 'react'; +import { useEffect, useRef, useState } from 'react'; import { Button } from '@/components/ui/button'; import { QuestionForm } from '@/components/QuestionForm'; import { useConflictAgent } from '@/hooks/useConflictAgent'; @@ -13,6 +13,17 @@ interface ConflictResolutionPanelProps { export function ConflictResolutionPanel({ initiativeId, conflicts, onResolved }: ConflictResolutionPanelProps) { const { state, agent, questions, spawn, resume, stop, dismiss } = useConflictAgent(initiativeId); const [showManual, setShowManual] = useState(false); + const prevStateRef = useRef(state); + + // Auto-dismiss and re-check mergeability when conflict agent completes + useEffect(() => { + const prev = prevStateRef.current; + prevStateRef.current = state; + if (prev !== 'completed' && state === 'completed') { + dismiss(); + onResolved(); + } + }, [state, dismiss, onResolved]); if (state === 'none') { return ( @@ -117,26 +128,13 @@ git commit --no-edit`} } if (state === 'completed') { + // Auto-dismiss effect above handles this — show brief success message during transition return (