5 Commits
Author SHA1 Message Date
gitea-actions a350178434 Release v0.1.3 [skip release] [skip actions] 2026-09-26 06:07:51 +00:00
gitea-actions df2fa0f54b Release v0.1.2 [skip release] [skip actions] 2026-09-26 05:53:08 +00:00
gitea-actions 44b73b587e Release v0.1.1 [skip release] [skip actions] 2026-09-26 05:49:16 +00:00
gitea-actions 102898296f Release v0.1.0 [skip release] [skip actions] 2026-09-26 05:43:17 +00:00
NotExpectedYet 7261d46ee2 ci: publish a release on every push to master
Release / release (push) Successful in 5s
Tags are what make `dsh plugin update` work at all: a plugin installed as a
bare `git+https://…/repo.git` is pinned to a commit in the profile's lockfile,
so with no tags there is nothing for an update to move to. This adds the
pipeline that creates them.

`.gitea/workflows/release.yml` runs on a push to master and on manual dispatch:
it reads the commit subjects since the last tag, derives the bump, prepends a
`CHANGELOG.md` section, commits and tags `vX.Y.Z`, and publishes the Gitea
release with those subjects as the body. The range with no tags yet is the
whole history, so the first release describes everything it contains.

The logic lives in `.gitea/scripts/release.sh` rather than in the YAML so it can
run — and be checked — without a runner: `npm run test:release` exercises it
(43 checks), `npm run release:plan` says whether HEAD would release, and
`npm run release:notes` prints the notes it would publish. `AGENTS.md` states
the subject conventions a contributor has to follow, because the subject is both
the version decision and the sentence a user reads in the release notes.

One property worth knowing: with no tags yet the version released is the one
`package.json` already declares — no bump is applied to a version that has never
been published — so the first tag is `v0.1.0`, and the bump rules take effect
from the second release onward.
2026-09-26 06:42:46 +01:00