Commit Graph
27 Commits
Author SHA1 Message Date
Claude e9faf1df8e debug: add reveal pairs logging to diagnose empty pairs issue, bump 0.9.13
https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 17:10:18 +00:00
Claude 9cb582652f chore: bump version to 0.9.12
https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 16:52:34 +00:00
Claude d494ebaf8c fix: reveal mode not working when already ON at page load
If reveal mode was saved as ON in settings, the page loaded with
revealMode=true and prevRevealMode=true. The checkRevealToggle
function only fires on transitions (off→on or on→off), so the
reveal interval was never started. Added initialization check
that starts the reveal interval immediately if revealMode is
already true at page load.

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 16:49:42 +00:00
Claude 65d60cfbe0 fix: new unique extension UUID to avoid duplicate ID on AMO, bump 0.9.10
https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 04:05:54 +00:00
Claude 281e1a1d08 fix: data_collection_permissions.required must be array ["none"]
Per Mozilla docs, required is an array of data type strings.
For extensions that collect no data: ["none"].
Source: https://extensionworkshop.com/documentation/develop/firefox-builtin-data-consent/

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 04:02:31 +00:00
Claude 75f1dd7aca fix: data_collection_permissions requires 'required' property, bump min version to 140
AMO expects { required: false } not { collect_user_data: false }.
Bumped strict_min_version to 140.0 (when data_collection_permissions
was introduced). Version 0.9.8.

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 03:59:29 +00:00
Claude e759b5f1b4 fix: move data_collection_permissions under browser_specific_settings.gecko
AMO requires the property at browser_specific_settings/gecko/data_collection_permissions,
not at the manifest root. Bump 0.9.7.

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 03:57:34 +00:00
Claude 85c71631eb fix: add data_collection_permissions for AMO validation, bump 0.9.6
Mozilla now requires data_collection_permissions in the manifest.
Set collect_user_data: false (Silent Send collects no user data).

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 03:41:44 +00:00
Claude 072511eb7a chore: bump version to 0.9.5
https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 01:26:52 +00:00
Claude d8784e8f75 fix: reveal mode broken when encryption enabled — encrypted settings blob passed to content script
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
2026-03-29 00:53:17 +00:00
Claude d3646fbdf3 fix: move test suite JS to external file for Firefox CSP, bump 0.9.3
Firefox extension CSP blocks inline <script> tags. Moved all test
code to test-suite.js (loaded via src attribute). Build script updated
to copy both files.

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-28 18:37:58 +00:00
Claude a2b598236c chore: bump version to 0.9.2
https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-28 18:20:21 +00:00
Claude 4b478c71bd chore: set version to 0.9.0 for pre-release testing
https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-28 15:17:20 +00:00
Claude e6e9894d99 feat: add AI services and developer/support sites to built-in domains
New AI sites: Perplexity, Copilot, DeepSeek, HuggingChat, Poe
Developer/support: GitHub, GitLab, Reddit (www + old), Stack Overflow, Pastebin

The existing interception is service-agnostic — it scans all JSON strings
in POST/PUT/PATCH requests through the 4-stage substitution pipeline.
No site-specific handling needed; all sites use the same method.

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-27 21:12:13 +00:00
Claude e739531cee fix: catch concatenated name forms (JohnSmith, john.smith, etc.)
Smart patterns now catch all concatenated combinations of first+last
names with common separators:

| Pattern | Example real | Example replaced |
|---------|-------------|-----------------|
| FirstLast | JohnSmith | AdemoDem |
| firstlast | johnsmith | ademodemo |
| first.last | john.smith | ademo.demo |
| first_last | john_smith | ademo_demo |
| first-last | john-smith | ademo-demo |
| LastFirst | SmithJohn | DemoAdemo |
| last.first | smith.john | demo.ademo |

Case is preserved: all-lowercase input → lowercase output,
ALL-UPPERCASE → uppercase, mixed case → as configured.

