From bcce37483e0d8e69abb648e944ff6fc6a3cc2ee4 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 29 Mar 2026 21:32:49 +0000 Subject: [PATCH 1/2] Fix footer version, improve PDF filter detection - options.html/js: Footer version now reads dynamically from manifest via api.runtime.getManifest().version instead of hardcoded v0.3.0 - document-scanner.js: Increase FlateDecode lookback from 200 to 500 bytes (real PDF stream dictionaries are often larger than 200 bytes), and support array form /Filter [/FlateDecode] alongside the scalar form https://claude.ai/code/session_01ReZUeR1nrYzJeX7fTqwXMw --- src/lib/document-scanner.js | 4 ++-- src/options/options.html | 2 +- src/options/options.js | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/lib/document-scanner.js b/src/lib/document-scanner.js index 7135877..8add537 100644 --- a/src/lib/document-scanner.js +++ b/src/lib/document-scanner.js @@ -257,8 +257,8 @@ const DocumentScanner = { // Try to decompress if FlateDecode let content = streamData; - const filterMatch = str.slice(Math.max(0, match.index - 200), match.index) - .match(/\/Filter\s*\/FlateDecode/); + const dictSlice = str.slice(Math.max(0, match.index - 500), match.index); + const filterMatch = dictSlice.match(/\/Filter\s*(?:\/FlateDecode|\[\/FlateDecode\]|\[.*?\/FlateDecode.*?\])/); if (filterMatch) { try { diff --git a/src/options/options.html b/src/options/options.html index 87c3eb8..bcb5290 100644 --- a/src/options/options.html +++ b/src/options/options.html @@ -601,7 +601,7 @@ diff --git a/src/options/options.js b/src/options/options.js index 08964b0..c610ca3 100644 --- a/src/options/options.js +++ b/src/options/options.js @@ -28,6 +28,9 @@ document.addEventListener('DOMContentLoaded', async () => { $('#maxLogEntries').value = settings.maxLogEntries || 200; $('#browserSync').checked = settings.browserSync === true; + const { version } = api.runtime.getManifest(); + $('#footerVersion').textContent = `Silent Send v${version}`; + renderMappings(); renderPasswords(); renderDomains(); From 1390e3d24514d08c1bf4545ab7f7e5acd1fd595a Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 29 Mar 2026 21:36:51 +0000 Subject: [PATCH 2/2] Bump version to 0.9.26 https://claude.ai/code/session_01ReZUeR1nrYzJeX7fTqwXMw --- manifest.firefox.json | 2 +- manifest.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.firefox.json b/manifest.firefox.json index bfe133a..f98a261 100644 --- a/manifest.firefox.json +++ b/manifest.firefox.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "Silent Send", - "version": "0.9.25", + "version": "0.9.26", "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 1bc547e..3bb099c 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "Silent Send", - "version": "0.9.25", + "version": "0.9.26", "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 2c731e6..6c16bac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "silent-send", - "version": "0.9.25", + "version": "0.9.26", "private": true, "license": "MIT", "description": "Browser extension that substitutes personal data before sending to AI services",