Repository navigation
Restore four commits dropped by the squash merge of #129 - #130
Merged
Merged
Conversation
The release script zipped ./dist, so every entry was nested under dist/ and the Chrome Web Store rejects an upload whose manifest.json is not at the root. It now zips the contents of dist instead, and builds first so an artifact cannot be cut from a stale dist. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The 2.4.0 submission adds the tabs and scripting permissions, so the store asks for a justification for each. Keeping them in the repo next to the code they describe means they can be checked against it and reused on the next submission. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The tabs permission was added in the unreleased 2.1.0. It is not needed: in manifest v3 a tab's url is exposed to an extension holding either the tabs permission or a host permission matching that tab, and this extension already declares http://*/* and https://*/*. The published 2.0.9 build is the proof. It declares only activeTab, storage and notifications, yet its background script already reads tab.url to match saved rules against the current page, and has been doing so in production. Keeping tabs would have added the "Read your browsing history" warning, which Chrome shows on update and which disables the extension until the user approves it. Relative to the live build, 2.4.0 now adds only `scripting`, which carries no warning at all. The injection query now uses the host permission patterns rather than the content script's `matches`, which also include file:///*. Without a host permission for file URLs those tabs cannot be queried or injected, so file:// pages still need a manual reload. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
master was merged carrying 2.4.0 with the tabs permission still in the manifest, so that version number would describe two different builds. 2.4.1 is what actually ships: no tabs permission, and a release script that produces a zip the Chrome Web Store will accept. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
#129 was squash-merged at 10:56, but four commits were pushed to the branch after that point and so are not on
master. This restores them unchanged.Spotted because
masterstill declares thetabspermission while the 2.4.0 release asset does not — the two disagree, and the asset is correct.Recovered
npm run releasezipped./dist, nesting everything underdist/. The Chrome Web Store rejects a zip whosemanifest.jsonis not at the root, so the script as merged cannot produce an uploadable artifact. It now zips the contents ofdist, and builds first so an artifact cannot be cut from a staledist.docs/permission-justifications.md.tabspermissionWhy
tabshas to goIt was added in the unreleased 2.1.0 and was never needed. In manifest v3 a tab's
urlis exposed to an extension holding thetabspermission or a host permission matching that tab, andhttp://*/*andhttps://*/*are already declared.The published 2.0.9 build is the proof. It declares only
activeTab,storageandnotifications, yet its background script already readstab.urlto match saved rules:and has been doing so in production.
Keeping
tabswould add the "Read your browsing history" warning, which Chrome shows on update and which disables the extension until every existing user approves it. Without it, 2.4.0 adds onlyscripting, which carries no warning, so the update installs silently.One consequence: the injection query now uses the host permission patterns rather than the content script's
matches, which also includefile:///*. Without a host permission for file URLs those tabs cannot be queried or injected, sofile://pages still need a manual reload after install or update.Version
Bumped to 2.4.1.
masterwas merged carrying 2.4.0 with thetabspermission still in the manifest, so that number would describe two different builds. Nothing was ever published as 2.4.0 — the release was still a draft and no tag existed — so 2.4.1 is simply what ships. The draft release has been retagged accordingly, with a rebuilt asset.Verification
npm run checkspasses: typecheck across three projects, lint, format, 614 unit tests, build. The resultingmanifest.jsonis byte-identical to the one in the already-uploaded 2.4.0 release asset.Worth merging before publishing the 2.4.0 draft, so the tag matches what ships.
🤖 Generated with Claude Code