Also bumped all versions to 2.0.5.

https://claude.ai/code/session_01SWSwDfMVij53bCTNSCLMwn
2026-03-27 03:16:56 +00:00
Claude 3062d4689c chore: bump all versions to 2.0.3
https://claude.ai/code/session_01SWSwDfMVij53bCTNSCLMwn
2026-03-27 02:11:26 +00:00
Claude 75845d7ec7 fix: Firefox signing errors — manifest format + JS syntax
1. Removed data_collection_permissions from Firefox manifest — it
   requires Firefox 140+ but we target 128+. Only produces a warning
   when missing, not a blocking error.

2. Fixed JS syntax error in content.js line 450 — two extra closing
   braces from a bad merge in the proper noun detection function
   caused a parse error that blocked Mozilla validation.

https://claude.ai/code/session_01SWSwDfMVij53bCTNSCLMwn
2026-03-27 01:31:39 +00:00
Claude 64ed20bc88 chore: sync all versions to 2.0.0 + fix sign script
Set Chrome, Firefox, and package.json all to version 2.0.0
(major bump reflecting encrypted storage, document scanning,
org/team features, sync improvements).

Sign script rewritten:
- Tries current version first instead of always bumping
- Only bumps on "version already exists" errors
- Handles rate limiting by parsing throttle duration from error
  and waiting the exact time (not blindly retrying)
