FN-8472: restore Coding (Ideas) header color indicator

Restore the shared triage color indicator for Coding (Ideas) headers.

- map the Ideas header dot to the shared triage design token
- cover empty and populated Ideas columns plus the token mapping
- add a patch changeset for the operator-facing fix

Files changed:
 .changeset/fn-8472-ideas-column-indicator.md       |  7 +++++
 .../app/components/__tests__/Column.test.tsx       | 36 ++++++++++++++++++++++
 packages/dashboard/app/styles.css                  |  9 ++++++
 3 files changed, 52 insertions(+)

Fusion-Task-Id: FN-8472

Fusion-Task-Lineage: dcaf556d-e8d4-4441-aa94-094e35f33824

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
This commit is contained in:
gsxdsm
2026-07-22 00:00:04 -07:00
parent 06a49998f5
commit e68c48dabd
3 changed files with 52 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
---
"@runfusion/fusion": patch
---
summary: Restore the Coding Ideas board header color indicator.
category: fix
dev: Maps the Ideas intake column dot to the shared triage token.

View File

@@ -1,4 +1,6 @@
import React from "react";
import { readFileSync } from "node:fs";
import { resolve } from "node:path";
import { describe, it, expect, vi, beforeEach } from "vitest";
import { render, screen, fireEvent, waitFor } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
@@ -178,6 +180,40 @@ describe("Column count-flash", () => {
});
});
/*
FNXC:CodingIdeasWorkflow 2026-07-21-23:42:
Coding (Ideas) uses the canonical non-legacy `ideas` intake ID. Cover empty and
populated real Column markup here because Board selected/aggregate views and Lane
all compose this shared renderer; duplicate consumer tests would not add another path.
*/
describe("Column Coding (Ideas) header indicator", () => {
it.each([
["empty", []],
["populated", [{ ...makeTask("FN-IDEA-1"), column: "ideas" as ColumnType }]],
])("renders one Ideas dot before the heading for a %s intake column", (_state, tasks) => {
render(
<Column
{...defaultProps}
column={"ideas" as ColumnType}
workflowMode
columnDisplayName="Ideas"
columnFlags={{ intake: true }}
tasks={tasks}
/>,
);
const heading = screen.getByRole("heading", { name: "Ideas", level: 2 });
const header = heading.closest(".column-header");
expect(header?.querySelectorAll(".column-dot.dot-ideas")).toHaveLength(1);
expect(heading.previousElementSibling).toHaveClass("column-dot", "dot-ideas");
});
it("maps the canonical Ideas dot to the shared triage token", () => {
const css = readFileSync(resolve(__dirname, "../../styles.css"), "utf8");
expect(css).toMatch(/\.dot-ideas\s*\{\s*background:\s*var\(--triage\);\s*\}/);
});
});
describe("Column workflow mode (U9)", () => {
it("uses the workflow column display name instead of the legacy label", () => {
render(

View File

@@ -1172,6 +1172,15 @@ body {
.dot-triage {
background: var(--triage);
}
/*
FNXC:CodingIdeasWorkflow 2026-07-21-23:42:
The non-legacy Coding (Ideas) manual-intake ID already uses the shared Column dot.
Map it to the established triage token so the decorative header indicator remains visible across themes.
*/
.dot-ideas {
background: var(--triage);
}
.dot-todo {
background: var(--todo);
}