Release notes
Where they live
_internal/release_notes/RELEASE_NOTES_<version>.md (e.g. RELEASE_NOTES_2.2.0.md).
Source of truth for what changed
git log --oneline <prev_tag>..HEAD and git show --stat <sha> per commit.
git diff <prev_tag>..HEAD -- README.md for the canonical added/removed transforms list.
git diff <prev_tag>..HEAD -- pyproject.toml for dependency / version bumps.
- The PR descriptions in commit messages — they're written carefully, mine them for one-liners.
Required structure
## Summary — 3–5 bullet TL;DR.
## Breaking changes — every backwards-incompatible change. Be specific (old → new). Include short before/after code snippets when the API surface changed.
## New features — new transforms, new core features, new params on existing transforms.
## Bug fixes — one entry per fix, link the PR.
## Misc — CI, build, deps, internal refactors users might notice.
## Commits — table of commit | PR | description for every commit since the previous tag.
Match the tone of RELEASE_NOTES_2.1.2.md and RELEASE_NOTES_2.2.0.md: terse, technical, no marketing fluff, no emoji.
Transform name → link
Link the first meaningful mention of a transform in each section, including headings and table entries:
[TransformName](https://albumentations.ai/explore/transform/TransformName/)
Repeated mentions in the same paragraph may use plain backticked names. Keep code fences runnable, without links.
For parameter renames, link the transform separately and put the parameter name in code.
Do not link:
- Core classes (
Compose, BboxParams, KeypointParams, BasicTransform, BaseDistortion).
- Parameter names (
angle_range, blur_range).
- Helper functions (
unpack_label_wrappers, to_tuple).
- Internal modules (
core/utils.py).
Other conventions
- Code references use single backticks for params/files; triple-backtick fenced blocks for code samples.
- Use the actual commit short SHA (7 chars) and the real PR number in the commits table.
- "Breaking changes" section comes before "New features" — users scan that first.
- For mass renames, use a single 2-column table (
Old | New) instead of a bullet list.
- If a feature spans multiple PRs (e.g. instance binding in #222, #223, #237), mention them inline in the prose, not as separate entries.
- If
pyproject.toml version isn't bumped yet, note that in the response to the user; do not bump it as part of writing the notes.
1---2name: release-notes3description: Generate release notes for AlbumentationsX. Use when the user asks to prepare, draft, or write release notes for a new version (e.g. "prepare release notes for 2.x.y", "draft release X").4---56# Release notes78## Where they live910`_internal/release_notes/RELEASE_NOTES_<version>.md` (e.g. `RELEASE_NOTES_2.2.0.md`).1112## Source of truth for what changed1314- `git log --oneline <prev_tag>..HEAD` and `git show --stat <sha>` per commit.15- `git diff <prev_tag>..HEAD -- README.md` for the canonical added/removed transforms list.16- `git diff <prev_tag>..HEAD -- pyproject.toml` for dependency / version bumps.17- The PR descriptions in commit messages — they're written carefully, mine them for one-liners.1819## Required structure20211. `## Summary` — 3–5 bullet TL;DR.222. `## Breaking changes` — every backwards-incompatible change. Be specific (old → new). Include short before/after code snippets when the API surface changed.233. `## New features` — new transforms, new core features, new params on existing transforms.244. `## Bug fixes` — one entry per fix, link the PR.255. `## Misc` — CI, build, deps, internal refactors users might notice.266. `## Commits` — table of `commit | PR | description` for every commit since the previous tag.2728Match the tone of `RELEASE_NOTES_2.1.2.md` and `RELEASE_NOTES_2.2.0.md`: terse, technical, no marketing fluff, no emoji.2930## Transform name → link3132Link the first meaningful mention of a transform in each section, including headings and table entries:3334```markdown35[TransformName](https://albumentations.ai/explore/transform/TransformName/)36```3738Repeated mentions in the same paragraph may use plain backticked names. Keep code fences runnable, without links.39For parameter renames, link the transform separately and put the parameter name in code.4041Do **not** link:42- Core classes (`Compose`, `BboxParams`, `KeypointParams`, `BasicTransform`, `BaseDistortion`).43- Parameter names (`angle_range`, `blur_range`).44- Helper functions (`unpack_label_wrappers`, `to_tuple`).45- Internal modules (`core/utils.py`).4647## Other conventions4849- Code references use single backticks for params/files; triple-backtick fenced blocks for code samples.50- Use the actual commit short SHA (7 chars) and the real PR number in the commits table.51- "Breaking changes" section comes **before** "New features" — users scan that first.52- For mass renames, use a single 2-column table (`Old | New`) instead of a bullet list.53- If a feature spans multiple PRs (e.g. instance binding in #222, #223, #237), mention them inline in the prose, not as separate entries.54- If `pyproject.toml` version isn't bumped yet, note that in the response to the user; do not bump it as part of writing the notes.