ace-git 0.18.4 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1e24b5a2b72ed3954edc211b222e6ac5c1c10707899cf2acc4b566b45b8721ac
4
- data.tar.gz: e6b63023d6abd0b82816cf6dc10f082b45e77051da5a96f96e404990fce0705b
3
+ metadata.gz: 20769f2cd0637983959bf770812eb746d5334f8b22a5466f8c4398b5a9a9a54a
4
+ data.tar.gz: 6225bf184de1971c3f180f23353938e9f4d48acd44f99438cfe1eeb53421d9c4
5
5
  SHA512:
6
- metadata.gz: 8b6390363985035acb8a8d95e9fe1c4578543599caac3cf86a7e867458d89ba6935bcc92e7b5ef862d648fe209dd7fd2c2a51c06938bc608c2c0ea56e7370d7b
7
- data.tar.gz: 3ede04b073b37bde6682e105a0e2853f5b14d5f9ed382fabeb2abad44f30ad8c3d2106d2dced513e86a3e889da66cb64354457b56f55f1e94a89ff194037ce0b
6
+ metadata.gz: 5d707e9c9fedc65363f7fd8a9e9e8513e04b1978fc4b2b7fb7a4d1244ac0a59bcff4f9dd73f4de0e8261622d5ab253b73c7be194d2df0820ab0635701282e39b
7
+ data.tar.gz: 930bf870b7b7e4cd7b86081cec6ef8766356dfb2b8e91273b93e29fe7398ffe38343bf390b204de9172ccb655523747307d6bf854a78a3c609d5cf0e8a6686f4
data/CHANGELOG.md CHANGED
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.19.0] - 2026-03-29
11
+
12
+ ### Changed
13
+ - Defaulted `github/release-publish` to package-grouped release notes, with `--group-by date` now opting into the legacy layout.
14
+ - Switched live GitHub release creation guidance to `--notes-file` so markdown release bodies with inline code do not break shell execution.
15
+
16
+ ## [0.18.5] - 2026-03-29
17
+
18
+ ### Added
19
+ - Added Step 1.5 "Finalize Unreleased Content" to `github/release-publish` workflow: assigns version number and commits `[Unreleased]` content at publish time.
20
+
21
+ ### Changed
22
+ - Updated `as-github-release-publish` skill with `Edit` and `ace-git-commit` tool permissions for changelog finalization.
23
+ - Updated rebase workflow CHANGELOG conflict advice for unreleased-mode branches.
24
+
10
25
  ## [0.18.4] - 2026-03-29
11
26
 
12
27
  ### Technical
@@ -1,13 +1,15 @@
1
1
  ---
2
2
  name: as-github-release-publish
3
- description: Create GitHub releases from unpublished CHANGELOG entries
3
+ description: Finalize unreleased changelog and create GitHub releases
4
4
  # bundle: wfi://github/release-publish
5
5
  # agent: general-purpose
6
6
  user-invocable: true
7
7
  allowed-tools:
8
8
  - Bash(gh:*)
9
9
  - Bash(ace-bundle:*)
10
+ - Bash(ace-git-commit:*)
10
11
  - Read
12
+ - Edit
11
13
  argument-hint: "[version-or-range] [--since duration] [--group-by package|date] [--category-order fixed,added,changed,technical] [--dry-run]"
12
14
  last_modified: 2026-03-21
13
15
  source: ace-git
@@ -54,5 +56,6 @@ None
54
56
  - Run `ace-bundle wfi://github/release-publish` in the current project to load the workflow instructions.
55
57
  - Read the loaded workflow and execute it end-to-end in this project.
56
58
  - Follow the workflow as the source of truth.
59
+ - Unless the caller explicitly passes `--group-by date`, treat release body grouping as `package` by default.
57
60
  - Do the work described by the workflow instead of only summarizing it.
58
61
  - When the workflow requires edits, tests, or commits, perform them in this project.
@@ -190,7 +190,7 @@ if [ -d ".git/rebase-merge" ] || [ -d ".git/rebase-apply" ]; then
190
190
  echo "Strategy: continue-first"
191
191
  echo "Resolve conflicts, then run: git add <files> && git rebase --continue"
192
192
  echo "Escalate only if the next rebase stop is also conflicted or resolution coordination becomes complex."
193
- echo "CHANGELOG.md note: prefer git checkout --theirs CHANGELOG.md, then re-apply your entries on top before git add."
193
+ echo "CHANGELOG.md note: with unreleased-mode, merge both sides' items under [Unreleased] (keep all). For legacy versioned entries, prefer git checkout --theirs CHANGELOG.md, then re-apply your entries on top before git add."
194
194
  else
195
195
  echo "Strategy: cherry-pick fallback (conflict set is large)"
196
196
  echo "Abort the rebase and proceed to Phase 3."
@@ -370,7 +370,7 @@ find .ace-local/git -name "*-rebase" -type d -mtime +7 -exec rm -rf {} +
370
370
  git rebase "$target_branch"
