diff --git a/README.md b/README.md index 86d1a24b..75c2db10 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Categorize changes, highlight contributors, and maintain consistent release docu - [Overview](#overview) - [Motivation](#motivation) - [Quick Start](#quick-start) +- [How Release Notes Are Recognized](#how-release-notes-are-recognized) - [Requirements](#requirements) - [Configuration](#configuration) - [Example Workflow](#example-workflow) @@ -76,6 +77,26 @@ https://github.com/org/repo/compare/v1.1.0...v1.2.0 3. Extract release note text and contributors. 4. Output a Markdown section ready for publishing. +## How Release Notes Are Recognized + +The action looks for a section whose heading matches the first regex `[Rr]elease [Nn]otes:` (configurable via `release-notes-title`) in the **issue body**, then in each **linked PR body**. Every bullet line (`-`, `*`, or `+`) immediately below that heading becomes one release note entry. + +**Example — issue or PR body:** + +```markdown +Some intro text + +Release Notes: +- Add user MFA enrollment flow +- Improve cache invalidation logic + +Other commentary... +``` + +Only the first matching section per body is used; content outside it is ignored. If no section is found in any linked PR body and [CodeRabbit Integration](docs/features/coderabbit_integration.md) is enabled, the AI-generated summary is used as a fallback. + +For full details — including the configurable title regex, `skip-release-notes-labels`, and edge cases — see [Release Notes Extraction](docs/features/release_notes_extraction.md). + ## Requirements To run this action successfully, make sure your environment meets the following requirements: diff --git a/docs/features/custom_chapters.md b/docs/features/custom_chapters.md index a6827563..953c2a66 100644 --- a/docs/features/custom_chapters.md +++ b/docs/features/custom_chapters.md @@ -321,9 +321,12 @@ Feature #2 has no `scope:security` label of its own, but its aggregated set incl Children within each rendered node are sorted **ascending by issue number**. ### Validation -- Entries missing `title` or `label`/`labels` are skipped with a warning. - Non-dict entries are skipped with a warning. -- Empty labels after normalization cause the entry to be skipped with a warning. +- A missing `title` key causes the entry to be skipped with a warning. +- A `title` that is not a string or is blank/whitespace-only is skipped with a warning. +- A missing `label`/`labels` key causes the entry to be skipped with a warning. +- An invalid `label`/`labels` type (not a string or list) is treated as empty and causes the entry to be skipped with a warning. +- Labels that are empty after normalization (e.g. only blank tokens) cause the entry to be skipped with a warning. ## Related Features - [Duplicity Handling](./duplicity_handling.md) – governs multi-chapter visibility.