mirror of
https://github.com/mue/mue.git
synced 2026-06-05 23:45:53 +02:00
* 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>
166 lines
6.3 KiB
YAML
166 lines
6.3 KiB
YAML
name: Beta Release
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- beta
|
|
tags:
|
|
- 'v*-beta.*'
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
build-and-release:
|
|
runs-on: ubuntu-latest
|
|
environment: beta
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Bun
|
|
uses: oven-sh/setup-bun@v2
|
|
with:
|
|
bun-version: '1.3.1'
|
|
|
|
- name: Install dependencies
|
|
run: bun install
|
|
|
|
- name: Build extension
|
|
run: bun run build
|
|
env:
|
|
NODE_ENV: production
|
|
|
|
- name: Get version from package.json
|
|
id: version
|
|
run: |
|
|
VERSION=$(node -p "require('./package.json').version")
|
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
echo "Building version: $VERSION"
|
|
|
|
- name: Generate changelog
|
|
id: changelog
|
|
run: |
|
|
# Get the latest beta or production tag
|
|
PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
|
|
|
|
if [ -z "$PREVIOUS_TAG" ]; then
|
|
echo "No previous tag found, using all commits"
|
|
COMMITS=$(git log --pretty=format:"- %s (%h)" HEAD)
|
|
else
|
|
echo "Generating changelog from $PREVIOUS_TAG to HEAD"
|
|
COMMITS=$(git log --pretty=format:"- %s (%h)" ${PREVIOUS_TAG}..HEAD)
|
|
fi
|
|
|
|
# Create changelog with categorization
|
|
FEATURES=$(echo "$COMMITS" | grep -i "^- feat" || echo "")
|
|
FIXES=$(echo "$COMMITS" | grep -i "^- fix" || echo "")
|
|
CHORES=$(echo "$COMMITS" | grep -i "^- chore\|^- docs\|^- style\|^- refactor" || echo "")
|
|
OTHER=$(echo "$COMMITS" | grep -v -i "^- feat\|^- fix\|^- chore\|^- docs\|^- style\|^- refactor" || echo "")
|
|
|
|
{
|
|
echo "changelog<<EOF"
|
|
if [ -n "$FEATURES" ]; then
|
|
echo "### ✨ Features"
|
|
echo "$FEATURES"
|
|
echo ""
|
|
fi
|
|
if [ -n "$FIXES" ]; then
|
|
echo "### 🐛 Bug Fixes"
|
|
echo "$FIXES"
|
|
echo ""
|
|
fi
|
|
if [ -n "$CHORES" ]; then
|
|
echo "### 🔧 Maintenance"
|
|
echo "$CHORES"
|
|
echo ""
|
|
fi
|
|
if [ -n "$OTHER" ]; then
|
|
echo "### 📝 Other Changes"
|
|
echo "$OTHER"
|
|
fi
|
|
echo "EOF"
|
|
} >> $GITHUB_OUTPUT
|
|
|
|
- name: Check if release exists
|
|
id: check_release
|
|
run: |
|
|
if gh release view "v${{ steps.version.outputs.version }}" >/dev/null 2>&1; then
|
|
echo "exists=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "exists=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
|
|
- name: Create or Update GitHub Pre-Release
|
|
run: |
|
|
RELEASE_NOTES=$(cat <<EOF
|
|
## 🧪 Mue Beta v${{ steps.version.outputs.version }}
|
|
|
|
**⚠️ This is a beta release for testing purposes only.**
|
|
|
|
### Testing Instructions
|
|
1. Download the appropriate ZIP file below
|
|
2. For Chrome: Load as unpacked extension or install from [unlisted link](https://chromewebstore.google.com/detail/mue/bngmbednanpcfochchhgbkookpiaiaid) (dev team only)
|
|
3. For Firefox: Install via about:debugging → Load Temporary Add-on
|
|
4. Report issues at https://github.com/mue/mue/issues
|
|
|
|
${{ steps.changelog.outputs.changelog }}
|
|
|
|
### Installation Files
|
|
- **Chrome/Edge**: \`chrome-${{ steps.version.outputs.version }}.zip\`
|
|
- **Firefox**: \`firefox-${{ steps.version.outputs.version }}.zip\`
|
|
|
|
---
|
|
|
|
**🔗 Demo**: [demo.muetab.com](https://demo.muetab.com)
|
|
**📱 Beta Branch Demo**: [mue-git-beta-mue.vercel.app](https://mue-git-beta-mue.vercel.app)
|
|
EOF
|
|
)
|
|
|
|
if [ "${{ steps.check_release.outputs.exists }}" = "true" ]; then
|
|
echo "Updating existing release..."
|
|
gh release edit "v${{ steps.version.outputs.version }}" \
|
|
--notes "$RELEASE_NOTES" \
|
|
--prerelease
|
|
|
|
# Upload new files (will replace if they exist)
|
|
gh release upload "v${{ steps.version.outputs.version }}" \
|
|
"build/chrome-${{ steps.version.outputs.version }}.zip" \
|
|
"build/firefox-${{ steps.version.outputs.version }}.zip" \
|
|
--clobber
|
|
else
|
|
echo "Creating new release..."
|
|
gh release create "v${{ steps.version.outputs.version }}" \
|
|
"build/chrome-${{ steps.version.outputs.version }}.zip" \
|
|
"build/firefox-${{ steps.version.outputs.version }}.zip" \
|
|
--title "Beta v${{ steps.version.outputs.version }}" \
|
|
--notes "$RELEASE_NOTES" \
|
|
--prerelease
|
|
fi
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
|
|
- name: Output release info
|
|
run: |
|
|
echo "## 🎉 Beta Release Created!" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "**Version**: v${{ steps.version.outputs.version }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "**Release URL**: https://github.com/${{ github.repository }}/releases/tag/v${{ steps.version.outputs.version }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### 📦 Build Artifacts" >> $GITHUB_STEP_SUMMARY
|
|
echo "- Chrome/Edge: \`chrome-${{ steps.version.outputs.version }}.zip\`" >> $GITHUB_STEP_SUMMARY
|
|
echo "- Firefox: \`firefox-${{ steps.version.outputs.version }}.zip\`" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### 🧪 Testing" >> $GITHUB_STEP_SUMMARY
|
|
echo "Share the release link with beta testers for feedback." >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### ⚠️ Next Steps" >> $GITHUB_STEP_SUMMARY
|
|
echo "1. Test the beta release thoroughly" >> $GITHUB_STEP_SUMMARY
|
|
echo "2. Gather feedback from testers" >> $GITHUB_STEP_SUMMARY
|
|
echo "3. Fix any critical issues" >> $GITHUB_STEP_SUMMARY
|
|
echo "4. When ready, create PR from \`beta\` → \`main\` for production release" >> $GITHUB_STEP_SUMMARY
|