Thank you for your interest in contributing to the Collections Extension! This guide will help you get started with contributing to the project.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Testing
- Submitting Changes
- Release Process
- Getting Help
By participating in this project, you are expected to uphold our Code of Conduct. Please be respectful and considerate to other contributors.
Before you begin, ensure you have the following installed:
- Node.js (version 18 or higher)
- pnpm (preferred package manager)
- Git
- A modern browser (Chrome, Firefox, or Edge) for testing
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/mienaiyami/collection-extension-2.0.git cd collection-extension-2.0
# Install project dependencies
pnpm installpnpm dev- Start development server with hot reloadingpnpm build- Build the extension for productionpnpm build:zip- Build and create a zip file for distributionpnpm lint- Run ESLint to check code qualitypnpm tslint- Run TypeScript compiler checkpnpm release- Build and prepare for release (maintainers only)
- Run
pnpm buildorpnpm dev - Open
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the
/distfolder
- Run
pnpm build - Open
about:debugging - Click "This Firefox"
- Click "Load Temporary Add-on"
- Select
/dist/manifest.json
- Check existing issues and pull requests to avoid duplicates
- Create an issue to discuss major changes before implementing
- Ensure your changes align with the project's goals
-
Create a new branch for your feature/fix:
git checkout -b feature/your-feature-name
-
Make your changes following the guidelines above
-
Test your changes thoroughly
-
Commit your changes with clear, descriptive messages:
git commit -m "feat: add new collection sorting feature"
- Build the extension:
pnpm build - Load it in your browser (see Development Setup)
- Test the following scenarios:
- Creating and managing collections
- Adding/removing tabs from collections
- Keyboard shortcuts functionality
- Import/export features
- Sync functionality (if applicable)
- Different browser environments
Before submitting:
# Check TypeScript compilation
pnpm tslint
# Run linting
pnpm lint
# Build to ensure no build errors
pnpm build- Ensure your code follows all guidelines above
- Update documentation if needed
- Create a pull request with:
- Clear title and description
- Reference any related issues
- Include screenshots for UI changes
- List any breaking changes
The release process is handled by maintainers. See the full guide:
Release guide — env vars, Chrome OAuth refresh token, Firefox AMO keys, web-ext, troubleshooting.
Summary:
- Version bump in
package.json(+ changelog) pnpm release— zip, tag, sign Firefox, publish Chrome- Tag push also creates the GitHub Release with
build.zip
- Issues: Create an issue for bugs or feature requests
- Discussions: Use GitHub Discussions for questions
- Documentation: Check existing docs in
/docsfolder
When reporting bugs, include:
- Browser and version
- Extension version
- Steps to reproduce
- Expected vs actual behavior
- Screenshots/videos if applicable
When suggesting features:
- Check if it already exists in the TODO list
- Explain the use case and benefits
- Consider implementation complexity
- Provide mockups or examples if helpful
Your contributions help make Collections Extension better for everyone. We appreciate your time and effort in improving this project!