modemu2k release process
========================

Running notes for the v0.2.0 release. Future releases: clone the
[ ] checkboxes and walk through. Marked [x] = done, [ ] = pending.

In-tree edits (before tagging)
------------------------------
[x] ChangeLog: replace `(in-progress):` with `YYYY-MM-DD` + `- modemu2k (vX.Y.Z)`
    v0.2.0 sealed in commit 4b6702c (2026-05-27).
[ ] packaging/debian/changelog: change `UNRELEASED` → `unstable` (or the
    relevant Debian distribution) and refresh the date stamp.
[ ] meson.build: confirm `version:` matches the planned tag.
[ ] scripts/reformat.sh — reformat hand-written sources with indent.
    Commit the result on its own so it stays separable from semantic
    changes:
        scripts/reformat.sh
        git diff   # eyeball the changes
        git add -A && git commit -m "reformat with indent"

Tarball (optional — for distro maintainers that want a checksum)
----------------------------------------------------------------
[ ] meson dist -C builddir
    → produces modemu2k-X.Y.Z.tar.xz in builddir/meson-dist/
[ ] sha256sum and md5sum of the tarball — recorded here once generated:
    sha256: <fill in>
    md5:    <fill in>

Per-distro packaging files
--------------------------
[ ] ~/src/Packaging/AUR/modemu2k/PKGBUILD: set `sha256sums=('<sha256 from above>')` (was 'SKIP').
[ ] packaging/Slackbuild/modemu2k/modemu2k.info: fill `MD5SUM="<md5 from above>"`.

GitHub Release (which also creates the tag)
-------------------------------------------
[ ] Draft the release in the GitHub UI: target = master, tag = vX.Y.Z
    (new), title = "modemu2k vX.Y.Z", body = release summary pulled from
    the ChangeLog stanza.
[ ] Click Publish. GitHub creates the tag on master at that point.
[ ] The tag push fires .github/workflows/appimage.yml; it builds AppImages
    for x86_64 and aarch64, then uses ncipollo/release-action with
    allowUpdates + omitBody/Name to attach them (plus .sha256sum files)
    to the release you just published — without touching the title or body.
    → expect 4 attachments to appear on the release page within ~2 min.
[ ] (Optional) attach the meson dist tarball from above if you generated it.

gh-pages
--------
[ ] The docs workflow auto-publishes the versioned vX.Y.Z/ directory on
    every push to master. The tag-publish itself doesn't trigger it
    (tags ≠ branch pushes), but any subsequent push to master will.
[ ] gh-pages/index.html: hand-edit the version list <ul> to add the new
    vX.Y.Z link.

CI sanity (do before tagging)
-----------------------------
[ ] All workflows green on master:
    - C/C++ CI (linux gcc, linux clang, linux arm gcc)
    - macOS
    - BSD
    - Build AppImage
    - CodeQL Advanced
    - Publish docs

Post-release housekeeping
-------------------------
[ ] ChangeLog: open a new `(in-progress):` block at the top for the next
    release. Bullets land here as breaking/notable changes accrue.
[ ] If any deprecations were honored this release (e.g. m2k_dial /
    m2k_online were removed), drop the `M2K_SUPPRESS_DEPRECATED` flag
    from tests/meson.build.
