Bug 1 - Reveal mode not working (all browsers): sessionSubstitutions stored "ademo demo" (full name) as key, but buildRevealPairs looked up "ademo" and "demo" individually. No match, no reveal pairs, reveal did nothing. Fixed by also storing individual words from multi-word replacements so both "ademo demo" AND "ademo" AND "demo" are in the map. Bug 2 - Missing await on _handleDecryptedMeta (sync.js): Two call sites returned the Promise instead of the resolved value. Downstream code checking decResult.data got undefined. Added await. Bug 3 - Profile selector broken by safeHTML (popup.js): DOMParser.parseFromString wraps content in <html><body> which mangles <option> elements when moved to a <select>. Replaced with new Option() DOM API which creates proper option elements. https://claude.ai/code/session_01SWSwDfMVij53bCTNSCLMwn
94 lines
2.2 KiB
JSON
94 lines
2.2 KiB
JSON
{
|
|
"manifest_version": 3,
|
|
"name": "Silent Send",
|
|
"version": "2.0.10",
|
|
"description": "Intercepts personal info and substitutes it with user-defined replacements before sending to AI services.",
|
|
"browser_specific_settings": {
|
|
"gecko": {
|
|
"id": "silent-send@example.com",
|
|
"strict_min_version": "128.0"
|
|
}
|
|
},
|
|
"permissions": [
|
|
"storage",
|
|
"activeTab",
|
|
"scripting",
|
|
"notifications",
|
|
"alarms"
|
|
],
|
|
"host_permissions": [
|
|
"https://claude.ai/*",
|
|
"https://chatgpt.com/*",
|
|
"https://chat.openai.com/*",
|
|
"https://grok.x.ai/*",
|
|
"https://x.com/i/grok*",
|
|
"https://gemini.google.com/*",
|
|
"http://localhost/*",
|
|
"http://127.0.0.1/*"
|
|
],
|
|
"background": {
|
|
"scripts": ["src/background/service-worker.js"],
|
|
"type": "module"
|
|
},
|
|
"content_scripts": [
|
|
{
|
|
"matches": [
|
|
"https://claude.ai/*",
|
|
"https://chatgpt.com/*",
|
|
"https://chat.openai.com/*",
|
|
"https://grok.x.ai/*",
|
|
"https://x.com/i/grok*",
|
|
"https://gemini.google.com/*",
|
|
"http://localhost/*",
|
|
"http://127.0.0.1/*"
|
|
],
|
|
"js": ["src/content/injector.js"],
|
|
"css": ["src/content/content.css"],
|
|
"run_at": "document_start",
|
|
"all_frames": true
|
|
}
|
|
],
|
|
"action": {
|
|
"default_popup": "src/popup/popup.html",
|
|
"default_icon": {
|
|
"16": "icons/icon16.svg",
|
|
"48": "icons/icon48.svg",
|
|
"128": "icons/icon128.svg"
|
|
}
|
|
},
|
|
"options_ui": {
|
|
"page": "src/options/options.html",
|
|
"open_in_tab": true
|
|
},
|
|
"icons": {
|
|
"16": "icons/icon16.svg",
|
|
"48": "icons/icon48.svg",
|
|
"128": "icons/icon128.svg"
|
|
},
|
|
"commands": {
|
|
"toggle-reveal": {
|
|
"suggested_key": {
|
|
"default": "Alt+Shift+R",
|
|
"mac": "Alt+Shift+R"
|
|
},
|
|
"description": "Toggle Reveal Mode"
|
|
},
|
|
"toggle-enabled": {
|
|
"suggested_key": {
|
|
"default": "Alt+Shift+S",
|
|
"mac": "Alt+Shift+S"
|
|
},
|
|
"description": "Toggle Silent Send on/off"
|
|
}
|
|
},
|
|
"optional_permissions": [
|
|
"<all_urls>"
|
|
],
|
|
"web_accessible_resources": [
|
|
{
|
|
"resources": ["src/content/content.js"],
|
|
"matches": ["<all_urls>"]
|
|
}
|
|
]
|
|
}
|