Files
fusion/packages/dashboard/app/utils/taskStatusBadgeLabel.ts
gsxdsm 30aaab209c FN-8170: suppress stale planning status badges
Hide stale planning badges from Todo and In Progress task surfaces.

- Centralize the planning badge suppression predicate.
- Apply it to board cards and desktop/mobile list views.
- Cover suppressed and preserved status badge behavior.

Files changed:
 packages/dashboard/app/components/ListView.tsx     | 11 +++--
 packages/dashboard/app/components/TaskCard.tsx     | 16 +++++--
 .../app/components/__tests__/ListView.test.tsx     | 53 ++++++++++++++++++++++
 .../app/components/__tests__/TaskCard.test.tsx     | 40 ++++++++++++++++
 .../utils/__tests__/taskStatusBadgeLabel.test.ts   | 21 ++++++++-
 .../dashboard/app/utils/taskStatusBadgeLabel.ts    | 14 ++++++
 6 files changed, 147 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-8170

Fusion-Task-Lineage: e2a00154-8537-4eb3-aadb-45b42f13f15b

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-16 20:45:40 -07:00

35 lines
1.3 KiB
TypeScript

/*
FNXC:MergeQueue 2026-07-15-10:45:
AI merge sets task.status to reviewing/landing for most of the live merge window. Board/list badges must never show those raw engine strings; map the full active-merge pipeline to operator-facing Merging… (and Merging fixes… for merging-fix).
*/
import type { TFunction } from "i18next";
import { isActiveMergeStatus } from "../../../core/src/active-merge-status";
/*
FNXC:TaskStatusBadge 2026-07-16-12:00:
FN-8170 requires the raw "planning" status badge to stay off Todo and In Progress cards while preserving it in triage. Suppression is unconditional because Coding (Ideas) in-place planning writes only status:"planning", with no durable client-visible active-planner signal; the additive Reviewing Plan Review badge remains independent.
*/
export function shouldSuppressPlanningStatusBadge({
status,
column,
}: {
status?: string | null;
column: string;
}): boolean {
return status === "planning" && (column === "todo" || column === "in-progress");
}
export function getTaskStatusBadgeLabel(
status: string | null | undefined,
t: TFunction<"app">,
): string {
if (!status) return "";
if (status === "merging-fix") {
return t("tasks.statusMergingFix", "Merging fixes…");
}
if (isActiveMergeStatus(status)) {
return t("tasks.statusMerging", "Merging…");
}
return status;
}