This document outlines how to create releases with changelog content included in GitHub releases.
- GitHub CLI installed and authenticated
- Write access to the repository
- Updated
CHANGELOG.mdwith the new version - Release announcement secrets configured in GitHub:
MASTODON_SERVER,MASTODON_CLIENT_ID,MASTODON_CLIENT_SECRET,MASTODON_ACCESS_TOKENBLUESKY_USERNAME,BLUESKY_APP_PASSWORD
Before creating releases, you can test the GitHub Actions workflows locally using act:
- act installed
- Either Docker or Podman installed and running
- The script automatically detects which container runtime you have
# Interactive menu for testing workflows
./scripts/test-workflows.sh
# Test CI workflow
./scripts/test-workflows.sh ci
# Test specific CI jobs
./scripts/test-workflows.sh ci lint
./scripts/test-workflows.sh ci test
# Test release workflow (creates temporary tag)
./scripts/test-workflows.sh release
# List available workflows and jobs
./scripts/test-workflows.sh listThe script automatically handles Podman configuration and provides colored output for easy debugging.
Before creating a release, update CHANGELOG.md:
- Move items from
[Unreleased]section to a new version section - Use format:
## [X.Y.Z] - YYYY-MM-DD - Add a new empty
[Unreleased]section at the top
Example:
## [Unreleased]
## [0.5.0] - 2025-01-20
### Added
- Auto-refresh functionality with 'A' hotkey toggle
- Guest data loading indicator on app startup
### Fixed
- VM selection preservation during operationsUse the provided script for manual releases:
# Create a draft release with changelog content
./scripts/create-release.sh v0.5.0
# Review the draft release in GitHub
# Publish when ready:
gh release edit v0.5.0 --draft=falsePush a git tag to trigger automated release:
# Create and push tag
git tag v0.5.0
git push origin v0.5.0
# The GitHub Actions workflow will:
# - Build binaries for all platforms
# - Extract changelog content for the version
# - Create GitHub release with changelog as description
# - Upload binaries and checksums- Update
CHANGELOG.mdwith new version - Commit changelog changes
- Create release (script or tag)
- Verify release notes include changelog content
- Test download links work
- Announce release if needed
If you get "Version not found in CHANGELOG.md":
- Ensure the version format matches exactly:
## [X.Y.Z] - YYYY-MM-DD - Check there are no extra spaces or formatting issues
If release notes are empty:
- Verify the changelog section has content between version headers
- Check the sed command works:
sed -n "/## \[0.4.0\]/,/^## \[/p" CHANGELOG.md | sed '/^## \[/d' | tail -n +2
If gh commands fail:
- Authenticate:
gh auth login - Check repository access:
gh repo view