From 41d86d29d0949c458db4ad3001c2abdc8e0e923e Mon Sep 17 00:00:00 2001 From: Dave Date: Tue, 24 Feb 2026 13:59:10 +0000 Subject: [PATCH] story-kit: merge 143_story_remove_0_running_count_from_agents_panel_header --- frontend/src/components/AgentPanel.test.tsx | 41 +++++++++++++++++++++ frontend/src/components/AgentPanel.tsx | 26 ++++++++----- 2 files changed, 57 insertions(+), 10 deletions(-) diff --git a/frontend/src/components/AgentPanel.test.tsx b/frontend/src/components/AgentPanel.test.tsx index 324362b..e1d517c 100644 --- a/frontend/src/components/AgentPanel.test.tsx +++ b/frontend/src/components/AgentPanel.test.tsx @@ -70,6 +70,47 @@ describe("AgentPanel active work list removed", () => { }); }); +describe("Running count visibility in header", () => { + beforeAll(() => { + Element.prototype.scrollIntoView = vi.fn(); + }); + + beforeEach(() => { + mockedAgents.getAgentConfig.mockResolvedValue(ROSTER); + mockedAgents.listAgents.mockResolvedValue([]); + }); + + // AC1: When no agents are running, "0 running" is NOT visible + it("does not show running count when no agents are running", async () => { + render(); + + // Wait for roster to load + await screen.findByTestId("roster-badge-coder-1"); + + expect(screen.queryByText(/0 running/)).not.toBeInTheDocument(); + }); + + // AC2: When agents are running, "N running" IS visible + it("shows running count when agents are running", async () => { + const agentList: AgentInfo[] = [ + { + story_id: "99_active", + agent_name: "coder-1", + status: "running", + session_id: null, + worktree_path: "/tmp/wt", + base_branch: "master", + log_session_id: null, + }, + ]; + mockedAgents.listAgents.mockResolvedValue(agentList); + + render(); + + await screen.findByText(/1 running/); + }); +}); + describe("RosterBadge availability state", () => { beforeAll(() => { Element.prototype.scrollIntoView = vi.fn(); diff --git a/frontend/src/components/AgentPanel.tsx b/frontend/src/components/AgentPanel.tsx index 6b9dc50..e1eaff9 100644 --- a/frontend/src/components/AgentPanel.tsx +++ b/frontend/src/components/AgentPanel.tsx @@ -268,16 +268,22 @@ export function AgentPanel({ configVersion = 0 }: AgentPanelProps) { }} >
Agents
-
- {Object.values(agents).filter((a) => a.status === "running").length}{" "} - running -
+ {Object.values(agents).filter((a) => a.status === "running").length > + 0 && ( +
+ { + Object.values(agents).filter((a) => a.status === "running") + .length + }{" "} + running +
+ )} {lastRefresh && (