This document outlines how to create releases for the LGamila project.
The project includes an automated GitHub Actions workflow that builds the browser extension for both Chrome and Firefox and publishes it as a GitHub release.
- Update the version in
apps/extension/package.json - Commit your changes:
git add apps/extension/package.json git commit -m "chore: bump extension version to v1.0.1" - Create and push a git tag:
git tag v1.0.1 git push origin v1.0.1
- The workflow will automatically:
- Build the extension for Chrome (MV3) and Firefox (MV2)
- Package both builds into zip files
- Create a GitHub release with both files attached
- Include detailed installation instructions
- Go to the Actions tab on GitHub
- Select the "Release Extension" workflow
- Click "Run workflow"
- Enter the version (e.g.,
v1.0.1) - Click "Run workflow"
If you need to build releases locally:
# Navigate to extension directory
cd apps/extension
# Build for both browsers
pnpm build:all
# Package for both browsers
pnpm package:all
# Files will be created in:
# - build/chrome-mv3-prod.zip (Chrome)
# - build/firefox-mv2-prod.zip (Firefox)The release workflow (.github/workflows/release.yml) performs the following steps:
- Environment Setup: Installs Node.js, pnpm, and project dependencies
- Multi-Browser Build:
- Builds extension for Chrome (Manifest V3)
- Builds extension for Firefox (Manifest V2)
- Packaging: Creates zip files for both browser builds
- Release Creation: Creates a GitHub release with:
- Proper semantic versioning
- Detailed release notes
- Installation instructions for both browsers
- Both browser builds attached as assets
- Uses the latest Manifest V3 format
- Supports all modern Chrome extension APIs
- Compatible with Chrome, Edge, and other Chromium-based browsers
- Uses Manifest V2 for Firefox compatibility
- Includes Firefox-specific adaptations
- Tested with Firefox Developer Edition
- Extension version is managed in
apps/extension/package.json - Git tags should follow semantic versioning (e.g.,
v1.0.0,v1.0.1,v1.1.0) - Release notes are automatically generated with installation instructions
Before creating a release:
-
Test locally:
cd apps/extension pnpm build:all -
Load both builds in their respective browsers to ensure functionality
-
Verify all features work correctly in both browsers
- Check that all dependencies are properly listed
- Ensure
apps/extension/package.jsonhas the correct version - Verify Plasmo build commands work locally
- Confirm Plasmo supports the target browser
- Check build logs for any browser-specific errors
- Ensure all required permissions are set in manifest
- Verify GitHub token has proper permissions
- Check that tag format matches workflow triggers
- Ensure no existing release exists with the same tag