Thank you for your interest in contributing to Lichess4Chess! This browser extension brings Lichess analysis tools to Chess.com games, and we welcome contributions from the community.
- Getting Started
- Development Setup
- Development Workflow
- Submitting Changes
- Code Style Guidelines
- Testing
- Internationalization (i18n)
- Release Process
- Getting Help
Before you begin, make sure you have the following dependencies installed:
- Node.js (version 16 or later)
- npm (comes with Node.js)
- A Chromium-based browser (Chrome, Edge, Brave, etc.)
- Git
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/lichess4chess.git cd lichess4chess
-
Install dependencies:
npm install
-
Start development mode:
npm run dev
-
Load the extension in your browser:
- Open
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked" and select the
dist_chromefolder
- Open
- General build:
npm run build
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes following our code style guidelines
-
Test your changes thoroughly:
- Test the extension on Chess.com
- Ensure no console errors appear
- Test with a fresh browser profile
- Verify the build process works
-
Commit your changes:
git add . git commit -m "feat: add your feature description"
-
Push your changes:
git push origin feature/your-feature-name
-
Create a Pull Request on GitHub with:
- A clear description of the changes
- Screenshots or demo videos when applicable
- Reference to any related issues
- Use TypeScript for all new code
- Follow React functional components with hooks
- Use descriptive variable and function names
- Add JSDoc comments for complex functions
Follow Conventional Commits:
type(scope): description
feat: add new analysis feature
fix: resolve popup layout issue
docs: update README with new installation steps
style: format code with prettier
refactor: simplify game state management
test: add unit tests for utilities
chore: update dependencies
- Load the extension in development mode
- Navigate to Chess.com and start/view a game
- Test the main features:
- Analysis integration
- UI interactions
- Settings persistence
- Check browser console for errors
We support multiple languages through Chrome's i18n API.
-
Add to English locale (
src/locales/en/messages.json):{ "myNewString": { "message": "My new translatable string", "description": "Description for translators" } } -
Use in code:
import { getMessage } from '../utils/i18n'; const text = getMessage('myNewString');
-
Add translations to other locale files (
src/locales/pt_br/messages.json, etc.)
- English (
en) - Portuguese Brazil (
pt_br)
Follow Semantic Versioning:
- PATCH (0.0.X): Bug fixes, small improvements
- MINOR (0.X.0): New features, backward compatible
- MAJOR (X.0.0): Breaking changes
Update version in both:
package.jsonmanifest.json
- All tests pass
- Version bumped appropriately
- CHANGELOG.md updated
- Built extension tested manually
- No console errors
- Permissions reviewed
- Issues: Use GitHub Issues for bug reports and feature requests
- Discussions: Use GitHub Discussions for questions and ideas
- Email: Contact the maintainer at ryanssteles@gmail.com
When reporting bugs, please include:
-
Environment details:
- Browser and version
- Operating system
- Extension version
-
Steps to reproduce
-
Expected vs actual behavior
-
Screenshots or console errors if applicable
-
Chess.com game URL if relevant
For feature requests:
- Check existing issues to avoid duplicates
- Describe the problem you're trying to solve
- Explain your proposed solution
- Consider providing mockups or examples
Contributors will be recognized in:
- README.md acknowledgments
- Release notes
- Git commit history
Thank you for contributing to Lichess4Chess! 🎉