From fb8c03fb1fa0775eccca82c2bdcc881206cd2500 Mon Sep 17 00:00:00 2001 From: Louis Knight-Webb Date: Tue, 24 Jun 2025 17:09:15 +0100 Subject: [PATCH] Task attempt 661f4103-d3a8-4f67-a2b8-fd9c8633ac00 - Final changes --- .../src/components/tasks/TaskDetailsPanel.tsx | 301 +++++++++++------- 1 file changed, 191 insertions(+), 110 deletions(-) diff --git a/frontend/src/components/tasks/TaskDetailsPanel.tsx b/frontend/src/components/tasks/TaskDetailsPanel.tsx index 910a75bb..8163b57a 100644 --- a/frontend/src/components/tasks/TaskDetailsPanel.tsx +++ b/frontend/src/components/tasks/TaskDetailsPanel.tsx @@ -4,7 +4,6 @@ import { X, History, Clock, - FileText, Code, ChevronDown, ChevronUp, @@ -15,6 +14,7 @@ import { Send, AlertCircle, Play, + GitCompare, } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Alert, AlertDescription } from "@/components/ui/alert"; @@ -700,26 +700,53 @@ export function TaskDetailsPanel({
{onEditTask && ( - + + + + + + +

Edit task

+
+
+
)} {onDeleteTask && ( - + + + + + + +

Delete task

+
+
+
)} - + + + + + + +

Close panel

+
+
+
@@ -803,78 +830,105 @@ export function TaskDetailsPanel({ {/* Attempt Management Group */}
{taskAttempts.length > 1 && ( - - - - - - {taskAttempts.map((attempt) => ( - handleAttemptChange(attempt.id)} - className={ - selectedAttempt?.id === attempt.id - ? "bg-accent" - : "" - } - > -
- - {new Date( - attempt.created_at - ).toLocaleDateString()}{" "} - {new Date( - attempt.created_at - ).toLocaleTimeString()} - - - {attempt.executor || "executor"} - -
-
- ))} -
-
+ + + + + + + + + {taskAttempts.map((attempt) => ( + handleAttemptChange(attempt.id)} + className={ + selectedAttempt?.id === attempt.id + ? "bg-accent" + : "" + } + > +
+ + {new Date( + attempt.created_at + ).toLocaleDateString()}{" "} + {new Date( + attempt.created_at + ).toLocaleTimeString()} + + + {attempt.executor || "executor"} + +
+
+ ))} +
+
+
+ +

View attempt history

+
+
+
)}
- - - - - - - {availableExecutors.map((executor) => ( - setSelectedExecutor(executor.id)} - className={ - selectedExecutor === executor.id - ? "bg-accent" - : "" - } + + + + + + +

{selectedAttempt ? "Retry task with current executor" : "Start task with current executor"}

+
+
+
+ + + + + + + + + {availableExecutors.map((executor) => ( + setSelectedExecutor(executor.id)} + className={ + selectedExecutor === executor.id + ? "bg-accent" + : "" + } + > + {executor.name} + {selectedExecutor === executor.id && + " (Default)"} + + ))} + + + + +

Choose executor

+
+
+
@@ -885,15 +939,24 @@ export function TaskDetailsPanel({ {/* Execution Control Group */}
{(isAttemptRunning || isStopping) && ( - + + + + + + +

{isStopping ? "Stopping execution..." : "Stop execution"}

+
+
+
)} @@ -975,20 +1038,38 @@ export function TaskDetailsPanel({ {/* Code Actions Group */}
- - + + + + + + +

Open in editor

+
+
+
+ + + + + + +

View code changes

+
+
+
)}