This checklist covers the common steps for creating a Photofield release.
- You are on the
mainbranch - Working directory is clean (no uncommitted changes)
- All planned features/fixes are merged
- CI is passing on main branch
- Update
docs/with any new features or configuration changes - Update
README.mdif there are significant changes- Features list
- Installation instructions
- Screenshots/demos if UI changed
- Update
defaults.yamldocumentation comments if config changed
- Document all changes using changie
- Use
task addedfor new features - Use
task fixedfor bug fixes - Use
task breakingfor breaking changes - Use
task deprecatedfor deprecations - Use
task removedfor removed features - Use
task securityfor security updates
- Use
- Test locally with embedded build:
task run:embed - Run tests:
task test - Run e2e tests:
task e2e:ci
-
Run
task release- Batches changelog entries into a version file
- Opens the version file in your editor for review/editing
- Merges changes into CHANGELOG.md
- Commits with "Release vX.Y.Z" message
- Creates git tag
-
Review the release commit:
git show HEAD -
Verify the changelog looks good:
task release:changelog
-
Push the release:
task release:push -
While CI is running, update external listings:
- Update feature list at https://github.com/meichthys/foss_photo_libraries (issue #95)
- Announce on Discord: https://discord.gg/qjMxfCMVqM
-
Wait for CI to complete: https://github.com/SmilyOrg/photofield/actions
-
Review the GitHub Release draft
- Edit release notes if needed
- Add screenshots/GIFs if applicable (for UI changes or new features)
- Check attached artifacts are present
- Publish the release
- Test Docker image:
docker pull ghcr.io/smilyorg/photofield:latest - Verify Docker tags created at https://github.com/SmilyOrg/photofield/pkgs/container/photofield
- Monitor for issues
- GitHub issues
- Discord feedback
- Undo the release locally:
task release:undo- Removes the tag and commit
- Make fixes and try again
- Delete the tag locally:
git tag -d vX.Y.Z - Delete the tag remotely:
git push origin :refs/tags/vX.Y.Z - Delete the release commit locally:
git reset --hard HEAD~1 - Force push:
git push -f origin main - Delete GitHub Release draft if created
- Make fixes and create a new release
- Patch (0.X.Y+1): Bug fixes, security patches
- Use
task fixedortask security
- Use
- Minor (0.X+1.0): New features, breaking changes (pre-1.0), removals
- Use
task added,task breaking,task removed, ortask deprecated
- Use
- Major (1.0.0+): Reserved for 1.0 stable release
Changie automatically determines version bump based on change types.
task release:version- Show current/next versiontask release:changelog- Preview changelog for latest releasetask release:title- Get the release titlechangie latest- Get latest version stringgit describe --tags- Show current version with git infotask check- Verify dependencies and generated files are up to datetask package- Build all platform binaries locally (for testing)task release:local- Build and test Docker image locally
-
Release artifacts include binaries for:
- Linux (amd64, arm, arm64, 386, loong64, ppc64le, riscv64, s390x)
- macOS (amd64, arm64)
- Windows (amd64, arm64, 386)
- OpenBSD (amd64, arm64)
-
Docker images are multi-arch (amd64, arm64)
-
CI automatically skips duplicate builds on release commits to main branch
-
All releases are created as drafts first, allowing final review before publishing
-
Build artifacts are attested for supply chain security