Thank you for considering contributing to PinStats! This document outlines the guidelines for contributing to this project.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/PinStats.git - Install dependencies:
npm install - Create a branch:
git checkout -b feature/your-feature-name - Make your changes
- Run tests:
npm test - Commit your changes (see Commit Guidelines below)
- Push to your fork:
git push origin feature/your-feature-name - Create a Pull Request
This project follows Conventional Commits:
feat: add new feature
fix: fix a bug
docs: documentation changes
refactor: code refactoring
perf: performance improvements
test: add or update tests
chore: maintenance tasks
Examples:
feat: add reaction count to overlayfix: resolve memory leak in cachedocs: update installation instructionsperf: optimize DOM scanning algorithm
All contributions must include tests:
# Run tests in watch mode
npm test
# Run tests with coverage
npm run test:ci
# TDD mode
npm run tddRequirements:
- All tests must pass before submitting PR
- New features require new tests
- Bug fixes should include regression tests
- TypeScript with strict mode
- Use existing code patterns
- Follow the project structure
- Add JSDoc comments for complex functions
Pre-commit hooks will automatically:
- Fix trailing whitespace
- Check for secrets/private keys
- Validate commit messages
- Run security scans (gitleaks)
This project uses beads for task tracking:
bd ready # Show available tasks
bd create "Task" # Create new task
bd update <id> # Update task status
bd close <id> # Close taskThis section is for project maintainers who publish new versions.
-
Update version in
manifest.json:"version": "1.2.0"
-
Commit the version bump:
git commit -m "chore: bump version to 1.2.0" -
Create git tag (must match manifest version):
git tag v1.2.0
-
Push commits and tags:
git push && git push --tags -
Automated CI will:
- Validate tag matches manifest version
- Run full test suite
- Build production extension
- Create GitHub release with ZIP
- Publish to Chrome Web Store (if secrets configured)
- Version format: Use semantic versioning (MAJOR.MINOR.PATCH)
- Tag format: Must be
vX.Y.Z(e.g.,v1.2.0) - Version sync: Git tag must match
manifest.jsonversion exactly - First release: Requires manual Chrome Web Store submission to obtain Extension ID
- Prerequisites: CWS publishing requires Service Account setup and GitHub Secrets (see CLAUDE.md)
- Update documentation if you change functionality
- Add tests for new features
- Run full test suite:
npm run test:ci - Build successfully:
npm run build - Follow commit conventions
- Describe your changes clearly in the PR description
- Tests added/updated
- Documentation updated
- All tests passing
- Build successful
- Conventional commit messages
- No security vulnerabilities introduced
When reporting bugs, please include:
- Chrome version
- Extension version
- Steps to reproduce
- Expected behavior
- Actual behavior
- Console errors (if any)
- Screenshots (if applicable)
Feature requests are welcome! Please:
- Check existing issues first
- Describe the feature clearly
- Explain the use case
- Provide examples if possible
If you discover a security vulnerability:
- Do NOT open a public issue
- Email the maintainers directly
- Wait for a response before disclosure
By contributing, you agree that your contributions will be licensed under the MIT License.
Contributors will be recognized in:
- README.md acknowledgments
- GitHub contributors page
- Release notes
Thank you for contributing to PinStats! 🎉