From ee812fb377777de5c7c1c35a18bf26629909528f Mon Sep 17 00:00:00 2001 From: Roo Code Date: Thu, 19 Jun 2025 15:45:18 +0000 Subject: [PATCH] Fixes #4881: Preserve subtask completion state during task resumption - Modified task resumption logic in Task.ts to detect completed subtasks - Added check for finishTask tool completion when determining resume type - Ensures completed subtasks show 'Start New Task' button instead of 'Resume Task' - Prevents unnecessary re-execution of completed subtasks and token costs --- src/core/task/Task.ts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index a6a9d89986..6cbe719c9d 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -812,7 +812,27 @@ export class Task extends EventEmitter { if (lastClineMessage?.ask === "completion_result") { askType = "resume_completed_task" } else { - askType = "resume_task" + // Check if this is a completed subtask by looking for finishTask tool completion + const isCompletedSubtask = this.clineMessages + .slice() + .reverse() + .some((m) => { + if (m.type === "ask" && m.ask === "tool" && m.text) { + try { + const tool = JSON.parse(m.text) + return tool.tool === "finishTask" + } catch { + return false + } + } + return false + }) + + if (isCompletedSubtask && this.parentTask) { + askType = "resume_completed_task" + } else { + askType = "resume_task" + } } this.isInitialized = true