From 978cdda77c76ce9a57d80c433db21c3a26eb700b Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Sat, 4 Jul 2026 09:17:36 -0700 Subject: [PATCH] FN-7492: show active triage plan review progress Show triage task cards when Plan Review is actively running. - Render the existing progress affordance for triage cards only when unified progress has an active item. - Keep enabled-but-idle workflow steps hidden to avoid false active indicators and empty progress shells. - Cover running, idle, and empty triage progress states in TaskCard tests. - Add a patch changeset for the published Fusion package. Files changed: .../FN-7492-task-card-plan-review-progress.md | 7 +++ packages/dashboard/app/components/TaskCard.tsx | 7 ++- .../app/components/__tests__/TaskCard.test.tsx | 73 ++++++++++++++++++++++ 3 files changed, 86 insertions(+), 1 deletion(-) Fusion-Task-Id: FN-7492 Fusion-Task-Lineage: 582aea40-8a14-4571-9a7c-e770bc2ab1fb Co-authored-by: Fusion (runfusion.ai) --- .../FN-7492-task-card-plan-review-progress.md | 7 ++ .../dashboard/app/components/TaskCard.tsx | 7 +- .../components/__tests__/TaskCard.test.tsx | 73 +++++++++++++++++++ 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 .changeset/FN-7492-task-card-plan-review-progress.md diff --git a/.changeset/FN-7492-task-card-plan-review-progress.md b/.changeset/FN-7492-task-card-plan-review-progress.md new file mode 100644 index 0000000000..9250f398c2 --- /dev/null +++ b/.changeset/FN-7492-task-card-plan-review-progress.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: Show active Plan Review progress on triage task cards. +category: fix +dev: TaskCard now renders the existing progress affordance for Triage only when unified progress has active workflow work. diff --git a/packages/dashboard/app/components/TaskCard.tsx b/packages/dashboard/app/components/TaskCard.tsx index 1e94adaf94..ccfc4bedf2 100644 --- a/packages/dashboard/app/components/TaskCard.tsx +++ b/packages/dashboard/app/components/TaskCard.tsx @@ -1163,8 +1163,13 @@ function TaskCardComponent({ () => unifiedProgress.items.filter((item) => item.status === "in-progress" || item.status === "running").length, [unifiedProgress.items], ); + /* + FNXC:TaskCardWorkflowProgress 2026-07-04-09:08: + Prompt Reviewer / Plan Review can run before a task leaves Triage. Show the existing card progress affordance when Triage has an actually active unified progress item, but keep enabled-only workflow steps hidden so idle review gates do not create false active indicators or empty progress shells. + */ const showProgressSection = - unifiedProgress.total > 0 && (task.status === "executing" || task.column === "in-progress"); + unifiedProgress.total > 0 && + (task.status === "executing" || task.column === "in-progress" || (task.column === "triage" && activeProgressCount > 0)); useEffect(() => { if (task.column !== "in-progress" && task.column !== "in-review") { diff --git a/packages/dashboard/app/components/__tests__/TaskCard.test.tsx b/packages/dashboard/app/components/__tests__/TaskCard.test.tsx index ddd044f34e..dcbe64e49b 100644 --- a/packages/dashboard/app/components/__tests__/TaskCard.test.tsx +++ b/packages/dashboard/app/components/__tests__/TaskCard.test.tsx @@ -2564,6 +2564,79 @@ describe("TaskCard", () => { expect(container.querySelector(".card-step-name.active")?.textContent).toBe("Step 1"); }); + it("shows running Plan Review progress while the task is still in triage", () => { + const { container } = render( + , + ); + + expect(screen.getByText("0/2")).toBeDefined(); + expect(screen.getByText("1 active")).toBeDefined(); + + fireEvent.click(screen.getByRole("button", { name: "Show steps" })); + + expect(container.querySelector(".card-step-name.active")?.textContent).toBe("Plan Review"); + expect(container.querySelector(".card-step-active-badge")?.textContent).toBe("active"); + const dots = container.querySelectorAll(".card-step-dot"); + expect(dots[0]?.className).toContain("card-step-dot--running"); + expect(dots[0]?.className).not.toContain("card-step-dot--pending"); + }); + + it("does not show a false triage active indicator for enabled-but-not-started Plan Review", () => { + const { container } = render( + , + ); + + expect(screen.queryByText("1 active")).toBeNull(); + expect(container.querySelector(".card-progress")).toBeNull(); + expect(container.querySelector(".card-steps-toggle")).toBeNull(); + }); + + it("does not render an empty triage progress shell without workflow progress", () => { + const { container } = render( + , + ); + + expect(container.querySelector(".card-progress")).toBeNull(); + expect(container.querySelector(".card-steps-toggle")).toBeNull(); + }); + it("uses singular step label when unified progress total is one", () => { render(