- Add version-bump workflow for semantic versioning across all files - Add beta-release workflow for automated pre-release testing - Add production-release workflow with manual approval gates - Add hotfix-release workflow for emergency patches - Create comprehensive CONTRIBUTING.md with workflow guide - Create detailed RELEASE_PROCESS.md for maintainers - Add PR template with release checklists - Update CODEOWNERS to protect workflow files - Update README with contribution links - Remove /docs from .gitignore to allow documentation This implements a dev beta main branching strategy with: - Automated version management across 6 files - Changelog generation from conventional commits - GitHub Releases with build artifacts - Environment-based approvals for production - Back-merge support for hotfixes
7.1 KiB
Contributing to Mue
Thanks for your interest in contributing to Mue! We welcome contributions from the community.
📋 Table of Contents
- Code of Conduct
- Getting Started
- Development Workflow
- Branch Strategy
- Making Changes
- Commit Messages
- Pull Request Process
- Release Process
Code of Conduct
Please be respectful and constructive in your interactions with the community.
Getting Started
Prerequisites
- Bun >= 1.3.0
- Node.js >= 20.0.0 (for some tooling)
- Git
Setup
-
Fork the repository
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/mue.git cd mue -
Install dependencies:
bun install -
Start development server:
bun run dev
Development Workflow
Scripts
bun run dev- Start development server with hot reloadbun run dev:host- Start development server accessible on networkbun run build- Build production extension for all browsersbun run lint- Run ESLint and Stylelintbun run lint:fix- Auto-fix linting issuesbun run pretty- Format code with Prettier
Testing Your Changes
-
Load the extension in your browser:
- Chrome/Edge: Go to
chrome://extensions, enable Developer mode, click "Load unpacked", selectdistfolder - Firefox: Go to
about:debugging#/runtime/this-firefox, click "Load Temporary Add-on", select any file indistfolder
- Chrome/Edge: Go to
-
Test your changes thoroughly across different browsers
Branch Strategy
Mue uses a three-branch workflow:
dev (active development)
↓
beta (release candidates)
↓
main (production/stable)
Branches
-
dev- Active development branch- All feature and bug fix PRs merge here first
- Maintainers can push directly for small fixes
- Contributors must create PRs
- CI must pass before merge
-
beta- Release candidate testing- PRs from
dev→betafor release candidates - Triggers beta release workflow
- Requires 2 maintainer approvals
- Used for testing with beta testers before production
- PRs from
-
main- Production/stable releases- PRs from
beta→mainonly - Triggers production release workflow
- Requires 2 maintainer approvals + manual environment approval
- Represents current live extension version
- PRs from
Special Branches
hotfix/*- Emergency production fixes- Branch from
mainfor critical bugs - Triggers hotfix workflow (auto-merges to all branches)
- Maintainers only
- Branch from
Making Changes
For Contributors
-
Create a feature branch from
dev:git checkout dev git pull origin dev git checkout -b feature/your-feature-name -
Make your changes following our code style
-
Test your changes locally
-
Commit your changes (see Commit Messages)
-
Push to your fork:
git push origin feature/your-feature-name -
Create a Pull Request targeting the
devbranch
For Maintainers
Maintainers can push directly to dev for small fixes, or follow the contributor process for larger changes.
Commit Messages
We use Conventional Commits for automated changelog generation.
Format
<type>(<scope>): <description>
[optional body]
[optional footer]
Types
feat:- New featurefix:- Bug fixperf:- Performance improvementdocs:- Documentation changesstyle:- Code style changes (formatting, etc.)refactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks, dependency updates
Examples
feat(weather): add hourly forecast widget
fix(greeting): resolve time zone display issue
perf(background): optimize image loading
docs(readme): update installation instructions
chore: bump version to 7.6.0
Breaking Changes
For breaking changes, add BREAKING CHANGE: in the commit body:
feat(api): change settings storage format
BREAKING CHANGE: Settings format has changed. Users will need to reconfigure their settings.
Pull Request Process
-
Fill out the PR template completely
-
Ensure all checks pass:
- ✅ Build succeeds
- ✅ Linting passes
- ✅ No merge conflicts
-
Get reviews:
- Contributors: 1 maintainer approval required
- Beta → Main: 2 maintainer approvals required
-
Address review feedback
-
Squash commits if requested (maintainers can squash on merge)
-
Wait for merge - maintainers will merge when ready
PR Guidelines
- Keep PRs focused on a single feature/fix
- Include screenshots/videos for UI changes
- Update documentation if needed
- Link related issues
- Test on multiple browsers
Release Process
Version Numbering
We follow Semantic Versioning:
- Major (8.0.0): Breaking changes, major feature overhauls
- Minor (7.6.0): New features, backward-compatible
- Patch (7.5.1): Bug fixes, small improvements
Release Workflow (Maintainers Only)
1. Development Phase
Contributors and maintainers work on dev branch.
2. Create Beta Release
When ready for testing:
-
Run version bump workflow:
Actions → Version Bump → Run workflow - Branch: dev - Bump type: minor/major/patch - Pre-release: beta -
Create PR from
dev→beta -
Merge PR (triggers beta release workflow)
-
Share beta release with testers
-
Gather feedback and fix issues on
dev -
Repeat until stable
3. Promote to Production
When beta is stable:
-
Create PR from
beta→mainwith checklist:- Beta tested for X days
- All critical bugs resolved
- Y+ testers approved
- Release notes prepared
-
Get 2 maintainer approvals
-
Merge PR (triggers production release workflow)
-
Workflow pauses for manual approval (10 min wait)
-
Approve in GitHub Actions → Environments → production
-
Release is created on GitHub
-
Manually trigger store submission:
Actions → Submit → Run workflow - Enter version tag (e.g., 7.6.0)
4. Emergency Hotfix
For critical production bugs:
-
Create hotfix branch from
main:git checkout main git pull origin main git checkout -b hotfix/critical-bug-fix -
Fix the issue and commit
-
Push branch:
git push origin hotfix/critical-bug-fix -
Run hotfix workflow:
Actions → Hotfix Release → Run workflow - Description: Brief description - Branch name: hotfix/critical-bug-fix -
Workflow will:
- Auto-bump patch version
- Merge to
main - Create release
- Back-merge to
betaanddev
-
Immediately submit to stores
Questions?
- 💬 Join our Discord (if available)
- 📧 Email: [contact info]
- 🐛 Report bugs: GitHub Issues
License
By contributing, you agree that your contributions will be licensed under the BSD-3-Clause License.