mirror of
https://github.com/mue/mue.git
synced 2026-06-06 07:55:48 +02:00
- 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
311 lines
7.1 KiB
Markdown
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.
|