Releases as pull requests, the same in all five app repos (hub, catalog, live, riftbound, karaoke). The Gitea side (PRs only into main, squash merges, required checks, v* tags only by release-bot, its RELEASE_TOKEN org secret) is dhkatz/infra modules/app-repo.
.gitea/workflows/pull-request.yml: the PR title must be a conventional commit (feat(api): …, fix: …, feat!: …); it becomes the commit on main. chore(release) only from release-bot's release branch. Required to merge (Pull request / title).
.gitea/default_merge_message/SQUASH_TEMPLATE.md: the squash commit is <PR title> (#<n>) plus the description.
.gitea/workflows/release.yml, on every push to main, as release-bot (RELEASE_TOKEN):
if the commit is a merged chore(release): vX.Y.Z: tag it vX.Y.Z (lightweight), push the tag (CI builds the image, Komodo deploys prod), publish the release with git-cliff's notes;
otherwise, if anything releasable landed since the last tag: rewrite the release branch (CHANGELOG.md) and open or update chore(release): vX.Y.Z.
cliff.toml (git-cliff 2.14.2, pinned by sha512): feat → minor, fix/perf/revert → patch, breaking → minor while 0.x; chore/ci/docs/test/style/build/refactor alone don't release. Only conventional commits count, so the history before this is left out.
CHANGELOG.md: header only; release PRs fill it.
Agent notes (CLAUDE.md / AGENTS.md): the PR flow and title format; never tag by hand.
After merging, Release runs on main and should report nothing to release (this PR is ci:); the first feat:/fix: PR merged after it opens the first release PR.
Releases as pull requests, the same in all five app repos (hub, catalog, live, riftbound, karaoke). The Gitea side (PRs only into main, squash merges, required checks, `v*` tags only by release-bot, its `RELEASE_TOKEN` org secret) is dhkatz/infra `modules/app-repo`.
- **`.gitea/workflows/pull-request.yml`**: the PR title must be a conventional commit (`feat(api): …`, `fix: …`, `feat!: …`); it becomes the commit on main. `chore(release)` only from release-bot's `release` branch. Required to merge (`Pull request / title`).
- **`.gitea/default_merge_message/SQUASH_TEMPLATE.md`**: the squash commit is `<PR title> (#<n>)` plus the description.
- **`.gitea/workflows/release.yml`**, on every push to main, as release-bot (`RELEASE_TOKEN`):
- if the commit is a merged `chore(release): vX.Y.Z`: tag it vX.Y.Z (lightweight), push the tag (CI builds the image, Komodo deploys prod), publish the release with git-cliff's notes;
- otherwise, if anything releasable landed since the last tag: rewrite the `release` branch (CHANGELOG.md) and open or update `chore(release): vX.Y.Z`.
- **`cliff.toml`** (git-cliff 2.14.2, pinned by sha512): feat → minor, fix/perf/revert → patch, breaking → minor while 0.x; chore/ci/docs/test/style/build/refactor alone don't release. Only conventional commits count, so the history before this is left out.
- **`CHANGELOG.md`**: header only; release PRs fill it.
- Agent notes (CLAUDE.md / AGENTS.md): the PR flow and title format; never tag by hand.
After merging, `Release` runs on main and should report nothing to release (this PR is `ci:`); the first `feat:`/`fix:` PR merged after it opens the first release PR.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Pull requests only, squash-merged, titled as conventional commits (checked); release-bot keeps a
chore(release) pull request open, worked out by git-cliff, and merging it tags the release.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
dhkatz
merged commit fbf1e01314 into main2026-11-03 08:40:38 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Releases as pull requests, the same in all five app repos (hub, catalog, live, riftbound, karaoke). The Gitea side (PRs only into main, squash merges, required checks,
v*tags only by release-bot, itsRELEASE_TOKENorg secret) is dhkatz/inframodules/app-repo..gitea/workflows/pull-request.yml: the PR title must be a conventional commit (feat(api): …,fix: …,feat!: …); it becomes the commit on main.chore(release)only from release-bot'sreleasebranch. Required to merge (Pull request / title)..gitea/default_merge_message/SQUASH_TEMPLATE.md: the squash commit is<PR title> (#<n>)plus the description..gitea/workflows/release.yml, on every push to main, as release-bot (RELEASE_TOKEN):chore(release): vX.Y.Z: tag it vX.Y.Z (lightweight), push the tag (CI builds the image, Komodo deploys prod), publish the release with git-cliff's notes;releasebranch (CHANGELOG.md) and open or updatechore(release): vX.Y.Z.cliff.toml(git-cliff 2.14.2, pinned by sha512): feat → minor, fix/perf/revert → patch, breaking → minor while 0.x; chore/ci/docs/test/style/build/refactor alone don't release. Only conventional commits count, so the history before this is left out.CHANGELOG.md: header only; release PRs fill it.After merging,
Releaseruns on main and should report nothing to release (this PR isci:); the firstfeat:/fix:PR merged after it opens the first release PR.🤖 Generated with Claude Code