From 7af8561677cfdcfd23d099a25783c7fef51d1ba6 Mon Sep 17 00:00:00 2001 From: soryu Date: Thu, 29 Jan 2026 02:30:16 +0000 Subject: Fix worktree cleanup to not run for shared worktrees --- makima/src/daemon/task/manager.rs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'makima/src/daemon/task/manager.rs') diff --git a/makima/src/daemon/task/manager.rs b/makima/src/daemon/task/manager.rs index 8c5f8d7..1e05978 100644 --- a/makima/src/daemon/task/manager.rs +++ b/makima/src/daemon/task/manager.rs @@ -3305,12 +3305,27 @@ impl TaskManager { task_id: Uuid, ) -> Result<(), DaemonError> { // Get task's worktree path and branch + // If the task shares a supervisor's worktree, use the supervisor's worktree info let task_info = { let tasks = self.tasks.read().await; - tasks.get(&task_id).map(|t| ( - t.worktree.as_ref().map(|w| w.path.clone()), - t.worktree.as_ref().map(|w| w.branch.clone()), - )) + if let Some(task) = tasks.get(&task_id) { + // Check if this task shares a supervisor's worktree + if let Some(supervisor_task_id) = task.supervisor_worktree_task_id { + // Use the supervisor's worktree + tasks.get(&supervisor_task_id).map(|supervisor| ( + supervisor.worktree.as_ref().map(|w| w.path.clone()), + supervisor.worktree.as_ref().map(|w| w.branch.clone()), + )) + } else { + // Use the task's own worktree + Some(( + task.worktree.as_ref().map(|w| w.path.clone()), + task.worktree.as_ref().map(|w| w.branch.clone()), + )) + } + } else { + None + } }; let (worktree_path, branch) = match task_info { -- cgit v1.2.3