Release checklist
=================

This project uses Release Please on `master` for release PRs, changelog
generation, version updates, tagging, and GitHub release creation.

Pre-release checks
------------------

- Make sure all release-worthy changes have landed through PRs with
  Conventional Commit titles.
- If translatable strings changed:
  - run `make update-po` in `po/`
  - review updated `.po` files, especially `po/fr.po`
  - commit the translation updates before the release PR
- If documentation changed, make sure the generated PDF still builds locally:
  - `./autogen.sh`
  - `./configure --enable-doc`
  - `make -C doc pdf`
- Let normal CI pass on `master`; CI builds the generated HTML docs with
  `--enable-doc`.

Release Please PR
-----------------

- Wait for the Release Please PR to be opened or updated.
- Review the generated `CHANGELOG.md`.
- Confirm the release version in `configure.ac`.
- Confirm any other release-versioned files listed in
  `.github/release-please-config.json` were updated.
- Merge the Release Please PR after CI passes.

Automated by Release Please
---------------------------

- Update `CHANGELOG.md`.
- Update configured version files.
- Create the release commit.
- Create the release tag.
- Create the GitHub release with generated release notes.
- Build and test the source distribution archive.
- Upload `ddccontrol-<version>.tar.bz2` to the GitHub release.

Release artifacts
-----------------

- Verify that the GitHub release contains `ddccontrol-<version>.tar.bz2`.
- If the artifact upload failed, rerun the Release Please workflow or build and
  upload the archive manually from the release tag.

Documentation and website
-------------------------

- If release documentation changed:
  - run `make -C doc publish publish-release`
  - update news in the `ddccontrol.github.io` repository
  - archive generated release docs in the website repository
  - commit and push the website update

Post-release
------------

- Verify the GitHub release page has the expected notes and assets.
- Announce the release on GitHub if the generated release notes need a
  separate announcement.
- Update external release trackers, if any are still used.
- Update downstream packaging notes or overlays, such as Gentoo, when needed.
