From 0bea678a459a5d605e13a5f0129e488f69f9804a Mon Sep 17 00:00:00 2001 From: Brennan Benson <79079362+brennanb2025@users.noreply.github.com> Date: Mon, 20 Jul 2026 22:03:58 -0700 Subject: [PATCH] fix(dashboard): thread finishedAt through payload validator + test fixture CI typecheck caught a DashboardCard fixture in dashboard-payload-validation.test.ts missing the new finishedAt field; also validate finishedAt in the relay guard. --- src/main/ipc/dashboard-payload-validation.test.ts | 1 + src/main/ipc/dashboard-payload-validation.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/ipc/dashboard-payload-validation.test.ts b/src/main/ipc/dashboard-payload-validation.test.ts index 1a40ce22ec6..3ae3e85fdf1 100644 --- a/src/main/ipc/dashboard-payload-validation.test.ts +++ b/src/main/ipc/dashboard-payload-validation.test.ts @@ -21,6 +21,7 @@ const SNAPSHOT = { repoName: 'Orca', worktreeName: 'Dashboard', startedAt: 1_699_999_000_000, + finishedAt: null, stateChangedAt: 1_699_999_500_000, unseen: true, askSummary: '{"question":"Proceed?"}' diff --git a/src/main/ipc/dashboard-payload-validation.ts b/src/main/ipc/dashboard-payload-validation.ts index a729db97f4d..54168d1904a 100644 --- a/src/main/ipc/dashboard-payload-validation.ts +++ b/src/main/ipc/dashboard-payload-validation.ts @@ -77,6 +77,7 @@ function isDashboardCard(value: unknown): boolean { isBoundedString(card.repoName, MAX_LABEL_LENGTH, true) && isBoundedString(card.worktreeName, MAX_LABEL_LENGTH, true) && isFiniteNumber(card.startedAt) && + (card.finishedAt === null || isFiniteNumber(card.finishedAt)) && isFiniteNumber(card.stateChangedAt) && typeof card.unseen === 'boolean' && isOptionalBoundedString(card.askSummary, AGENT_STATUS_INTERACTIVE_PROMPT_MAX_LENGTH)