Use this checklist when preparing a new release of doxx. You can also create a GitHub issue using the "Release" template to track progress.
- All tests passing:
cargo test - No clippy warnings:
cargo clippy - Code is formatted:
cargo fmt --check - CHANGELOG.md updated:
- Move items from
[Unreleased]to new[X.Y.Z] - YYYY-MM-DDsection - Keep
[Unreleased]section empty for future changes - Verify changelog entries are accurate and complete
- Move items from
- Version bumped in
Cargo.toml - Test binary works:
cargo run --release -- tests/fixtures/comprehensive.docx - Dry-run the crates.io package:
cargo publish --dry-run
- Commit version bump:
git commit -m "chore: release X.Y.Z" - Push to main:
git push - Create version tag:
git tag vX.Y.Z - Push tag:
git push origin vX.Y.Z - Wait for GitHub Actions workflows to complete (~10-15 minutes)
All of the following are now automated via GitHub Actions:
-
GitHub Release created at https://github.com/bgreenwell/doxx/releases/tag/vX.Y.Z
- All platform binaries present (Linux, macOS, Windows)
- Tarballs (.tar.xz) and ZIP archive
- MSI installer for Windows
- Shell/PowerShell installer scripts
- SHA256 checksum files
-
Homebrew formula published to bgreenwell/homebrew-tap
- Automated by:
publish-homebrew-formulajob in release.yml
- Automated by:
-
Scoop manifest published to bgreenwell/scoop-bucket
- Automated by:
.github/workflows/publish-scoop.yml
- Automated by:
-
crates.io published at https://crates.io/crates/doxx
- Automated by:
publish-crates-iojob in release.yml
- Automated by:
-
AUR package updated at doxx-bin
- Automated by:
.github/workflows/publish-aur.yml - PKGBUILD and .SRCINFO auto-generated and pushed
- Automated by:
-
WinGet manifest PR created to microsoft/winget-pkgs
- Automated by:
.github/workflows/publish-winget.yml - Note: PR may require manual merge approval from Microsoft team (1-2 days)
- Automated by:
-
Homebrew (macOS/Linux):
brew update && brew upgrade doxx doxx --version -
Scoop (Windows):
scoop update && scoop update doxx doxx --version -
AUR (Arch Linux):
yay -Syu doxx-bin doxx --version
-
WinGet (Windows):
winget upgrade bgreenwell.doxx doxx --versionNote: May take 1-2 days for WinGet PR to be merged
-
Checksums - verify a downloaded binary matches its published SHA256:
curl -LO https://github.com/bgreenwell/doxx/releases/latest/download/doxx-checksums.txt curl -LO https://github.com/bgreenwell/doxx/releases/latest/download/doxx-Linux-x86_64.tar.gz sha256sum doxx-Linux-x86_64.tar.gz grep Linux-x86_64 doxx-checksums.txt
- All automated workflows completed successfully (check GitHub Actions)
- Close release tracking issue
GitHub Actions fails: Verify all secrets are configured: HOMEBREW_TAP_TOKEN, SCOOP_BUCKET_TOKEN, CARGO_REGISTRY_TOKEN, AUR_SSH_PRIVATE_KEY, WINGET_TOKEN
AUR automation fails: Check SSH key is valid (AUR_SSH_PRIVATE_KEY secret). Verify doxx-bin package exists at aur.archlinux.org.
WinGet PR not appearing: Check .github/workflows/publish-winget.yml logs. May need to create PR manually with komac update.
Dependabot opens a PR touching release.yml: Don't merge it. release.yml is autogenerated by cargo-dist (see its header comment) - its action pins (actions/upload-artifact, etc.) are whatever that tool's template expects for the installed cargo-dist version, not something to hand-bump. Close the PR and instead bump the pinned cargo-dist version (currently referenced near the top of release.yml, via the cargo-dist-installer.sh download) and re-run dist init/dist generate to regenerate the file consistently.
For detailed workflow information:
.github/workflows/release.yml— main release, Homebrew, crates.io.github/workflows/publish-scoop.yml— Scoop bucket.github/workflows/publish-aur.yml— AUR publishing.github/workflows/publish-winget.yml— WinGet manifests