Files
silent-send/manifest.json
T
Claude ed92b07703 Add grok.com; fix fetch hook on React/Next.js sites (Reddit, Grok, etc.)
Two fixes:

1. grok.com missing from manifest
   Grok moved from grok.x.ai to grok.com. The extension wasn't activating
   on grok.com at all (no content script injected). Added to host_permissions
   and content_scripts in both manifests.

2. Fetch hook bypassed on React/Next.js sites
   content.js was injected async (after awaiting the document-scanner),
   so by the time it replaced window.fetch, React/Next.js had already stored
   a reference to the original. All fetch calls from framework code bypassed
   the hook entirely.

   Fix: load early-hook.js as a "world": "MAIN" content script at
   document_start. This runs synchronously before any page JavaScript,
   captures the real fetch in window.__ssOriginalFetch, and replaces
   window.fetch with a lightweight wrapper. When content.js eventually
   loads, it sets window.__ssInterceptFetch (the real substitution logic)
   and window.__ssReady = true, activating the wrapper. React's stored
   fetch reference now routes through the interceptor.

   Falls back to direct window.fetch replacement if early-hook.js somehow
   didn't run (e.g. older browser without world: MAIN support).

https://claude.ai/code/session_01CwcZK8nqL8pyBH9AxDs9qo
2026-04-01 16:07:01 +00:00

141 lines
3.8 KiB
JSON

{
"manifest_version": 3,
"name": "Silent Send",
"version": "0.9.39",
"description": "Intercepts personal info and substitutes it with user-defined replacements before sending to AI services.",
"permissions": [
"storage",
"activeTab",
"scripting",
"notifications",
"alarms"
],
"host_permissions": [
"https://claude.ai/*",
"https://chatgpt.com/*",
"https://chat.openai.com/*",
"https://copilot.microsoft.com/*",
"https://grok.com/*",
"https://grok.x.ai/*",
"https://x.com/i/grok*",
"https://gemini.google.com/*",
"https://www.perplexity.ai/*",
"https://copilot.microsoft.com/*",
"https://chat.deepseek.com/*",
"https://huggingface.co/chat/*",
"https://poe.com/*",
"https://github.com/*",
"https://gitlab.com/*",
"https://www.reddit.com/*",
"https://old.reddit.com/*",
"https://stackoverflow.com/*",
"https://pastebin.com/*",
"http://localhost/*",
"http://127.0.0.1/*"
],
"background": {
"service_worker": "src/background/service-worker.js",
"type": "module"
},
"content_scripts": [
{
"matches": [
"https://claude.ai/*",
"https://chatgpt.com/*",
"https://chat.openai.com/*",
"https://copilot.microsoft.com/*",
"https://grok.com/*",
"https://grok.x.ai/*",
"https://x.com/i/grok*",
"https://gemini.google.com/*",
"https://www.perplexity.ai/*",
"https://copilot.microsoft.com/*",
"https://chat.deepseek.com/*",
"https://huggingface.co/chat/*",
"https://poe.com/*",
"https://github.com/*",
"https://gitlab.com/*",
"https://www.reddit.com/*",
"https://old.reddit.com/*",
"https://stackoverflow.com/*",
"https://pastebin.com/*",
"http://localhost/*",
"http://127.0.0.1/*"
],
"js": ["src/content/early-hook.js"],
"run_at": "document_start",
"world": "MAIN",
"all_frames": true
},
{
"matches": [
"https://claude.ai/*",
"https://chatgpt.com/*",
"https://chat.openai.com/*",
"https://copilot.microsoft.com/*",
"https://grok.com/*",
"https://grok.x.ai/*",
"https://x.com/i/grok*",
"https://gemini.google.com/*",
"https://www.perplexity.ai/*",
"https://copilot.microsoft.com/*",
"https://chat.deepseek.com/*",
"https://huggingface.co/chat/*",
"https://poe.com/*",
"https://github.com/*",
"https://gitlab.com/*",
"https://www.reddit.com/*",
"https://old.reddit.com/*",
"https://stackoverflow.com/*",
"https://pastebin.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_page": "src/options/options.html",
"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_host_permissions": [
"https://*/*",
"http://*/*"
],
"web_accessible_resources": [
{
"resources": ["src/content/content.js", "src/lib/document-scanner.js"],
"matches": ["<all_urls>"]
}
]
}