From d8784e8f7532ccd751b8b886669f3ba47338e885 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 29 Mar 2026 00:53:17 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20reveal=20mode=20broken=20when=20encrypti?= =?UTF-8?q?on=20enabled=20=E2=80=94=20encrypted=20settings=20blob=20passed?= =?UTF-8?q?=20to=20content=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When at-rest encryption is enabled, storage.onChanged fires with encrypted blobs for ss_settings. The injector was passing this encrypted blob directly as settings to the page world content script, overwriting real settings with { _ssLocalEncrypted: true, data: ... }. This broke reveal mode, highlights, and any setting toggle because the content script's settings object became the encrypted blob. Fix: skip encrypted settings blobs in injector.js (same check already existed for mappings and identity). The background's settings:updated message already sends decrypted settings correctly. https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT --- manifest.firefox.json | 2 +- manifest.json | 2 +- package.json | 2 +- src/content/injector.js | 5 ++++- src/options/options.html | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/manifest.firefox.json b/manifest.firefox.json index 5a19527..702c90d 100644 --- a/manifest.firefox.json +++ b/manifest.firefox.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "Silent Send", - "version": "0.9.3", + "version": "0.9.4", "description": "Intercepts personal info and substitutes it with user-defined replacements before sending to AI services.", "browser_specific_settings": { "gecko": { diff --git a/manifest.json b/manifest.json index f9392a2..658aa95 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "Silent Send", - "version": "0.9.3", + "version": "0.9.4", "description": "Intercepts personal info and substitutes it with user-defined replacements before sending to AI services.", "permissions": [ "storage", diff --git a/package.json b/package.json index a474845..0dfcc94 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "silent-send", - "version": "0.9.3", + "version": "0.9.4", "private": true, "license": "MIT", "description": "Browser extension that substitutes personal data before sending to AI services", diff --git a/src/content/injector.js b/src/content/injector.js index 506d719..195cb2c 100644 --- a/src/content/injector.js +++ b/src/content/injector.js @@ -127,7 +127,10 @@ const val = changes.ss_identity.newValue; if (!val?._ssLocalEncrypted) msg.identity = mergeProfiles(val); } - if (changes.ss_settings) msg.settings = changes.ss_settings.newValue; + if (changes.ss_settings) { + const val = changes.ss_settings.newValue; + if (!val?._ssLocalEncrypted) msg.settings = val; + } // Only post if we have something meaningful to send if (msg.mappings || msg.identity || msg.settings) { diff --git a/src/options/options.html b/src/options/options.html index 424da6d..cf63583 100644 --- a/src/options/options.html +++ b/src/options/options.html @@ -629,7 +629,7 @@