[GH-ISSUE #588] feat: Generate What's New / release notes from git history #160

Closed
opened 2026-02-26 21:33:50 +03:00 by kerem · 0 comments
Owner

Originally created by @rudrankriyam on GitHub (Feb 17, 2026).
Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/588

Summary

Add an opt-in way to generate App Store “What’s New” / release notes from git history, to reduce manual copying and make releases reproducible.

This should integrate with existing commands that accept --whats-new (e.g. build/app/version localizations) and/or provide a standalone generator.

Why this matters

Teams usually already maintain high-quality change history in:

  • conventional commits
  • PR titles
  • changelog fragments

Copy/pasting into App Store Connect is:

  • error-prone
  • not reproducible
  • hard to automate in CI

A built-in generator lets CI/agents produce release notes deterministically.

Current state (verified)

  • --whats-new flags exist in a few places (e.g. build-localizations / app-info / builds test-notes).
  • There is no --from-git (or equivalent) flag.
  • No command generates notes from git history.

Proposed UX

asc release-notes generate \
  --since-tag "v1.2.2" \
  --until-ref "HEAD" \
  --max-chars 4000 \
  --format plain

Flags (proposal):

  • --since-tag (required) OR --since-ref
  • --until-ref (default HEAD)
  • --format plain|markdown (default plain)
  • --max-chars (default 4000)
  • --include-merges (default false)
  • --output json|text (default json)

Output (json):

{"since":"v1.2.2","until":"HEAD","notes":"- Fixed ...\n- Added ...\n"}

Option B: integrate into existing --whats-new flags

Add a flag like:

  • --whats-new-from-git --since-tag v1.2.2

Constraints

  • Should not require network.
  • Prefer using the local git repo; if not in a git repo, return a clear error (exit 1).
  • Avoid adding heavy dependencies unless necessary; calling git as a subprocess is acceptable if documented.

Implementation notes

  • Deterministic formatting rules:
    • ignore “chore:” by default? (or keep everything but allow --exclude-prefix chore,ci)
    • strip SHA prefixes
    • collapse whitespace
  • Keep it explicit; no interactive prompts.

Test plan (TDD-first)

  • unit tests for formatting + filtering
  • cmdtests using a temp git repo:
    • --since-tag produces expected notes
    • non-git directory returns a clear error
    • --max-chars truncates deterministically

Acceptance criteria

  • A command/flag exists that generates deterministic release notes from git history.
  • Output is suitable for piping into other automation.
  • make test passes.
Originally created by @rudrankriyam on GitHub (Feb 17, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/588 ## Summary Add an opt-in way to generate App Store “What’s New” / release notes from git history, to reduce manual copying and make releases reproducible. This should integrate with existing commands that accept `--whats-new` (e.g. build/app/version localizations) and/or provide a standalone generator. ## Why this matters Teams usually already maintain high-quality change history in: - conventional commits - PR titles - changelog fragments Copy/pasting into App Store Connect is: - error-prone - not reproducible - hard to automate in CI A built-in generator lets CI/agents produce release notes deterministically. ## Current state (verified) - `--whats-new` flags exist in a few places (e.g. build-localizations / app-info / builds test-notes). - There is no `--from-git` (or equivalent) flag. - No command generates notes from git history. ## Proposed UX ### Option A: standalone generator (recommended) ```bash asc release-notes generate \ --since-tag "v1.2.2" \ --until-ref "HEAD" \ --max-chars 4000 \ --format plain ``` Flags (proposal): - `--since-tag` (required) OR `--since-ref` - `--until-ref` (default `HEAD`) - `--format plain|markdown` (default plain) - `--max-chars` (default 4000) - `--include-merges` (default false) - `--output json|text` (default json) Output (json): ```json {"since":"v1.2.2","until":"HEAD","notes":"- Fixed ...\n- Added ...\n"} ``` ### Option B: integrate into existing `--whats-new` flags Add a flag like: - `--whats-new-from-git --since-tag v1.2.2` ## Constraints - Should not require network. - Prefer using the local git repo; if not in a git repo, return a clear error (exit 1). - Avoid adding heavy dependencies unless necessary; calling `git` as a subprocess is acceptable if documented. ## Implementation notes - Deterministic formatting rules: - ignore “chore:” by default? (or keep everything but allow `--exclude-prefix chore,ci`) - strip SHA prefixes - collapse whitespace - Keep it explicit; no interactive prompts. ## Test plan (TDD-first) - [ ] unit tests for formatting + filtering - [ ] cmdtests using a temp git repo: - [ ] `--since-tag` produces expected notes - [ ] non-git directory returns a clear error - [ ] `--max-chars` truncates deterministically ## Acceptance criteria - [ ] A command/flag exists that generates deterministic release notes from git history. - [ ] Output is suitable for piping into other automation. - [ ] `make test` passes.
kerem 2026-02-26 21:33:50 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/App-Store-Connect-CLI#160
No description provided.