Firefox-only extension, so webextension-polyfill (a Chrome shim) is dead
weight and forces a bundler just to resolve one bare import. Use the native
`browser.*` global with @types/firefox-webext-browser instead.
- manifest.json: MV3, event-page background (dist/background.js), the
docs/05 §7 permission set (<all_urls> in host_permissions),
strict_min_version 128.0, data_collection_permissions none.
- scripts/build.mjs: esbuild bundle of src/background/index.ts -> dist/,
esm, target firefox128. Wired to `prepare` so `npm ci` produces the
bundle and CI's `web-ext lint` (which needs it to exist) passes with no
added CI step. dist/ stays gitignored.
- src/background/index.ts: event-page entry — brings the transport up,
holds the shared reference. Capture surfaces attach here next.
- transport/storage.ts, transport/index.ts: use the browser global.
- tests/setup.ts: stub the browser global instead of mocking a module.
web-ext lint clean (0/0/0). typecheck clean. 38 tests still green.
Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_012Y9RU58hD1BuwP82DySUHk
35 lines
720 B
JSON
35 lines
720 B
JSON
{
|
|
"manifest_version": 3,
|
|
"name": "Velox",
|
|
"version": "0.1.0",
|
|
"description": "Hands Firefox downloads to the Velox download manager. Collects the URL, headers and cookies; the daemon does the rest.",
|
|
|
|
"browser_specific_settings": {
|
|
"gecko": {
|
|
"id": "[email protected]",
|
|
"strict_min_version": "128.0",
|
|
"data_collection_permissions": {
|
|
"required": ["none"]
|
|
}
|
|
}
|
|
},
|
|
|
|
"background": {
|
|
"scripts": ["dist/background.js"],
|
|
"type": "module"
|
|
},
|
|
|
|
"permissions": [
|
|
"webRequest",
|
|
"webRequestBlocking",
|
|
"downloads",
|
|
"cookies",
|
|
"contextMenus",
|
|
"storage",
|
|
"notifications",
|
|
"nativeMessaging"
|
|
],
|
|
|
|
"host_permissions": ["<all_urls>"]
|
|
}
|