summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-20 16:39:04 +0000
committersoryu <soryu@soryu.co>2026-01-20 16:39:04 +0000
commit94e14814573c8f1ba31f940c0479334a16b32f39 (patch)
tree389d101b3a0cd65ff47861ba3cd544cb75f028e9
parent5c79032637a9593f1530599726842f49ac904a13 (diff)
downloadsoryu-94e14814573c8f1ba31f940c0479334a16b32f39.tar.gz
soryu-94e14814573c8f1ba31f940c0479334a16b32f39.zip
Fix: prevent supervisor auto-start for completed contracts
When viewing a completed contract, the supervisor was auto-starting on component mount. This would resurrect completed contracts and cause them to continue running. Changes: - Add contract.status !== 'completed' check to the auto-start condition - Add contract.status to the useEffect dependency array Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
-rw-r--r--makima/frontend/src/components/contracts/ContractCliInput.tsx6
1 files changed, 3 insertions, 3 deletions
diff --git a/makima/frontend/src/components/contracts/ContractCliInput.tsx b/makima/frontend/src/components/contracts/ContractCliInput.tsx
index 821d03c..54d9f3a 100644
--- a/makima/frontend/src/components/contracts/ContractCliInput.tsx
+++ b/makima/frontend/src/components/contracts/ContractCliInput.tsx
@@ -279,9 +279,9 @@ export function ContractCliInput({ contractId, contract, onUpdate }: ContractCli
}
}, [messages]);
- // Auto-start supervisor when component mounts if it's pending
+ // Auto-start supervisor when component mounts if it's pending (but not for completed contracts)
useEffect(() => {
- if (supervisorTask && isSupervisorPending && !supervisorStarting) {
+ if (supervisorTask && isSupervisorPending && !supervisorStarting && contract.status !== 'completed') {
console.log("Auto-starting supervisor task on mount...");
ensureSupervisorStarted().then((started) => {
if (started) {
@@ -289,7 +289,7 @@ export function ContractCliInput({ contractId, contract, onUpdate }: ContractCli
}
});
}
- }, [supervisorTask?.id]); // Only run when task ID changes, not on every render
+ }, [supervisorTask?.id, contract.status]); // Only run when task ID or contract status changes
// Convert supervisor output events to messages
useEffect(() => {