Overview
MQTT Explorer uses an automated release process powered by semantic-release and GitHub Actions. Releases are triggered by pull requests to specific branches and follow semantic versioning.Release Channels
MQTT Explorer has two release channels:Production Release
Branch:
releaseAudience: All usersStability: Stable, production-readyDistribution: GitHub Releases, website downloadsBeta Release
Branch:
betaAudience: Early adopters, testersStability: Feature-complete but may have bugsDistribution: GitHub Releases (pre-release)Release Workflow
Ensure conventional commits
Your PR must include at least one commit with a semantic prefix:
feat:- New feature (triggers minor version bump)fix:- Bug fix (triggers patch version bump)perf:- Performance improvement (triggers patch)BREAKING CHANGE:- Breaking change (triggers major bump)
Commits without these prefixes (e.g.,
docs:, chore:, style:) will not trigger a new release.Semantic Versioning
Versions follow semver format:MAJOR.MINOR.PATCH
Commit Message Format
Version Bump Rules
| Commit Type | Example | Version Change |
|---|---|---|
feat: | New feature | 0.4.0 → 0.5.0 |
fix: | Bug fix | 0.4.0 → 0.4.1 |
perf: | Performance | 0.4.0 → 0.4.1 |
BREAKING CHANGE: | Breaking API | 0.4.0 → 1.0.0 |
docs:, chore:, style: | No functional change | No release |
GitHub Actions Workflow
The release process is defined in.github/workflows/platform-builds.yml:
Build Steps
Semantic Release
Determines if a new release should be created:Output:
steps.semantic.outputs.new_release_published is 'true' if release is triggered.Release Assets
Each release includes:Windows
MQTT Explorer Setup [version].exe- NSIS installerMQTT Explorer [version].exe- Portable executable
macOS
MQTT Explorer-[version].dmg- Intel disk imageMQTT Explorer-[version]-arm64.dmg- Apple Silicon disk image
Linux
MQTT-Explorer-[version].AppImage- x64 portableMQTT-Explorer-[version]-arm64.AppImage- ARM64 portableMQTT-Explorer-[version]-armv7l.AppImage- ARM portablemqtt-explorer_[version]_amd64.deb- Debian packagemqtt-explorer_[version]_arm64.deb- Debian ARM64mqtt-explorer_[version]_armhf.deb- Debian ARMmqtt-explorer_[version]_amd64.snap- Snap package (also on Snapcraft Store)
Additional Files
CHANGELOG.md- Generated release noteslatest.yml/latest-mac.yml- Auto-update metadata
Semantic Release Configuration
Configured via.releaserc or package.json:
Plugin Responsibilities
| Plugin | Purpose |
|---|---|
commit-analyzer | Determines version bump from commits |
release-notes-generator | Creates changelog from commits |
changelog | Updates CHANGELOG.md file |
npm | Updates version in package.json |
github | Creates GitHub release with assets |
git | Commits version bump back to repository |
Auto-Update System
Electron apps support automatic updates via electron-updater.Update Metadata
electron-builder generates update manifests: macOS:latest-mac.yml
latest.yml
Update Check Frequency
Configured in the Electron main process:Linux AppImages and browser mode do not support auto-update. Users must manually download new versions.
Manual Release (Emergency)
If automated release fails, create a release manually:Create GitHub release
- Go to https://github.com/thomasnordquist/MQTT-Explorer/releases/new
- Select the tag you created
- Generate release notes from commits
- Upload packages from
build/directory - Publish release
Rollback a Release
If a release has critical bugs:Docker Releases
Browser mode Docker images are built separately in.github/workflows/docker-browser.yml:
Triggers:
- Push to
master,beta, orreleasebranches - Schedule: Every two weeks (1st and 15th at 2:00 AM UTC)
- Manual trigger
latest- Latest master buildmaster,beta,release- Branch-specific tags<branch>-<sha>- Commit-specific tags
ghcr.io/thomasnordquist/mqtt-explorer
Troubleshooting
No Release Created
Missing feat: or fix: commits
Missing feat: or fix: commits
Ensure your PR includes commits with semantic prefixes:
semantic-release failed
semantic-release failed
Check GitHub Actions logs for errors:Common causes:
- Only
docs:orchore:commits - No changes since last release
ReleaseBot token expired
ReleaseBot token expired
The workflow uses a GitHub App token for releases:Verify app credentials are valid.
Package Upload Failed
GitHub rate limit: Wait and re-run the workflow Asset already exists: Delete the release and re-run Snapcraft authentication: Re-export credentials:Notarization Failed (macOS)
See Notarization Troubleshooting for detailed steps.Best Practices
Write good commit messages
Clear, descriptive commits generate better changelogs:
Test before merging
Run full test suite locally:
Use beta for experiments
Release experimental features to beta first:
Monitor release success
Watch GitHub Actions logs during releases to catch issues early.
Next Steps
Building
Learn how to build MQTT Explorer from source
Notarization
Set up macOS notarization for secure distribution