Skip to content

Release: a banner for every version, a full page, and a Telegram post - #77

Merged
professorDeveloper merged 1 commit into
masterfrom
release-banner-telegram
Nov 14, 2026
Merged

professorDeveloper merged 1 commit into
masterfrom
release-banner-telegram

Conversation

@professorDeveloper

Copy link
Copy Markdown
Owner

Every release now gets what v3.2.0 had by hand.

Banner. tool/release_banner.py draws docs/images/v<version>/banner.svg from the v3.2.0 artwork and animation. Only the right column changes:

  • the version badge, which widens for a version like v3.2.10
  • NEW RELEASE or PATCH RELEASE with the month
  • two tagline lines
  • up to four chips

The wording comes from a comment in the notes:

<!-- banner
line1: Playback that recovers,
line2: downloads that finish.
chips: Server switching | Corner player | Downloads | 16 languages
-->

If the notes have no such comment, the chips are the areas merged since the last tag. The version job commits the banner with the bump. A banner already in the repo is kept.

Release page.

  • The banner goes on top.
  • A version without docs/releases/v<version>.md now gets a page in the v3.2.0 layout instead of the bare file table. It has badges, what's new grouped by area (from merged PR titles, with internal ones like Release/CI/docs left out), downloads, community links and a compare link.

Telegram.

  • The banner is sent as a photo; the runner renders the still frame to PNG with headless Chrome, with rsvg as the fallback. Under it goes an HTML caption: the notes' Uzbek summary, or else the merged changes. The caption is capped at 1024 characters.
  • The photo has buttons: Android from the CDN, all platforms (only when the release is public; a draft's page is a 404 for the channel), the channel and Discord.
  • The files follow one by one. The install notes (ABI, TV, macOS) and the CDN/updater status go under the last file.
  • If the photo or the HTML is refused, it falls back to plain text.

Tested

  • 19 unit tests in tool/compose_release_notes_test.py (11 new).
  • The banner was rendered for 3.2.1 and 3.2.2 and checked by eye.
  • The Telegram step ran against a local mock API, with two chats and draft mode.
  • actionlint shows nothing new apart from shellcheck style notes.

… with it

- tool/release_banner.py draws docs/images/v<version>/banner.svg from the
  v3.2.0 artwork: version badge, NEW or PATCH RELEASE with the month, two
  tagline lines and up to four chips. Wording comes from a <!-- banner -->
  comment in the notes, or from the areas merged since the last tag. The
  version job commits it with the bump; one already there is kept.
- The release page gets the banner on top. A version with no notes file now
  gets a page in the v3.2.0 layout (badges, what's new by area, downloads,
  community, compare link) instead of the bare table.
- Telegram: the banner as a photo with an HTML caption (the notes' Uzbek
  summary, or the merged changes) and buttons (Android from the CDN, all
  platforms when the release is public, channel, Discord). The files follow,
  with install notes under the last one. Falls back to text if the picture
  or HTML is refused.
- v3.2.1 notes: banner wording, and its banner.
@professorDeveloper
professorDeveloper merged commit ab4adf7 into master Nov 14, 2026
7 of 8 checks passed
@professorDeveloper
professorDeveloper deleted the release-banner-telegram branch November 14, 2026 10:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant