ace-git-commit 0.25.4 → 0.26.5

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: fe255d22880f11d134ff36c7f85ea857d9ee4b4ab17fe6ae418b10bca5c9d379
4
- data.tar.gz: d3a95b0901bde739ed17122d7d6d4073c513ec12f642d10bf57d939e583df1f8
3
+ metadata.gz: f885d93ed2e4e32170a81a06574d6f3a1c9a1b173d8ff7d55efaccab04e13fc9
4
+ data.tar.gz: c90dae819ca8dcbb592d911ba2c0d54eb912d02729bb400e63971a4c604f2018
5
5
  SHA512:
6
- metadata.gz: 7e40e443492428deaa6e565ae015cc06f0c0b40395525ad96760d88f50ab831abc2a61e547aabc277f8912e68c021c33996a4c9bd13309441502b28ba7d92f0b
7
- data.tar.gz: c192c1309e9b95cf887ec24f69bca59af088f943aa4fb31dcc1ac36165888a1b524648ba218bb7fa84f7cc2386e56ef46b918326018fe75d031f1838c4f873ca
6
+ metadata.gz: acc870fe2f2070bd14430912443fbba3fd65cd70b13e3c1c2c71f29bf68384144709e6ca4b735b34a1353dd91d76ddfe4da39c1ae883796e2066fea5a5dad718
7
+ data.tar.gz: 5e1f3247a8b2119bbb6bc9e46be4a8f88705edc9ebe731089aab07048cc11d30e050804584b20d38adfdd1173c25b4b12dee6c23d226af5914d90a4857b4892d
data/CHANGELOG.md CHANGED
@@ -7,6 +7,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.26.5] - 2026-08-12
11
+
12
+ ### Technical
13
+ - Raised the `ace-support-core` dependency floor to `~> 0.31` after the principles-first bootstrap guidance release.
14
+ ## [0.26.4] - 2026-08-12
15
+
16
+ ### Technical
17
+ - Aligned gemspec dependency floors with current ACE package minor release lines and safe external minor dependency bumps (no major version jumps).
18
+
19
+ ## [0.26.3] - 2026-04-24
20
+
21
+ ### Changed
22
+ - Clarified first-setup commit recovery across quick-start, package docs, and workflow guidance so users can inspect staged setup files, use the deterministic `--only-staged --no-split -m` path, and treat LLM-backed generation as optional after readiness checks.
23
+
24
+ ## [0.26.2] - 2026-04-23
25
+
26
+
27
+ ### Changed
28
+ - Clarified staged-only and setup-failure commit workflows, including explicit path-scoped command contracts for single-package commits and recovery guidance.
29
+ - Added commit contract coverage for staged-first and fallback paths so split/no-split behavior is deterministic before automatic path-scoped commit flow.
30
+
31
+
32
+ ## [0.26.1] - 2026-04-22
33
+
34
+ ### Technical
35
+ - Tightened `TS-COMMIT-001` Goal 7/8 staging contracts to require explicit-path staging and prove `results/` artifacts are excluded from the cached staged set before `--only-staged` execution.
36
+
37
+ ## [0.26.0] - 2026-04-22
38
+
39
+ ### Changed
40
+ - Improved setup-time LLM failure diagnostics to include failed role/model context, provider/setup remediation commands, and a deterministic `--only-staged --no-split -m` fallback commit path.
41
+
42
+ ### Technical
43
+ - Extended `TS-COMMIT-001` with goal 8 setup-failure guidance coverage and added fast tests for role/model failure guidance and explicit CLI error routing.
44
+
10
45
  ## [0.25.4] - 2026-04-16
11
46
 
12
47
  ### Technical
@@ -59,6 +59,7 @@ ace-git-commit automatically:
59
59
  - Specific files: `ace-git-commit file1 file2`
60
60
  - Only staged: `ace-git-commit --only-staged`
61
61
  - Dry run first: `ace-git-commit --dry-run -i "$intention"`
62
+ - First setup snapshot after provider-readiness issues: `ace-git-commit --only-staged --no-split -m "chore: set up ace tooling"`
62
63
 
63
64
  3. **Verify result**:
64
65
  ```bash
@@ -71,6 +72,7 @@ ace-git-commit automatically:
71
72
  - `-m, --message`: Use direct message (bypass LLM)
72
73
  - `--model MODEL`: Override LLM model (e.g., gflash)
73
74
  - `-s, --only-staged`: Commit only staged changes
75
+ - `--no-split`: Force one commit across detected scopes
74
76
  - `-n, --dry-run`: Preview without committing
75
77
  - `-d, --debug`: Enable debug output
76
78
 
@@ -83,6 +83,8 @@ module Ace
83
83
  raise Ace::Support::Cli::Error.new("Commit failed") unless success
84
84
  rescue GitError => e
85
85
  raise Ace::Support::Cli::Error.new(e.message)
86
+ rescue Ace::GitCommit::Error => e
87
+ raise Ace::Support::Cli::Error.new(e.message)
86
88
  rescue Interrupt
87
89
  raise Ace::Support::Cli::Error.new("Commit cancelled", exit_code: 130)
88
90
  end
@@ -29,10 +29,11 @@ module Ace
29
29
  def generate(diff, intention: nil, files: [], config: nil)
30
30
  system_prompt = load_system_prompt
31
31
  user_prompt = build_user_prompt(diff, intention, files)
32
+ model = resolve_model(config)
32
33
 
33
34
  # Use QueryInterface with named parameters matching CLI
34
35
  response = Ace::LLM::QueryInterface.query(
35
- resolve_model(config),
36
+ model,
36
37
  user_prompt,
37
38
  system: system_prompt,
38
39
  temperature: 0.7,
@@ -42,7 +43,7 @@ module Ace
42
43
 
43
44
  clean_commit_message(response[:text])
44
45
  rescue Ace::LLM::Error => e
45
- raise Error, "Failed to generate commit message: #{e.message}"
46
+ raise Error, llm_failure_message("Failed to generate commit message", model, e)
46
47
  end
47
48
 
48
49
  # Generate commit messages for multiple groups in one LLM call
@@ -60,9 +61,10 @@ module Ace
60
61
 
61
62
  system_prompt = load_batch_system_prompt
62
63
  user_prompt = build_batch_user_prompt(groups_context, intention)
64
+ model = resolve_model(config)
63
65
 
64
66
  response = Ace::LLM::QueryInterface.query(
65
- resolve_model(config),
67
+ model,
66
68
  user_prompt,
67
69
  system: system_prompt,
68
70
  temperature: 0.7,
@@ -77,7 +79,7 @@ module Ace
77
79
 
78
80
  raise Error, "Failed to generate batch commit messages: #{e.message}"
79
81
  rescue Ace::LLM::Error => e
80
- raise Error, "Failed to generate batch commit messages: #{e.message}"
82
+ raise Error, llm_failure_message("Failed to generate batch commit messages", model, e)
81
83
  end
82
84
 
83
85
  private
@@ -260,10 +262,11 @@ module Ace
260
262
 
261
263
  def retry_batch_parse(groups_context, intention, previous_response, reason, config)
262
264
  warn "[ace-git-commit] Batch parse failed, retrying with strict JSON repair: #{reason}"
265
+ model = resolve_model(config)
263
266
 
264
267
  repair_prompt = build_batch_repair_user_prompt(groups_context, intention, previous_response, reason)
265
268
  repair_response = Ace::LLM::QueryInterface.query(
266
- resolve_model(config),
269
+ model,
267
270
  repair_prompt,
268
271
  system: load_batch_system_prompt,
269
272
  temperature: 0.2,
@@ -275,6 +278,8 @@ module Ace
275
278
  rescue BatchParseError => e
276
279
  warn "[ace-git-commit] Batch parse retry failed: #{e.message}"
277
280
  nil
281
+ rescue Ace::LLM::Error => e
282
+ raise Error, llm_failure_message("Failed to generate batch commit messages", model, e)
278
283
  end
279
284
 
280
285
  def build_batch_repair_user_prompt(groups_context, intention, bad_response, reason)
@@ -299,6 +304,25 @@ module Ace
299
304
  config_override.fetch("model", @model)
300
305
  end
301
306
 
307
+ def llm_failure_message(prefix, model, error)
308
+ effective_model = model.to_s.empty? ? DEFAULT_MODEL : model
309
+ surface = setup_surface_label(effective_model)
310
+ lines = []
311
+ lines << "#{prefix} with #{surface} '#{effective_model}': #{error.message}"
312
+ lines << ""
313
+ lines << "LLM setup checks:"
314
+ lines << " ace-llm --list-providers"
315
+ lines << " ace-config doctor"
316
+ lines << ""
317
+ lines << "Fallback commit command:"
318
+ lines << ' ace-git-commit --only-staged --no-split -m "chore: set up ace tooling"'
319
+ lines.join("\n")
320
+ end
321
+
322
+ def setup_surface_label(model)
323
+ model.start_with?("role:") ? "ACE role" : "LLM model"
324
+ end
325
+
302
326
  # Load system prompt from template
303
327
  # @return [String] System prompt content
304
328
  def load_system_prompt
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ace
4
4
  module GitCommit
5
- VERSION = '0.25.4'
5
+ VERSION = "0.26.5"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ace-git-commit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.25.4
4
+ version: 0.26.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Czyz
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-04-20 00:00:00.000000000 Z
10
+ date: 2026-08-12 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ace-support-cli
@@ -29,56 +29,56 @@ dependencies:
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '0.29'
32
+ version: '0.31'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.29'
39
+ version: '0.31'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: ace-support-config
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0.9'
46
+ version: '0.17'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0.9'
53
+ version: '0.17'
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: ace-git
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '0.19'
60
+ version: '0.22'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.19'
67
+ version: '0.22'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: ace-llm
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0.30'
74
+ version: '0.38'
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0.30'
81
+ version: '0.38'
82
82
  description: Analyzes diffs and developer intent to generate conventional commit messages
83
83
  using LLM. Handles monorepo scoping automatically — split commits across packages
84
84
  with one command.