- Only updates source files on successful signing (not before)
- Reduced max attempts to 5 (with proper backoff, shouldn't need more)
- Commits version bump only after successful sign

https://claude.ai/code/session_01SWSwDfMVij53bCTNSCLMwn
2026-03-26 22:50:17 +00:00
Claude 3ffac3299f fix: Firefox signing — manifest_version corruption + rate limiting
The sign script's sed command was replacing ALL "version" patterns
including "manifest_version": 3, corrupting it to "manifest_version": 1.
Fixed by anchoring the sed pattern to only match the top-level
"version" field (starts with two spaces at line beginning).

Also:
- Added data_collection_permissions to Firefox manifest (new Mozilla
  requirement for all extensions)
- Added 8-second sleep between retry attempts to avoid Mozilla API
  rate limiting (was causing cascading failures)

https://claude.ai/code/session_01SWSwDfMVij53bCTNSCLMwn
2026-03-26 20:58:16 +00:00
Claude 70c7b759c6 feat: auto-sync, version history, merge, org policy, tamper guard
New modules:
- version-history.js: IndexedDB snapshot storage with pruning/rollback
- merge.js: three-way field-level merge for sync conflict resolution
- org-policy.js: team/org policy enforcement, compliance checking,
  invite codes, required mappings that can't be disabled
- tamper-guard.js: admin password to protect disable/clear/export
  actions, org policy can prevent disabling

Auto background sync:
- Gist/URL sync via chrome.alarms (MV3-safe, survives SW restarts)
- Configurable interval (5/15/30 min), push on local changes
- performAutoSync() orchestrates pull-then-conditional-push

Multi-device dashboard:
- Device auto-registration with UUID + browser/platform detection
- Device list embedded in sync data for cross-device visibility
- getDeviceInfo(), setDeviceName(), getDevices(), removeDevice()

Manifest changes:
- Added "alarms" permission for background polling

Service worker:
- Alarm listeners for auto-sync and org policy polling (hourly)
- Tamper guard message handlers
- Alarms set up on install and startup

WIP: Options UI integration pending for all new features.

https://claude.ai/code/session_01SWSwDfMVij53bCTNSCLMwn
2026-03-26 19:39:28 +00:00
Claude 1e475196d6 feat: sync notification badge + clarify cloud storage support
Notification system:
- When sync applies data (file folder, browser account, or sync code),
  ss_sync_notification is written to local storage with the source.
- Service worker catches it via storage.onChanged, shows a purple 'SYN'
  badge on the extension icon that persists until Options is opened, and
  fires a desktop notification ('Settings updated via sync folder — open
  Options to review').
- Clicking the desktop notification opens the Options page directly.
- On service worker wake, SYN badge is restored if the notification was
  not yet dismissed.
- Opening Options clears ss_sync_notification, resets the badge, and
  sends a sync:notification-seen message to the service worker.
- Added 'notifications' permission to both manifests.

Cloud storage clarity:
- Options page now explicitly lists that the folder sync works with any
  cloud storage that has a desktop sync client: Dropbox, OneDrive, Google
  Drive, iCloud Drive, Box, pCloud, Nextcloud, Synology Drive, etc.

https://claude.ai/code/session_01TKpSR9M8JgHLXCp5CeDsQP
2026-03-26 14:42:18 +00:00
Claude ea61db7f6e chore: bump version to 0.3.1 for Firefox re-signing
https://claude.ai/code/session_01Dvgwe7XMoSxnWXkih8p1Cw
2026-03-26 03:32:58 +00:00
Claude 1995208941 feat: v0.3.0 — multiple entries per field, README setup guide
Identity fields now support multiple entries per type:
- Add unlimited names (first, last, middle, nickname), emails,
  usernames, hostnames, and phone numbers per profile
- "+ Add" button on each section, "x" to remove rows
- Names have a type selector (1st/Last/Mid/Nick)

README now includes:
- First-time setup walkthrough (step by step)
- Icon color legend (gray/black/blue/red)
- Keyboard shortcuts table
- Note that extension does nothing until configured

Also bumps version to 0.3.0 for Firefox re-signing.

https://claude.ai/code/session_01Dvgwe7XMoSxnWXkih8p1Cw
2026-03-26 03:08:46 +00:00
Claude e7880b3b1a feat: keyboard shortcuts for reveal mode and enable toggle
Alt+Shift+R — toggle reveal mode (fake→real in responses)
Alt+Shift+S — toggle Silent Send on/off

Badge flashes "EYE" (blue) when reveal activates, "ON"/"OFF"
(green/red) when toggling enabled state. Users can remap these
in chrome://extensions/shortcuts or Firefox about:addons.

https://claude.ai/code/session_01Dvgwe7XMoSxnWXkih8p1Cw
2026-03-26 02:33:38 +00:00
Claude 60b810b1b9 feat: custom domains for OpenWebUI + fix README issues
- Add custom domain support in Options page so users can add
  self-hosted AI services (e.g. https://ai.myserver.com)
- Background worker dynamically injects content scripts on
  custom domains using scripting.executeScript
- Add optional_host_permissions so Chrome can grant per-domain access
- Rewrite README: add clone step to Firefox instructions, clarify
  what "credentials" means in step 3, add Windows commands alongside
  Mac/Linux for every terminal step
- Bump version to 0.2.0

https://claude.ai/code/session_01Dvgwe7XMoSxnWXkih8p1Cw
2026-03-26 00:35:21 +00:00
Claude 6e3249b8ff feat: add support for ChatGPT, Grok, Gemini, and OpenWebUI
Extend Silent Send to intercept API requests on all major AI chat
services. Each service has different API shapes:

- ChatGPT: /backend-api/conversation with content.parts arrays
- Grok: GraphQL + /2/grok/add_response with message field
- Gemini: form-encoded f.req with nested arrays (+ generateContent)
- OpenWebUI: /api/chat and /ollama/api/chat (self-hosted)

All services share the same substitution pipeline. Manifests updated
for both Chrome and Firefox with host_permissions for all domains.
OpenWebUI supported via localhost/127.0.0.1 for self-hosted instances.

https://claude.ai/code/session_01Dvgwe7XMoSxnWXkih8p1Cw
2026-03-26 00:27:07 +00:00
Claude 3ef5df7efb feat: add Firefox support with cross-browser compatibility
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
2026-03-25 23:36:59 +00:00