Commit Graph
224 Commits
Author SHA1 Message Date
Claude 6a962e927b Add .version-bump-undo to .gitignore
Local scratch file created by bump-version.sh; no need to track it.

https://claude.ai/code/session_01QJnEnLfbXKR5FSCQ3Qfs53
2026-03-31 21:21:16 +00:00
Claude 8539c7ba9b Bump version to 0.9.32
https://claude.ai/code/session_01QJnEnLfbXKR5FSCQ3Qfs53
2026-03-31 21:20:46 +00:00
Claude 3420299f51 Fix cross-browser GitHub Gist sync when encryption is enabled
Two bugs prevented sync from working between different browsers
sharing the same GitHub token and encryption password:

1. pullFromGist failed immediately with "No Gist ID stored" on any
   browser that had not previously pushed, because ss_gist_id lives
   in browser.storage.local (isolated per browser). Fix: when no
   local Gist ID is found, search the authenticated user's Gists for
   one containing silent-send-sync.json and cache the result.

2. When the pulled data was encrypted with a different salt (each
   browser generates its own random salt on setup), pullFromGist
   returned needsAuth:true but the UI never set
   window.__ssPendingSyncImport, so the auth prompt fell through to
   reverifyWithPassword instead of authenticateForSync, and the pull
   was never retried after the user entered their password. Fix: set
   window.__ssPendingSyncImport before showing the auth prompt for
   both Gist pull and custom-URL pull, matching how sync-code import
   already handled this flow.

https://claude.ai/code/session_01QJnEnLfbXKR5FSCQ3Qfs53
2026-03-31 20:55:12 +00:00
Outis 7a128b9f10 Merge pull request #63 from outis1one/claude/fix-extension-disable-RJffZ
Claude/fix extension disable r jff z
2026-03-30 18:49:55 -04:00
Claude bb5d9d3837 Bump version to 0.9.31
https://claude.ai/code/session_015TEttQgcq5FALLKLb3uEW8
2026-03-30 22:48:36 +00:00
Claude f021e50c08 Fix extension not fully disabling when toggled off
The fetch/XHR interception correctly checked settings.enabled, but
several other features ignored it — highlights, reveal mode, and
PII auto-detect all continued running after disabling. This adds
settings.enabled checks to the MutationObserver, highlightMatches,
auto-detect input/paste listeners, reveal mode, and cleans up
visual artifacts (highlights, warnings) when the extension is
toggled off.

https://claude.ai/code/session_015TEttQgcq5FALLKLb3uEW8
2026-03-30 22:26:58 +00:00
Outis d6707d9cf6 Bump version to 0.9.30 2026-03-30 11:55:20 -04:00
Claude 4968b4cde2 Bump version to 0.9.30 2026-03-30 15:54:48 +00:00
Outis bd9d28cd50 Bump version to 0.9.29 2026-03-30 10:25:08 -04:00
Claude 90b0a04a9c Bump version to 0.9.29 2026-03-30 14:24:33 +00:00
Outis 4021a496db Bump version to 0.9.28 2026-03-30 09:58:31 -04:00
Claude d35926083f Bump version to 0.9.28 2026-03-30 13:57:56 +00:00
Claude 74df048cef Bump version to 0.9.28 2026-03-30 13:56:49 +00:00
Outis cc5d3bf4fd Bump version to 0.9.27 2026-03-29 18:10:12 -04:00
Outis adabfdff57 Push storage.js and document-scanner.js fixes to main 2026-03-29 17:55:15 -04:00
Outis 8151056456 Fix PDF scanner, add proper noun toggle, fix footer version, bump to 0.9.26
- document-scanner.js: Add missing await on _inflateSync(), widen FlateDecode
  lookback to 500 bytes, support array form /Filter [/FlateDecode]
- content.js, storage.js: Gate proper noun detection behind detectProperNouns
  setting (default false) — was always-on causing noisy false positives
- options.html, options.js: Add toggle for proper noun detection, fix footer
  version to read dynamically from manifest (was hardcoded v0.3.0)
- Bump version 0.9.23 → 0.9.26
2026-03-29 17:48:48 -04:00
Outis 8c455bcc3b Merge pull request #62 from outis1one/claude/explore-silent-send-oth4L
Claude/explore silent send oth4 l
2026-03-29 17:38:40 -04:00
Claude 1390e3d245 Bump version to 0.9.26
https://claude.ai/code/session_01ReZUeR1nrYzJeX7fTqwXMw
2026-03-29 21:36:51 +00:00
Claude bcce37483e 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
2026-03-29 21:32:49 +00:00
Outis 486e1ff27d Merge pull request #61 from outis1one/claude/explore-silent-send-oth4L
Fix PDF decompression, add proper noun detection toggle, bump to 0.9.25
2026-03-29 17:10:50 -04:00
Claude 4b494b5eab Fix PDF decompression, add proper noun detection toggle, bump to 0.9.25
- document-scanner.js: Add missing await on _inflateSync() call — FlateDecode
  streams were not being decompressed because the async function was called
  without await, causing decompressed to hold a Promise instead of data
- content.js, storage.js, options.html, options.js: Gate proper noun / capital
  letter detection behind a new detectProperNouns setting (default off); was
  previously always-on causing noisy false-positive warnings on AI thinking
  output and common capitalized words
- Bump version 0.9.23 → 0.9.25

https://claude.ai/code/session_01ReZUeR1nrYzJeX7fTqwXMw
2026-03-29 21:09:49 +00:00
Outis 8a9736d6a3 Merge pull request #60 from outis1one/claude/audit-silent-send-5thF8
Claude/audit silent send 5th f8
2026-03-29 16:01:47 -04:00
Claude 490b2ebf33 Fix reveal mode not restoring substitute values on toggle off
The old unrevealInElement relied on a WeakMap (originalTexts) to restore
text nodes to their pre-reveal state. This broke when SPA frameworks
(React) re-rendered the DOM while reveal was active — new text nodes
containing real values had no WeakMap entry to restore from, so real
data stayed visible after turning reveal off.

Fix: unrevealInElement now actively reverse-replaces real values back
to their substitute counterparts using the reveal pairs, matching the
same approach revealText uses in the forward direction. This works
regardless of DOM re-renders or streaming content changes.

https://claude.ai/code/session_01NNBEPuXMFGWezJb1f958nL
2026-03-29 19:56:57 +00:00
Claude 4fa607d53f Wire up document scanner for file upload interception, bump to 0.9.23
- Inject document-scanner.js into page world via injector.js (as module,
  sets globalThis.DocumentScanner)
- Add FormData interception to fetch hook: scans File/Blob entries through
  DocumentScanner.processUpload(), also substitutes string fields
- Add document-scanner.js to web_accessible_resources in both manifests
- Bump version to 0.9.23 in package.json, manifest.json, manifest.firefox.json

https://claude.ai/code/session_01NNBEPuXMFGWezJb1f958nL
2026-03-29 19:49:04 +00:00
Outis a52693c586 Merge pull request #59 from outis1one/claude/audit-silent-send-5thF8
Fix PPI → PII terminology across entire codebase
2026-03-29 15:33:55 -04:00
Claude bc1492032d Fix PPI → PII terminology across entire codebase
All references to "PPI" (Personal Private Information) have been
corrected to the industry-standard "PII" (Personally Identifiable
Information). This includes UI labels, comments, CSS class comments,
and variable/function names (PPI_PATTERNS → PII_PATTERNS,
autoDetectPPI → autoDetectPII, scanInputForPPI → scanInputForPII,
ppiWarnings → piiWarnings).

Files changed: README.md, content.css, content.js, auto-detect.js,
org-policy.js, storage.js, options.html, popup.html, popup.js

