From 9ec5e9b4e1b9a1a520d134c3909e1c14bc612317 Mon Sep 17 00:00:00 2001 From: adlee-was-taken Date: Tue, 28 Apr 2026 22:01:56 -0400 Subject: [PATCH] fix(ext/sw): atomic chrome.storage update in restore_backup Single set({vaultConfig, imageBase64?}) instead of two sequential sets, so a partial-write window can't leave vaultConfig pointing to the new remote while imageBase64 still references the old vault. --- extension/src/service-worker/router/popup-only.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extension/src/service-worker/router/popup-only.ts b/extension/src/service-worker/router/popup-only.ts index b7ca4a4..83a027d 100644 --- a/extension/src/service-worker/router/popup-only.ts +++ b/extension/src/service-worker/router/popup-only.ts @@ -483,10 +483,11 @@ export async function handle( repoPath: msg.newRemote.repoPath, apiToken: msg.newRemote.apiToken, }; - await chrome.storage.local.set({ vaultConfig: cfg }); + const storageUpdate: Record = { vaultConfig: cfg }; if (out.reference_jpg) { - await chrome.storage.local.set({ imageBase64: out.reference_jpg }); + storageUpdate.imageBase64 = out.reference_jpg; } + await chrome.storage.local.set(storageUpdate); // Make sure the SW's gitHost cache picks up the new config. state.gitHost = newHost;