Skip to content

THE-7: Cross-browser MV3 parity fixes for Firefox and Chrome#74

Merged
ConduciveMammal merged 2 commits intocodex/theme-explorer-v2from
codex/the-7-cross-browser-mv3-parity
Feb 12, 2026
Merged

THE-7: Cross-browser MV3 parity fixes for Firefox and Chrome#74
ConduciveMammal merged 2 commits intocodex/theme-explorer-v2from
codex/the-7-cross-browser-mv3-parity

Conversation

@ConduciveMammal
Copy link
Owner

@ConduciveMammal ConduciveMammal commented Feb 12, 2026

Summary

  • Fix Firefox temporary add-on installation errors by emitting background scripts for Firefox builds.
  • Keep background code classic-script compatible in Firefox while retaining cross-browser API guards.
  • Add a shared extension API helper for popup and content contexts.
  • Strip unsupported use_dynamic_url from Firefox manifests after build.
  • Add cross-browser parity QA notes and update the release QA checklist.
  • Update build verification to accept either MV3 service worker (Chrome) or background scripts (Firefox).

Verification

  • npm run build:prod
  • npm run build:firefox
  • npm run qa:verify-build
  • npm run package:bundle:firefox

@ConduciveMammal ConduciveMammal changed the base branch from master to codex/theme-explorer-v2 February 12, 2026 18:03
@chatgpt-codex-connector
Copy link

💡 Codex Review

extensionApi.tabs.sendMessage(
state.currentTab.id,
{ popupIsOpen: true },
(response) => {
if (response && response.type === 'theme' && response.data) {

P1 Badge Avoid callback-style tabs.sendMessage on browser namespace

This call relies on a callback and runtime.lastError handling, but in Firefox getExtensionApi() prefers the browser namespace (src/utils/getExtensionApi.js), where tabs.sendMessage is promise-based and does not drive this callback path. That means the missing-receiver recovery branch (ensureContentScriptInjected/fallback) can be skipped on Firefox when no listener is present, so storefront detection can fail on tabs that are not already wired up.


appendInjectScript('src/pages/Inject/index.js', (event) => {
console.error('Error reloading script for popup request:', event);
});

P2 Badge Prevent repeated inject script insertion during popup polling

When data is still empty, each popupIsOpen message appends a new inject script without checking whether one is already running. Since the popup polls this message repeatedly, a single popup open can create multiple injected instances, each with its own retry interval in src/pages/Inject/index.js, causing duplicated lookups/messages and unnecessary page-side work.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@ConduciveMammal ConduciveMammal merged commit e7a4be0 into codex/theme-explorer-v2 Feb 12, 2026
1 check passed
@ConduciveMammal ConduciveMammal deleted the codex/the-7-cross-browser-mv3-parity branch February 12, 2026 19:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant