From 619567c61632c05e76b71abf1f46f46f4c12eefc Mon Sep 17 00:00:00 2001 From: udondan Date: Sun, 13 Sep 2026 22:54:31 +0200 Subject: [PATCH] chore: create the tag together with draft releases and remove duplicate 3.1.1 changelog sections With "draft": true release-please created the v3.1.1 release without a tag. In the same run it then could not find the release it had just created, fell back to the full commit history and opened another 3.1.1 release PR, which the workflow auto-merged. That repeated for #42 and #43 until the run was cancelled. "force-tag-creation" makes release-please create the tag at the same time as the draft release, which is the documented fix for exactly this case. The two changelog sections produced by the repeated PRs are removed; the remaining 3.1.1 section is the one that matches the published release. --- CHANGELOG.md | 88 -------------------------------------- CLAUDE.md | 2 +- release-please-config.json | 1 + 3 files changed, 2 insertions(+), 89 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41fb812..eeb2bce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,93 +1,5 @@ # Changelog -## [3.1.1](https://github.com/udondan/reminders-cli/compare/v3.1.1...v3.1.1) (2026-09-13) - - -### ⚠ BREAKING CHANGES - -* complete, uncomplete, edit, postpone, and delete no longer accept a numeric position (e.g. `reminders complete List 0`). Pass the reminder's ID instead, as shown by `show`/`show-all`. - -### Features - -* add --clear-notes to edit ([b0d0be9](https://github.com/udondan/reminders-cli/commit/b0d0be9c0070724ced7d26c05590d60483597848)) -* add --clear-notes to edit ([46c8212](https://github.com/udondan/reminders-cli/commit/46c8212072c1b51ab6a2bb8441a285501e71f8e7)) -* add --default-only option to show-lists ([fc21538](https://github.com/udondan/reminders-cli/commit/fc21538bef37f5ab820401f1fa4a7ab8caf0cc56)) -* add --default-only option to show-lists ([7958274](https://github.com/udondan/reminders-cli/commit/7958274124c74b8282738b38ccd54e6c04f7ff04)) -* add --list option to move a reminder to a different list ([ee04a0f](https://github.com/udondan/reminders-cli/commit/ee04a0fa38752ea389a380cfba7437a8cfa22785)) -* add --priority and --clear-priority options to edit command ([ffddc22](https://github.com/udondan/reminders-cli/commit/ffddc228dd8bb045af3cead4ccc8274525fdd545)) -* add --repeat recurrence support for add/edit ([66315fd](https://github.com/udondan/reminders-cli/commit/66315fdb5d0c4931f4097c68774e26d8eb0246de)) -* add edit --priority and edit --list options ([50c1ca7](https://github.com/udondan/reminders-cli/commit/50c1ca7f021047fd365c50c7b39759501eb3cde5)) -* add filter flags to show and show-all ([#6](https://github.com/udondan/reminders-cli/issues/6)) ([f60c49e](https://github.com/udondan/reminders-cli/commit/f60c49e8fb168af3bf2a0c65ed41ff5f63b647d6)) -* add hasRecurrence flag and computed nextDueDate to JSON output ([de37149](https://github.com/udondan/reminders-cli/commit/de3714901dd653ac3d19bc7ea2b5dfd5f7f34309)) -* add postpone command to move due dates without changing repeat rules ([#11](https://github.com/udondan/reminders-cli/issues/11)) ([82ec3bc](https://github.com/udondan/reminders-cli/commit/82ec3bc21f70ca8257ebc4e857b117c391ff66ce)) -* add sort support to show-all, add priority sort value ([#8](https://github.com/udondan/reminders-cli/issues/8)) ([065bcd9](https://github.com/udondan/reminders-cli/commit/065bcd955fc3b512b0bd524fbe234d35b8465b3b)) -* allow editing recurrence end date without discarding the rule ([6305162](https://github.com/udondan/reminders-cli/commit/6305162d51fa16e69dd3f3134168251368069c5a)) -* Bring in list IDs and delete-completed-item support from upstream ([#7](https://github.com/udondan/reminders-cli/issues/7)) ([c843a7e](https://github.com/udondan/reminders-cli/commit/c843a7e11c7aa25b6a62e3374170b81173ee5328)) -* make show-lists --default-only honor --format and print the list id ([a90b2a0](https://github.com/udondan/reminders-cli/commit/a90b2a0ddce4be5fc0c31a237e9bcedc6662c2bd)) -* preserve calendar metadata on end-only recurrence edits ([ead7168](https://github.com/udondan/reminders-cli/commit/ead7168daaa2ed57a2db3c8addaa6aba87538647)) -* remove positional-index lookup for reminder items, ID-only ([#12](https://github.com/udondan/reminders-cli/issues/12)) ([c3138a4](https://github.com/udondan/reminders-cli/commit/c3138a4c0374134508274c6e06f77afefe43f312)) -* Report completionDate as null and add --completed-since filter ([#9](https://github.com/udondan/reminders-cli/issues/9)) ([8188e19](https://github.com/udondan/reminders-cli/commit/8188e19eb15016e4a589d61ce21fa5b26a97364c)) - - -### Bug Fixes - -* count relative due dates by calendar day ([211a849](https://github.com/udondan/reminders-cli/commit/211a849e8b49f4f4a9de9c5beb772a0777cd5bd9)) -* count relative due dates by calendar day ([c655a7d](https://github.com/udondan/reminders-cli/commit/c655a7ddb66c34cb09a821324fad69a266faaaed)) -* don't request Reminders access for commands that don't need it ([#22](https://github.com/udondan/reminders-cli/issues/22)) ([7dada8f](https://github.com/udondan/reminders-cli/commit/7dada8fd8d3bd364eaef6666f3e53944e799b1b7)) -* filter natural-language date components consistently ([286b82e](https://github.com/udondan/reminders-cli/commit/286b82e02fda3421b2596905b456e7f8406c849a)) -* filter natural-language date components consistently ([3d2f60f](https://github.com/udondan/reminders-cli/commit/3d2f60f05789f3c80c57133544fdda0e331a8fde)) -* only consider reminder-capable sources in new-list ([6ee4208](https://github.com/udondan/reminders-cli/commit/6ee42086643a306101390820e7d5dce6446761b7)) -* only consider reminder-capable sources in new-list ([045e468](https://github.com/udondan/reminders-cli/commit/045e468f65360291e21007802fb8b9acb8be95a2)) - - -### Miscellaneous Chores - -* publish releases as drafts so the tarball can be attached before publishing ([#40](https://github.com/udondan/reminders-cli/issues/40)) ([740fcfe](https://github.com/udondan/reminders-cli/commit/740fcfe2c65c18dedd95e75e4fce94bfeb476809)) - -## [3.1.1](https://github.com/udondan/reminders-cli/compare/v3.1.1...v3.1.1) (2026-09-13) - - -### ⚠ BREAKING CHANGES - -* complete, uncomplete, edit, postpone, and delete no longer accept a numeric position (e.g. `reminders complete List 0`). Pass the reminder's ID instead, as shown by `show`/`show-all`. - -### Features - -* add --clear-notes to edit ([b0d0be9](https://github.com/udondan/reminders-cli/commit/b0d0be9c0070724ced7d26c05590d60483597848)) -* add --clear-notes to edit ([46c8212](https://github.com/udondan/reminders-cli/commit/46c8212072c1b51ab6a2bb8441a285501e71f8e7)) -* add --default-only option to show-lists ([fc21538](https://github.com/udondan/reminders-cli/commit/fc21538bef37f5ab820401f1fa4a7ab8caf0cc56)) -* add --default-only option to show-lists ([7958274](https://github.com/udondan/reminders-cli/commit/7958274124c74b8282738b38ccd54e6c04f7ff04)) -* add --list option to move a reminder to a different list ([ee04a0f](https://github.com/udondan/reminders-cli/commit/ee04a0fa38752ea389a380cfba7437a8cfa22785)) -* add --priority and --clear-priority options to edit command ([ffddc22](https://github.com/udondan/reminders-cli/commit/ffddc228dd8bb045af3cead4ccc8274525fdd545)) -* add --repeat recurrence support for add/edit ([66315fd](https://github.com/udondan/reminders-cli/commit/66315fdb5d0c4931f4097c68774e26d8eb0246de)) -* add edit --priority and edit --list options ([50c1ca7](https://github.com/udondan/reminders-cli/commit/50c1ca7f021047fd365c50c7b39759501eb3cde5)) -* add filter flags to show and show-all ([#6](https://github.com/udondan/reminders-cli/issues/6)) ([f60c49e](https://github.com/udondan/reminders-cli/commit/f60c49e8fb168af3bf2a0c65ed41ff5f63b647d6)) -* add hasRecurrence flag and computed nextDueDate to JSON output ([de37149](https://github.com/udondan/reminders-cli/commit/de3714901dd653ac3d19bc7ea2b5dfd5f7f34309)) -* add postpone command to move due dates without changing repeat rules ([#11](https://github.com/udondan/reminders-cli/issues/11)) ([82ec3bc](https://github.com/udondan/reminders-cli/commit/82ec3bc21f70ca8257ebc4e857b117c391ff66ce)) -* add sort support to show-all, add priority sort value ([#8](https://github.com/udondan/reminders-cli/issues/8)) ([065bcd9](https://github.com/udondan/reminders-cli/commit/065bcd955fc3b512b0bd524fbe234d35b8465b3b)) -* allow editing recurrence end date without discarding the rule ([6305162](https://github.com/udondan/reminders-cli/commit/6305162d51fa16e69dd3f3134168251368069c5a)) -* Bring in list IDs and delete-completed-item support from upstream ([#7](https://github.com/udondan/reminders-cli/issues/7)) ([c843a7e](https://github.com/udondan/reminders-cli/commit/c843a7e11c7aa25b6a62e3374170b81173ee5328)) -* make show-lists --default-only honor --format and print the list id ([a90b2a0](https://github.com/udondan/reminders-cli/commit/a90b2a0ddce4be5fc0c31a237e9bcedc6662c2bd)) -* preserve calendar metadata on end-only recurrence edits ([ead7168](https://github.com/udondan/reminders-cli/commit/ead7168daaa2ed57a2db3c8addaa6aba87538647)) -* remove positional-index lookup for reminder items, ID-only ([#12](https://github.com/udondan/reminders-cli/issues/12)) ([c3138a4](https://github.com/udondan/reminders-cli/commit/c3138a4c0374134508274c6e06f77afefe43f312)) -* Report completionDate as null and add --completed-since filter ([#9](https://github.com/udondan/reminders-cli/issues/9)) ([8188e19](https://github.com/udondan/reminders-cli/commit/8188e19eb15016e4a589d61ce21fa5b26a97364c)) - - -### Bug Fixes - -* count relative due dates by calendar day ([211a849](https://github.com/udondan/reminders-cli/commit/211a849e8b49f4f4a9de9c5beb772a0777cd5bd9)) -* count relative due dates by calendar day ([c655a7d](https://github.com/udondan/reminders-cli/commit/c655a7ddb66c34cb09a821324fad69a266faaaed)) -* don't request Reminders access for commands that don't need it ([#22](https://github.com/udondan/reminders-cli/issues/22)) ([7dada8f](https://github.com/udondan/reminders-cli/commit/7dada8fd8d3bd364eaef6666f3e53944e799b1b7)) -* filter natural-language date components consistently ([286b82e](https://github.com/udondan/reminders-cli/commit/286b82e02fda3421b2596905b456e7f8406c849a)) -* filter natural-language date components consistently ([3d2f60f](https://github.com/udondan/reminders-cli/commit/3d2f60f05789f3c80c57133544fdda0e331a8fde)) -* only consider reminder-capable sources in new-list ([6ee4208](https://github.com/udondan/reminders-cli/commit/6ee42086643a306101390820e7d5dce6446761b7)) -* only consider reminder-capable sources in new-list ([045e468](https://github.com/udondan/reminders-cli/commit/045e468f65360291e21007802fb8b9acb8be95a2)) - - -### Miscellaneous Chores - -* publish releases as drafts so the tarball can be attached before publishing ([#40](https://github.com/udondan/reminders-cli/issues/40)) ([740fcfe](https://github.com/udondan/reminders-cli/commit/740fcfe2c65c18dedd95e75e4fce94bfeb476809)) - ## [3.1.1](https://github.com/udondan/reminders-cli/compare/v3.1.0...v3.1.1) (2026-09-13) diff --git a/CLAUDE.md b/CLAUDE.md index 6f924db..44cb49c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -39,6 +39,6 @@ Reminder items are looked up only by their stable `calendarItemExternalIdentifie Releases are automated via [release-please](https://github.com/googleapis/release-please): merges to `main` accumulate into a release PR (version bump driven by Conventional Commits, tracked in `version.txt`/`.release-please-manifest.json`/`release-please-config.json`), and merging that PR tags the commit and creates a **draft** GitHub Release. The same `release-please.yml` run then calls `.github/workflows/publish.yml` as a reusable workflow, which checks out the release commit, runs `make package` to build the universal release binary/tarball, attaches `reminders.tar.gz` to the draft, publishes the release, and pushes an updated formula to the `udondan/homebrew-software` tap (`brew install udondan/software/reminders-cli`). -The release must stay a draft until the tarball is attached: this repository has GitHub's immutable releases enabled, so assets cannot be added to a release after it is published, and the tag name of a published release can never be reused. Draft releases do not trigger `release` workflow events, which is why publishing is chained from the release-please workflow instead of listening for a release event. If the publish job fails, leave the draft in place and re-run `publish.yml` via `workflow_dispatch` with the draft's tag and the release commit; re-running release-please does not recreate an existing release. +The release must stay a draft until the tarball is attached: this repository has GitHub's immutable releases enabled, so assets cannot be added to a release after it is published, and the tag name of a published release can never be reused. Draft releases do not trigger `release` workflow events, which is why publishing is chained from the release-please workflow instead of listening for a release event. `force-tag-creation` must stay enabled together with `draft`: a draft release has no tag, and without the tag release-please cannot find the release it just created, treats the repository as unreleased, and opens another release PR for the same version on every run. If the publish job fails, leave the draft in place and re-run `publish.yml` via `workflow_dispatch` with the draft's tag and the release commit; re-running release-please does not recreate an existing release. The CLI's `--version` output is backed by `Sources/RemindersLibrary/Version.swift`, which release-please keeps in sync with `version.txt` via an `extra-files` generic updater — don't hand-edit the version in either file outside of a release-please PR. diff --git a/release-please-config.json b/release-please-config.json index 5c93bf4..4a2a3a3 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -7,6 +7,7 @@ "bump-minor-pre-major": false, "bump-patch-for-minor-pre-major": false, "draft": true, + "force-tag-creation": true, "prerelease": false, "extra-files": [ {