ci: add release-drafter + prepare-release for faster releases#260
Merged
therealaleph merged 1 commit intotherealaleph:mainfrom Apr 26, 2026
Merged
ci: add release-drafter + prepare-release for faster releases#260therealaleph merged 1 commit intotherealaleph:mainfrom
therealaleph merged 1 commit intotherealaleph:mainfrom
Conversation
therealaleph
added a commit
that referenced
this pull request
Apr 26, 2026
Highlights: - Native udpgw protocol in Full mode (#222) — Telegram voice/video calls and Google Meet now work in Full mode on Android. UDP flows through one persistent TCP tunnel (instead of session-per-destination) so STUN/RTP flow counts no longer stall. Requires redeploying the tunnel-node Docker image (ghcr.io/therealaleph/mhrv-tunnel-node:1.7.0). - Android home screen restructure (#258, closes #246) — Connect button now pinned under Mode field, App picker shows pre-selected apps at top. With long deployment-ID lists, Connect no longer scrolls off-screen. - release-drafter + prepare-release tooling (#260) — incrementally drafts release notes from merged PR titles; manual workflow_dispatch prepares version bumps + changelog stubs. No protocol breaking changes; existing apps_script-mode and Full-mode deployments work unchanged. Full-mode users get udpgw automatically once the tunnel-node Docker image is updated. Thanks to @yyoyoian-pixel and @dazzling-no-more. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds two new GitHub Actions workflows and a release-drafter config to make releases lower-friction:
next) as PRs land on main. The English half of the next changelog is built up incrementally — no more starting from a blankdocs/changelog/v<ver>.mdon tag day.workflow_dispatchthat bumpsCargo.toml,Cargo.lock,android/app/build.gradle.kts(versionName + versionCode+1), pulls the drafter's accumulated body into a stubdocs/changelog/v<ver>.md, and opens a PR. After merging, you push thev<ver>tag and the existingrelease.ymltakes over.The existing release flow (matrix build → GH release → Telegram) is untouched.
How to use
This opens a
release/v1.6.6PR with all version files bumped anddocs/changelog/v1.6.6.mdprefilled with English bullets like:The maintainer's job per bullet:
added→Add)<expand>with the explanatory clause matching the project's existing• headline (#NN): full explanationstyleThe Persian section starts as a visible
[FA] translate ...placeholder above the---separator. Push the bilingual changelog to the branch, merge the PR, thengit tag v<ver> && git push origin v<ver>to ship.Why this design
feat:/fix:/etc.; the existing changelog convention strips them. A sed pass in prepare-release handlesfeat:,fix(scope):,fix(scope)!:, etc., so the maintainer doesn't.<!-- TODO -->would silently leak into the GitHub Release page and the Telegram post.[FA]and<expand>markers ship visibly if missed — much louder failure mode.workflow_dispatchre-trigger escape hatch inrelease.ymlspecifically because broken-build-on-immutable-tag is hard to recover from. Auto-tag-on-merge would make that scenario more likely; the explicitgit tag && git pushis the "ship it" gesture.ubuntu-latest. The Hetzner build runners are reserved for the existing release matrix.Files
.github/release-drafter.yml— drafter config (flat bullet template, autolabeler keyed on Conventional-Commit prefixes).github/workflows/release-drafter.yml— runs on push-to-main and PR events; bootstraps the autolabeler labels (release-prep,type: feature, etc.) idempotently on every run.github/workflows/prepare-release.yml— the version-bump + PR-open workflow described above.github/workflows/release.yml— the leading-comment stripper for the release body now uses inline Python with the same regex as the Telegram script, so both surfaces agree on what counts as "the leading comment block".github/scripts/telegram_release_notify.py— extracted_strip_leading_comments()with doctests covering single comment, consecutive comments, multi-line comment, blank-separated comments, no comments, and mid-file comments preservedTest plan
nextdraft on the next push to maintype: *label and the draft picks up the bulletgh workflow run prepare-release.yml -f version=<next-version>; verify the PR opens with all version files bumped and the changelog stub matches expectationspython3 -m doctest .github/scripts/telegram_release_notify.pypasses (covers the regex change)[FA]/<expand>markers, no<!-- -->leaks) and a clean Telegram postRollout note
When this lands, GitHub may need "Allow GitHub Actions to create and approve pull requests" enabled in repo Settings → Actions → General for the prepare-release workflow's
gh pr createto work. Ifgh pr createerrors with 403 on the first run, that's the fix.