Releasing
A version is a git tag (v0.2.0), and its release notes are the tag message. A release goes like this:
- A maintainer runs
pnpm release 0.2.0: checks, writes the notes, creates an annotated tag and pushes it - GitHub Actions picks up the tag:
- runs type checks and server tests, and stops on failure
- builds and pushes
ghcr.io/gopkg-dev/damailtaggedv0.2.0,0.2.0,0.2andlatest - creates a GitHub Release from the tag message
- Running DaMail instances see the new release and show “Update available”
The release command
Section titled “The release command”pnpm release 0.2.0 # or patch / minor / major to bump the latest versionIt will:
- Check that you are on
mainwith a clean tree, not behindorigin/main, and the version is newer than existing tags - Run
pnpm typecheckandpnpm test(needs the local dev database) - Open your editor with a draft listing the commits since the last version
- Preview the GitHub Release body, then create the annotated tag and push
mainand the tag
Options: --notes <file> (use prepared notes, no editor), --dry-run (check and preview only), --no-push (local tag only), --skip-checks, --yes.
Writing release notes
Section titled “Writing release notes”DaMail v0.2.0
This release adds a release pipeline and update notifications.
New- Release command: pnpm release- In-app notice when a new version is available
Fixed- Newsletter list was cut off beyond 300 senders- The first line is the title (with the version) and becomes the GitHub Release title
- Lines without
-are the intro; a line followed by- itemsis a section title - To ship both languages, write each section twice: lines with Chinese characters count as Chinese, the rest as English, and the app shows the one matching the UI language
- Lines starting with
#are ignored
The in-app changelog, the GitHub Release and the update notice all use these same notes.
Pre-releases
Section titled “Pre-releases”pnpm release 0.3.0-beta.1 builds the image as usual (without updating latest), marks the GitHub Release as a pre-release, and does not notify users.