371
371
  # On conflict: resolve files, git add, git rebase --continue
372
372
  # Escalate to Phase 3 only if conflicts keep repeating or require per-commit replay
373
- # CHANGELOG: git checkout --theirs CHANGELOG.md, add your entries on top
373
+ # CHANGELOG: with unreleased-mode, merge both sides' [Unreleased] items. For versioned entries: git checkout --theirs CHANGELOG.md, add your entries on top
374
374
  ```
375
375
 
376
376
  ### Interactive Rebase
@@ -18,7 +18,7 @@ Create GitHub releases from root `CHANGELOG.md` entries that have no correspondi
18
18
  - `$version`: explicit version like `v0.9.846`, or range like `v0.9.840..v0.9.846`
19
19
  - `$since`: time filter like `"3 days"` or `"this week"`
20
20
  - `$dry_run`: if set, print what would be created without creating anything
21
- - `$group_by`: optional mode switch. `date` (default) keeps legacy daily grouping. `package` enables package-first grouping inside each date bucket.
21
+ - `$group_by`: optional mode switch. `package` (default) enables package-first grouping inside each date bucket. `date` keeps the legacy daily grouping.
22
22
  - `$category_order`: optional ordered category list, e.g. `fixed,added,changed,technical` (defaults to fixed → added → changed → technical)
23
23
 
24
24
  ## Instructions
@@ -33,6 +33,59 @@ gh release list --limit 50 --json tagName,name --jq '[.[] | select(.tagName | st
33
33
 
34
34
  If no `v*` release exists, treat all changelog versions as unpublished.
35
35
 
36
+ ### 1.5. Finalize Unreleased Content
37
+
38
+ Check if the `## [Unreleased]` section in `CHANGELOG.md` has substantive content (any lines between
39
+ `## [Unreleased]` and the next `## [` heading that are not blank or HTML comments).
40
+
41
+ If `[Unreleased]` is empty, skip to step 2.
42
+
43
+ If `[Unreleased]` has content:
44
+
45
+ 1. **Determine the next version number:**
46
+ - Find the highest existing versioned entry (`## [X.Y.Z]`) in `CHANGELOG.md`.
47
+ - Increment its patch number by 1 (e.g., `0.9.932` → `0.9.933`).
48
+
49
+ 2. **Rewrite the unreleased section:**
50
+ - Move all category headings and bullet items from the `[Unreleased]` block into a new versioned entry.
51
+ - Leave the `[Unreleased]` section empty.
52
+ - Use today's date in ISO format.
53
+
54
+ Before:
55
+ ```markdown
56
+ ## [Unreleased]
57
+
58
+ ### Fixed
59
+ - item 1
60
+
61
+ ### Added
62
+ - item 2
63
+
64
+ ## [0.9.932] - 2026-03-29
65
+ ```
66
+
67
+ After:
68
+ ```markdown
69
+ ## [Unreleased]
70
+
71
+ ## [0.9.933] - 2026-03-30
72
+
73
+ ### Fixed
74
+ - item 1
75
+
76
+ ### Added
77
+ - item 2
78
+
79
+ ## [0.9.932] - 2026-03-29
80
+ ```
81
+
82
+ 3. **Commit the finalization:**
83
+ ```bash
84
+ ace-git-commit CHANGELOG.md -i "finalize changelog v0.9.933 from unreleased"
85
+ ```
86
+
87
+ 4. Proceed to step 2 with the newly created versioned entry available for publishing.
88
+
36
89
  ### 2. Parse Root CHANGELOG
37
90
 
38
91
  Read `CHANGELOG.md` and extract all version entries matching `## [X.Y.Z] - YYYY-MM-DD`.
@@ -63,8 +116,8 @@ No unpublished versions found matching the given criteria.
63
116
 
64
117
  Use `$group_by` to choose the release body layout. Release tags/titles still use date-bucket grouping (highest version per date).
65
118
 
66
- - `date` (default): preserve current behavior, one release body per date in descending version order separated by `---`.
67
- - `package`: within each date bucket, group entries as package blocks and then categories.
119
+ - `package` (default): within each date bucket, group entries as package blocks and then categories.
120
+ - `date`: preserve legacy behavior, one release body per date in descending version order separated by `---`.
68
121
 
69
122
  Date mode example:
70
123
 
@@ -152,7 +205,7 @@ Process each daily group from oldest date to newest:
152
205
  ```bash
153
206
  gh release create "v${VERSION}" \
154
207
  --title "v${VERSION}" \
155
- --notes "${COMBINED_BODY}" \
208
+ --notes-file ".ace-local/github-release/v${VERSION}-notes.md" \
156
209
  --target "${SHA}"
157
210
  ```
158
211
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ace
4
4
  module Git
5
- VERSION = '0.18.4'
5
+ VERSION = '0.19.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ace-git
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.4
4
+ version: 0.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Czyz