Thanks for your interest in contributing.
Please follow our Code of Conduct.
whyEXT is a monorepo for multiple browser extensions. Contributions are welcome for:
- New extensions under
extensions/<name>/ - Improvements to existing extensions
- Build tooling, DX, and documentation
- Testing and release workflow improvements
extensions/<extension-name>/src: extension source filesextensions/<extension-name>/dist: generated build artifacts (ignored)scripts/build.js: per-extension build utility
git clone https://github.com/byrdltd/whyEXT.git
cd whyEXT
npm install# Build all extensions
npm run build
# Run type checking
npm run typecheck
# Run unit + build smoke tests
npm run test
# Build one extension for both browsers
npm run build:dark-modeThen load unpacked:
- Chrome/Edge/Brave:
chrome://extensions-> Load unpacked ->extensions/<name>/dist/chrome - Firefox:
about:debugging#/runtime/this-firefox-> Load Temporary Add-on ->extensions/<name>/dist/firefox/manifest.json
- Create
extensions/<new-name>/src/ - Add:
manifest.base.jsonmanifest.chrome.jsonmanifest.firefox.json- source files (
popup,background,options, etc.)
- Add scripts in root
package.json:build:<new-name>:chromebuild:<new-name>:firefoxbuild:<new-name>
- Update
README.mdwith installation instructions - Optionally scaffold from template:
npm run scaffold:extension -- <new-name>
- Keep PRs focused and small when possible
- Explain permission changes and why they are needed
- Update docs for user-visible behavior changes
- Run
npm run buildbefore opening PR - Use clear commit messages that explain "why"
Do not open public issues for security vulnerabilities. Use GitHub Security Advisories and review SECURITY.md.
By contributing, you agree your contributions are licensed under MIT.