Generate and polish release notes for an Armeria version. Runs site-new/release-note.ts to collect PR data from a GitHub milestone, then rewrites the skeletal output into publication-ready MDX. Invoked as `/release-note <version>` (e.g., `/release-note 1.38.0`).
Generates skeletal release notes from a GitHub milestone using site-new/release-note.ts,
then rewrites them into polished, publication-ready MDX with rich descriptions, code examples,
and proper formatting.
gh CLI must be authenticated with access to line/armeria. Verify with gh auth status.GITHUB_ACCESS_TOKEN environment variable is recommended for higher GitHub API rate limits.
If not set, the script falls back to anonymous access (lower rate limits).site-new/ directory must have dependencies installed
(npm install in site-new/)./release-note <version>
Example: /release-note 1.38.0
gh api repos/line/armeria/milestones --jq '.[] | select(.title == "<version>") | .number'
cd site-new && npm run release-note <version>
site-new/src/content/release-notes/<version>.mdx.site-new/src/content/release-notes/<version>.mdx.1.36.0.mdx, 1.37.0.mdx) to calibrate tone and style.references/style-guide.md for formatting rules.#NNNN) from every line of the draft.For each unique PR number found in the draft:
gh pr view <number> --repo line/armeria --json title,body,labels,files
gh api repos/line/armeria/pulls/<number>/comments --jq '.[].body'
Closes #NNNN, Fixes #NNNN, Resolves #NNNN).gh issue view <number> --repo line/armeria --json title,body
gh api repos/line/armeria/issues/<number>/comments --jq '.[].body'
files list to understand method signatures.Rate limiting: If fetching many PRs, batch requests and pause briefly between them to avoid GitHub API rate limits.
The script puts PRs without a recognized label into 🗑 Maybe ignore. For each entry:
Rewrite every entry following the formatting rules in references/style-guide.md.
🌟 New features)- **Feature Title**: Description. #NNNN// 👈👈👈📈 Improvements)🛠️ Bug fixes)☢️ Breaking changes)📃 Documentation)🏚️ Deprecations)[ClassName](type) for Armeria API types (classes, interfaces, annotations, methods).
[GrpcServiceBuilder](type)[GrpcServiceBuilder#enableEnvoyHttp1Bridge(boolean)](type) — always include the
class name, method name, and parameter types. Do NOT use backtick-only style like
`enableEnvoyHttp1Bridge(true)` for Armeria public API references in prose.String, Duration, CompletableFuture), third-party
types, or types that are not part of Armeria's public API.#6431 #6691 (list both the issue and the PR)The raw script includes the full dependency update PR body, which uses a structured commit message format.
- Build section and all its sub-bullets
(these are testImplementation, annotationProcessor, and other non-production deps).- LibraryName oldVersion → newVersion
Jackson, Netty, gRPC-Java, not the Maven artifact ID).→ (unicode arrow), not ->.- Spring 6.2.14 → 6.2.15, 7.0.2 → 7.0.3- N/A.🗑 Maybe ignore section must not appear in the final output.<ThankYou usernames={[...]} /> has
alphabetically sorted, deduplicated usernames. Remove bot accounts (dependabot[bot],
CLAassistant). Core maintainers listed in .github/CODEOWNERS must always be included
in the Thank You section, even if they don't appear in the PR participant lists.- (dash) for all bullets, not *.site-new/src/content/release-notes/<version>.mdx.npm run release-note <version> and verified output file existsNullPointerException in FooBar when ..."[Name](type) for Armeria's own public API types, not for
JDK classes, third-party libraries, or internal classes.- Build sub-bullets
for test/build-only deps. These must be stripped.- N/A sections: The polished output should only contain sections with actual content.* bullets: Standardize on - dashes for all bullet points.👈👈👈 callouts: Every code example for a new feature should highlight the key line.