Problem
There are two manifest.json files in the repo:
Root /manifest.json — points to src/background.js and src/content/content.js
/src/chrome/manifest.json — the real Chrome manifest with the correct paths, permissions, and all required scripts
When a new contributor follows the README to load the extension unpacked, they load the root folder. The root manifest points to files that don't exist at those paths in the actual codebase. The extension loads broken or not at all.
Personal experience
While setting up the dev environment, I ran into this initially, tooling automatically targeted the root manifest.json instead of src/chrome/manifest.json because both exist at different levels. This confirms the confusion the duplicate manifests cause for anyone new to the codebase.
Root manifest.json references src/background.js — but the real background script is at src/chrome/src/background.js
The real Chrome build lives entirely under src/chrome/src/
npm run build:zip builds correctly from src/chrome/ — so the zip works but the dev setup doesn't
Problem
There are two manifest.json files in the repo:
Root /manifest.json — points to src/background.js and src/content/content.js
/src/chrome/manifest.json — the real Chrome manifest with the correct paths, permissions, and all required scripts
When a new contributor follows the README to load the extension unpacked, they load the root folder. The root manifest points to files that don't exist at those paths in the actual codebase. The extension loads broken or not at all.
Personal experience
While setting up the dev environment, I ran into this initially, tooling automatically targeted the root manifest.json instead of src/chrome/manifest.json because both exist at different levels. This confirms the confusion the duplicate manifests cause for anyone new to the codebase.
Root manifest.json references src/background.js — but the real background script is at src/chrome/src/background.js
The real Chrome build lives entirely under src/chrome/src/
npm run build:zip builds correctly from src/chrome/ — so the zip works but the dev setup doesn't