-
Release v0.4.0
StableSome checks failedgo-ci / lint + build + test (pull_request) Successful in 53smanifest-check / manifest-vs-tag consistency (pull_request) Successful in 3m6smanifest-check / check (pull_request) Successful in 0sgo-ci / lint + build + test (push) Successful in 52srelease / decide + act (push) Successful in 8srelease / release (push) Successful in 0srelease / attach-release-asset (push) Failing after 34sdeploy / deploy purser to /srv/docker/purser (release) Failing after 1m53sreleased this
2026-08-21 17:12:56 +02:00 | 4 commits to main since this releaseAdded
-
release: attach a compiled
purser-linux-amd64binary to each Forgejo release (#16)A new
attach-release-assetjob runs after the cut and uploads the binary to the draft release before the operator publishes it. The binary is built with the same-ldflags "-X …/version.Tag=${TAG}"injection used by the Docker image, so the login page and the Docker-deployed binary report the same tag. The job is a no-op on non-cut runs (update / noop mode) and on dry runs.
The dashboard can now choose a certificate's expiry at issue time, up to
PURSER_MAX_CERT_LIFETIME. Leaving the box empty givesPURSER_CERT_LIFETIMEas before. The control stays hidden until the ceiling is raised above the default, so nothing changes for a deployment that does not opt in.A request above the ceiling is refused before anything is signed, with the limit named. A request shorter than
PURSER_DOWNLOAD_WINDOWis refused too: nominTLSCertDurationis set on the provisioner, so the CA would sign a certificate that can expire before it finishes being installed.-
docs: document dashboard password rotation with
hashpw(#44)Operators now have a runbook for replacing the mounted bcrypt hash without putting the password in argv or adding a change-password form to Purser.
Changed
None.
Fixed
-
version: add tests for the Tag → VCS revision → dev fallback chain (#29)
internal/versionhad no test file;purser#7carried a negative-control AC for the dev/unknown fallback that was never met. Six tests now cover the three arms —Tagset, VCS revision present, and neither. One arm pins the empty-revision guard:vcs.revisionpresent with an empty value must fall through to"dev". A mutation-verified negative control asserts the chain never returns an empty or invented string. Each arm uses an injectablereadBuildInfohook so tests exercise the full chain regardless of whether VCS info is available in the CI container. -
release: address Lookout review 4976 on attach-release-asset job
Removed
None.
Deprecated
None.
Upgrade
None.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-