diff --git a/.github/actions/create-release/action.yml b/.github/actions/create-release/action.yml index 2018de9..c2445cd 100644 --- a/.github/actions/create-release/action.yml +++ b/.github/actions/create-release/action.yml @@ -11,12 +11,6 @@ inputs: description: Release title. Defaults to the tag. required: false default: "" - notes-file: - description: >- - Markdown file prepended to GitHub's generated notes. Use it for the one - or two sentences a human wrote about this release. - required: false - default: "" target: description: >- Commit to tag. Defaults to HEAD. Tag the commit that already has the @@ -49,7 +43,6 @@ runs: GH_TOKEN: ${{ inputs.token }} TAG: ${{ inputs.tag }} TITLE: ${{ inputs.title }} - NOTES_FILE: ${{ inputs.notes-file }} TARGET: ${{ inputs.target }} ARTIFACTS: ${{ inputs.artifacts }} GENERATE_NOTES: ${{ inputs.generate-notes }} @@ -57,7 +50,6 @@ runs: run: | ARGS=(--tag "$TAG") [ -n "$TITLE" ] && ARGS+=(--title "$TITLE") - [ -n "$NOTES_FILE" ] && ARGS+=(--notes-file "$NOTES_FILE") [ -n "$TARGET" ] && ARGS+=(--target "$TARGET") [ "$GENERATE_NOTES" = "false" ] && ARGS+=(--no-generate-notes) [ "$DRY_RUN" = "true" ] && ARGS+=(--dry-run) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12bbc25..876c1cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,22 @@ what moved. See ## [Unreleased] +### Removed + +- `create-release`'s `notes-file` input, and `--notes-file` from + `bin/create-release.sh`. Notes are written when the draft is published: the + release editor is a real text area with a preview, in front of the draft + being reviewed, and whoever passes notes in is the same person about to open + it. Passing them in also means collecting them in a `workflow_dispatch` + input, which is a single-line box showing barely a phrase. + + **Released as a minor by exception.** Removing an input is a major change by + [ADR-0006](docs/decisions/0006-version-with-moving-major-tags.md). This + input shipped in 1.3.0 earlier the same day, and the only consumer of the + action is changing in lockstep to stop passing it, so no caller breaks. The + exception holds while these actions are in heavy development and have no + outside users; once they do, the rule applies as written. + ## [1.3.0] - 2026-09-10 ### Added diff --git a/README.md b/README.md index e6e44be..fc681fa 100644 --- a/README.md +++ b/README.md @@ -312,7 +312,6 @@ your own deploy job, or use a `docs-*.yml` reusable workflow. | --- | --- | --- | | `tag` | — | Tag to create, e.g. `v1.2.3` (required) | | `title` | the tag | Release title | -| `notes-file` | — | Markdown prepended to the generated notes | | `target` | `HEAD` | Commit to tag | | `artifacts` | — | Files to attach, one path per line | | `generate-notes` | `true` | Include GitHub's commit-derived notes | @@ -324,6 +323,10 @@ checks the artifacts, and presses the button. Nothing here publishes, and nothing here decides a version — the caller has already bumped whatever holds it and committed that. +**Notes are written when the draft is published.** The draft opens with +GitHub's generated commit list; whoever publishes it adds prose above that in +the release editor. + `target` matters when the release follows a metadata regeneration. Tag the commit that has the regenerated files, not the one that only bumped the version, or the archive ships metadata describing the previous release. diff --git a/bin/create-release.sh b/bin/create-release.sh index 4f25d45..e7c98cd 100755 --- a/bin/create-release.sh +++ b/bin/create-release.sh @@ -7,7 +7,7 @@ # decides a version -- the caller has already bumped whatever holds it and # committed that, so this tags what is in front of it. # -# create-release.sh --tag v1.2.3 --notes-file notes.md --artifact dist/app.zip +# create-release.sh --tag v1.2.3 --artifact dist/app.zip # # Authentication is not handled here. The caller is expected to have gh # authenticated already -- in CI that is GH_TOKEN, locally it is your own @@ -17,7 +17,6 @@ set -euo pipefail TAG="" TITLE="" -NOTES_FILE="" TARGET="" DRY_RUN="false" GENERATE_NOTES="true" @@ -30,7 +29,6 @@ create-release.sh -- tag a commit and open a draft GitHub release Options: --tag NAME tag to create, e.g. v1.2.3 (required) --title TEXT release title (default: the tag) - --notes-file FILE Markdown prepended to the generated notes --target SHA commit to tag (default: HEAD) --artifact PATH file to attach, repeatable --no-generate-notes omit GitHub's commit-derived notes @@ -43,7 +41,6 @@ while [ $# -gt 0 ]; do case "$1" in --tag) TAG="$2"; shift 2 ;; --title) TITLE="$2"; shift 2 ;; - --notes-file) NOTES_FILE="$2"; shift 2 ;; --target) TARGET="$2"; shift 2 ;; --artifact) ARTIFACTS+=("$2"); shift 2 ;; --no-generate-notes) GENERATE_NOTES="false"; shift ;; @@ -59,11 +56,6 @@ command -v gh >/dev/null || { echo "create-release: gh is not installed" >&2; ex [ -n "$TITLE" ] || TITLE="$TAG" [ -n "$TARGET" ] || TARGET="$(git rev-parse HEAD)" -if [ -n "$NOTES_FILE" ] && [ ! -f "$NOTES_FILE" ]; then - echo "create-release: no such file: $NOTES_FILE" >&2 - exit 1 -fi - # An empty or missing artifact means the build silently produced nothing, which # is the failure worth catching -- a release with no files looks fine until # someone tries to download one. @@ -83,7 +75,6 @@ fi declare -a ARGS=("$TAG" --draft --title "$TITLE" --target "$TARGET") [ "$GENERATE_NOTES" = "true" ] && ARGS+=(--generate-notes) -[ -n "$NOTES_FILE" ] && ARGS+=(--notes-file "$NOTES_FILE") for f in ${ARTIFACTS[@]+"${ARTIFACTS[@]}"}; do ARGS+=("$f"); done echo "tag: $TAG"