collectFiles() skipped manifest.json unconditionally, but the final archive is produced by calling collectFiles() on the built target dir:
writeStoredZip(collectFiles(dir),dir,zipName);// manifest.json filtered back out
The per-target manifest was written into dist/<target>/ correctly, then excluded on the way into the zip. Result: both dist/ismis-helper-*.zip shipped with no manifest.json at all and could not be installed by any means. The Firefox zip also carried contributor files (AGENTS.md, README.md, package.json, package-lock.json).
Note this affected only the .zip artifacts — CI's AMO signing reads dist/firefox/ directly, so the signed XPIs on AMO are fine.
Fix
Split the exclusion list and only apply the dev-file part when reading the repo root:
DEV_ONLY_FILES — manifest.json, AGENTS.md, README.md, package.json, package-lock.json (applied with excludeDev: true when reading ROOT, skipped when reading a built target)
background.chrome.js and the generated manifest.json now survive into the Chrome zip too.
## Problem
`collectFiles()` skipped `manifest.json` unconditionally, but the final archive is produced by calling `collectFiles()` on the **built target dir**:
```js
writeStoredZip(collectFiles(dir), dir, zipName); // manifest.json filtered back out
```
The per-target manifest was written into `dist/<target>/` correctly, then excluded on the way into the zip. Result: **both `dist/ismis-helper-*.zip` shipped with no `manifest.json` at all** and could not be installed by any means. The Firefox zip also carried contributor files (`AGENTS.md`, `README.md`, `package.json`, `package-lock.json`).
Note this affected only the `.zip` artifacts — CI's AMO signing reads `dist/firefox/` directly, so the signed XPIs on AMO are fine.
## Fix
Split the exclusion list and only apply the dev-file part when reading the repo root:
- `EXCLUDED_DIRS` — `.git`, `node_modules`, `dist`, `docs`, `scripts`, `test`, `web-ext-artifacts`
- `DEV_ONLY_FILES` — `manifest.json`, `AGENTS.md`, `README.md`, `package.json`, `package-lock.json` (applied with `excludeDev: true` when reading ROOT, skipped when reading a built target)
`background.chrome.js` and the generated `manifest.json` now survive into the Chrome zip too.
## Verification
```
npm test -> 35 pass / 0 fail
firefox zip: 26 files, 1,843,871 B, no manifest.json
-> 23 files, 1,683,935 B, manifest.json present (id ismis-helper@adrianbonpin)
chrome zip: manifest.json present, background.service_worker = background.chrome.js
background.chrome.js bundled
```
Dev files confirmed absent from both zips.
collectFiles() skipped manifest.json unconditionally, and the final zip is
produced by calling collectFiles() on the built target dir — so both
dist/*.zip shipped with no manifest.json at all and could not be installed.
The per-target manifest was written into the dir correctly, then filtered
back out on the way into the archive.
Split the exclusion list: EXCLUDED_DIRS plus DEV_ONLY_FILES (manifest.json,
AGENTS.md, README.md, package.json, package-lock.json), and only apply the
latter when reading the repo root. Reading a built target keeps its
generated manifest.
Firefox zip: 26 files/1.84 MB (no manifest) -> 23 files/1.68 MB.
Chrome zip gains its manifest.json and background.chrome.js as before.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
collectFiles()skippedmanifest.jsonunconditionally, but the final archive is produced by callingcollectFiles()on the built target dir:The per-target manifest was written into
dist/<target>/correctly, then excluded on the way into the zip. Result: bothdist/ismis-helper-*.zipshipped with nomanifest.jsonat all and could not be installed by any means. The Firefox zip also carried contributor files (AGENTS.md,README.md,package.json,package-lock.json).Note this affected only the
.zipartifacts — CI's AMO signing readsdist/firefox/directly, so the signed XPIs on AMO are fine.Fix
Split the exclusion list and only apply the dev-file part when reading the repo root:
EXCLUDED_DIRS—.git,node_modules,dist,docs,scripts,test,web-ext-artifactsDEV_ONLY_FILES—manifest.json,AGENTS.md,README.md,package.json,package-lock.json(applied withexcludeDev: truewhen reading ROOT, skipped when reading a built target)background.chrome.jsand the generatedmanifest.jsonnow survive into the Chrome zip too.Verification
Dev files confirmed absent from both zips.