https://claude.ai/code/session_01NNBEPuXMFGWezJb1f958nL
2026-03-29 19:32:02 +00:00
Outis a0202625ac Merge pull request #58 from outis1one/claude/read-repo-YMu21
revert: restore src/ from pre-doc-scanner baseline, bump 0.9.21
2026-03-29 14:45:33 -04:00
Claude 2719e1be44 revert: restore entire src/ from pre-doc-scanner commit (e4b44a7)
Going back to a known-good baseline. This version had:
- Working reveal mode with CSS Highlight API
- Working substitution (fetch + XHR hooks)
- Smart patterns (names, emails, phones, usernames)
- Encryption/sync (password, TOTP, WebAuthn)
- Multiple identity profiles
- Activity log
- Secret scanner
- Auto-detect PII warnings
- Pre-send PII detection

Kept current manifests (UUID, data_collection_permissions, version).
No renames applied — uses original naming (secretScanning, PPI, etc).
Will re-apply renames and new features from this working base.

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 18:45:10 +00:00
Outis 73bc08dad2 Merge pull request #57 from outis1one/claude/read-repo-YMu21
fix: config race condition — use persistent JSON element, bump 0.9.20
2026-03-29 14:25:47 -04:00
Claude 740f692ff1 fix: config not reaching content.js — race condition with script removal
The data-ss-config attribute on the script tag was being removed
(via script.onload) before content.js could read it. Changed approach:
inject config as a separate <script type="application/json" id="ss-config-data">
element that persists in the DOM until content.js reads and removes it.

This eliminates the race condition between script execution and onload
removal. Bump 0.9.20.

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 18:25:28 +00:00
Outis 274bb89b48 Merge pull request #56 from outis1one/claude/read-repo-YMu21
fix: restore working injector + add get:decrypted-config handler, bump 0.9.19
2026-03-29 14:07:38 -04:00
Claude b622d5abd4 fix: restore working injector.js + add missing get:decrypted-config handler
Restored injector.js from v2.0.14 (commit 9a11896) which:
- Requests decrypted config from background via get:decrypted-config
  message instead of passing empty arrays when data is encrypted
- Handles the identity.profiles merge correctly for background responses
- Passes ss_settings directly (not checking _ssLocalEncrypted which
  caused settings loss)

Added missing get:decrypted-config message handler to service-worker.js
which returns decrypted mappings, identity, and settings via Storage
module.

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 18:06:51 +00:00
Outis 685917f695 Merge pull request #55 from outis1one/claude/read-repo-YMu21
fix: restore working content.js from v2.0.14, bump 0.9.18
2026-03-29 13:56:13 -04:00
Claude 2a1bd88dd6 fix: restore working content.js from v2.0.14 with renames applied
Reverted content.js to commit 9a11896 (the last version where reveal
mode worked) and re-applied only the renames:
- PPI → PII
- secretScanning → autoRedact
- SECRET_PATTERNS → REDACT_PATTERNS
- scanAndRedactSecrets → runAutoRedact
- category: 'secret' → category: 'redact'
- Added customRedactPatterns support to runAutoRedact

This restores:
- Individual word storage in sessionSubstitutions (needed for reveal)
- fetch(Request) handling (not just fetch(url, options))
- Blob/ArrayBuffer/URLSearchParams body conversion
- isInNonChatArea scoping (narrowed version)
- Proper noun detection gated by settings.detectProperNouns
- Mapping values added to configured skip set

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 17:55:54 +00:00
Outis a465926170 Merge pull request #54 from outis1one/claude/read-repo-YMu21
fix: narrow isInNonChatArea to stop blocking chat reveal, bump 0.9.17
2026-03-29 13:50:39 -04:00
Claude fe684047a8 fix: isInNonChatArea too aggressive — blocking reveal on chat content
The class-based selectors ([class*="header"], [class*="Header"],
[class*="nav-"], etc.) were matching Claude.ai's chat content area
elements, preventing reveal from running on any response text.

Narrowed to only structural elements: nav, aside, [role="navigation"],
[role="complementary"], [data-sidebar]. Removed HEADER/FOOTER from
SKIP_REVEAL_TAGS since sites use these tags inside chat layouts.

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 17:50:25 +00:00
Outis 77c48de5f5 Merge pull request #53 from outis1one/claude/read-repo-YMu21
fix: filter partial name subs from reveal pairs, bump 0.9.16
2026-03-29 13:35:55 -04:00
Claude 433e5a7736 fix: filter out partial name substitutions from reveal pairs
The smart engine records individual name parts ("Ademo"→"John",
"Demo"→"Smith") AND the combined form ("Ademo Demo"→"John Smith")
in sessionSubstitutions. The catch-all in buildRevealPairs was
adding all of them, causing partial replacements that corrupted
the DOM and made the cache oscillate between 4 and 0 pairs.

Fix: skip session entries whose key is a substring of a longer
entry (e.g. "ademo" is part of "ademo demo"). Only the combined
form gets added as a reveal pair.

Also: remove debug logging, improve cache with size tracking.

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 17:35:39 +00:00
Outis 476bc72faf Merge pull request #52 from outis1one/claude/read-repo-YMu21
fix: restore missing reveal scoping from unmerged branch, bump 0.9.15
2026-03-29 13:29:10 -04:00
Claude 3ae740216b fix: restore missing isInNonChatArea + SKIP_REVEAL_TAGS from unmerged branch
Root cause found: commit 9a11896 (v2.0.14) added isInNonChatArea()
and expanded SKIP_REVEAL_TAGS with NAV/ASIDE/HEADER/FOOTER, but that
commit was on a branch that was never merged into main. When we started
our work from main, these fixes were missing.

Restored:
- isInNonChatArea() function — prevents reveal from touching sidebars,
  navigation, headers, footers, and other non-chat UI
- SKIP_REVEAL_TAGS expanded with NAV, ASIDE, HEADER, FOOTER
- isInNonChatArea checks added to revealInElement, unrevealInElement,
  and highlightMatches (both element-level and walker-level)

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 17:28:46 +00:00
Outis 8eb08dc56e Merge pull request #51 from outis1one/claude/read-repo-YMu21
fix: reveal pairs oscillating, bump 0.9.14
2026-03-29 13:21:02 -04:00
Claude 5e47ed5aae fix: reveal pairs oscillating between populated and empty
Two bugs found:
1. Individual name parts ("Ademo"→"John", "Demo"→"Smith") were added
   as reveal pairs, causing partial replacements that corrupted the DOM.
   The smart engine sends combined forms ("Ademo Demo"→"John Smith")
   which the catch-all already handles. Removed individual name entries
   from buildRevealPairs — only emails, usernames, hostnames, phones
   are matched individually.

2. Cache invalidated on every ss:config-updated (including settings-only
   changes like reveal toggle). Now only invalidates when mappings or
   identity actually change.

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 17:20:48 +00:00
Outis 2bcdd00b74 Merge pull request #50 from outis1one/claude/read-repo-YMu21
debug: reveal pairs logging, bump 0.9.13
2026-03-29 13:10:31 -04:00
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
Outis 3c794a7c1e Merge pull request #49 from outis1one/claude/read-repo-YMu21
chore: bump version to 0.9.12
2026-03-29 12:53:06 -04:00
Claude 9cb582652f chore: bump version to 0.9.12
https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
2026-03-29 16:52:34 +00:00
Outis 862ddc2e62 Merge pull request #48 from outis1one/claude/read-repo-YMu21
fix: reveal mode not working when already ON at page load, bump 0.9.11
2026-03-29 12:49:56 -04: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
Outis c0e1254d62 Merge pull request #47 from outis1one/claude/read-repo-YMu21
fix: new extension UUID, bump 0.9.10
2026-03-29 00:06:05 -04: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