From 8f1b6007986f31fb5e2a80e80021602a13fa20a2 Mon Sep 17 00:00:00 2001 From: mesalogo Date: Fri, 9 Oct 2026 20:25:48 +0800 Subject: [PATCH] fix(supervisor): resume legacy changed-source reviews --- src/renderer/src/SupervisorActivity.test.tsx | 13 +++++++++++++ src/renderer/src/SupervisorActivity.tsx | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/renderer/src/SupervisorActivity.test.tsx b/src/renderer/src/SupervisorActivity.test.tsx index 0e9abb09..72cf0df2 100644 --- a/src/renderer/src/SupervisorActivity.test.tsx +++ b/src/renderer/src/SupervisorActivity.test.tsx @@ -50,6 +50,19 @@ it.each(['zh-CN', 'en-US'] as const)('retains operational failure details and re expect(screen.getByRole('button', { name: copy.reviewSettings.resume })).toBeEnabled() }) +it('allows continuing a legacy source-change failure', async () => { + const copy = i18nResources['zh-CN'].heartbeat + const resume = vi.fn().mockResolvedValue(undefined) + vi.stubGlobal('goodbuddy', { supervision: { activity: vi.fn().mockResolvedValue([{ + ...row, status: 'failed', supervisionStatus: 'failed', + error: 'Review source changed or was removed', + reviewProgress: { runId: 'saved-run', batches: 1, characters: 1000, sources: 2, remainingSources: 1, restartRequired: true, complete: false } + }]), resume } }) + render() + fireEvent.click(await screen.findByRole('button', { name: copy.reviewSettings.resume })) + await waitFor(() => expect(resume).toHaveBeenCalledWith({ runId: 'saved-run' })) +}) + it('shows durable progress, pauses and continues the same run, and expands retained facts', async () => { const progress = { runId: 'saved-run', batches: 1, characters: 1000, sources: 2, remainingSources: 1, complete: false } const activity = vi.fn().mockResolvedValue([{ ...row, reviewProgress: progress }]) diff --git a/src/renderer/src/SupervisorActivity.tsx b/src/renderer/src/SupervisorActivity.tsx index 501c9d3f..fff638d9 100644 --- a/src/renderer/src/SupervisorActivity.tsx +++ b/src/renderer/src/SupervisorActivity.tsx @@ -186,7 +186,7 @@ export function SupervisorActivity({ active, projects, onOpenResult, configId, c } - {!stoppingKind && !row.reviewProgress.complete && !row.reviewProgress.restartRequired && (row.supervisionStatus === 'paused' || row.supervisionStatus === 'failed') && } + {!stoppingKind && !row.reviewProgress.complete && (row.supervisionStatus === 'paused' || row.supervisionStatus === 'failed') && } }