summaryrefslogtreecommitdiff
path: root/makima/frontend/src/components/mesh/TaskDetail.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'makima/frontend/src/components/mesh/TaskDetail.tsx')
-rw-r--r--makima/frontend/src/components/mesh/TaskDetail.tsx13
1 files changed, 13 insertions, 0 deletions
diff --git a/makima/frontend/src/components/mesh/TaskDetail.tsx b/makima/frontend/src/components/mesh/TaskDetail.tsx
index 8936d28..2822b6d 100644
--- a/makima/frontend/src/components/mesh/TaskDetail.tsx
+++ b/makima/frontend/src/components/mesh/TaskDetail.tsx
@@ -7,6 +7,7 @@ import { PRPreview } from "./PRPreview";
import { InlineSubtaskEditor } from "./InlineSubtaskEditor";
import { DirectoryInput } from "./DirectoryInput";
import { BranchTaskModal } from "./BranchTaskModal";
+import { GitActionsPanel } from "./GitActionsPanel";
interface TaskDetailProps {
task: TaskWithSubtasks;
@@ -36,6 +37,8 @@ interface TaskDetailProps {
fetchSubtasks?: (taskId: string) => Promise<TaskSummary[]>;
/** For supervisor tasks: all tasks in the contract (excluding the supervisor itself) */
contractTasks?: TaskSummary[];
+ /** Whether the contract is in local-only mode (no push/PR) */
+ isLocalOnly?: boolean;
}
function formatDate(dateStr: string): string {
@@ -119,6 +122,7 @@ export function TaskDetail({
onAutoMerge,
fetchSubtasks,
contractTasks,
+ isLocalOnly = false,
}: TaskDetailProps) {
const [isEditing, setIsEditing] = useState(false);
const [editName, setEditName] = useState(task.name);
@@ -879,6 +883,15 @@ export function TaskDetail({
)}
</div>
)}
+
+ {/* Git Actions Panel for manual git operations */}
+ {task.status === "done" && (
+ <GitActionsPanel
+ taskId={task.id}
+ isLocalOnly={isLocalOnly}
+ taskStatus={task.status}
+ />
+ )}
</div>
{/* Overlay Diff Modal */}