Manifest File Structure
The manifest configuration is split across three JSON files insrc/manifest/:
Base Manifest (base.json)
Thebase.json file contains shared properties used across all browsers:
Chrome Manifest (chrome.json)
The Chrome manifest is a complete Manifest V3 configuration:Key Chrome MV3 Properties
manifest_version: 3 Specifies this is a Manifest V3 extension, required for new Chrome extensions. action Defines the browser action (toolbar button) and popup:default_popup: Path to the popup HTML filedefault_title: Tooltip text when hovering over the icondefault_icon: Icon sizes for different display densities
/home/daytona/workspace/source/src/background/background.js:1 for the service worker implementation.
content_scripts
Defines scripts injected into web pages:
matches: URL patterns where scripts should injectjs: Array of script files loaded in orderrun_at: Injection timing (document_idle= after page load)
Firefox Manifest (firefox.json)
Firefox has additional browser-specific requirements:Firefox-Specific Properties
browser_specific_settings Required for Firefox extensions:id: Unique extension identifier (required for Firefox)strict_min_version: Minimum Firefox versiondata_collection_permissions: Privacy settings for Firefox Add-ons
Permissions Explained
Required Permissions
| Permission | Purpose |
|---|---|
storage | Save extension settings and domain allowlist using chrome.storage.sync |
tabs | Query and update tab URLs to add/remove debug parameters |
activeTab | Access currently active tab information |
scripting | Inject content scripts dynamically using chrome.scripting.executeScript() |
webNavigation | Listen for page navigation events to apply persistent parameters |
contextMenus | Add right-click menu options for quick parameter toggles |
Host Permissions
- Inject content scripts into any web page
- Modify URLs on any domain
- Apply debug parameters across all websites
Keyboard Commands
/home/daytona/workspace/source/src/background/background.js:542 for command handler implementation.
MV3 Requirements
Manifest V3 introduces several breaking changes from V2:Service Workers (Not Background Pages)
MV2 (Old):- Are event-driven and terminate when idle
- Cannot use DOM APIs (no
window,document) - Must use
chrome.storageinstead oflocalStorage - Have a limited lifetime
Host Permissions Separated
MV2 (Old):Action API (Not browserAction)
MV2:chrome.browserActionMV3:
chrome.action
The manifest property also changed:
Build Process
During build (npm run build:chrome or npm run build:firefox), the appropriate manifest file is copied to dist/{browser}/manifest.json.
The build script:
- Selects the correct manifest file for the target browser
- Copies all source files to
dist/{browser}/ - Validates the manifest against browser requirements
- Creates a distributable package
Privacy Considerations
The extension manifest declares:- No analytics or tracking
- Local storage only (no external data transmission)
- Transparent permission usage
firefox.json: