Add manifest.firefox.json for Firefox MV3 (gecko ID, background scripts instead of service_worker, options_ui). Introduce browser-polyfill.js shim so all modules use whichever API is available (browser.* or chrome.*). Add build.sh to target chrome, firefox, or both. https://claude.ai/code/session_01Dvgwe7XMoSxnWXkih8p1Cw
71 lines
2.7 KiB
Markdown
71 lines
2.7 KiB
Markdown
# Silent Send
|
|
|
|
A Chrome extension that intercepts personal information and substitutes it with user-defined replacements before sending to Claude.ai.
|
|
|
|
## How it works
|
|
|
|
1. **You define mappings** — e.g. "John Smith" → "Alex Demo", "john@gmail.com" → "alex@example.com"
|
|
2. **You type normally** — you see your real text while composing
|
|
3. **On send, it swaps** — the extension intercepts the API request and replaces real values with substitutes
|
|
4. **Badge shows count** — the extension icon shows how many substitutions were made
|
|
5. **Reveal mode** — optionally translates Claude's responses back to your real data
|
|
|
|
## How to verify it's working
|
|
|
|
- **Badge count** on the extension icon shows substitutions per page
|
|
- **Activity tab** in the popup shows a timestamped log of every substitution
|
|
- **Test tab** in the popup lets you type text and see the before/after diff
|
|
- **Reveal mode** (eye icon) toggles showing real vs substitute data in responses
|
|
- **Browser DevTools** → Console shows `[Silent Send] Substituted N value(s)` messages
|
|
|
|
## Installation
|
|
|
|
### Chrome (Developer Mode)
|
|
1. Clone this repo
|
|
2. Run `./build.sh chrome` (or just use the root directory directly)
|
|
3. Open `chrome://extensions/`
|
|
4. Enable **Developer mode** (top right)
|
|
5. Click **Load unpacked** → select `dist/chrome/` (or root dir)
|
|
6. Navigate to claude.ai — the extension is active
|
|
|
|
### Firefox
|
|
1. Clone this repo
|
|
2. Run `./build.sh firefox`
|
|
3. Open `about:debugging` → **This Firefox**
|
|
4. Click **Load Temporary Add-on** → select `dist/firefox/manifest.json`
|
|
5. Navigate to claude.ai — the extension is active
|
|
|
|
For persistent Firefox installation, package and sign via `web-ext`:
|
|
```
|
|
cd dist/firefox && npx web-ext sign --api-key=YOUR_KEY --api-secret=YOUR_SECRET
|
|
```
|
|
|
|
No store required for either browser in developer mode.
|
|
|
|
## Architecture
|
|
|
|
```
|
|
manifest.json — Extension manifest (Manifest V3)
|
|
src/
|
|
background/
|
|
service-worker.js — Badge management, logging coordination
|
|
content/
|
|
injector.js — Content script (isolated world) — loads config, bridges messaging
|
|
content.js — Page script (main world) — hooks fetch(), does substitution
|
|
content.css — Visual indicators (highlights, reveals)
|
|
popup/
|
|
popup.html/css/js — Quick access: add mappings, view activity, test mode
|
|
options/
|
|
options.html/css/js — Full mapping management, import/export, settings
|
|
lib/
|
|
substitution-engine.js — Core find/replace logic
|
|
storage.js — Browser storage wrapper
|
|
browser-polyfill.js — Chrome/Firefox API compatibility
|
|
```
|
|
|
|
## Privacy
|
|
|
|
- All data stays local in browser storage
|
|
- No external servers, no telemetry, no analytics
|
|
- The extension only activates on claude.ai
|