diff --git a/.changeset/one-queued-badge-family.md b/.changeset/one-queued-badge-family.md new file mode 100644 index 0000000000..4e7eff5578 --- /dev/null +++ b/.changeset/one-queued-badge-family.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: One queued badge family — scheduler-queued cards read "Queued", and Queued to plan is the same badge as Planning. +category: fix +dev: Raw status "queued" no longer renders the lowercase engine token; the standalone queued-to-plan pill is removed and folds into the main status badge span (same classes/tooltip, testid preserved), so a card can never show two queued labels. diff --git a/packages/dashboard/app/components/TaskCard.tsx b/packages/dashboard/app/components/TaskCard.tsx index d328110ae3..4cfccd58de 100644 --- a/packages/dashboard/app/components/TaskCard.tsx +++ b/packages/dashboard/app/components/TaskCard.tsx @@ -3392,7 +3392,15 @@ function TaskCardComponent({ ? t("tasks.needsInput", "Needs input") : isTransientPlannerActive ? t("tasks.statusPlanning", "Planning") - : getTaskStatusLabel(visualStatus ?? "", t, showOptionalGateBadge ? undefined : getRunningWorkflowStepLabel(task), { idle: !isAgentActive, overlapBlockedBy: task.overlapBlockedBy ?? null }); + /* + FNXC:TaskStatusBadge 2026-08-01-03:20 (operator: ONE queued badge family, no dupes): + Queued-to-plan renders through THIS badge now — same span, same family as Planning — + instead of the standalone `queued-to-plan` pill it used to be (removed below). One card, + one badge; the muted modifier class and testid survive on this span. + */ + : showQueuedToPlanBadge + ? t("tasks.queuedToPlan", "Queued to plan") + : getTaskStatusLabel(visualStatus ?? "", t, showOptionalGateBadge ? undefined : getRunningWorkflowStepLabel(task), { idle: !isAgentActive, overlapBlockedBy: task.overlapBlockedBy ?? null }); const hasCardMetaBadges = showPriorityBadge || task.executionMode === "fast" // FNXC:PlannerOversight 2026-07-04-00:00: the oversight badge is opt-in @@ -3536,9 +3544,9 @@ function TaskCardComponent({ : pausedByAgent ? t("tasks.pausedByAgent", "paused by agent") : t("tasks.paused", "paused")} )} - {showStatusBadge && ( + {(showStatusBadge || showQueuedToPlanBadge) && ( {statusBadgeLabel} @@ -3624,18 +3637,6 @@ function TaskCardComponent({ find. Names the surviving dimension only. Worktrees can also be the binding gate, but only when the operator has worktree limiting on, so it is not stated unconditionally here. */} - {showQueuedToPlanBadge && ( - - {t("tasks.queuedToPlan", "Queued to plan")} - - )} {hasInReviewStall && stallCopy && (