feat(FN-4592): complete Step 3 — treat userPaused as paused in TaskCard

Fusion-Task-Id: FN-4592
Fusion-Task-Lineage: b013a15e-7cd9-4ba4-b380-22627cefb394
This commit is contained in:
Fusion
2026-05-15 06:24:59 -07:00
committed by gsxdsm
parent 947df2753c
commit 7ca0e10b11
2 changed files with 20 additions and 1 deletions

View File

@@ -449,6 +449,7 @@ function areTaskCardPropsEqual(previous: TaskCardProps, next: TaskCardProps): bo
previousTask.priority === nextTask.priority &&
previousTask.executionMode === nextTask.executionMode &&
previousTask.paused === nextTask.paused &&
previousTask.userPaused === nextTask.userPaused &&
previousTask.error === nextTask.error &&
previousTask.size === nextTask.size &&
previousTask.blockedBy === nextTask.blockedBy &&
@@ -760,7 +761,7 @@ function TaskCardComponent({
}, [onOpenDetail, addToast]);
const isFailed = task.status === "failed";
const isPaused = task.paused === true;
const isPaused = task.paused === true || task.userPaused === true;
const pausedByAgent = Boolean(task.paused && task.pausedByAgentId);
const normalizedPriority = normalizeTaskPriorityValue(task.priority);
const showPriorityBadge = normalizedPriority !== DEFAULT_TASK_PRIORITY;

View File

@@ -676,6 +676,24 @@ describe("TaskCard", () => {
expect(screen.queryByText("paused by agent")).toBeNull();
});
it("renders todo userPaused tasks as paused", () => {
const { container } = render(
<TaskCard task={makeTask({ column: "todo", paused: undefined, userPaused: true })} onOpenDetail={noop} addToast={noop} />,
);
expect(screen.getByText("paused")).toBeDefined();
expect(container.querySelector(".card")?.className).toContain("paused");
});
it("does not show paused by agent copy for userPaused-only tasks", () => {
render(
<TaskCard task={makeTask({ column: "todo", paused: undefined, userPaused: true, pausedByAgentId: undefined })} onOpenDetail={noop} addToast={noop} />,
);
expect(screen.getByText("paused")).toBeDefined();
expect(screen.queryByText("paused by agent")).toBeNull();
});
it("renders decision-only badge when noCommitsExpected is true", () => {
render(<TaskCard task={makeTask({ noCommitsExpected: true })} onOpenDetail={noop} addToast={noop} />);
expect(screen.getByText("decision-only")).toBeTruthy();