From d6658dda06756db3cbb9dadc01c27ca886c729e6 Mon Sep 17 00:00:00 2001 From: Merge Sim Date: Tue, 1 Sep 2026 00:46:17 -0700 Subject: [PATCH] fix(dev): preserve forced secret protection report --- .../host/deferred-secret-protection-report.test.ts | 14 ++++++++++++++ src/main/host/deferred-secret-protection-report.ts | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/host/deferred-secret-protection-report.test.ts b/src/main/host/deferred-secret-protection-report.test.ts index 9152d03e1de..5c6336bec3d 100644 --- a/src/main/host/deferred-secret-protection-report.test.ts +++ b/src/main/host/deferred-secret-protection-report.test.ts @@ -94,6 +94,20 @@ describe('scheduleSecretProtectionGapReport', () => { expect(logged).toEqual([]) }) + it('honors forced reports for development profiles', () => { + scheduleSecretProtectionGapReport({ + dataFile, + log: (m) => void logged.push(m), + deferUntilFirstWindow: true, + skipInDevelopment: true, + force: true + }) + createWindow().reveal() + drain() + expect(probes).toBe(1) + expect(logged).toEqual(['[secrets] The OS keyring is unavailable.']) + }) + /** Runs an already-queued setImmediate; the 1ms is slack, not a delay under test. */ const drain = (): void => void vi.advanceTimersByTime(1) diff --git a/src/main/host/deferred-secret-protection-report.ts b/src/main/host/deferred-secret-protection-report.ts index d9f6018aabe..8f5be1fb047 100644 --- a/src/main/host/deferred-secret-protection-report.ts +++ b/src/main/host/deferred-secret-protection-report.ts @@ -44,7 +44,7 @@ export function scheduleSecretProtectionGapReport({ /** Development profiles are disposable/isolated and must not trigger OS keychain UI. */ skipInDevelopment?: boolean }): void { - if (skipInDevelopment) { + if (skipInDevelopment && !options.force) { return }