* 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 * feat: new default quotes experience, improve added page * Sync/workflow fixes to beta (#1132) * feat: add professional three-branch release workflow automation (#1129) - 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 * fix(workflows): prevent beta release for non-beta versions * Fix/beta workflow version check (#1131) * fix(workflows): prevent beta release for non-beta versions * fix(workflows): address copilot PR review feedback - Support iterative beta versions (7.6.0-beta.1 -> 7.6.0-beta.2) - Remove tag trigger from beta workflow to prevent premature releases - Fix tag format in docs/summaries to include 'v' prefix - Clarify deployment approval wording --------- Signed-off-by: Alex Sparkes <alexsparkes@gmail.com> * feat: replace mui with new style * feat: improve time formatting in Clock component with padded digits * fix: change Checkbox component from label to div for better semantics * fix: change Switch component from label to div for better semantics * feat: add smooth animation to reset functionality in Slider component * feat: enhance accessibility and styling for form components including Checkbox, Dropdown, Radio, Slider, and Text * feat: enhance WeatherOptions component with improved layout and auto location reset functionality * feat: update Slider and Dropdown components with improved layout and z-index adjustments * feat: add reset functionality to Dropdown component with toast notification * feat: update Dropdown component styles for improved layout and structure * feat: update languageSettings component with increased padding for better spacing * feat: bump version to 7.6.0 across all manifests and documentation * Dev (#1134) * feat: add professional three-branch release workflow automation (#1129) - 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 * feat: new default quotes experience, improve added page * Fix/beta workflow version check (#1131) * fix(workflows): prevent beta release for non-beta versions * fix(workflows): address copilot PR review feedback - Support iterative beta versions (7.6.0-beta.1 -> 7.6.0-beta.2) - Remove tag trigger from beta workflow to prevent premature releases - Fix tag format in docs/summaries to include 'v' prefix - Clarify deployment approval wording * feat: replace mui with new style * feat: improve time formatting in Clock component with padded digits * fix: change Checkbox component from label to div for better semantics * fix: change Switch component from label to div for better semantics * feat: add smooth animation to reset functionality in Slider component * feat: enhance accessibility and styling for form components including Checkbox, Dropdown, Radio, Slider, and Text * feat: enhance WeatherOptions component with improved layout and auto location reset functionality * feat: update Slider and Dropdown components with improved layout and z-index adjustments * feat: add reset functionality to Dropdown component with toast notification * feat: update Dropdown component styles for improved layout and structure * feat: update languageSettings component with increased padding for better spacing * feat: bump version to 7.6.0 across all manifests and documentation --------- Signed-off-by: Alex Sparkes <alexsparkes@gmail.com> Co-authored-by: David Ralph <me@davidcralph.co.uk> * font: replace montserrat with inter * cleanup: remove unused code from addons and marketplace * fix(greeting/events): event text box styling * fix(quote/buttons): improve state management and event handling * feat(background): implement custom background loading and improve state management * feat: enhance image management features - Added new localization strings for image management, including upload and storage information. - Refactored custom background database functions to support metadata and backward compatibility. - Introduced a new FolderTaggingModal component for organizing images into folders. - Created utility functions for image metadata extraction, including dimensions, blur hash generation, and file size calculation. - Implemented functions to delete multiple backgrounds and update background metadata. * Add new localization strings and improve image metadata utility functions - Updated localization files for multiple languages (Hungarian, Indonesian, Japanese, Lithuanian, Latvian, Dutch, Norwegian, Persian, Portuguese, Brazilian Portuguese, Russian, Slovenian, Swedish, Tamil, Turkish, Ukrainian, Vietnamese, Simplified Chinese, Traditional Chinese) to include new strings for image management features such as "Delete Selected", "Uploading", "Tag Images", and storage information. - Enhanced the `getDataUrlSize` and `formatBytes` functions in `imageMetadata.js` for better readability and maintainability by adding braces for conditional statements. * fix(background/custom): prevent flashing during uploads * feat(storage): implement dynamic storage quota estimation and request persistence * feat(modal): enhance close button styling and theming support * fix(Custom): remove unnecessary characters from loading state * feat(Dropdown): implement dropdown closing animation and portal rendering * fix(QuoteOptions): ensure authorDetails is set to true for all users during migration * refactor(Items): remove unused imports and hex color conversion logic * fix: add blurhash dependency for image metadata encoding --------- Signed-off-by: Alex Sparkes <alexsparkes@gmail.com> Co-authored-by: David Ralph <me@davidcralph.co.uk>
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.