Repository navigation
Conversation
v1 uploaded a screenshot of the user's tab to api.qrserver.com on every scan and requested <all_urls> to do it. Decoding now happens entirely in the extension: the native Barcode Detection API where Chrome offers it, with a bundled jsQR fallback that retries at several scales with inversion enabled. Permissions are down to activeTab and storage, and the manifest requests no host access at all, so there is no longer any way for a capture to leave the machine. Security fixes carried by the rewrite: - Decoded text was written to the popup with innerHTML; it now reaches the DOM only via textContent. - Any payload was openable and non-URL text was silently prefixed with http://. Only http, https, mailto, tel, sms and geo are openable now; javascript:, data:, blob:, file: and chrome: payloads render as inert text. - WIFI: and otpauth: payloads no longer print their password or secret key, though Copy still yields the raw value. - History entries are keyed by id rather than array position, so deleting one row no longer removes a different one. Also adds: scanning from a file, a drop, or the clipboard; payload classification for links, email, phone, SMS, geo, Wi-Fi, contacts and authenticator keys; a redesigned popup with light/dark/system themes, focus states and reduced-motion support; an Alt+Shift+Q shortcut; extension icons at every size; unit tests, ESLint, a Web Store packaging script, and CI. Sources move to src/, split into decoder, payload and history modules. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015zpzWoinoS9nn1K735wAkQ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v1 uploaded a screenshot of the user's tab to api.qrserver.com on every scan
and requested <all_urls> to do it. Decoding now happens entirely in the
extension: the native Barcode Detection API where Chrome offers it, with a
bundled jsQR fallback that retries at several scales with inversion enabled.
Permissions are down to activeTab and storage, and the manifest requests no
host access at all, so there is no longer any way for a capture to leave the
machine.
Security fixes carried by the rewrite:
only via textContent.
http://. Only http, https, mailto, tel, sms and geo are openable now;
javascript:, data:, blob:, file: and chrome: payloads render as inert text.
though Copy still yields the raw value.
row no longer removes a different one.
Also adds: scanning from a file, a drop, or the clipboard; payload
classification for links, email, phone, SMS, geo, Wi-Fi, contacts and
authenticator keys; a redesigned popup with light/dark/system themes, focus
states and reduced-motion support; an Alt+Shift+Q shortcut; extension icons at
every size; unit tests, ESLint, a Web Store packaging script, and CI.
Sources move to src/, split into decoder, payload and history modules.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_015zpzWoinoS9nn1K735wAkQ