From 08a4e418f79c3373c0a199abe0e22696cf8099c6 Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Fri, 31 Jul 2026 15:59:18 -0700 Subject: [PATCH] fix(dashboard): idle Revising badge explains it is queued for a planning slot Co-Authored-By: Claude Fable 5 --- .changeset/needs-replan-queued-tooltip.md | 7 +++++++ packages/dashboard/app/components/TaskCard.tsx | 17 ++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 .changeset/needs-replan-queued-tooltip.md diff --git a/.changeset/needs-replan-queued-tooltip.md b/.changeset/needs-replan-queued-tooltip.md new file mode 100644 index 0000000000..ffcf9906b3 --- /dev/null +++ b/.changeset/needs-replan-queued-tooltip.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: An idle Revising card now explains it is waiting for a planning slot. +category: fix +dev: needs-replan is a durable waiting state, not a live session; the TaskCard status badge gains a tooltip when no agent is active, mirroring QUEUED TO PLAN's disambiguation. Label copy (FN-8493 "Revising") unchanged. diff --git a/packages/dashboard/app/components/TaskCard.tsx b/packages/dashboard/app/components/TaskCard.tsx index 94d6a7180e..381d4bc993 100644 --- a/packages/dashboard/app/components/TaskCard.tsx +++ b/packages/dashboard/app/components/TaskCard.tsx @@ -3548,7 +3548,22 @@ function TaskCardComponent({ "tasks.awaitingApprovalTitle", "This plan needs your approval before implementation can start.", ) - : undefined + /* + FNXC:TaskStatusBadge 2026-07-31-23:20: + `needs-replan` is a durable WAITING state (the graph's replan signal), not a live + session — the actual revise run surfaces as "planning" once triage re-admits it. + Operators read "Revising" as activity and counted it against the concurrency + panel ("five planning badges, four running agents"); mirror QUEUED TO PLAN's + disambiguation as a tooltip so the label (FN-8493 copy) stays untouched while an + idle Revising card explains itself. Gated on !isAgentActive so a genuinely + running revise cycle keeps no misleading "waiting" text. + */ + : task.status === "needs-replan" && !isAgentActive + ? t( + "tasks.needsReplanQueuedTitle", + "Waiting to revise the plan — the revision starts when a planning slot frees up.", + ) + : undefined } aria-label={isTransientPlannerActive ? t("tasks.statusPlanning", "Planning") : undefined} data-testid={isAwaitingApproval ? `card-awaiting-approval-${task.id}` : undefined}