Files
mue/CONTRIBUTING.md
Alex Sparkes e5d8bfec0e Beta (#1138)
* 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>
2026-01-27 12:35:18 +00:00

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

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

  1. Fork the repository

  2. Clone your fork:

    git clone https://github.com/YOUR_USERNAME/mue.git
    cd mue
    
  3. Install dependencies:

    bun install
    
  4. Start development server:

    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 devbeta 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 betamain 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:

    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)

  5. Push to your fork:

    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 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

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

  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:

  • 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 devbeta

  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 betamain 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:

    git checkout main
    git pull origin main
    git checkout -b hotfix/critical-bug-fix
    
  2. Fix the issue and commit

  3. Push branch:

    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?

License

By contributing, you agree that your contributions will be licensed under the BSD-3-Clause License.