Back to Skiasharp

Release Notes Annotation

.agents/skills/release-publish/references/release-notes.md

3.119.45.8 KB
Original Source

Release Notes Annotation

Annotate GitHub release notes with platform and community emojis.

Process Overview

  1. Get the release body
  2. For each PR, determine platform and contributor status
  3. Build categorized sections
  4. Update the release

Categories

SectionWhen to Include
Breaking ChangesOnly if there are breaking changes
New FeaturesOnly if there are new features
What's ChangedAlways (full list with all PRs)

Emojis

Platform (required on all items)

EmojiMeaning
๐ŸŽApple (iOS/macOS/tvOS/Mac Catalyst)
๐ŸชŸWindows
๐ŸงLinux
๐Ÿค–Android
๐ŸŒWebAssembly/Blazor
๐ŸŽจCore API
๐Ÿ—๏ธBuild system/CI
๐Ÿ“ฆGeneral (fallback - always use something!)

Contributor

EmojiMeaning
โค๏ธCommunity contribution (not @mattleibow)

Label-to-Platform Mapping

Label PatternPlatform Emoji
os/Windows*๐ŸชŸ
os/macOS, os/iOS, os/tvOS๐ŸŽ
os/Linux๐Ÿง
os/Android๐Ÿค–
backend/SkiaSharp๐ŸŽจ
area/Build๐Ÿ—๏ธ
(no platform label)๐Ÿ“ฆ

Title Keywords-to-Platform Mapping

Title ContainsPlatform Emoji
iOS, macOS, tvOS, Apple, Metal, Catalyst๐ŸŽ
Windows, Win, UWP, WinUI, Direct3D, D3D๐ŸชŸ
Linux, Alpine, riscv, LoongArch๐Ÿง
Android, NDK๐Ÿค–
WebAssembly, Wasm, Blazor๐ŸŒ
SK* (API classes)๐ŸŽจ
Build, CI, Pipeline๐Ÿ—๏ธ
(no platform keywords)๐Ÿ“ฆ

Commands

1. Get Release Body

bash
gh release view {tag} --json body -q '.body' > /tmp/skiasharp/release/release-body.md

2. Analyze Each PR

For each PR line (format: * Description by @author in URL):

bash
# Extract PR number from URL and fetch details
gh pr view {number} --json labels,author,title,body

Determine:

  • Platform from PR title/labels (required - use ๐Ÿ“ฆ if none)
  • Contributor โ€” add โค๏ธ if author is not mattleibow
  • Breaking change โ€” title contains BREAKING, removes API
  • New feature โ€” title contains Add, Support, Enable, Implement, or bumps Skia/HarfBuzz
  • Backport โ€” title starts with [release/{version}] prefix (see below)

2a. Handle Backport PRs

Backport PRs have titles prefixed with [release/{version}] and are created by @github-actions. These should be traced back to the original PR for proper attribution.

Identifying backports:

  • Title starts with [release/...]
  • Author is github-actions[bot]
  • Has backport label

Tracing to original:

bash
# Get backport PR body - contains reference to original
gh pr view {backport-number} --json body -q '.body'
# Output: "Backport of {commit} from #{original-pr-number}."

# Get original PR details
gh pr view {original-pr-number} --json author,title,labels

Annotation format for backports:

* {emoji}{โค๏ธ} {clean title} (originally by @{original-author} in #{original-pr}) by @github-actions in {backport-url}
  • Remove the [release/{version}] prefix from the title
  • Add (originally by @{author} in #{number}) before by @github-actions
  • Use the original author to determine โค๏ธ (not github-actions)
  • Use the original PR title/labels for platform emoji

3. Build Sections

  • Breaking Changes โ€” only if there are breaking PRs (list them here AND in What's Changed)
  • New Features โ€” only if there are feature PRs (list them here AND in What's Changed)
  • What's Changed โ€” always include, contains ALL PRs

Format all items: * {platform}{โค๏ธ} Description...

4. Update Release

bash
gh release edit {tag} --notes-file /tmp/skiasharp/release/release-body.md

Release Note Structure

markdown
## Breaking Changes
* ๐ŸŽจ Remove deprecated SKFoo API... by @mattleibow

## New Features
* ๐ŸŽโค๏ธ Support SKMetalView on tvOS... by @MartinZikmund
* ๐Ÿงโค๏ธ Add riscv64 build support... by @kasperk81

## What's Changed
* ๐ŸŽจ Remove deprecated SKFoo API... by @mattleibow
* ๐ŸŽโค๏ธ Support SKMetalView on tvOS... by @MartinZikmund
* ๐ŸชŸโค๏ธ Enable Control Flow Guard... by @Aguilex
* ๐Ÿ“ฆ Adding the initial set of AI docs... by @mattleibow
* ๐Ÿ—๏ธ Bump to the next version... by @mattleibow

## New Contributors
(Auto-generated)

**Full Changelog**: (Auto-generated)

Example Transformation

Original (auto-generated):

* Support SKMetalView on tvOS by @MartinZikmund in https://github.com/mono/SkiaSharp/pull/3114
* Fix the incorrect call in SafeRef by @kkwpsv in https://github.com/mono/SkiaSharp/pull/3143
* Adding the initial set of AI docs by @mattleibow in https://github.com/mono/SkiaSharp/pull/3406

After annotation:

* ๐ŸŽโค๏ธ Support SKMetalView on tvOS by @MartinZikmund in https://github.com/mono/SkiaSharp/pull/3114
* ๐ŸŽจโค๏ธ Fix the incorrect call in SafeRef by @kkwpsv in https://github.com/mono/SkiaSharp/pull/3143
* ๐Ÿ“ฆ Adding the initial set of AI docs by @mattleibow in https://github.com/mono/SkiaSharp/pull/3406

Backport Example

Original (auto-generated backport):

* [release/3.119.2-preview.2] Add Spectre mitigation flag for libSkiaSharp.dll. by @github-actions in https://github.com/mono/SkiaSharp/pull/3497

After tracing and annotation:

* ๐ŸชŸโค๏ธ Add Spectre mitigation flag for libSkiaSharp.dll. (originally by @sshumakov in #3496) by @github-actions in https://github.com/mono/SkiaSharp/pull/3497

Key changes:

  1. Removed [release/3.119.2-preview.2] prefix
  2. Added (originally by @sshumakov in #3496) attribution
  3. Added ๐ŸชŸ (Windows) based on original PR content
  4. Added โค๏ธ because @sshumakov is a community contributor