Files
mue/CONTRIBUTING.md
Alex Sparkes a29984d3aa feat: add professional three-branch release workflow automation (#1129) (#1130)
- 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
2026-01-25 17:34:04 +00:00

311 lines
7.1 KiB
Markdown

# Contributing to Mue
Thanks for your interest in contributing to Mue! We welcome contributions from the community.
## 📋 Table of Contents
- [Code of Conduct](#code-of-conduct)
- [Getting Started](#getting-started)
- [Development Workflow](#development-workflow)
- [Branch Strategy](#branch-strategy)
- [Making Changes](#making-changes)
- [Commit Messages](#commit-messages)
- [Pull Request Process](#pull-request-process)
- [Release Process](#release-process)
## Code of Conduct
Please be respectful and constructive in your interactions with the community.
## Getting Started
### Prerequisites
- [Bun](https://bun.sh/) >= 1.3.0
- Node.js >= 20.0.0 (for some tooling)
- Git
### Setup
1. Fork the repository
2. Clone your fork:
```bash
git clone https://github.com/YOUR_USERNAME/mue.git
cd mue
```
3. Install dependencies:
```bash
bun install
```
4. Start development server:
```bash
bun run dev
```
## Development Workflow
### Scripts
- `bun run dev` - Start development server with hot reload
- `bun run dev:host` - Start development server accessible on network
- `bun run build` - Build production extension for all browsers
- `bun run lint` - Run ESLint and Stylelint
- `bun run lint:fix` - Auto-fix linting issues
- `bun run pretty` - Format code with Prettier
### Testing Your Changes
1. Load the extension in your browser:
- **Chrome/Edge**: Go to `chrome://extensions`, enable Developer mode, click "Load unpacked", select `dist` folder
- **Firefox**: Go to `about:debugging#/runtime/this-firefox`, click "Load Temporary Add-on", select any file in `dist` folder
2. 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` → `beta` for release candidates
- Triggers beta release workflow
- Requires 2 maintainer approvals
- Used for testing with beta testers before production
- **`main`** - Production/stable releases
- PRs from `beta` → `main` only
- Triggers production release workflow
- Requires 2 maintainer approvals + manual environment approval
- Represents current live extension version
### Special Branches
- **`hotfix/*`** - Emergency production fixes
- Branch from `main` for critical bugs
- Triggers hotfix workflow (auto-merges to all branches)
- Maintainers only
## Making Changes
### For Contributors
1. Create a feature branch from `dev`:
```bash
git checkout dev
git pull origin dev
git checkout -b feature/your-feature-name
```
2. Make your changes following our code style
3. Test your changes locally
4. Commit your changes (see [Commit Messages](#commit-messages))
5. Push to your fork:
```bash
git push origin feature/your-feature-name
```
6. Create a Pull Request targeting the `dev` branch
### 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](https://www.conventionalcommits.org/) for automated changelog generation.
### Format
```
<type>(<scope>): <description>
[optional body]
[optional footer]
```
### Types
- `feat:` - New feature
- `fix:` - Bug fix
- `perf:` - Performance improvement
- `docs:` - Documentation changes
- `style:` - Code style changes (formatting, etc.)
- `refactor:` - Code refactoring
- `test:` - Adding or updating tests
- `chore:` - Maintenance tasks, dependency updates
### Examples
```bash
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:
```bash
feat(api): change settings storage format
BREAKING CHANGE: Settings format has changed. Users will need to reconfigure their settings.
```
## Pull Request Process
1. **Fill out the PR template** completely
2. **Ensure all checks pass**:
- ✅ Build succeeds
- ✅ Linting passes
- ✅ No merge conflicts
3. **Get reviews**:
- Contributors: 1 maintainer approval required
- Beta → Main: 2 maintainer approvals required
4. **Address review feedback**
5. **Squash commits** if requested (maintainers can squash on merge)
6. **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](https://semver.org/):
- **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:
1. Run version bump workflow:
```
Actions → Version Bump → Run workflow
- Branch: dev
- Bump type: minor/major/patch
- Pre-release: beta
```
2. Create PR from `dev` → `beta`
3. Merge PR (triggers beta release workflow)
4. Share beta release with testers
5. Gather feedback and fix issues on `dev`
6. Repeat until stable
#### 3. Promote to Production
When beta is stable:
1. Create PR from `beta` → `main` with checklist:
- [ ] Beta tested for X days
- [ ] All critical bugs resolved
- [ ] Y+ testers approved
- [ ] Release notes prepared
2. Get 2 maintainer approvals
3. Merge PR (triggers production release workflow)
4. Workflow pauses for manual approval (10 min wait)
5. Approve in GitHub Actions → Environments → production
6. Release is created on GitHub
7. Manually trigger store submission:
```
Actions → Submit → Run workflow
- Enter version tag (e.g., 7.6.0)
```
#### 4. Emergency Hotfix
For critical production bugs:
1. Create hotfix branch from `main`:
```bash
git checkout main
git pull origin main
git checkout -b hotfix/critical-bug-fix
```
2. Fix the issue and commit
3. Push branch:
```bash
git push origin hotfix/critical-bug-fix
```
4. Run hotfix workflow:
```
Actions → Hotfix Release → Run workflow
- Description: Brief description
- Branch name: hotfix/critical-bug-fix
```
5. Workflow will:
- Auto-bump patch version
- Merge to `main`
- Create release
- Back-merge to `beta` and `dev`
6. Immediately submit to stores
## Questions?
- 💬 Join our [Discord](https://discord.gg/zv8C9F8) (if available)
- 📧 Email: [contact info]
- 🐛 Report bugs: [GitHub Issues](https://github.com/mue/mue/issues)
## License
By contributing, you agree that your contributions will be licensed under the BSD-3-Clause License.