Thanks for your interest in contributing! 🎉 OpenScreenShot is an open-source Chrome extension and we welcome bug reports, feature ideas, and pull requests.
- Fork and clone the repo.
- Install Node.js 22+ and npm 10+.
- Run
npm install. - Run
npm run iconsto generate the extension icons. - Run
npm run devand loaddist/as an unpacked extension (see README).
-
TypeScript strict mode is on. Please keep types clean — no
anyunless justified in a comment. -
Use the shared design tokens in
src/shared/design-tokens.tsfor colors, spacing, and typography. Don't hard-code hex values in components. -
Run the checks locally before pushing:
npm run lint npm run typecheck npm test npm run build -
Format with
npm run format(Prettier).
Use Conventional Commits:
feat(capture): scroll-and-stitch full-page capture
fix(popup): correct focus ring color in dark mode
docs(readme): add install instructions
chore(deps): bump vite to 7.3
- Branch from
main:feat/...,fix/...,chore/.... - Keep PRs focused. One feature or fix per PR.
- Rebase onto
mainbefore requesting review.
- Describe what changed and why.
- Include screenshots/GIFs for UI changes.
- Add or update tests where reasonable.
- Make sure CI is green.
We build in milestones (see README status table). If you'd like to take on a chunk of work, open an issue first to discuss scope.
By participating you agree to abide by our Code of Conduct.