From 7cf70b3c593e36ca35a82765329a910804b98862 Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Wed, 8 Jul 2026 00:50:11 -0700 Subject: [PATCH] FN-7665: rename Command Center SDLC funnel intake stage label to Planning Rename the Command Center SDLC funnel's intake stage display text from "Triage" to "Planning" to match the renamed board column, updating English locale copy and tests; the underlying aggregator/i18n key names stay "triage". - SdlcFunnel.tsx: stage label fallback, enteredInRange, and completionRateAria copy changed to Planning/Entered planning/in-range planning entrants; added FNXC comment explaining the key-vs-label distinction - packages/i18n/locales/en/app.json: synced English strings for the same three keys - SdlcFunnel.test.tsx: updated assertions to match new Planning copy - Added changeset (patch) documenting the label rename Files changed: .changeset/fn-7665-funnel-planning-label.md | 7 +++++++ .../app/components/command-center/SdlcFunnel.tsx | 16 ++++++++++++---- .../command-center/__tests__/SdlcFunnel.test.tsx | 6 +++--- packages/i18n/locales/en/app.json | 6 +++--- 4 files changed, 25 insertions(+), 10 deletions(-) Fusion-Task-Id: FN-7665 Fusion-Task-Lineage: d8aec609-6b8b-4f36-bb43-61d7c7c421f9 Co-authored-by: Fusion (runfusion.ai) --- .changeset/fn-7665-funnel-planning-label.md | 7 +++++++ .../app/components/command-center/SdlcFunnel.tsx | 16 ++++++++++++---- .../command-center/__tests__/SdlcFunnel.test.tsx | 6 +++--- packages/i18n/locales/en/app.json | 6 +++--- 4 files changed, 25 insertions(+), 10 deletions(-) create mode 100644 .changeset/fn-7665-funnel-planning-label.md diff --git a/.changeset/fn-7665-funnel-planning-label.md b/.changeset/fn-7665-funnel-planning-label.md new file mode 100644 index 0000000000..3f33ca88c9 --- /dev/null +++ b/.changeset/fn-7665-funnel-planning-label.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: The Command Center SDLC funnel now labels the intake stage "Planning", matching the renamed board column. +category: fix +dev: commandCenter.funnel.stage.triage, enteredInRange, and completionRateAria English strings (and SdlcFunnel.tsx t() fallbacks) changed to "Planning"/"Entered planning"/"in-range planning entrants"; dashboard locale copy re-synced. Aggregator stage key "triage" and the i18n key names are unchanged. diff --git a/packages/dashboard/app/components/command-center/SdlcFunnel.tsx b/packages/dashboard/app/components/command-center/SdlcFunnel.tsx index 6d396e2ba9..9e1f0cd2a7 100644 --- a/packages/dashboard/app/components/command-center/SdlcFunnel.tsx +++ b/packages/dashboard/app/components/command-center/SdlcFunnel.tsx @@ -12,13 +12,21 @@ import "./SdlcFunnel.css"; /** The funnel sub-shape carried on the activity analytics payload (U7). */ type SdlcFunnelData = ActivityAnalytics["funnel"]; -/** Human-readable label per stage key, falling back to the raw key. */ +/** + * FNXC:CommandCenter 2026-07-08-00:00: + * The SDLC funnel's intake stage displays as "Planning" (not "Triage") for + * consistency with the renamed board column (FN-7660/FN-7665). The aggregator + * stage KEY produced by aggregateSdlcFunnel and matched below stays "triage" — + * only the English display text changes. + * + * Human-readable label per stage key, falling back to the raw key. + */ function useStageLabels(): (stage: string) => string { const { t } = useTranslation("app"); return (stage: string) => { switch (stage) { case "triage": - return t("commandCenter.funnel.stage.triage", "Triage"); + return t("commandCenter.funnel.stage.triage", "Planning"); case "todo": return t("commandCenter.funnel.stage.todo", "Todo"); case "in-progress": @@ -99,7 +107,7 @@ export function SdlcFunnel({ range }: { range: DateRange }) { {t("commandCenter.funnel.completionRateHint", "Done ÷ entered (in range)")} @@ -124,7 +132,7 @@ export function SdlcFunnel({ range }: { range: DateRange }) {
- {t("commandCenter.funnel.enteredInRange", "Entered triage")} + {t("commandCenter.funnel.enteredInRange", "Entered planning")}
{formatCount(funnel?.enteredInRange ?? 0)}
diff --git a/packages/dashboard/app/components/command-center/__tests__/SdlcFunnel.test.tsx b/packages/dashboard/app/components/command-center/__tests__/SdlcFunnel.test.tsx index 5525f5923f..1ca05cd116 100644 --- a/packages/dashboard/app/components/command-center/__tests__/SdlcFunnel.test.tsx +++ b/packages/dashboard/app/components/command-center/__tests__/SdlcFunnel.test.tsx @@ -61,7 +61,7 @@ describe("SdlcFunnel", () => { expect(apiMock).toHaveBeenCalledWith(expect.stringContaining("/command-center/activity"), undefined); // Funnel bars carry an accessible label per stage with its count. - expect(screen.getByLabelText("Triage: 4")).toBeTruthy(); + expect(screen.getByLabelText("Planning: 4")).toBeTruthy(); expect(screen.getByLabelText("In progress: 3")).toBeTruthy(); expect(screen.getByLabelText("Done: 2")).toBeTruthy(); // Unknown-trait columns surface under "Other". @@ -73,7 +73,7 @@ describe("SdlcFunnel", () => { render(); await screen.findByTestId("cc-area-funnel"); - expect(screen.getByRole("img", { name: "Completion rate for in-range triage entrants" })).toBeTruthy(); + expect(screen.getByRole("img", { name: "Completion rate for in-range planning entrants" })).toBeTruthy(); expect(screen.getByTestId("cc-funnel-completion-rate").textContent).toContain("50%"); expect(screen.getByTestId("cc-funnel-done").textContent).toContain("2"); expect(screen.getByTestId("cc-funnel-entered").textContent).toContain("4"); @@ -102,7 +102,7 @@ describe("SdlcFunnel", () => { render(); await screen.findByTestId("cc-area-funnel"); - expect(screen.getByRole("img", { name: "Completion rate for in-range triage entrants" })).toBeTruthy(); + expect(screen.getByRole("img", { name: "Completion rate for in-range planning entrants" })).toBeTruthy(); expect(screen.getByTestId("cc-funnel-completion-rate").textContent).toContain("—"); }); diff --git a/packages/i18n/locales/en/app.json b/packages/i18n/locales/en/app.json index cab1e41738..7ff9ce14f6 100644 --- a/packages/i18n/locales/en/app.json +++ b/packages/i18n/locales/en/app.json @@ -1620,11 +1620,11 @@ "funnel": { "ariaLabel": "Tasks per workflow stage", "completionRate": "Completion rate", - "completionRateAria": "Completion rate for in-range triage entrants", + "completionRateAria": "Completion rate for in-range planning entrants", "completionRateHint": "Done ÷ entered (in range)", "doneInRange": "Reached done", "empty": "No task transitions in the selected range.", - "enteredInRange": "Entered triage", + "enteredInRange": "Entered planning", "rangeDays_one": "{{count}} day range", "rangeDays_other": "{{count}} day range", "stage": { @@ -1633,7 +1633,7 @@ "inReview": "In review", "other": "Other", "todo": "Todo", - "triage": "Triage" + "triage": "Planning" }, "throughputPerDay": "Tasks done / day", "throughputTitle": "Throughput",