ace-review 0.49.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 +7 -0
- data/.ace-defaults/nav/protocols/guide-sources/ace-review.yml +10 -0
- data/.ace-defaults/nav/protocols/prompt-sources/ace-review.yml +36 -0
- data/.ace-defaults/nav/protocols/tmpl-sources/ace-review.yml +10 -0
- data/.ace-defaults/nav/protocols/wfi-sources/ace-review.yml +19 -0
- data/.ace-defaults/review/config.yml +79 -0
- data/.ace-defaults/review/presets/code-fit.yml +64 -0
- data/.ace-defaults/review/presets/code-shine.yml +44 -0
- data/.ace-defaults/review/presets/code-valid.yml +39 -0
- data/.ace-defaults/review/presets/docs.yml +42 -0
- data/.ace-defaults/review/presets/spec.yml +37 -0
- data/CHANGELOG.md +1780 -0
- data/LICENSE +21 -0
- data/README.md +42 -0
- data/Rakefile +14 -0
- data/exe/ace-review +27 -0
- data/exe/ace-review-feedback +17 -0
- data/handbook/guides/code-review-process.g.md +234 -0
- data/handbook/prompts/base/sections.md +23 -0
- data/handbook/prompts/base/system.md +60 -0
- data/handbook/prompts/focus/architecture/atom.md +30 -0
- data/handbook/prompts/focus/architecture/reflection.md +60 -0
- data/handbook/prompts/focus/frameworks/rails.md +40 -0
- data/handbook/prompts/focus/frameworks/vue-firebase.md +45 -0
- data/handbook/prompts/focus/languages/ruby.md +50 -0
- data/handbook/prompts/focus/phase/correctness.md +51 -0
- data/handbook/prompts/focus/phase/polish.md +43 -0
- data/handbook/prompts/focus/phase/quality.md +42 -0
- data/handbook/prompts/focus/quality/performance.md +48 -0
- data/handbook/prompts/focus/quality/security.md +47 -0
- data/handbook/prompts/focus/scope/docs.md +38 -0
- data/handbook/prompts/focus/scope/spec.md +58 -0
- data/handbook/prompts/focus/scope/tests.md +36 -0
- data/handbook/prompts/format/compact.md +12 -0
- data/handbook/prompts/format/detailed.md +39 -0
- data/handbook/prompts/format/standard.md +16 -0
- data/handbook/prompts/guidelines/icons.md +19 -0
- data/handbook/prompts/guidelines/tone.md +21 -0
- data/handbook/prompts/synthesis-review-reports.system.md +318 -0
- data/handbook/prompts/synthesize-feedback.system.md +147 -0
- data/handbook/skills/as-review-apply-feedback/SKILL.md +39 -0
- data/handbook/skills/as-review-package/SKILL.md +36 -0
- data/handbook/skills/as-review-pr/SKILL.md +38 -0
- data/handbook/skills/as-review-run/SKILL.md +30 -0
- data/handbook/skills/as-review-verify-feedback/SKILL.md +31 -0
- data/handbook/templates/review-tasks/task-review-summary.template.md +148 -0
- data/handbook/workflow-instructions/review/apply-feedback.wf.md +212 -0
- data/handbook/workflow-instructions/review/package.wf.md +16 -0
- data/handbook/workflow-instructions/review/pr.wf.md +284 -0
- data/handbook/workflow-instructions/review/run.wf.md +262 -0
- data/handbook/workflow-instructions/review/verify-feedback.wf.md +286 -0
- data/lib/ace/review/atoms/context_limit_resolver.rb +162 -0
- data/lib/ace/review/atoms/diff_boundary_finder.rb +133 -0
- data/lib/ace/review/atoms/feedback_id_generator.rb +66 -0
- data/lib/ace/review/atoms/feedback_slug_generator.rb +61 -0
- data/lib/ace/review/atoms/feedback_state_validator.rb +98 -0
- data/lib/ace/review/atoms/pr_comment_formatter.rb +325 -0
- data/lib/ace/review/atoms/preset_validator.rb +103 -0
- data/lib/ace/review/atoms/priority_filter.rb +115 -0
- data/lib/ace/review/atoms/retry_with_backoff.rb +75 -0
- data/lib/ace/review/atoms/slug_generator.rb +50 -0
- data/lib/ace/review/atoms/token_estimator.rb +86 -0
- data/lib/ace/review/cli/commands/feedback/create.rb +173 -0
- data/lib/ace/review/cli/commands/feedback/list.rb +280 -0
- data/lib/ace/review/cli/commands/feedback/resolve.rb +109 -0
- data/lib/ace/review/cli/commands/feedback/session_discovery.rb +70 -0
- data/lib/ace/review/cli/commands/feedback/show.rb +177 -0
- data/lib/ace/review/cli/commands/feedback/skip.rb +125 -0
- data/lib/ace/review/cli/commands/feedback/verify.rb +149 -0
- data/lib/ace/review/cli/commands/feedback.rb +79 -0
- data/lib/ace/review/cli/commands/review.rb +378 -0
- data/lib/ace/review/cli/feedback_cli.rb +71 -0
- data/lib/ace/review/cli.rb +103 -0
- data/lib/ace/review/errors.rb +146 -0
- data/lib/ace/review/models/feedback_item.rb +216 -0
- data/lib/ace/review/models/review_options.rb +208 -0
- data/lib/ace/review/models/reviewer.rb +181 -0
- data/lib/ace/review/molecules/context_composer.rb +123 -0
- data/lib/ace/review/molecules/context_extractor.rb +159 -0
- data/lib/ace/review/molecules/feedback_directory_manager.rb +183 -0
- data/lib/ace/review/molecules/feedback_file_reader.rb +178 -0
- data/lib/ace/review/molecules/feedback_file_writer.rb +210 -0
- data/lib/ace/review/molecules/feedback_synthesizer.rb +588 -0
- data/lib/ace/review/molecules/gh_cli_executor.rb +124 -0
- data/lib/ace/review/molecules/gh_comment_poster.rb +205 -0
- data/lib/ace/review/molecules/gh_comment_resolver.rb +199 -0
- data/lib/ace/review/molecules/gh_pr_comment_fetcher.rb +408 -0
- data/lib/ace/review/molecules/gh_pr_fetcher.rb +240 -0
- data/lib/ace/review/molecules/llm_executor.rb +142 -0
- data/lib/ace/review/molecules/multi_model_executor.rb +278 -0
- data/lib/ace/review/molecules/nav_prompt_resolver.rb +145 -0
- data/lib/ace/review/molecules/pr_task_spec_resolver.rb +58 -0
- data/lib/ace/review/molecules/preset_manager.rb +494 -0
- data/lib/ace/review/molecules/prompt_composer.rb +76 -0
- data/lib/ace/review/molecules/prompt_resolver.rb +168 -0
- data/lib/ace/review/molecules/strategies/adaptive_strategy.rb +193 -0
- data/lib/ace/review/molecules/strategies/chunked_strategy.rb +459 -0
- data/lib/ace/review/molecules/strategies/full_strategy.rb +114 -0
- data/lib/ace/review/molecules/subject_extractor.rb +315 -0
- data/lib/ace/review/molecules/subject_filter.rb +199 -0
- data/lib/ace/review/molecules/subject_strategy.rb +96 -0
- data/lib/ace/review/molecules/task_report_saver.rb +161 -0
- data/lib/ace/review/molecules/task_resolver.rb +48 -0
- data/lib/ace/review/organisms/feedback_manager.rb +386 -0
- data/lib/ace/review/organisms/review_manager.rb +1059 -0
- data/lib/ace/review/version.rb +7 -0
- data/lib/ace/review.rb +135 -0
- metadata +351 -0
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,1780 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to ace-review will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.49.0] - 2026-03-24
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Added missing `ace-review-feedback` executable to gemspec — gem consumers now get both CLIs installed.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- Removed stale task-symlink documentation from feedback workflow guide (task-linking was removed in v0.46.0).
|
|
17
|
+
- Updated stale code comment in review manager referencing removed symlink architecture.
|
|
18
|
+
- Re-recorded getting-started demo with live review execution.
|
|
19
|
+
|
|
20
|
+
## [0.48.1] - 2026-03-23
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- Refreshed the package README overview, section flow, and quick links to align with the current ACE package layout pattern.
|
|
24
|
+
|
|
25
|
+
## [0.48.0] - 2026-03-18
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
- Refined `TS-REVIEW-001` E2E verifier goal structure with explicit impact-first validation and check sections across all review workflow goals.
|
|
29
|
+
|
|
30
|
+
## [0.47.1] - 2026-03-18
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
- Migrated CLI namespace from `Ace::Core::CLI::*` to `Ace::Support::Cli::*` (ace-support-cli is now the canonical home for CLI infrastructure).
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## [0.47.0] - 2026-03-18
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
- Removed legacy backward-compatibility behavior as part of the 0.10 cleanup release.
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
## [0.46.1] - 2026-03-18
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
- Hardened feedback synthesis to preserve raw output, clean common malformed JSON, and run a bounded JSON-repair pass before failing extraction.
|
|
46
|
+
- Switched the default feedback synthesis model to `gemini:flash-latest@ro` so synthesis uses the Gemini CLI read-only provider path.
|
|
47
|
+
|
|
48
|
+
### Technical
|
|
49
|
+
- Isolated review-driven synthesis artifacts under a dedicated `feedback-synthesis` session subdirectory to avoid prompt-file collisions with the parent review session.
|
|
50
|
+
- Added regression coverage for malformed JSON cleanup/repair and review-manager session propagation during feedback extraction.
|
|
51
|
+
|
|
52
|
+
## [0.46.0] - 2026-03-18
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
- Removed `--task` and `--no-auto-save` CLI options and all review-to-task linking integration (symlink creation, branch-based task detection, `auto_save` config).
|
|
56
|
+
- Removed `task_reference` state, `link_session_to_task`, `link_session_to_task_if_requested`, `auto_link_session_if_enabled`, and dead-code task feedback methods from `ReviewManager`.
|
|
57
|
+
- Simplified `PrTaskSpecResolver.extract_from_branch` to use inline branch-prefix extraction instead of external `TaskPatternExtractor`.
|
|
58
|
+
|
|
59
|
+
### Technical
|
|
60
|
+
- Removed 15 task-linking tests and cleaned up stale `@task_reference` references in remaining tests.
|
|
61
|
+
|
|
62
|
+
## [0.45.4] - 2026-03-18
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
- Fixed review CLI option precedence so `auto_execute` now uses config default when the flag is omitted and `--dry-run` remains authoritative.
|
|
66
|
+
|
|
67
|
+
## [0.45.3] - 2026-03-17
|
|
68
|
+
|
|
69
|
+
### Fixed
|
|
70
|
+
- Fixed local PR diff fallback to fetch and compare against the PR head ref instead of caller `HEAD`.
|
|
71
|
+
- Unified review model timeout handling and raised the default to 900 seconds.
|
|
72
|
+
|
|
73
|
+
### Technical
|
|
74
|
+
- Exposed structured Claude CLI response metadata when successful subprocess output is empty.
|
|
75
|
+
- Added regression coverage for timeout forwarding and PR diff fallback behavior.
|
|
76
|
+
|
|
77
|
+
## [0.45.2] - 2026-03-17
|
|
78
|
+
|
|
79
|
+
### Fixed
|
|
80
|
+
- Updated Claude context limits from 200K to 1M tokens in hardcoded fallback table.
|
|
81
|
+
- Added GPT-5.x (1.05M) and o4 (1.05M) model patterns to context limit resolver.
|
|
82
|
+
- Raised prompt size warning threshold from 160K to 800K tokens to eliminate spurious warnings with modern LLMs.
|
|
83
|
+
- Updated default context limit for unknown models from 128K to 200K tokens.
|
|
84
|
+
|
|
85
|
+
## [0.45.1] - 2026-03-17
|
|
86
|
+
|
|
87
|
+
### Changed
|
|
88
|
+
- Removed hardcoded `sandbox` injection from review CLI execution so review model presets control CLI flags consistently.
|
|
89
|
+
- Standardized `code-valid`, `code-fit`, and `code-shine` presets to use `codex:gpt@ro` and moved thinking/behavior configuration into preset configuration.
|
|
90
|
+
|
|
91
|
+
## [0.45.0] - 2026-03-15
|
|
92
|
+
|
|
93
|
+
### Added
|
|
94
|
+
- `DiffTooLargeError` for detecting GitHub API 406 responses on large PR diffs
|
|
95
|
+
- Local git diff fallback in `GhPrFetcher` when GitHub API rejects diffs exceeding 300-file limit
|
|
96
|
+
- Connection error retry guidance in PR review workflow (wait 30s, retry up to 2x)
|
|
97
|
+
|
|
98
|
+
### Technical
|
|
99
|
+
- New `GhPrFetcherTest` covering 406 detection, fallback success, and fallback error paths
|
|
100
|
+
|
|
101
|
+
## [0.44.5] - 2026-03-15
|
|
102
|
+
|
|
103
|
+
### Changed
|
|
104
|
+
- Migrated CLI framework from dry-cli to ace-support-cli
|
|
105
|
+
|
|
106
|
+
## [0.44.4] - 2026-03-13
|
|
107
|
+
|
|
108
|
+
### Technical
|
|
109
|
+
- Updated canonical review skills to rely on workspace workflow execution flow.
|
|
110
|
+
|
|
111
|
+
## [0.44.3] - 2026-03-13
|
|
112
|
+
|
|
113
|
+
### Changed
|
|
114
|
+
- Updated canonical review skills to explicitly run bundled workflows in the current project and execute them end-to-end.
|
|
115
|
+
|
|
116
|
+
## [0.44.2] - 2026-03-13
|
|
117
|
+
|
|
118
|
+
### Changed
|
|
119
|
+
- Updated the review E2E error-handling scenario to distinguish real dry-run validation failures from invalid-model dry-run preparation behavior.
|
|
120
|
+
|
|
121
|
+
## [0.44.1] - 2026-03-12
|
|
122
|
+
|
|
123
|
+
### Changed
|
|
124
|
+
- Updated review workflow instructions to reference bundle-first review flows instead of slash-command examples.
|
|
125
|
+
|
|
126
|
+
## [0.44.0] - 2026-03-10
|
|
127
|
+
|
|
128
|
+
### Added
|
|
129
|
+
- Added canonical handbook-owned review skills and the new `wfi://review/package` workflow for package-level review.
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
## [0.43.8] - 2026-03-08
|
|
133
|
+
|
|
134
|
+
### Fixed
|
|
135
|
+
- Resolve review preset/config discovery from the caller's explicit `project_root` and gem-default preset files, preventing temp-dir context extraction from crashing after project-root hardening in `ace-support-fs`.
|
|
136
|
+
|
|
137
|
+
### Technical
|
|
138
|
+
- Add regression coverage for gem-default preset discovery and temp-dir file-path context extraction.
|
|
139
|
+
|
|
140
|
+
## [0.43.7] - 2026-03-06
|
|
141
|
+
|
|
142
|
+
### Fixed
|
|
143
|
+
- Make `--dry-run` disable automatic model execution even when project defaults enable `auto_execute`.
|
|
144
|
+
- Allow `@` in review model identifiers so preset models can use `@ro`, `@rw`, and `@yolo` suffixes.
|
|
145
|
+
|
|
146
|
+
### Changed
|
|
147
|
+
- Reduce the shipped review preset surface to five explicit single-file presets: `code-valid`, `code-fit`, `code-shine`, `docs`, and `spec`.
|
|
148
|
+
- Align both package defaults and repo-level `.ace/review` overrides on the explicit five-preset review model.
|
|
149
|
+
|
|
150
|
+
## [0.43.6] - 2026-03-05
|
|
151
|
+
|
|
152
|
+
### Changed
|
|
153
|
+
- Renamed config key `auto_save_branch_patterns` → `task_branch_patterns` to reflect broader usage (task spec resolution, not just auto-save)
|
|
154
|
+
|
|
155
|
+
## [0.43.5] - 2026-03-04
|
|
156
|
+
|
|
157
|
+
### Fixed
|
|
158
|
+
- Feedback session discovery now prefers `.ace-local/review/sessions` with legacy `.cache` fallback.
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
## [0.43.4] - 2026-03-04
|
|
162
|
+
|
|
163
|
+
### Fixed
|
|
164
|
+
- Review workflow instructions (apply-feedback, pr, run) corrected to use `.ace-local/review/` (not `.ace-local/ace-review/`)
|
|
165
|
+
|
|
166
|
+
## [0.43.3] - 2026-03-04
|
|
167
|
+
|
|
168
|
+
### Fixed
|
|
169
|
+
- `feedback-workflow.md` session path examples corrected to short-name convention (`.ace-local/review/` not `.ace-local/ace-review/`)
|
|
170
|
+
|
|
171
|
+
## [0.43.2] - 2026-03-04
|
|
172
|
+
|
|
173
|
+
### Fixed
|
|
174
|
+
- Reverted feedback synthesis workspace handling to standard `Dir.mktmpdir` behavior instead of project-local temporary workspaces.
|
|
175
|
+
|
|
176
|
+
## [0.43.1] - 2026-03-04
|
|
177
|
+
|
|
178
|
+
### Fixed
|
|
179
|
+
- README session storage path examples corrected to short-name convention (`.ace-local/review/` not `.ace-local/ace-review/`)
|
|
180
|
+
|
|
181
|
+
## [0.43.0] - 2026-03-04
|
|
182
|
+
|
|
183
|
+
### Changed
|
|
184
|
+
- Default session directory migrated from `.cache/ace-review/sessions` to `.ace-local/review/sessions`
|
|
185
|
+
- Feedback synthesis workspace now uses `Ace::Support::Items::Atoms::TmpWorkspace` for deterministic `.ace-local/tmp` paths
|
|
186
|
+
|
|
187
|
+
## [0.42.7] - 2026-03-02
|
|
188
|
+
|
|
189
|
+
### Changed
|
|
190
|
+
- Replace `ace-taskflow` dependency with `ace-task` — migrate `TaskResolver`, `SubjectExtractor`, and `PresetManager` to ace-task APIs
|
|
191
|
+
- Remove dead `save_to_release` method from `TaskReportSaver` (used `ReleaseManager` from ace-taskflow, never called in production)
|
|
192
|
+
- Update CLI subprocess call from `ace-taskflow task REF --path` to `ace-task show REF --path`
|
|
193
|
+
|
|
194
|
+
## [0.42.6] - 2026-02-25
|
|
195
|
+
|
|
196
|
+
### Technical
|
|
197
|
+
- Bump runtime dependency constraint from `ace-git ~> 0.10` to `ace-git ~> 0.11`.
|
|
198
|
+
|
|
199
|
+
## [0.42.5] - 2026-02-25
|
|
200
|
+
|
|
201
|
+
### Technical
|
|
202
|
+
- Add test case for `nil` return from `extract_task_reference` when PR metadata contains no task reference
|
|
203
|
+
|
|
204
|
+
## [0.42.4] - 2026-02-25
|
|
205
|
+
|
|
206
|
+
### Fixed
|
|
207
|
+
- Safely extract task reference from PR text using safe navigation to avoid NoMethodError when regex match returns nil
|
|
208
|
+
|
|
209
|
+
## [0.42.3] - 2026-02-25
|
|
210
|
+
|
|
211
|
+
### Added
|
|
212
|
+
- Automatically include the task behavioral spec (`.s.md`) in PR review context when a task can be discovered from PR branch metadata or PR text references.
|
|
213
|
+
- Add `PrTaskSpecResolver` to map PR metadata to a single primary task spec file with graceful fallback.
|
|
214
|
+
|
|
215
|
+
### Changed
|
|
216
|
+
- Extend task resolution metadata with `spec_path` for direct behavioral spec selection.
|
|
217
|
+
- Extend PR metadata fetch fields to include PR `body` for task reference fallback detection.
|
|
218
|
+
|
|
219
|
+
## [0.42.2] - 2026-02-24
|
|
220
|
+
|
|
221
|
+
### Technical
|
|
222
|
+
- Strengthen TS-REVIEW-001 preset-composition E2E runner/verifier instructions by requiring explicit dry-run subject input and resilient artifact-based verification criteria.
|
|
223
|
+
|
|
224
|
+
## [0.42.1] - 2026-02-23
|
|
225
|
+
|
|
226
|
+
### Changed
|
|
227
|
+
- Centralized ContextComposerError and UnknownStrategyError into Ace::Review::Errors module
|
|
228
|
+
- Narrowed exception handling in feedback_file_reader, feedback_file_writer, and task_report_saver
|
|
229
|
+
|
|
230
|
+
### Technical
|
|
231
|
+
- Updated internal dependency version constraints to current releases
|
|
232
|
+
|
|
233
|
+
## [0.42.0] - 2026-02-22
|
|
234
|
+
|
|
235
|
+
### Changed
|
|
236
|
+
- **Breaking:** Migrated from multi-command Registry to single-command pattern (task 278)
|
|
237
|
+
- Removed `review` subcommand: `ace-review review --preset pr` → `ace-review --preset pr`
|
|
238
|
+
- Removed `list-presets` subcommand: `ace-review list-presets` → `ace-review --list-presets`
|
|
239
|
+
- Removed `list-prompts` subcommand: `ace-review list-prompts` → `ace-review --list-prompts`
|
|
240
|
+
- Removed `version`/`help` subcommands: use `--version`/`--help` flags only
|
|
241
|
+
- Added `--version`, `--list-presets`, `--list-prompts` flags to main command
|
|
242
|
+
- Simplified `preprocess_array_options` (no command name detection needed)
|
|
243
|
+
- No backward compatibility (per ADR-024)
|
|
244
|
+
|
|
245
|
+
## [0.41.2] - 2026-02-22
|
|
246
|
+
|
|
247
|
+
### Fixed
|
|
248
|
+
- Add flag variants (`--help`, `-h`, `--version`) to KNOWN_COMMAND_NAMES for preprocessing safety
|
|
249
|
+
|
|
250
|
+
## [0.41.1] - 2026-02-22
|
|
251
|
+
|
|
252
|
+
### Fixed
|
|
253
|
+
- Include built-in help/version commands in KNOWN_COMMAND_NAMES for correct array option preprocessing
|
|
254
|
+
|
|
255
|
+
## [0.41.0] - 2026-02-22
|
|
256
|
+
|
|
257
|
+
### Changed
|
|
258
|
+
- Migrate ace-review-feedback CLI to standard help pattern (task 278.13)
|
|
259
|
+
- Remove DWIM default routing — no args now shows help instead of running list command
|
|
260
|
+
|
|
261
|
+
## [0.40.5] - 2026-02-22
|
|
262
|
+
|
|
263
|
+
### Fixed
|
|
264
|
+
- Migrate to standard help pattern with explicit `review` subcommand
|
|
265
|
+
- Remove DWIM default routing — no args now shows help instead of running review
|
|
266
|
+
|
|
267
|
+
## [0.40.3] - 2026-02-22
|
|
268
|
+
|
|
269
|
+
### Changed
|
|
270
|
+
- Migrate skill naming and invocation references to hyphenated `ace-*` format (no underscores).
|
|
271
|
+
|
|
272
|
+
## [0.40.2] - 2026-02-19
|
|
273
|
+
|
|
274
|
+
### Technical
|
|
275
|
+
- Namespace workflow instructions into review/ subdirectory with updated wfi:// URIs
|
|
276
|
+
|
|
277
|
+
## [0.40.1] - 2026-02-19
|
|
278
|
+
|
|
279
|
+
### Fixed
|
|
280
|
+
- Architecture-reflection preset diff range changed from `HEAD~1..HEAD` to `origin/main..HEAD` to capture all implementation commits
|
|
281
|
+
|
|
282
|
+
## [0.40.0] - 2026-02-19
|
|
283
|
+
|
|
284
|
+
### Added
|
|
285
|
+
- New `architecture-reflection` review preset for pre-PR self-assessment — combines ATOM compliance, over-engineering detection, and missing abstraction analysis
|
|
286
|
+
- New `reflection` focus prompt (`focus/architecture/reflection.md`) with refactor/accept/skip categorization output format
|
|
287
|
+
|
|
288
|
+
### Fixed
|
|
289
|
+
- **Feedback extraction failures no longer silently swallowed**: When synthesis LLM call fails, error is now propagated to CLI output and response hash instead of being silently dropped
|
|
290
|
+
- **CLI reports feedback status**: Multi-model review output now shows feedback item count on success or error message on failure
|
|
291
|
+
|
|
292
|
+
### Added
|
|
293
|
+
- **Fallback model support for feedback synthesis**: Configure `feedback.fallback_models` in config.yml to try alternative models when primary synthesis model fails
|
|
294
|
+
- Default fallback model `claude:glm` added to config
|
|
295
|
+
|
|
296
|
+
## [0.39.3] - 2026-02-17
|
|
297
|
+
|
|
298
|
+
### Changed
|
|
299
|
+
- Clarify review workflow execution guards to prevent premature follow-up actions:
|
|
300
|
+
- `review-pr.wf.md`: explicitly require process exit before feedback commands
|
|
301
|
+
- `review.wf.md`: explicitly require process exit before feedback commands
|
|
302
|
+
- Standardize timeout handling guidance for review workflows (10-minute timeout with stop-on-timeout behavior)
|
|
303
|
+
- Add explicit precondition + session-targeted feedback examples to reduce session ambiguity in feedback listing
|
|
304
|
+
|
|
305
|
+
## [0.39.2] - 2026-02-16
|
|
306
|
+
|
|
307
|
+
### Added
|
|
308
|
+
- **Phased review presets**: `code-valid` (correctness), `code-fit` (quality), `code-shine` (polish) for laser-focused review cycles
|
|
309
|
+
- **Backward-compatible** `code-deep` preset as composition of `code` with detailed format
|
|
310
|
+
- **Focus prompts**: `phase/correctness.md`, `phase/quality.md`, `phase/polish.md` with explicit scope and DO NOT Review sections
|
|
311
|
+
- Project-level preset configuration files for monorepo discovery
|
|
312
|
+
|
|
313
|
+
### Changed
|
|
314
|
+
- **Multi-model reviewers**: All 3 phased presets use `claude:opus`, `codex:max`, `gemini:pro-latest`
|
|
315
|
+
- **Focus distribution**: All 6 focus modules from `code` preset distributed across the 3 phased presets (security→code-fit, tests+ruby→code-fit, docs→code-shine)
|
|
316
|
+
|
|
317
|
+
## [0.38.1] - 2026-02-15
|
|
318
|
+
|
|
319
|
+
### Changed
|
|
320
|
+
- **LlmExecutor**: Pass `sandbox: "read-only"` to `QueryInterface.query()` to enforce non-agentic mode for CLI providers during reviews
|
|
321
|
+
|
|
322
|
+
## [0.38.0] - 2026-02-08
|
|
323
|
+
|
|
324
|
+
### Added
|
|
325
|
+
- Unified feedback verification workflow with single `verify` command supporting three modes
|
|
326
|
+
- `--skip` option to `feedback verify` for marking items as skipped (correct but not fixing)
|
|
327
|
+
- Support for skipping both draft and pending status items (previously skip only worked on draft)
|
|
328
|
+
- Enhanced documentation with clear examples for when to use --valid, --invalid, or --skip
|
|
329
|
+
- Comprehensive test coverage for --skip mode and backward compatibility
|
|
330
|
+
|
|
331
|
+
### Changed
|
|
332
|
+
- `FeedbackManager.verify()` now supports `skip:` mode in addition to `valid:` parameter
|
|
333
|
+
- `FeedbackManager.skip()` now delegates to `verify()` with `skip: true` (backward compatible)
|
|
334
|
+
- Enhanced verification workflow documentation with clear decision criteria
|
|
335
|
+
- Improved CLI help text with examples for each verification mode
|
|
336
|
+
|
|
337
|
+
### Technical
|
|
338
|
+
- Added tests for skip mode transition from both draft and pending states
|
|
339
|
+
- Added tests for mutually exclusive validation in verify command
|
|
340
|
+
- Ensured backward compatibility for existing skip command usage
|
|
341
|
+
|
|
342
|
+
### Changed
|
|
343
|
+
- Embed CLI help reference in apply-feedback and verify-feedback workflows via bundle frontmatter
|
|
344
|
+
- Agents now see exact flag syntax per subcommand (verify/resolve/skip) when workflows load
|
|
345
|
+
|
|
346
|
+
## [0.37.3] - 2026-02-04
|
|
347
|
+
|
|
348
|
+
### Added
|
|
349
|
+
- Priority range filtering with `+` suffix for `feedback list` command
|
|
350
|
+
- `--priority medium+` filters for medium, high, and critical items
|
|
351
|
+
- `--priority high+` filters for high and critical items
|
|
352
|
+
- New `PriorityFilter` atom for priority filtering logic
|
|
353
|
+
|
|
354
|
+
## [0.37.2] - 2026-02-04
|
|
355
|
+
|
|
356
|
+
### Added
|
|
357
|
+
- `SubjectFilter` molecule extracting file filtering logic from Reviewer model
|
|
358
|
+
- README documentation for Subject Strategy Configuration (strategy types, adaptive mode)
|
|
359
|
+
- README documentation for Reviewers Format (attributes, file patterns, migration)
|
|
360
|
+
- `ContextLimitResolver` integration with ace-llm provider config for context limits
|
|
361
|
+
|
|
362
|
+
### Changed
|
|
363
|
+
- `Reviewer` model now delegates filtering to `SubjectFilter` molecule (ATOM architecture)
|
|
364
|
+
|
|
365
|
+
### Technical
|
|
366
|
+
- Comprehensive tests for `SubjectFilter` molecule
|
|
367
|
+
|
|
368
|
+
## [0.37.1] - 2026-02-04
|
|
369
|
+
|
|
370
|
+
### Fixed
|
|
371
|
+
- Graceful error handling for preset composition failures (circular deps, missing refs)
|
|
372
|
+
- E2E test MT-REVIEW-001 preset data now includes required `instructions:` key
|
|
373
|
+
- E2E test MT-REVIEW-001 uses valid model provider format
|
|
374
|
+
|
|
375
|
+
## [0.37.0] - 2026-02-04
|
|
376
|
+
|
|
377
|
+
### Added
|
|
378
|
+
- Token estimation foundation with `TokenEstimator` (chars/4 heuristic) and `ContextLimitResolver`
|
|
379
|
+
- `DiffBoundaryFinder` atom for parsing unified diffs into file blocks
|
|
380
|
+
- Subject strategy system with `SubjectStrategy` factory and registry
|
|
381
|
+
- `FullStrategy` for complete subject pass-through when content fits context
|
|
382
|
+
- `ChunkedStrategy` for file-boundary diff splitting of large subjects
|
|
383
|
+
- `AdaptiveStrategy` for auto-selecting between Full/Chunked based on token estimate
|
|
384
|
+
- `Reviewer` entity model with configurable focus, file patterns, and prompt additions
|
|
385
|
+
|
|
386
|
+
### Changed
|
|
387
|
+
- `FullStrategy` accepts `headroom` config option to customize context margin (aligns with `AdaptiveStrategy`)
|
|
388
|
+
|
|
389
|
+
### Fixed
|
|
390
|
+
- GPT-4 variant handling for 32k and preview models (gpt-4-32k, gpt-4-NNNN)
|
|
391
|
+
- Extended diff header preservation during truncation (rename operations)
|
|
392
|
+
- Chunk edge cases with non-positive available tokens
|
|
393
|
+
|
|
394
|
+
## [0.36.17] - 2026-02-04
|
|
395
|
+
|
|
396
|
+
### Added
|
|
397
|
+
- `--session all` flag for `feedback list` to aggregate feedback from all sessions
|
|
398
|
+
- `find_all_sessions` helper in `SessionDiscovery` module
|
|
399
|
+
- SESSION column in table output when viewing all sessions
|
|
400
|
+
- `session` field in JSON output when using `--session all`
|
|
401
|
+
|
|
402
|
+
## [0.36.16] - 2026-02-03
|
|
403
|
+
|
|
404
|
+
### Added
|
|
405
|
+
- `SessionDiscovery` shared module for DRY session resolution across feedback CLI commands
|
|
406
|
+
|
|
407
|
+
### Changed
|
|
408
|
+
- Refactored 6 feedback CLI commands to use shared `SessionDiscovery` module
|
|
409
|
+
- Updated CLI descriptions and error messages to remove obsolete `--task` references
|
|
410
|
+
- Added warn statement for lock file cleanup failures in `FeedbackFileWriter`
|
|
411
|
+
|
|
412
|
+
### Removed
|
|
413
|
+
- 5 deprecated auto-save methods from `ReviewManager` (~150 lines of dead code):
|
|
414
|
+
- `save_multi_model_to_task`
|
|
415
|
+
- `auto_save_review_if_enabled`
|
|
416
|
+
- `auto_save_multi_model_reports`
|
|
417
|
+
- `auto_save_to_release`
|
|
418
|
+
- `save_to_task_if_requested`
|
|
419
|
+
- 11 deprecated auto-save tests (~270 lines)
|
|
420
|
+
|
|
421
|
+
### Fixed
|
|
422
|
+
- Documentation referencing outdated `--no-synthesize` flag in README.md
|
|
423
|
+
- Documentation referencing removed `--task` flag in feedback-workflow.md
|
|
424
|
+
|
|
425
|
+
## [0.36.15] - 2026-02-03
|
|
426
|
+
|
|
427
|
+
### Added
|
|
428
|
+
- Feedback list shows archived count when no active items exist with helpful hint to use `--archived`
|
|
429
|
+
- Status-based sorting for feedback list: draft → pending → done → skip → invalid (then by ID)
|
|
430
|
+
|
|
431
|
+
### Changed
|
|
432
|
+
- Feedback list summary now shows archived count hint when viewing active items only
|
|
433
|
+
|
|
434
|
+
## [0.36.14] - 2026-02-03
|
|
435
|
+
|
|
436
|
+
### Fixed
|
|
437
|
+
- Feedback CLI commands failing from subdirectories - now uses `ProjectRootFinder` for session discovery
|
|
438
|
+
|
|
439
|
+
## [0.36.13] - 2026-02-03
|
|
440
|
+
|
|
441
|
+
### Fixed
|
|
442
|
+
- Workflow documentation referencing removed `--task` CLI flag in session discovery
|
|
443
|
+
|
|
444
|
+
### Changed
|
|
445
|
+
- Improved feedback categorization guide in review workflows with clearer skip/defer semantics
|
|
446
|
+
|
|
447
|
+
## [0.36.12] - 2026-02-03
|
|
448
|
+
|
|
449
|
+
### Fixed
|
|
450
|
+
- Non-unique feedback IDs when multiple items created in rapid succession within same millisecond
|
|
451
|
+
|
|
452
|
+
### Added
|
|
453
|
+
- `FeedbackIdGenerator.generate_sequence(count)` for batch unique ID generation using `encode_sequence`
|
|
454
|
+
|
|
455
|
+
### Changed
|
|
456
|
+
- `FeedbackSynthesizer.parse_synthesis_response` pre-generates unique sequential IDs for all findings
|
|
457
|
+
- `FeedbackSynthesizer.create_feedback_item` accepts optional `id:` keyword argument
|
|
458
|
+
|
|
459
|
+
## [0.36.11] - 2026-02-03
|
|
460
|
+
|
|
461
|
+
### Fixed
|
|
462
|
+
- Missing `feedback.synthesis_model` configuration in default config files
|
|
463
|
+
|
|
464
|
+
## [0.36.10] - 2026-02-03
|
|
465
|
+
|
|
466
|
+
### Fixed
|
|
467
|
+
- JSON parsing for Claude Opus responses that include text before JSON code fence
|
|
468
|
+
- `FeedbackSynthesizer.parse_synthesis_response` now handles "Based on my analysis..." preamble
|
|
469
|
+
|
|
470
|
+
### Technical
|
|
471
|
+
- Extracted `extract_json_from_response` helper for robust JSON extraction from LLM responses
|
|
472
|
+
- Added test case for text-before-JSON-fence pattern
|
|
473
|
+
|
|
474
|
+
## [0.36.9] - 2026-02-03
|
|
475
|
+
|
|
476
|
+
### Removed
|
|
477
|
+
- `extraction_model` config option (legacy alias) - use `synthesis_model` only
|
|
478
|
+
- `extract-feedback.system.md` prompt - unified into `synthesize-feedback.system.md`
|
|
479
|
+
|
|
480
|
+
### Changed
|
|
481
|
+
- Feedback model configuration simplified to single `synthesis_model` option
|
|
482
|
+
- `FeedbackSynthesizer.default_synthesis_model` cascade simplified to remove `extraction_model` fallback
|
|
483
|
+
- `ReviewManager.extract_feedback` cascade simplified to use `synthesis_model` only
|
|
484
|
+
|
|
485
|
+
### Technical
|
|
486
|
+
- Removed ~140 lines of legacy prompt code
|
|
487
|
+
- Simplified configuration cascade - reduces confusion from duplicate config options
|
|
488
|
+
|
|
489
|
+
## [0.36.8] - 2026-02-03
|
|
490
|
+
|
|
491
|
+
**BREAKING CHANGES**: Feedback CLI now session-scoped only (--task option removed)
|
|
492
|
+
|
|
493
|
+
### Removed
|
|
494
|
+
- `FeedbackContextResolver` molecule - task-based path resolution no longer needed
|
|
495
|
+
- `--task` option from all feedback commands (create, list, show, verify, skip, resolve)
|
|
496
|
+
|
|
497
|
+
### Changed
|
|
498
|
+
- **Feedback is now session-scoped only** - all commands use `--session` flag with latest session default
|
|
499
|
+
- Simplified path resolution across all feedback commands to use consistent session-based pattern
|
|
500
|
+
- Updated test helper to remove `with_context_resolver_stub` helper
|
|
501
|
+
- All feedback command tests updated to use `session:` option directly
|
|
502
|
+
|
|
503
|
+
### Technical
|
|
504
|
+
- Removed ~546 lines of overengineered task-based resolution code
|
|
505
|
+
- Simplified feedback path resolution to: explicit session → latest session cache
|
|
506
|
+
|
|
507
|
+
### Fixed
|
|
508
|
+
- Documentation drift: ID format updated from "10-char" to "8-char" in feedback-workflow.md
|
|
509
|
+
- Test base class violations: FeedbackFileWriter, FeedbackFileReader, FeedbackDirectoryManager tests now inherit from AceReviewTest
|
|
510
|
+
- Missing trailing newline in .ace-defaults/review/config.yml
|
|
511
|
+
|
|
512
|
+
## [0.36.6] - 2026-02-03
|
|
513
|
+
|
|
514
|
+
### Removed
|
|
515
|
+
- `FeedbackDeduplicator` atom - superseded by LLM-based deduplication in FeedbackSynthesizer
|
|
516
|
+
- `FeedbackExtractor` molecule - replaced by FeedbackSynthesizer which handles multi-report synthesis
|
|
517
|
+
|
|
518
|
+
### Technical
|
|
519
|
+
- Removed ~600 lines of dead code and tests that were not used in the current feedback architecture
|
|
520
|
+
|
|
521
|
+
## [0.36.5] - 2026-02-03
|
|
522
|
+
|
|
523
|
+
### Added
|
|
524
|
+
- Prompt size warning before LLM execution - warns when prompt exceeds 80% of typical context window (~160K tokens)
|
|
525
|
+
- `--session` flag for `feedback list` command - allows explicit session directory path
|
|
526
|
+
- Documentation for session-scoped feedback context in workflow instructions
|
|
527
|
+
|
|
528
|
+
### Fixed
|
|
529
|
+
- Lock file (.feedback.lock) now cleaned up after writes - prevents clutter in feedback directories
|
|
530
|
+
|
|
531
|
+
### Technical
|
|
532
|
+
- Added LlmExecutor and MultiModelExecutor prompt size warning with formatted token count
|
|
533
|
+
- Updated FeedbackFileWriter with ensure block for lock file cleanup
|
|
534
|
+
- Added tests for prompt size warning, lock file cleanup, and --session flag
|
|
535
|
+
|
|
536
|
+
## [0.36.4] - 2026-02-03
|
|
537
|
+
|
|
538
|
+
**BREAKING CHANGES**: Feedback-first architecture replaces synthesis-report.md output
|
|
539
|
+
|
|
540
|
+
### Changed
|
|
541
|
+
- **Feedback is now the primary output** - synthesis-report.md has been removed entirely
|
|
542
|
+
- FeedbackIdGenerator now uses 8-char millisecond timestamp format (was 10-char with random suffix)
|
|
543
|
+
- `should_extract_feedback?` always returns true if results exist (no config toggle)
|
|
544
|
+
- Workflow instructions updated to use feedback commands instead of synthesis
|
|
545
|
+
|
|
546
|
+
### Removed
|
|
547
|
+
- **ReportSynthesizer molecule** - no longer needed with feedback-first architecture
|
|
548
|
+
- `ace-review synthesize` CLI command removed
|
|
549
|
+
- `--synthesize`, `--no-synthesize`, `--synthesis-model` CLI flags removed
|
|
550
|
+
- `synthesis:` config section removed from config files
|
|
551
|
+
- `feedback.enabled` config removed (feedback always runs)
|
|
552
|
+
- `synthesize`, `no_synthesize`, `synthesis_model` options from ReviewOptions
|
|
553
|
+
|
|
554
|
+
### Technical
|
|
555
|
+
- Updated review.wf.md and review-pr.wf.md with feedback verification workflow
|
|
556
|
+
- Simplified ReviewManager by removing synthesis-related methods
|
|
557
|
+
- Tests updated for new 8-char feedback IDs and removed synthesis tests
|
|
558
|
+
|
|
559
|
+
## [0.36.3] - 2026-02-03
|
|
560
|
+
|
|
561
|
+
### Fixed
|
|
562
|
+
- Synthesis now disabled by default (feedback files are primary output per task 227 spec)
|
|
563
|
+
- Added `--synthesize` flag to opt-in to synthesis-report.md generation
|
|
564
|
+
- Added explicit `feedback.enabled: true` default to config
|
|
565
|
+
|
|
566
|
+
### Changed
|
|
567
|
+
- `should_synthesize?` now defaults to false, checks for --synthesize CLI flag
|
|
568
|
+
- ReviewOptions now includes :synthesize attribute
|
|
569
|
+
|
|
570
|
+
### Technical
|
|
571
|
+
- Updated default config to clarify synthesis is opt-in
|
|
572
|
+
|
|
573
|
+
## [0.36.2] - 2026-02-03
|
|
574
|
+
|
|
575
|
+
### Added
|
|
576
|
+
- FeedbackSynthesizer molecule for multi-reviewer consensus analysis
|
|
577
|
+
- Support for multiple reviewers per FeedbackItem (reviewers array format)
|
|
578
|
+
- Consensus detection: marks items agreed upon by 3+ models
|
|
579
|
+
- Synthesize feedback prompt template at handbook/prompts/synthesize-feedback.system.md
|
|
580
|
+
|
|
581
|
+
### Changed
|
|
582
|
+
- FeedbackItem now stores multiple reviewers with consensus flag
|
|
583
|
+
- FeedbackFileWriter handles new multi-reviewer format
|
|
584
|
+
- FeedbackManager integrates synthesis workflow
|
|
585
|
+
- ReviewManager adds synthesis step for multi-model reviews
|
|
586
|
+
|
|
587
|
+
### Technical
|
|
588
|
+
- Added FeedbackSynthesizer with LLM-based consensus detection
|
|
589
|
+
- Updated tests for multi-reviewer workflow
|
|
590
|
+
|
|
591
|
+
## [0.36.1] - 2026-02-03
|
|
592
|
+
|
|
593
|
+
### Changed
|
|
594
|
+
- **Session Symlink Architecture**: Task reviews now symlink to session directories instead of copying files
|
|
595
|
+
- Multiple review sessions can be linked to the same task
|
|
596
|
+
- All session artifacts (prompts, metadata, feedback) accessible via symlink
|
|
597
|
+
- Feedback stays in session directory (gitignored via .cache)
|
|
598
|
+
- New methods: `link_session_to_task`, `link_session_to_task_if_requested`, `auto_link_session_if_enabled`
|
|
599
|
+
- Deprecated: `save_to_task_if_requested`, `save_multi_model_to_task`, `save_synthesis_to_task`
|
|
600
|
+
|
|
601
|
+
### Technical
|
|
602
|
+
- Simplified `determine_feedback_path` to always return session directory
|
|
603
|
+
- Updated feedback-workflow.md documentation for symlink architecture
|
|
604
|
+
|
|
605
|
+
## [0.36.0] - 2026-02-03
|
|
606
|
+
|
|
607
|
+
### Added
|
|
608
|
+
- **Feedback System**: Replace monolithic synthesis reports with tracked feedback items
|
|
609
|
+
- `FeedbackItem` model with full lifecycle support (task 227.01)
|
|
610
|
+
- File I/O with atomic writes and locking (task 227.02)
|
|
611
|
+
- LLM-based feedback extraction with deduplication (task 227.03)
|
|
612
|
+
- `FeedbackManager` organism for lifecycle orchestration (task 227.04)
|
|
613
|
+
- Integration with review pipeline via `--no-feedback` flag (task 227.05)
|
|
614
|
+
- CLI commands: `feedback list`, `show`, `verify`, `skip`, `resolve` (task 227.06)
|
|
615
|
+
- Task integration with automatic directory creation (task 227.07)
|
|
616
|
+
- Single-model feedback extraction (previously only multi-model supported)
|
|
617
|
+
- Documentation at `docs/feedback-workflow.md` (task 227.08)
|
|
618
|
+
|
|
619
|
+
### Fixed
|
|
620
|
+
- Use blocking lock for reliable concurrent feedback file access
|
|
621
|
+
- Expand branch pattern to match `task-` prefix for auto-save
|
|
622
|
+
- Merge files on deduplication instead of discarding
|
|
623
|
+
- Use `extraction_model` config key for consistency
|
|
624
|
+
- Use dynamic distance threshold for deduplication
|
|
625
|
+
- Use dedicated lock file for concurrent write coordination
|
|
626
|
+
- Add random suffix to FeedbackIdGenerator for uniqueness
|
|
627
|
+
|
|
628
|
+
### Technical
|
|
629
|
+
- Update ID format documentation from 6-char to 10-char
|
|
630
|
+
|
|
631
|
+
## [0.35.6] - 2026-02-02
|
|
632
|
+
|
|
633
|
+
### Added
|
|
634
|
+
|
|
635
|
+
- Batch review preset for consolidated task evaluation
|
|
636
|
+
- Integration test for prompt path resolution
|
|
637
|
+
|
|
638
|
+
### Changed
|
|
639
|
+
|
|
640
|
+
- Review workflows now default to "medium and higher" priority threshold for coworker automation
|
|
641
|
+
- Removed AskUserQuestion from review skill allowed-tools (no longer needed)
|
|
642
|
+
- Migrated integration tests to E2E format with consolidated DeepMerger
|
|
643
|
+
|
|
644
|
+
### Fixed
|
|
645
|
+
|
|
646
|
+
- Guarantee 0 exit code for help requests
|
|
647
|
+
|
|
648
|
+
## [0.35.5] - 2026-01-31
|
|
649
|
+
|
|
650
|
+
### Performance
|
|
651
|
+
|
|
652
|
+
- Optimized test suite from 14.68s to 5.52s (62% reduction)
|
|
653
|
+
- Added `SharedTempDir` module for opt-in per-class temp directory sharing
|
|
654
|
+
- Reduces setup/teardown overhead from ~10ms per test to near-zero
|
|
655
|
+
- Test classes opt-in with `def self.use_shared_temp_dir?; true; end`
|
|
656
|
+
|
|
657
|
+
### Changed
|
|
658
|
+
|
|
659
|
+
- Migrated 58 integration-style molecule tests to E2E format
|
|
660
|
+
- Created MT-REVIEW-004 (GitHub CLI integration) - 7 test cases
|
|
661
|
+
- Created MT-REVIEW-005 (multi-model executor) - 5 test cases
|
|
662
|
+
- Removed gh_cli_executor_test.rb (13 tests)
|
|
663
|
+
- Removed gh_pr_fetcher_test.rb (13 tests)
|
|
664
|
+
- Removed gh_pr_comment_fetcher_test.rb (19 tests)
|
|
665
|
+
- Removed multi_model_executor_test.rb (13 tests)
|
|
666
|
+
|
|
667
|
+
## [0.35.4] - 2026-01-31
|
|
668
|
+
|
|
669
|
+
### Refactored
|
|
670
|
+
|
|
671
|
+
- Consolidated `deep_merge_hash` utility into centralized `Ace::Support::Config::Atoms::DeepMerger`
|
|
672
|
+
- Removed duplicate implementations from `PresetManager` and `ReviewManager`
|
|
673
|
+
- Both now use `DeepMerger.merge(base, overlay, array_strategy: :union)`
|
|
674
|
+
- Improves maintainability and aligns with ATOM architecture (ADR-011)
|
|
675
|
+
|
|
676
|
+
### Performance
|
|
677
|
+
|
|
678
|
+
- Moved 8 integration test files to E2E test suite
|
|
679
|
+
- Created MT-REVIEW-001 (preset composition), MT-REVIEW-002 (multi-subject), MT-REVIEW-003 (auto-save workflow)
|
|
680
|
+
- E2E tests run via `/ace:run-e2e-test ace-review MT-REVIEW-001`
|
|
681
|
+
- Test execution time reduced from 19.52s to ~13.5s (31% reduction)
|
|
682
|
+
- Remaining time due to legitimate timeout tests in molecules layer
|
|
683
|
+
|
|
684
|
+
### Changed
|
|
685
|
+
|
|
686
|
+
- Removed integration test files (replaced by E2E tests):
|
|
687
|
+
- preset_composition_integration_test.rb (12 tests)
|
|
688
|
+
- multi_subject_integration_test.rb (8 tests)
|
|
689
|
+
- auto_save_integration_test.rb (E2E flow moved, unit tests covered elsewhere)
|
|
690
|
+
- preset_diff_integration_test.rb
|
|
691
|
+
- multi_model_cli_test.rb
|
|
692
|
+
- full_prompt_generation_test.rb
|
|
693
|
+
- pr_diff_generation_test.rb
|
|
694
|
+
- synthesis_test.rb
|
|
695
|
+
|
|
696
|
+
## [0.35.3] - 2026-01-29
|
|
697
|
+
|
|
698
|
+
### Fixed
|
|
699
|
+
- Multi-model executor hanging on slow CLI providers by adding timeout to Thread.join
|
|
700
|
+
- Added deadline-based join to ensure total wait is bounded regardless of stuck threads
|
|
701
|
+
- Suppressed IOError exceptions from killed threads for cleaner output
|
|
702
|
+
- Added warning display for threads killed after timeout
|
|
703
|
+
|
|
704
|
+
## [0.35.2] - 2026-01-29
|
|
705
|
+
|
|
706
|
+
### Added
|
|
707
|
+
- Enhanced review synthesis prompts with accuracy and conflict resolution guidelines
|
|
708
|
+
- Added "Verification Required" section for unverifiable model claims
|
|
709
|
+
- Added "Future Considerations" section to separate speculation from action items
|
|
710
|
+
- Added severity classification and scope boundary guidance to base review prompt
|
|
711
|
+
|
|
712
|
+
### Fixed
|
|
713
|
+
- Exception-based CLI error handling for consistent exit codes
|
|
714
|
+
|
|
715
|
+
## [0.35.1] - 2026-01-16
|
|
716
|
+
|
|
717
|
+
### Changed
|
|
718
|
+
- Rename context: to bundle: keys in configuration files
|
|
719
|
+
|
|
720
|
+
## [0.35.0] - 2026-01-15
|
|
721
|
+
|
|
722
|
+
### Changed
|
|
723
|
+
- **Dependency Migration**: Replaced ace-context dependency with ace-bundle (~> 0.29)
|
|
724
|
+
- Updated gemspec dependency from `ace-context ~> 0.9` to `ace-bundle ~> 0.29`
|
|
725
|
+
- Updated all `require 'ace/context'` to `require 'ace/bundle'`
|
|
726
|
+
- Updated all `Ace::Context` references to `Ace::Bundle`
|
|
727
|
+
- Renamed `load_context_via_ace_context` to `load_context_via_ace_bundle`
|
|
728
|
+
- Renamed `ace_context_preset_exists?` to `ace_bundle_preset_exists?`
|
|
729
|
+
- Updated error messages and comments to reference ace-bundle
|
|
730
|
+
|
|
731
|
+
### Technical
|
|
732
|
+
- Updated test helpers to stub Ace::Bundle instead of Ace::Context
|
|
733
|
+
- Updated all test files with ace-bundle references
|
|
734
|
+
|
|
735
|
+
## [0.34.0] - 2026-01-14
|
|
736
|
+
|
|
737
|
+
### Added
|
|
738
|
+
- Support for Gemini provider in all review presets
|
|
739
|
+
- Google Gemini 2.5 Flash as default model for code reviews
|
|
740
|
+
|
|
741
|
+
### Changed
|
|
742
|
+
- Updated LLM executor to handle gemini provider configuration
|
|
743
|
+
- All review presets now use gemini:gemini-2.5-flash as default model
|
|
744
|
+
|
|
745
|
+
## [0.33.2] - 2026-01-13
|
|
746
|
+
|
|
747
|
+
### Fixed
|
|
748
|
+
- Fix multi-model option handling: store parsed models in `:models` key (array) instead of `:model` key
|
|
749
|
+
- Resolves issue where multi-model reviews failed due to incorrect option key usage
|
|
750
|
+
|
|
751
|
+
### Changed
|
|
752
|
+
- Update dependencies: ace-support-nav (renamed from ace-nav), ace-support-config (renamed from ace-config)
|
|
753
|
+
|
|
754
|
+
## [0.33.1] - 2026-01-09
|
|
755
|
+
|
|
756
|
+
### Changed
|
|
757
|
+
- **BREAKING**: Eliminate wrapper pattern in dry-cli commands
|
|
758
|
+
- Merged business logic directly into `ListPresets`, `ListPrompts`, `Review`, and `Synthesize` dry-cli command classes
|
|
759
|
+
- Deleted `list_presets_command.rb`, `list_prompts_command.rb`, `review_command.rb`, and `synthesize_command.rb` wrapper files
|
|
760
|
+
- Simplified architecture by removing unnecessary delegation layer
|
|
761
|
+
|
|
762
|
+
## [0.33.0] - 2026-01-07
|
|
763
|
+
|
|
764
|
+
### Changed
|
|
765
|
+
- **BREAKING**: Migrated CLI framework from Thor to dry-cli (task 179.14)
|
|
766
|
+
- Replaced `thor` dependency with `dry-cli ~> 1.0`
|
|
767
|
+
- Converted CLI to dry-cli Registry pattern
|
|
768
|
+
- Created dry-cli command classes (list_presets, list_prompts, review, synthesize)
|
|
769
|
+
|
|
770
|
+
## [0.32.1] - 2026-01-07
|
|
771
|
+
|
|
772
|
+
### Added
|
|
773
|
+
- Support `commit:HASH` subject type for reviewing individual commits
|
|
774
|
+
- Accepts commit hashes with 6-40 hexadecimal characters
|
|
775
|
+
- Validates hash format before git operations
|
|
776
|
+
- Generates diff using `COMMIT~1..COMMIT` syntax to show commit's changes
|
|
777
|
+
- Provides clear error messages for invalid formats
|
|
778
|
+
- Updated documentation with usage examples
|
|
779
|
+
|
|
780
|
+
## [0.32.0] - 2026-01-07
|
|
781
|
+
|
|
782
|
+
### Changed
|
|
783
|
+
- **BREAKING**: Review report filenames changed from 14-character timestamps to 6-character Base36 compact IDs
|
|
784
|
+
- Example: `20251129-143000-model-preset-review.md` → `i50jj3-model-preset-review.md`
|
|
785
|
+
- Synthesis reports: `20251129-143000-synthesis.md` → `i50jj3-synthesis.md`
|
|
786
|
+
- Migrate to Base36 compact IDs for session directories (via ace-timestamp)
|
|
787
|
+
|
|
788
|
+
### Added
|
|
789
|
+
- Dependency on ace-timestamp for compact ID generation
|
|
790
|
+
|
|
791
|
+
## [0.31.1] - 2026-01-05
|
|
792
|
+
|
|
793
|
+
### Technical
|
|
794
|
+
- Clarified subject type prefix requirement in workflow documentation with explicit warnings and common mistakes examples
|
|
795
|
+
|
|
796
|
+
## [0.31.0] - 2026-01-05
|
|
797
|
+
|
|
798
|
+
### Added
|
|
799
|
+
- Thor CLI migration with ConfigSummary display
|
|
800
|
+
|
|
801
|
+
### Changed
|
|
802
|
+
- Adopted Ace::Core::CLI::Base for standardized options
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
## [0.30.0] - 2026-01-03
|
|
806
|
+
|
|
807
|
+
### Changed
|
|
808
|
+
- **BREAKING**: Minimum Ruby version raised to 3.3.0 (was 3.1.0)
|
|
809
|
+
- Standardized gemspec file patterns with deterministic Dir.glob
|
|
810
|
+
- Added MIT LICENSE file
|
|
811
|
+
|
|
812
|
+
## [0.29.4] - 2026-01-03
|
|
813
|
+
|
|
814
|
+
### Changed
|
|
815
|
+
|
|
816
|
+
- **Test performance optimization**: Reduced test suite execution time from 7.15s to 1.77s (75% reduction)
|
|
817
|
+
- Removed unnecessary git init from MultiModelCliTest (tests only parse CLI options)
|
|
818
|
+
- Added shared `stub_synthesizer_prompt_path` helper to avoid ace-nav subprocess calls (~150-400ms per call)
|
|
819
|
+
- Optimized `mock_llm_synthesis` to use block-based stubbing pattern for better isolation
|
|
820
|
+
|
|
821
|
+
### Technical
|
|
822
|
+
|
|
823
|
+
- Extract shared prompt path stubbing to `AceReviewTest#stub_synthesizer_prompt_path`
|
|
824
|
+
- Include `Ace::TestSupport::Fixtures::PromptHelpers` mixin in test helper
|
|
825
|
+
- Remove unused `require "tmpdir"` from multi_model_cli_test.rb
|
|
826
|
+
|
|
827
|
+
## [0.29.3] - 2026-01-01
|
|
828
|
+
|
|
829
|
+
### Fixed
|
|
830
|
+
|
|
831
|
+
- **Configurable timeout for gh CLI operations**: `execute_simple` and `execute` methods now use configurable timeout from config instead of hardcoded values
|
|
832
|
+
- Added `gh_simple_timeout` config option (default: 10s) for simple commands like `--version`, `auth status`
|
|
833
|
+
- `execute` now reads `gh_timeout` from config (default: 30s) instead of hardcoded fallback
|
|
834
|
+
- Follows ADR-022 pattern with `Ace::Review.get("defaults", "key")` for config access
|
|
835
|
+
|
|
836
|
+
## [0.29.2] - 2025-12-30
|
|
837
|
+
|
|
838
|
+
### Changed
|
|
839
|
+
|
|
840
|
+
- Add ace-config dependency for configuration cascade management
|
|
841
|
+
- Migrate from Ace::Core to Ace::Config.create() API (keep ace-support-core for ProcessTerminator)
|
|
842
|
+
- Migrate from `resolve_for` to `resolve_namespace` for cleaner config loading
|
|
843
|
+
|
|
844
|
+
## [0.29.1] - 2025-12-30
|
|
845
|
+
|
|
846
|
+
### Changed
|
|
847
|
+
|
|
848
|
+
- **Workflow presentation format**: Improved review results presentation in `review.wf.md` and `review-pr.wf.md`
|
|
849
|
+
- Separate "No Action Needed" section (no numbering) for INVALID and VERIFIED CORRECT items
|
|
850
|
+
- Numbered "Action Items" table with priority column
|
|
851
|
+
- New priority threshold selection: All, Medium+, High+, Critical only
|
|
852
|
+
- Clearer categorization step (Step 5) before presentation
|
|
853
|
+
|
|
854
|
+
## [0.29.0] - 2025-12-30
|
|
855
|
+
|
|
856
|
+
### Changed
|
|
857
|
+
|
|
858
|
+
* Rename `.ace.example/` to `.ace-defaults/` for gem defaults directory
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
## [0.28.0] - 2025-12-29
|
|
862
|
+
|
|
863
|
+
### Changed
|
|
864
|
+
- Migrate file system operations from `Ace::Core::Molecules` to `Ace::Support::Fs::Molecules` for direct ace-support-fs usage
|
|
865
|
+
|
|
866
|
+
## [0.27.2] - 2025-12-28
|
|
867
|
+
|
|
868
|
+
### Added
|
|
869
|
+
- **Prioritize developer feedback in synthesis**: Human reviewer comments now receive special handling
|
|
870
|
+
- New "Developer Action Required" section appears before Consensus Findings
|
|
871
|
+
- Each unresolved comment gets its own subsection with exact text preserved
|
|
872
|
+
- Priority boosting ensures developer feedback is never ranked lower than Medium
|
|
873
|
+
- Added completeness requirements to prevent summarization of dev comments
|
|
874
|
+
- Added anti-patterns and verification checklist for developer feedback
|
|
875
|
+
|
|
876
|
+
## [0.27.1] - 2025-12-28
|
|
877
|
+
|
|
878
|
+
### Fixed
|
|
879
|
+
- **Auto-discover repo for inline PR comments**: When running `ace-review --pr <number>` (local PR number), inline code comments were silently not fetched because GraphQL requires owner/repo format. Now automatically discovers repository via `gh repo view --json owner,name`
|
|
880
|
+
- **Improved warning messages**: Upgraded warning messages from Debug to Warning level for better visibility when inline comments cannot be fetched
|
|
881
|
+
|
|
882
|
+
## [0.27.0] - 2025-12-28
|
|
883
|
+
|
|
884
|
+
### Added
|
|
885
|
+
- **ADR-022 Configuration Pattern**: Migrate to gem defaults from `.ace.example/` with user override support
|
|
886
|
+
- Load defaults from `.ace.example/review/config.yml` at runtime
|
|
887
|
+
- Deep merge with user config via ace-core cascade
|
|
888
|
+
- Follows "gem defaults < user config" priority
|
|
889
|
+
|
|
890
|
+
### Fixed
|
|
891
|
+
- **Debug Check Consistency**: Standardized `debug?` method to use `== "1"` pattern (was `== "true"`)
|
|
892
|
+
|
|
893
|
+
## [0.26.3] - 2025-12-27
|
|
894
|
+
|
|
895
|
+
### Changed
|
|
896
|
+
|
|
897
|
+
- **Add verification step to review workflows**: New Step 3 in `review.wf.md` and `review-pr.wf.md` requires verifying Critical/High priority action items before presenting to user
|
|
898
|
+
- Categorize items as VALID/INVALID/EDGE CASE/SUGGESTION
|
|
899
|
+
- Filter out false positives from LLM reviewers
|
|
900
|
+
- Prevents wasted investigation time on non-issues
|
|
901
|
+
|
|
902
|
+
## [0.26.2] - 2025-12-26
|
|
903
|
+
|
|
904
|
+
### Technical
|
|
905
|
+
|
|
906
|
+
- Add timeout guidance for Claude Code agents in workflow instructions (10-minute timeout, inline mode)
|
|
907
|
+
|
|
908
|
+
## [0.26.1] - 2025-12-26
|
|
909
|
+
|
|
910
|
+
### Fixed
|
|
911
|
+
|
|
912
|
+
- **Complete ace-git migration in SubjectExtractor**: Replace remaining ace-context references with ace-git equivalents
|
|
913
|
+
- `Ace::Context::Atoms::GitExtractor.tracking_branch` → `Ace::Git::Molecules::BranchReader.tracking_branch`
|
|
914
|
+
- `Ace::Context::Atoms::PrIdentifierParser.parse` → `Ace::Git::Atoms::PrIdentifierParser.parse`
|
|
915
|
+
- Fixes `uninitialized constant` errors when using ace-review after ace-context v0.16 migration
|
|
916
|
+
|
|
917
|
+
## [0.26.0] - 2025-12-26
|
|
918
|
+
|
|
919
|
+
### Changed
|
|
920
|
+
|
|
921
|
+
- **Migrate to ace-git**: Replace duplicated Git/GitHub code with ace-git dependency
|
|
922
|
+
- Removed `Ace::Review::Molecules::GitBranchReader` - now uses `Ace::Git::Molecules::BranchReader`
|
|
923
|
+
- Removed `Ace::Review::Atoms::TaskAutoDetector` - now uses `Ace::Git::Atoms::TaskPatternExtractor`
|
|
924
|
+
- Removed `Ace::Review::Molecules::PrIdentifierParser` - now uses `Ace::Git::Atoms::PrIdentifierParser`
|
|
925
|
+
- Added `ace-git (~> 0.3)` as runtime dependency
|
|
926
|
+
- Eliminates code duplication and centralizes Git operations in ace-git package
|
|
927
|
+
- **Fail fast on ace-git load**: Remove defensive begin/rescue around ace-git require since it's a hard dependency
|
|
928
|
+
|
|
929
|
+
### Fixed
|
|
930
|
+
|
|
931
|
+
- **GhCommentPoster fallback URL**: Fix URL construction when gh CLI output doesn't include URL
|
|
932
|
+
- Now correctly uses ace-git's combined `:repo` format (owner/repo) instead of legacy separate `:owner`/`:repo` keys
|
|
933
|
+
|
|
934
|
+
### Removed
|
|
935
|
+
|
|
936
|
+
- Deleted `lib/ace/review/molecules/git_branch_reader.rb`
|
|
937
|
+
- Deleted `lib/ace/review/atoms/task_auto_detector.rb`
|
|
938
|
+
- Deleted `lib/ace/review/molecules/pr_identifier_parser.rb`
|
|
939
|
+
- Deleted corresponding test files
|
|
940
|
+
- Removed `ace-git-diff` dependency (functionality migrated to ace-git)
|
|
941
|
+
|
|
942
|
+
### Added
|
|
943
|
+
|
|
944
|
+
- `mock_parse_result` test helper in test_helper.rb for consistent ParseResult mock creation
|
|
945
|
+
- Tests for GhCommentPoster.extract_comment_url fallback path scenarios
|
|
946
|
+
|
|
947
|
+
## [0.25.0] - 2025-12-17
|
|
948
|
+
|
|
949
|
+
### Added
|
|
950
|
+
|
|
951
|
+
* **Multiple `--subject` Flags**: Support combining multiple subject sources in a single review
|
|
952
|
+
* `ace-review --subject pr:77 --subject files:README.md --subject pr:79`
|
|
953
|
+
* Subjects are merged into unified ace-context config
|
|
954
|
+
* New `merge_typed_subject_configs()` public API for config merging
|
|
955
|
+
|
|
956
|
+
### Fixed
|
|
957
|
+
|
|
958
|
+
* **Nested Hash Merging**: Fixed `deep_merge_arrays` to recursively merge nested hashes
|
|
959
|
+
* Two typed subjects like `diff:HEAD~3` and `diff:HEAD` now correctly merge their nested `context.diffs` arrays
|
|
960
|
+
* Made merge operation immutable (no longer mutates input hashes)
|
|
961
|
+
|
|
962
|
+
### Changed
|
|
963
|
+
|
|
964
|
+
* **Simplified Subject Extraction**: Removed legacy content extraction paths
|
|
965
|
+
* Removed `extract(Array)` - arrays now handled via `merge_typed_subject_configs`
|
|
966
|
+
* Removed `extract_and_merge_multiple` - replaced by config passthrough
|
|
967
|
+
* Removed `subject-content.md` creation - all subjects use ace-context config passthrough
|
|
968
|
+
* Cleaner API: `parse_typed_subject_config` for single, `merge_typed_subject_configs` for multiple
|
|
969
|
+
|
|
970
|
+
### Technical
|
|
971
|
+
|
|
972
|
+
* Removed 17 tests for deprecated array extraction functionality
|
|
973
|
+
* Added 8 tests for `merge_typed_subject_configs` merged config validation
|
|
974
|
+
* Cleaned up `:subjects` intermediate key in CLI options
|
|
975
|
+
|
|
976
|
+
## [0.24.2] - 2025-12-16
|
|
977
|
+
|
|
978
|
+
### Fixed
|
|
979
|
+
|
|
980
|
+
* **PR Subject Parsing**: Refined context diff detection and PR subject parsing for more reliable PR reviews
|
|
981
|
+
* Improved handling of PR references in subject configurations
|
|
982
|
+
* Better validation of PR references before fetching
|
|
983
|
+
|
|
984
|
+
### Changed
|
|
985
|
+
|
|
986
|
+
* **ContentChecker Extraction**: Refactored diff merging logic into dedicated ContentChecker component
|
|
987
|
+
* Cleaner architecture for content validation
|
|
988
|
+
* Improved maintainability of review subject processing
|
|
989
|
+
|
|
990
|
+
### Technical
|
|
991
|
+
|
|
992
|
+
* Added test coverage for PR and section processing features
|
|
993
|
+
|
|
994
|
+
## [0.24.1] - 2025-12-16
|
|
995
|
+
|
|
996
|
+
### Fixed
|
|
997
|
+
- **pr: Array Consistency**: Changed `pr:` typed subject to return array format (`{"pr" => ["77"]}`) for consistency with `diffs:` and `files:` which are always arrays
|
|
998
|
+
|
|
999
|
+
## [0.24.0] - 2025-12-16
|
|
1000
|
+
|
|
1001
|
+
### Added
|
|
1002
|
+
- **Subprocess Timeout Protection**: Added 10-second timeout to `ace-taskflow` subprocess in `task:` subject resolution
|
|
1003
|
+
- Prevents indefinite hangs when task lookup is stuck
|
|
1004
|
+
- New `CommandTimeoutError` provides clear error message with command and timeout details
|
|
1005
|
+
- Uses Ruby's `Timeout` module wrapping `Open3.capture3`
|
|
1006
|
+
- **Dual Extraction Paths Documentation**: Added class-level documentation to `SubjectExtractor` explaining the two code paths
|
|
1007
|
+
- Direct extraction via `extract()` for immediate content
|
|
1008
|
+
- Config passthrough via `parse_typed_subject_config()` for optimized ReviewManager flow
|
|
1009
|
+
|
|
1010
|
+
### Fixed
|
|
1011
|
+
- **Comment Accuracy**: Updated misleading comment in `SubjectExtractor#use_ace_context`
|
|
1012
|
+
- Comment now correctly reflects that ace-context supports both flat keys and nested `context:` structure
|
|
1013
|
+
|
|
1014
|
+
## [0.23.2] - 2025-12-14
|
|
1015
|
+
|
|
1016
|
+
### Fixed
|
|
1017
|
+
- **Upstream bug fixes**: ace-llm dependency fixes benefit ace-review users
|
|
1018
|
+
- Zero-value generation parameters (`temperature: 0`) now preserved in MistralClient, AnthropicClient, GoogleClient
|
|
1019
|
+
- All LLM clients standardized with GENERATION_KEYS pattern for consistency
|
|
1020
|
+
|
|
1021
|
+
## [0.23.1] - 2025-12-14
|
|
1022
|
+
|
|
1023
|
+
### Changed
|
|
1024
|
+
- **Workflow Simplification**: Simplified `review.wf.md` to match `review-pr.wf.md` pattern with full cycle workflow (review → plan → confirm → implement)
|
|
1025
|
+
|
|
1026
|
+
## [0.23.0] - 2025-12-08
|
|
1027
|
+
|
|
1028
|
+
### Added
|
|
1029
|
+
- **PR Comment Developer Feedback**: Extract developer feedback from PR comments and inline review threads
|
|
1030
|
+
- New `--[no-]pr-comments` flag to control inclusion (default: true for `--pr` reviews)
|
|
1031
|
+
- Creates `review-dev-feedback.md` report alongside LLM reviews
|
|
1032
|
+
- Includes issue comments, review comments, and approval/change-request state
|
|
1033
|
+
- Integrated into synthesis reports when multi-model review is used
|
|
1034
|
+
- **GhCommentResolver**: New molecule to reply to PRs and resolve review threads
|
|
1035
|
+
- `reply` - Post comment with commit reference
|
|
1036
|
+
- `resolve_thread` - Resolve review threads via GitHub GraphQL API
|
|
1037
|
+
- `reply_and_resolve` - Combined operation for workflow automation
|
|
1038
|
+
- **Empty-Body Review Support**: Approvals and change-requests without body text now included with placeholder
|
|
1039
|
+
|
|
1040
|
+
### Fixed
|
|
1041
|
+
- **Thread ID Validation**: Added format validation (`PRRT_xxx` pattern) to prevent GraphQL injection
|
|
1042
|
+
- **Markdown Table Safety**: Escape pipe characters in table preview to prevent broken rendering
|
|
1043
|
+
|
|
1044
|
+
### Changed
|
|
1045
|
+
- **Pagination Warnings**: Warn when GraphQL results are truncated (>100 threads or >50 comments per thread)
|
|
1046
|
+
- **Comment Fetch Failure Logging**: Log warning instead of silent failure when PR comment fetch fails
|
|
1047
|
+
- **Table Readability**: Wrap IDs in backticks for improved readability in markdown tables
|
|
1048
|
+
|
|
1049
|
+
### Documentation
|
|
1050
|
+
- **README Updated**: Document `--[no-]pr-comments` flag and developer feedback feature
|
|
1051
|
+
- **CLI Reference**: Added `--[no-]pr-comments` to GitHub PR options section
|
|
1052
|
+
|
|
1053
|
+
## [0.22.0] - 2025-12-03
|
|
1054
|
+
|
|
1055
|
+
### Added
|
|
1056
|
+
- **Auto-Save Feature**: Automatically save reviews to task directories based on git branch name
|
|
1057
|
+
- Enable with `auto_save: true` in config
|
|
1058
|
+
- Configurable branch patterns via `auto_save_branch_patterns`
|
|
1059
|
+
- Release directory fallback via `auto_save_release_fallback`
|
|
1060
|
+
- Disable per-command with `--no-auto-save` flag
|
|
1061
|
+
- **Multi-Model Auto-Save**: Individual model reports now saved to task directory (not just synthesis)
|
|
1062
|
+
- **Auto-Save Integration Tests**: Comprehensive test coverage for branch detection and task resolution
|
|
1063
|
+
|
|
1064
|
+
### Fixed
|
|
1065
|
+
- **Multi-Model Auto-Save**: All model reports now saved to task directory, matching explicit `--task` behavior
|
|
1066
|
+
|
|
1067
|
+
### Technical
|
|
1068
|
+
- Remove unused `project_root` variable in TaskReportSaver
|
|
1069
|
+
- Stabilize GitBranchReader tests with Open3 mocking and real detached HEAD test
|
|
1070
|
+
|
|
1071
|
+
## [0.21.0] - 2025-12-03
|
|
1072
|
+
|
|
1073
|
+
### Added
|
|
1074
|
+
- **Multi-Model Report Synthesis**: Automatically synthesize reviews from multiple LLM models
|
|
1075
|
+
- New `ace-review synthesize --session <dir>` standalone command
|
|
1076
|
+
- Auto-triggered after multi-model execution when 2+ models succeed
|
|
1077
|
+
- Identifies consensus findings, strong recommendations, unique insights, and conflicting views
|
|
1078
|
+
- Produces prioritized action items combining all model feedback
|
|
1079
|
+
- Configurable synthesis model via `--synthesis-model` or `synthesis.model` config
|
|
1080
|
+
- Disable with `--no-synthesize` flag or `synthesis.enabled: false` config
|
|
1081
|
+
- **ReportSynthesizer Molecule**: LLM-powered report consolidation with structured prompt
|
|
1082
|
+
- **Synthesis Prompt Template**: `handbook/prompts/synthesis-review-reports.system.md`
|
|
1083
|
+
- **E2E Integration Test**: Full test coverage for multi-model auto-synthesis flow
|
|
1084
|
+
|
|
1085
|
+
### Changed
|
|
1086
|
+
- **Default Synthesis Model**: `claude:sonnet` (was `google:gemini-2.5-flash`)
|
|
1087
|
+
|
|
1088
|
+
### Documentation
|
|
1089
|
+
- **Configuration Defaults**: Clarify gem defaults in README
|
|
1090
|
+
- Default preset is `code` (basic single-model review)
|
|
1091
|
+
- Default `auto_execute` is `false` (prompts for confirmation)
|
|
1092
|
+
- Projects can override in their `.ace/review/config.yml`
|
|
1093
|
+
|
|
1094
|
+
## [0.20.6] - 2025-12-02
|
|
1095
|
+
|
|
1096
|
+
### Fixed
|
|
1097
|
+
- **SlugGenerator**: Remove trailing hyphen after max_length truncation
|
|
1098
|
+
|
|
1099
|
+
### Documentation
|
|
1100
|
+
- **Multi-Model Reviews**: Add section documenting CLI usage, preset config, and output structure
|
|
1101
|
+
- **Preset Resolution Chain**: Document preset lookup order (project → gem defaults)
|
|
1102
|
+
|
|
1103
|
+
## [0.20.5] - 2025-12-02
|
|
1104
|
+
|
|
1105
|
+
### Technical
|
|
1106
|
+
- Update documentation to use `code-pr` preset instead of deprecated `pr` preset
|
|
1107
|
+
|
|
1108
|
+
## [0.20.4] - 2025-12-02
|
|
1109
|
+
|
|
1110
|
+
### Added
|
|
1111
|
+
- **LLM Timeout**: Configurable timeout (default: 300s) to prevent indefinite hangs
|
|
1112
|
+
- Set via `defaults.llm_timeout` in config
|
|
1113
|
+
- **Model Name Validation**: CLI validates model names contain only safe characters
|
|
1114
|
+
|
|
1115
|
+
### Fixed
|
|
1116
|
+
- **Example Config**: Default preset changed from 'pr' to 'code' (existing preset)
|
|
1117
|
+
|
|
1118
|
+
## [0.20.3] - 2025-12-02
|
|
1119
|
+
|
|
1120
|
+
### Fixed
|
|
1121
|
+
- **Config Loading**: Use correct `Ace::Core.get` API to load `.ace/review/config.yml`
|
|
1122
|
+
- Was using `Ace::Core.config.get("ace", "review")` which returned nil
|
|
1123
|
+
- Now `defaults.preset` and other settings are properly read from config
|
|
1124
|
+
|
|
1125
|
+
## [0.20.2] - 2025-12-02
|
|
1126
|
+
|
|
1127
|
+
### Changed
|
|
1128
|
+
- **Config-based Preset Default**: `defaults.preset` in config now used instead of hardcoded "pr" fallback
|
|
1129
|
+
- CLI `--preset NAME` overrides config default
|
|
1130
|
+
- Helpful error message when no preset specified and no config default set
|
|
1131
|
+
|
|
1132
|
+
## [0.20.1] - 2025-12-02
|
|
1133
|
+
|
|
1134
|
+
### Added
|
|
1135
|
+
- **Config-based Settings**: Move runtime options from ENV to config file
|
|
1136
|
+
- `max_concurrent_models` - configurable in `defaults` section
|
|
1137
|
+
- `auto_execute` - skip confirmation prompt when set to `true`
|
|
1138
|
+
- **Improved CLI Output**: Task directory output now shows directory once, then lists filenames
|
|
1139
|
+
|
|
1140
|
+
### Changed
|
|
1141
|
+
- **Preset Consolidation**: Replace duplicated `pr.yml` with DRY `code-pr.yml` extending `code`
|
|
1142
|
+
- **Concurrency Guard**: Clamp `max_concurrent_models` to minimum 1 to prevent crashes
|
|
1143
|
+
- **Input Validation**: Filter blank entries from comma-separated model lists
|
|
1144
|
+
|
|
1145
|
+
## [0.20.0] - 2025-12-02
|
|
1146
|
+
|
|
1147
|
+
### Added
|
|
1148
|
+
- **Multi-Model Concurrent Execution**: Run code reviews against multiple LLM models simultaneously
|
|
1149
|
+
- New `--model` flag accepts comma-separated models or multiple flags (e.g., `--model claude:opus,gpro`)
|
|
1150
|
+
- Configurable concurrency via `ACE_REVIEW_MAX_CONCURRENT_MODELS` environment variable (default: 3)
|
|
1151
|
+
- Thread-safe parallel execution with progress indicators
|
|
1152
|
+
- Individual model failures don't stop other executions
|
|
1153
|
+
- Preset support via `models:` array in YAML configuration
|
|
1154
|
+
|
|
1155
|
+
### Fixed
|
|
1156
|
+
- **Output File Handling**: Pass `output_file` parameter to LlmExecutor for correct file creation
|
|
1157
|
+
- **Effective Model Logic**: `effective_model` now respects `models` array for metadata and filenames
|
|
1158
|
+
- **Task Report Filenames**: Use full model slug in filenames to prevent overwrites when using same-provider models
|
|
1159
|
+
- **Task Path Propagation**: Fix result key from `:task_path` to `:path` so saved locations surface in CLI output
|
|
1160
|
+
|
|
1161
|
+
## [0.19.2] - 2025-12-01
|
|
1162
|
+
|
|
1163
|
+
### Fixed
|
|
1164
|
+
- **Task Integration Fixes**: Multiple fixes to ensure `--task` flag works correctly
|
|
1165
|
+
- Add missing `require` for `ace/taskflow/organisms/task_manager` in TaskResolver
|
|
1166
|
+
- Pass actual review file path to TaskReportSaver instead of session directory
|
|
1167
|
+
- Add defensive guard for nil/empty `task[:path]` to prevent crashes
|
|
1168
|
+
|
|
1169
|
+
### Changed
|
|
1170
|
+
- **Test Consistency**: Refactored TaskResolver tests to use `Minitest::Mock` consistently
|
|
1171
|
+
|
|
1172
|
+
## [0.19.1] - 2025-11-29
|
|
1173
|
+
|
|
1174
|
+
### Fixed
|
|
1175
|
+
- Fix PR diff generation to use actual PR content instead of origin...HEAD when using `--pr` flag with presets
|
|
1176
|
+
- Remove problematic default subject from `code-pr.yml` preset that contained `origin...HEAD`
|
|
1177
|
+
- Add comprehensive integration tests for PR diff generation behavior
|
|
1178
|
+
|
|
1179
|
+
## [0.19.0] - 2025-11-27
|
|
1180
|
+
|
|
1181
|
+
### Added
|
|
1182
|
+
- **Specification Review Focus**: New `scope/spec` focus for reviewing specifications and proposals
|
|
1183
|
+
- Goal clarity validation (single objective, no ambiguous terms, clear success criteria)
|
|
1184
|
+
- Usage expectations analysis (target audience, scenarios, inputs/outputs)
|
|
1185
|
+
- Test strategy evaluation (testable criteria, edge cases, validation approach)
|
|
1186
|
+
- Completeness checking (required sections, dependencies, assumptions)
|
|
1187
|
+
- Implementation feasibility assessment (achievable requirements, realistic estimates)
|
|
1188
|
+
- Consistency and traceability verification
|
|
1189
|
+
- **Spec Preset**: New `spec.yml` preset for specification reviews
|
|
1190
|
+
- Default subject: `origin/main...HEAD` filtered to `**/*.s.md` (task specs)
|
|
1191
|
+
- Combines spec focus with standard format and tone guidelines
|
|
1192
|
+
|
|
1193
|
+
## [0.18.0] - 2025-11-17
|
|
1194
|
+
|
|
1195
|
+
### Added
|
|
1196
|
+
- **GitHub Pull Request Review Mode**: Support for reviewing GitHub pull requests directly
|
|
1197
|
+
- New `--pr` option to specify pull request identifier (number, URL, or owner/repo#number)
|
|
1198
|
+
- `--post-comment` option to automatically post review as GitHub comment (requires `gh` CLI)
|
|
1199
|
+
- `--dry-run` option to preview comment without posting
|
|
1200
|
+
- Multiple PR identifier formats supported: `123`, `https://github.com/owner/repo/pull/123`, `owner/repo#123`
|
|
1201
|
+
- Automatic repository detection from git remote when using PR number only
|
|
1202
|
+
- Comprehensive error handling for authentication, network issues, and PR state
|
|
1203
|
+
- Retry logic with exponential backoff (capped at 32 seconds) for network resilience
|
|
1204
|
+
- PR state validation (prevents posting to closed/merged PRs)
|
|
1205
|
+
- Rich PR metadata included in review context (title, author, branch names, state)
|
|
1206
|
+
- Secure comment posting via tempfiles (prevents command injection)
|
|
1207
|
+
- Review cache saved to `.cache/ace-review/sessions/review-{timestamp}/`
|
|
1208
|
+
- **New Molecules**:
|
|
1209
|
+
- `GhCliExecutor`: Safe execution of GitHub CLI commands with timeout and error handling
|
|
1210
|
+
- `PrIdentifierParser`: Parse and normalize PR identifiers to owner/repo/number format
|
|
1211
|
+
- `GhPrFetcher`: Fetch PR diffs and metadata with retry logic
|
|
1212
|
+
- `GhCommentPoster`: Post review comments to GitHub with dry-run support
|
|
1213
|
+
- **New Atoms**:
|
|
1214
|
+
- `RetryWithBackoff`: Reusable retry logic with exponential backoff for operations with transient failures
|
|
1215
|
+
- **New Error Classes**: Specific errors for GitHub integration (`GhCliNotInstalledError`, `GhAuthenticationError`, `PrNotFoundError`, `PrStateError`, `GhNetworkError`)
|
|
1216
|
+
- **CLI Options**:
|
|
1217
|
+
- `--gh-timeout <seconds>`: Configure timeout for GitHub CLI operations (default: 30 seconds)
|
|
1218
|
+
- **Markdown Sanitization**: LLM review output is now sanitized and wrapped in collapsible `<details>` tags
|
|
1219
|
+
- Automatically closes unclosed code fences to prevent broken GitHub comment rendering
|
|
1220
|
+
- Wraps review content in expandable section for better PR comment readability
|
|
1221
|
+
- **README Documentation**: Comprehensive guide for GitHub PR review mode with examples, timeout configuration, and troubleshooting
|
|
1222
|
+
|
|
1223
|
+
### Changed
|
|
1224
|
+
- **Default Timeout**: Reduced default timeout for GitHub CLI operations from 600 seconds (10 minutes) to 30 seconds
|
|
1225
|
+
- Provides faster failure feedback for network issues
|
|
1226
|
+
- Users can override with `--gh-timeout` option for large PRs or slow connections
|
|
1227
|
+
- **Retry Logic Architecture**: Extracted retry logic from `GhPrFetcher` into reusable `RetryWithBackoff` atom
|
|
1228
|
+
- Improves testability and code reusability
|
|
1229
|
+
- Cleaner separation of concerns following ATOM architecture
|
|
1230
|
+
|
|
1231
|
+
### Fixed
|
|
1232
|
+
- **Architectural Compliance**: Moved `GhCliExecutor` from `atoms/` to `molecules/` to properly reflect its side effects (shell command execution)
|
|
1233
|
+
- **Test Coverage**: Uncommented and fixed previously failing tests in `gh_pr_fetcher_test.rb`
|
|
1234
|
+
- Fixed complex mocking chain issues by extracting retry logic into testable atom
|
|
1235
|
+
- All failure path and retry exhaustion tests now pass
|
|
1236
|
+
|
|
1237
|
+
## [0.17.0] - 2025-11-17
|
|
1238
|
+
|
|
1239
|
+
### Added
|
|
1240
|
+
- **Task Integration**: New `--task` flag to save review reports to task directories
|
|
1241
|
+
- Accepts task references in multiple formats: `114`, `task.114`, `v.0.9.0+114`
|
|
1242
|
+
- Reports saved to `<task-dir>/reviews/` with timestamped filenames
|
|
1243
|
+
- Filename format: `YYYYMMDD-HHMMSS-{provider}-{preset}-review.md`
|
|
1244
|
+
- Graceful degradation when ace-taskflow unavailable or task not found
|
|
1245
|
+
- Created `TaskResolver` molecule for task reference resolution
|
|
1246
|
+
- Created `TaskReportSaver` molecule for report persistence
|
|
1247
|
+
- Updated `ReviewManager` organism to orchestrate task-aware saving
|
|
1248
|
+
- Added ace-taskflow ~> 0.19 as runtime dependency
|
|
1249
|
+
|
|
1250
|
+
## [0.16.1] - 2025-11-15
|
|
1251
|
+
|
|
1252
|
+
### Fixed
|
|
1253
|
+
- **Git Worktree Cache Path Resolution**: Fixed cache directory creation to use project root instead of current working directory
|
|
1254
|
+
- Resolves issue where caches were created in deeply nested, incorrect paths in git worktrees (e.g., `/path/.ace-wt/task.094/ace-context/.cache/ace-review/sessions/`)
|
|
1255
|
+
- Modified `ReviewManager#create_cache_directory` to use `Ace::Core::Molecules::ProjectRootFinder.find_or_current`
|
|
1256
|
+
- Added `require "ace/core/molecules/project_root_finder"` to review_manager.rb
|
|
1257
|
+
- Each worktree now maintains its own cache at `.cache/ace-review/sessions/` relative to worktree root
|
|
1258
|
+
- Updated tests to expect cache at project root location
|
|
1259
|
+
- All 161 ace-review tests pass with no breaking changes to main repo usage
|
|
1260
|
+
- Transparent fix - tool "just works" in worktrees without user configuration
|
|
1261
|
+
|
|
1262
|
+
### Changed
|
|
1263
|
+
- **Dependencies**: Updated to use ace-support-core ~> 0.10.1 for worktree support
|
|
1264
|
+
|
|
1265
|
+
## [0.16.0] - 2025-11-13
|
|
1266
|
+
|
|
1267
|
+
### Added
|
|
1268
|
+
- **Preset Composition**: Support for composing review presets from reusable base configurations
|
|
1269
|
+
- New `presets:` array at root level for preset composition
|
|
1270
|
+
- Recursive preset loading with circular dependency detection (max depth: 10)
|
|
1271
|
+
- Smart merging strategies: arrays concatenate+deduplicate, hashes deep merge, scalars last-wins
|
|
1272
|
+
- **Composition order**: Base presets are loaded first, then the composing preset (last wins for scalars)
|
|
1273
|
+
- Full backward compatibility - existing presets without `presets:` key continue to work unchanged
|
|
1274
|
+
- New `PresetValidator` atom for validation and circular dependency detection
|
|
1275
|
+
- Preset name validation (prevents path traversal, enforces length limits)
|
|
1276
|
+
- Enhanced `PresetManager` molecule with `load_preset_with_composition` method
|
|
1277
|
+
- Comprehensive test coverage: 23 validator tests, 22 manager composition tests, 11 integration tests
|
|
1278
|
+
- **Example Preset Refactoring**: New DRY preset structure
|
|
1279
|
+
- `code.yml` base preset with common review instructions
|
|
1280
|
+
- `code-pr.yml` composed preset for pull request reviews
|
|
1281
|
+
- `code-wip.yml` composed preset for work-in-progress reviews
|
|
1282
|
+
|
|
1283
|
+
### Changed
|
|
1284
|
+
- **PresetManager**: Enhanced to support preset composition while maintaining backward compatibility
|
|
1285
|
+
- Recursive loading with visited set tracking
|
|
1286
|
+
- Deep merge support for nested hash structures
|
|
1287
|
+
- Array deduplication during composition
|
|
1288
|
+
- Intermediate caching prevents redundant composition (particularly beneficial for deeply nested presets)
|
|
1289
|
+
- Standardized internal metadata format (string keys for consistency)
|
|
1290
|
+
- Deep metadata stripping from nested structures
|
|
1291
|
+
- Added `strip_composition_metadata` helper method for DRY code
|
|
1292
|
+
- Performance instrumentation with debug mode support
|
|
1293
|
+
|
|
1294
|
+
### Technical
|
|
1295
|
+
- Integrated test suite performance optimizations from v0.15.1
|
|
1296
|
+
- Updated test patterns to match new test helper structure
|
|
1297
|
+
- All 56 tests passing (23 validator + 22 manager + 11 integration)
|
|
1298
|
+
|
|
1299
|
+
## [0.15.1] - 2025-11-11
|
|
1300
|
+
|
|
1301
|
+
### Technical
|
|
1302
|
+
- Optimize test suite performance with mocking (2.2x faster, 2.03s → 0.93s)
|
|
1303
|
+
- Add `Ace::Context.load_auto()` mocking in test_helper
|
|
1304
|
+
- Add `GitExtractor` mocking (staged_diff, working_diff, tracking_branch)
|
|
1305
|
+
- Remove real git operations from integration tests
|
|
1306
|
+
- Fix test issues (super calls, initialization timing, assertions)
|
|
1307
|
+
- All 108 tests passing (16 atoms + 53 molecules + 29 organisms + 10 integration)
|
|
1308
|
+
|
|
1309
|
+
## [0.15.0] - 2025-11-10
|
|
1310
|
+
|
|
1311
|
+
### Added
|
|
1312
|
+
- **Section-Based Content Organization**: Support for `instructions.context.sections` format
|
|
1313
|
+
- Integration with ace-context v0.17.5+ section-based content organization
|
|
1314
|
+
- Structured organization of review content into semantic sections (focus, style, diff, etc.)
|
|
1315
|
+
- All built-in presets (pr, code, security, docs, performance, ruby-atom, agents, test) now use sections
|
|
1316
|
+
- PresetManager enhanced to preserve `instructions` field through resolution chain
|
|
1317
|
+
- New format detection helper for automatic backward compatibility
|
|
1318
|
+
|
|
1319
|
+
### Changed
|
|
1320
|
+
- **ReviewManager**: Enhanced to support both legacy `system_prompt` and new `instructions` formats
|
|
1321
|
+
- Automatic format detection ensures seamless migration
|
|
1322
|
+
- New `create_system_context_file_with_instructions()` method for section-based contexts
|
|
1323
|
+
- Full backward compatibility maintained for existing user presets
|
|
1324
|
+
- **CLI Output**: Updated to properly display system and user prompt file paths
|
|
1325
|
+
- Shows both `system.prompt.md` and `user.prompt.md` file paths
|
|
1326
|
+
- Provides correct `ace-llm query` command with `--file` and `--context` parameters
|
|
1327
|
+
- Maintains backward compatibility with legacy `prompt_file` format
|
|
1328
|
+
|
|
1329
|
+
### Documentation
|
|
1330
|
+
- **README.md**: Added comprehensive documentation for new section-based format
|
|
1331
|
+
- Examples of `instructions` format with section organization
|
|
1332
|
+
- Legacy format documentation for backward compatibility
|
|
1333
|
+
- Migration guidance and best practices
|
|
1334
|
+
|
|
1335
|
+
### Testing
|
|
1336
|
+
- **Comprehensive Test Coverage**: Added 6 new test methods for section-based functionality
|
|
1337
|
+
- Format detection validation
|
|
1338
|
+
- Section-based context file creation
|
|
1339
|
+
- Integration testing for both formats
|
|
1340
|
+
- Backward compatibility verification
|
|
1341
|
+
- All tests passing with 100% success rate
|
|
1342
|
+
|
|
1343
|
+
## [0.14.0] - 2025-11-05
|
|
1344
|
+
|
|
1345
|
+
### 🚀 **Major Performance Upgrade - Ruby API Migration & Context Fix**
|
|
1346
|
+
|
|
1347
|
+
### Changed
|
|
1348
|
+
- **Architecture**: Complete migration from CLI subprocess to Ruby API calls
|
|
1349
|
+
- Replaced `ace-llm-query` subprocess calls with direct `Ace::LLM::QueryInterface.query()` calls
|
|
1350
|
+
- Eliminated all temp file creation and subprocess overhead
|
|
1351
|
+
- Achieved 98-99% reduction in LLM call latency (70-135ms → 1-2ms)
|
|
1352
|
+
|
|
1353
|
+
### Added
|
|
1354
|
+
- **Ruby API Integration**: Direct ace-llm Ruby library usage
|
|
1355
|
+
- No more temp file management for prompts
|
|
1356
|
+
- Rich response metadata (usage stats, model info, provider details)
|
|
1357
|
+
- Structured exception-based error handling
|
|
1358
|
+
- Enhanced session files with `llm_metadata.yml`
|
|
1359
|
+
|
|
1360
|
+
- **Performance Benefits**:
|
|
1361
|
+
- Eliminated process spawning overhead
|
|
1362
|
+
- Removed shell interpretation delays
|
|
1363
|
+
- Native Ruby object handling (no JSON parsing)
|
|
1364
|
+
- Direct method calls with immediate response
|
|
1365
|
+
|
|
1366
|
+
- **Enhanced Error Handling**:
|
|
1367
|
+
- Specific exception types (`Ace::LLM::Error`, `Ace::LLM::ProviderError`, etc.)
|
|
1368
|
+
- Structured error responses with error categorization
|
|
1369
|
+
- Better debugging information with error types
|
|
1370
|
+
- Graceful handling of API vs CLI availability
|
|
1371
|
+
|
|
1372
|
+
- **Rich Metadata**:
|
|
1373
|
+
- Token usage information (`usage` field)
|
|
1374
|
+
- Model information and provider details
|
|
1375
|
+
- Response timing and metadata
|
|
1376
|
+
- Session persistence of LLM interaction data
|
|
1377
|
+
|
|
1378
|
+
### Technical
|
|
1379
|
+
- **Dependency**: Added `ace-llm (~> 0.1)` runtime dependency
|
|
1380
|
+
- **API Compatibility**: Maintains identical external interface
|
|
1381
|
+
- **Backward Compatibility**: All existing CLI options and workflows unchanged
|
|
1382
|
+
- **Error Recovery**: Enhanced error messages and recovery paths
|
|
1383
|
+
|
|
1384
|
+
### Fixed
|
|
1385
|
+
- **Context Generation Bug**: Fixed empty user.context.md files that had no subject configuration
|
|
1386
|
+
- Updated `create_user_context_file` method to properly handle subject configuration fallbacks
|
|
1387
|
+
- Eliminated redundant subject.md file creation (subject now handled via ace-context workflow)
|
|
1388
|
+
- Enhanced configuration flow: explicit config → preset config → default "staged" configuration
|
|
1389
|
+
- Improved handling of file paths, preset shortcuts, and structured configurations
|
|
1390
|
+
|
|
1391
|
+
### Performance
|
|
1392
|
+
- **98-99% faster** LLM calls
|
|
1393
|
+
- **Zero temp file overhead**
|
|
1394
|
+
- **Direct Ruby object responses**
|
|
1395
|
+
- **Immediate availability** of results and metadata
|
|
1396
|
+
|
|
1397
|
+
### Technical
|
|
1398
|
+
- **Streamlined Session Structure**: Removed subject.md and context.md files, now using ace-context workflow
|
|
1399
|
+
- **Enhanced Configuration Handling**: Better fallback logic for subject configuration processing
|
|
1400
|
+
- **Updated Tests**: Modified test expectations to match new v0.14.0 session structure
|
|
1401
|
+
|
|
1402
|
+
## [0.13.1] - 2025-11-05
|
|
1403
|
+
|
|
1404
|
+
### Fixed
|
|
1405
|
+
- **Implementation Gap**: Actually completed the v0.13.0 architectural changes that were documented but not fully implemented
|
|
1406
|
+
- **Removed Legacy Code**: Eliminated all prompt splitting logic and fallback methods as claimed in v0.13.0 CHANGELOG
|
|
1407
|
+
- **Updated Tests**: Fixed test expectations to match new architecture and removed tests for removed methods
|
|
1408
|
+
- **File Structure**: Corrected session file naming to use `system.prompt.md` and `user.prompt.md`
|
|
1409
|
+
- **CLI Integration**: Fixed `undefined method 'subject_config'` error in ReviewManager parameter naming
|
|
1410
|
+
- **ace-llm-query Interface**: Updated to use correct `--system` and `--prompt` flags instead of non-existent `--user` flag
|
|
1411
|
+
|
|
1412
|
+
### Technical
|
|
1413
|
+
- **Code Cleanup**: Removed 214 lines of legacy code while maintaining functionality
|
|
1414
|
+
- **Syntax Validation**: All Ruby files now pass syntax validation
|
|
1415
|
+
- **Architecture Alignment**: Implementation now matches documented CHANGELOG claims
|
|
1416
|
+
|
|
1417
|
+
## [0.13.0] - 2025-11-05
|
|
1418
|
+
|
|
1419
|
+
### 🎯 **Major Architecture Fix - System/User Prompt Separation**
|
|
1420
|
+
|
|
1421
|
+
### Changed
|
|
1422
|
+
- **Architecture**: Complete overhaul of prompt generation and processing
|
|
1423
|
+
- Removed arbitrary prompt splitting (`split_and_save_prompts` method)
|
|
1424
|
+
- Removed combined prompt generation (`build_review_prompt` method)
|
|
1425
|
+
- Implemented proper ace-context integration throughout
|
|
1426
|
+
- Fixed fundamental misunderstanding of system vs user prompts
|
|
1427
|
+
|
|
1428
|
+
### Added
|
|
1429
|
+
- **System Prompt Generation**:
|
|
1430
|
+
- Creates `system.context.md` with YAML frontmatter containing prompt:// references
|
|
1431
|
+
- Integrates context configuration (e.g., "project" → presets: ["project"])
|
|
1432
|
+
- Uses ace-context to generate `system.prompt.md`
|
|
1433
|
+
- Proper base system instructions included after frontmatter
|
|
1434
|
+
|
|
1435
|
+
- **User Prompt Generation**:
|
|
1436
|
+
- Creates `user.context.md` with subject configuration
|
|
1437
|
+
- Supports commands, files, diffs, and inline content from presets
|
|
1438
|
+
- Uses ace-context to generate `user.prompt.md`
|
|
1439
|
+
- Handles all subject types from preset configurations
|
|
1440
|
+
|
|
1441
|
+
- **LLM Integration**:
|
|
1442
|
+
- LlmExecutor requires separate system and user prompts
|
|
1443
|
+
- New format: `--system-prompt` and `--user-prompt` flags via ace-llm-query
|
|
1444
|
+
- Removed legacy single prompt support for cleaner architecture
|
|
1445
|
+
|
|
1446
|
+
- **Session Structure**:
|
|
1447
|
+
```
|
|
1448
|
+
session/
|
|
1449
|
+
├── system.context.md # ace-context input (system prompt config)
|
|
1450
|
+
├── system.prompt.md # ace-context output (generated system prompt)
|
|
1451
|
+
├── user.context.md # ace-context input (user prompt config)
|
|
1452
|
+
├── user.prompt.md # ace-context output (generated user prompt)
|
|
1453
|
+
├── subject.md # Extracted subject content
|
|
1454
|
+
├── context.md # Legacy context content
|
|
1455
|
+
├── metadata.yml # Session metadata
|
|
1456
|
+
└── review.md # LLM output
|
|
1457
|
+
```
|
|
1458
|
+
|
|
1459
|
+
### Fixed
|
|
1460
|
+
- **Configuration Structure**: Renamed `prompt_composition` → `system_prompt` in all preset configs
|
|
1461
|
+
- **Preset Parsing**: Updated all preset parsing logic to use new structure
|
|
1462
|
+
- **Backward Compatibility**: All existing preset configurations continue to work unchanged
|
|
1463
|
+
- **Ruby Syntax**: All syntax errors resolved and code validated
|
|
1464
|
+
|
|
1465
|
+
### Technical
|
|
1466
|
+
- **YAML Frontmatter**: Follows ace-context patterns exactly with proper context structure
|
|
1467
|
+
- **Error Handling**: Comprehensive fallback mechanisms for ace-context failures
|
|
1468
|
+
- **Cache Management**: Enhanced cache-first storage model with proper file organization
|
|
1469
|
+
- **Token Optimization**: Potential to reduce token usage through ace-context processing
|
|
1470
|
+
|
|
1471
|
+
### Breaking Changes
|
|
1472
|
+
- **LlmExecutor API**: Removed legacy single prompt support, now requires system_prompt and user_prompt parameters
|
|
1473
|
+
- **ReviewManager**: Removed fallback prompt generation methods, ace-context is now required
|
|
1474
|
+
- **Session Structure**: Updated file naming from legacy `prompt.md` to `system.prompt.md` and `user.prompt.md`
|
|
1475
|
+
|
|
1476
|
+
## [0.12.0] - 2025-11-05
|
|
1477
|
+
|
|
1478
|
+
### Added
|
|
1479
|
+
- **Context.md Pattern**: Adopt ace-docs context.md pattern for improved reproducibility
|
|
1480
|
+
- ContextComposer molecule generates context.md with YAML frontmatter
|
|
1481
|
+
- ContextExtractor delegates to ContextComposer for ace-context integration
|
|
1482
|
+
- Cache-first storage with `.cache/ace-review/sessions/` directory
|
|
1483
|
+
- Context.md files saved with embedded files and ace-context configuration
|
|
1484
|
+
|
|
1485
|
+
### Changed
|
|
1486
|
+
- **Storage Model**: Implement cache-first storage approach
|
|
1487
|
+
- Working files stored in cache directory instead of release folder
|
|
1488
|
+
- Final reports copied to release folder `.ace-taskflow/v.*/reviews/`
|
|
1489
|
+
- Removed `.tmp` extensions from all session files
|
|
1490
|
+
- Split prompts into `prompt-system.md` and `prompt-user.md` files
|
|
1491
|
+
|
|
1492
|
+
### Enhanced
|
|
1493
|
+
- **Ace-Context Integration**: Full integration with ace-context via `load_file_as_preset()`
|
|
1494
|
+
- Follows ace-docs pattern exactly for consistency
|
|
1495
|
+
- Support for presets, files, diffs, and commands in YAML frontmatter
|
|
1496
|
+
- Fail-fast error handling with clear error messages
|
|
1497
|
+
- Backward compatible CLI interface
|
|
1498
|
+
|
|
1499
|
+
### Technical
|
|
1500
|
+
- **ContextComposer**: New molecule for context.md generation
|
|
1501
|
+
- **ReviewManager**: Updated with cache-first storage and prompt splitting
|
|
1502
|
+
- **ContextExtractor**: Refactored to delegate to ContextComposer
|
|
1503
|
+
- **Comprehensive Tests**: Added test coverage for all new functionality
|
|
1504
|
+
- **Backward Compatibility**: All existing presets work without modification
|
|
1505
|
+
|
|
1506
|
+
## [0.11.2] - 2025-11-01
|
|
1507
|
+
|
|
1508
|
+
### Changed
|
|
1509
|
+
|
|
1510
|
+
- **Dependency Migration**: Updated to use renamed infrastructure gems
|
|
1511
|
+
- Changed dependency from `ace-core` to `ace-support-core`
|
|
1512
|
+
- Changed dependency from `ace-test-support`
|
|
1513
|
+
- Part of ecosystem-wide naming convention alignment for infrastructure gems
|
|
1514
|
+
|
|
1515
|
+
## [0.11.1]
|
|
1516
|
+
- 2025-10-24
|
|
1517
|
+
|
|
1518
|
+
### Fixed
|
|
1519
|
+
- Address PR #3 review issues for ace-git-diff integration
|
|
1520
|
+
|
|
1521
|
+
### Technical
|
|
1522
|
+
- Standardize diff/diffs API documentation to ace-git-diff format
|
|
1523
|
+
- Add comprehensive integration and unit tests
|
|
1524
|
+
- Update all presets and workflow instructions with standardized diff format
|
|
1525
|
+
|
|
1526
|
+
## [0.11.0] - 2025-10-23
|
|
1527
|
+
|
|
1528
|
+
### Changed
|
|
1529
|
+
- Integrated with ace-git-diff for unified diff operations
|
|
1530
|
+
- SubjectExtractor now handles new diff: format with ranges
|
|
1531
|
+
- All example presets updated to use diff: key instead of commands:
|
|
1532
|
+
- Added ace-git-diff (~> 0.1.0) as runtime dependency
|
|
1533
|
+
- Delegates to ace-context which now uses ace-git-diff
|
|
1534
|
+
|
|
1535
|
+
### Technical
|
|
1536
|
+
- Maintains backward compatibility with old diff: string format
|
|
1537
|
+
- Supports both diff: { ranges: [...] } and legacy diff: "range" formats
|
|
1538
|
+
|
|
1539
|
+
## [0.10.0] - 2025-10-14
|
|
1540
|
+
|
|
1541
|
+
### Added
|
|
1542
|
+
- Standardize Rakefile test commands and add CI fallback
|
|
1543
|
+
|
|
1544
|
+
### Technical
|
|
1545
|
+
- Add proper frontmatter with git dates to all managed documents
|
|
1546
|
+
|
|
1547
|
+
## [0.9.9] - 2025-10-08
|
|
1548
|
+
|
|
1549
|
+
### Changed
|
|
1550
|
+
|
|
1551
|
+
- **Test Structure Migration**: Migrated to flat ATOM structure
|
|
1552
|
+
- From: `test/ace/review/molecules/`
|
|
1553
|
+
- To: `test/molecules/`
|
|
1554
|
+
- Aligns with standardized test organization across all ACE packages
|
|
1555
|
+
|
|
1556
|
+
## [0.9.8] - 2025-10-07
|
|
1557
|
+
|
|
1558
|
+
### Changed
|
|
1559
|
+
|
|
1560
|
+
- **Workflow documentation updated** for ace-context v0.9.6+ integration
|
|
1561
|
+
- Updated `review.wf.md` to reflect unified YAML schema
|
|
1562
|
+
- Removed references to deprecated `patterns:` key
|
|
1563
|
+
- Added comprehensive configuration schema section documenting `files:`, `diffs:`, `commands:`, `presets:`
|
|
1564
|
+
- Enhanced common scenarios with file-based review examples
|
|
1565
|
+
- Added "Review Specific Files" and "Compose Multiple Sources" scenarios
|
|
1566
|
+
- Improved troubleshooting section with "No code to review" → use `files:` guidance
|
|
1567
|
+
- Updated preset file examples to show proper YAML structure
|
|
1568
|
+
- Added simple string shortcuts documentation (staged, working, pr)
|
|
1569
|
+
- Updated all command examples to use correct YAML keys
|
|
1570
|
+
|
|
1571
|
+
## [0.9.7] - 2025-10-07
|
|
1572
|
+
|
|
1573
|
+
### Fixed
|
|
1574
|
+
|
|
1575
|
+
- **ace-llm-query integration**: Fixed command construction to work with updated ace-llm-query API
|
|
1576
|
+
- Replaced non-existent `--file` flag with new `--prompt` flag (added in ace-llm v0.9.1)
|
|
1577
|
+
- Added proper PROVIDER:MODEL positional argument as first parameter
|
|
1578
|
+
- Added `--output` flag to save review reports directly to session directory
|
|
1579
|
+
- Added `--timeout 600` for 10-minute timeout on long reviews
|
|
1580
|
+
- Added `--format markdown` for consistent markdown output
|
|
1581
|
+
- Output filename now uses model short name: `review-report-{model-short}.md`
|
|
1582
|
+
- Example: `review-report-gemini-2.5-flash.md` for model `google:gemini-2.5-flash`
|
|
1583
|
+
|
|
1584
|
+
### Changed
|
|
1585
|
+
|
|
1586
|
+
- **LlmExecutor API**: Updated `execute` method to require `session_dir:` parameter
|
|
1587
|
+
- Enables direct file output to session directory
|
|
1588
|
+
- Returns `output_file` path in result hash
|
|
1589
|
+
- **ReviewManager**: Updated to pass `session_dir` to LlmExecutor
|
|
1590
|
+
- Simplified result handling (no longer needs to save output separately)
|
|
1591
|
+
|
|
1592
|
+
## [0.9.6] - 2025-10-06
|
|
1593
|
+
|
|
1594
|
+
### Changed
|
|
1595
|
+
|
|
1596
|
+
- **ace-context integration**: Refactored to use ace-context for unified content aggregation
|
|
1597
|
+
- `SubjectExtractor` now delegates to `Ace::Context.load_auto` for all content extraction
|
|
1598
|
+
- `ContextExtractor` now delegates to `Ace::Context.load_auto` for all content extraction
|
|
1599
|
+
- Preserved special behaviors (staged/working/pr keywords, project context defaults)
|
|
1600
|
+
- Eliminated duplicated file reading, command execution, and git extraction logic
|
|
1601
|
+
|
|
1602
|
+
### Added
|
|
1603
|
+
|
|
1604
|
+
- **ace-context dependency**: Added `ace-context ~> 0.9` as runtime dependency
|
|
1605
|
+
- **Enhanced composition**: Can now combine files + commands + diffs + presets in unified configs
|
|
1606
|
+
- **Preset support in context**: `presets:` key now functional in context configuration
|
|
1607
|
+
- **Diffs support**: New `diffs:` key supported in subject and context configs
|
|
1608
|
+
|
|
1609
|
+
### Removed
|
|
1610
|
+
|
|
1611
|
+
- **Redundant atoms**: Deleted `git_extractor.rb` and `file_reader.rb` (now in ace-context)
|
|
1612
|
+
- **Duplicated logic**: All content extraction now centralized in ace-context
|
|
1613
|
+
|
|
1614
|
+
## [0.9.5] - 2025-10-06
|
|
1615
|
+
|
|
1616
|
+
### Changed
|
|
1617
|
+
|
|
1618
|
+
- **Workflow command renamed**: `review-code.wf.md` → `review.wf.md`
|
|
1619
|
+
- Claude command changed from `/ace:review-code` to `/ace:review` for simplicity
|
|
1620
|
+
- Updated workflow invocation from `wfi://review-code` to `wfi://review`
|
|
1621
|
+
|
|
1622
|
+
### Fixed
|
|
1623
|
+
|
|
1624
|
+
- **Storage path detection**: Removed hardcoded storage defaults that prevented smart detection
|
|
1625
|
+
- `storage_config` now only checks user config, not module defaults
|
|
1626
|
+
- Properly implements 3-tier priority: user config → ace-taskflow → cache directory
|
|
1627
|
+
- Fallback path changed from `./reviews` to `.cache/ace-review/sessions/`
|
|
1628
|
+
- **LLM command execution**: Fixed remaining `ace-llm` command reference in `llm_executor.rb`
|
|
1629
|
+
- Changed from `ace-llm query` to direct `ace-llm-query` invocation
|
|
1630
|
+
- Renamed method from `execute_ace_llm` to `execute_ace_llm_query` for clarity
|
|
1631
|
+
- **Configuration comments**: Updated config file comments to reflect correct detection order
|
|
1632
|
+
|
|
1633
|
+
## [0.9.4] - 2025-10-05
|
|
1634
|
+
|
|
1635
|
+
### Changed
|
|
1636
|
+
|
|
1637
|
+
- **Dynamic storage path**: Storage now defaults to `$(ace-taskflow release --path reviews)`
|
|
1638
|
+
- Falls back to `./reviews` if ace-taskflow not available
|
|
1639
|
+
- Config `storage.base_path` commented out by default, uses smart detection
|
|
1640
|
+
- User can still override by uncommenting and setting custom path
|
|
1641
|
+
- **Review file organization**: All review files now stored together with `.tmp` pattern
|
|
1642
|
+
- Session files in `{release_path}/reviews/review-{timestamp}/`
|
|
1643
|
+
- Temporary files use `.tmp` extension: `prompt.md.tmp`, `subject.md.tmp`, `context.md.tmp`
|
|
1644
|
+
- Committable files: `metadata.yml`, `review.md`
|
|
1645
|
+
- Gitignore pattern changed from `.ace-review-sessions/` to `**/*.tmp`
|
|
1646
|
+
- **Command detection**: Binary check updated from `ace-llm` to `ace-llm-query`
|
|
1647
|
+
- Error message now correctly references `ace-llm-query`
|
|
1648
|
+
|
|
1649
|
+
### Fixed
|
|
1650
|
+
|
|
1651
|
+
- Review sessions no longer create separate `.ace-review-sessions` directory
|
|
1652
|
+
- All review artifacts now properly organized in release-specific folders
|
|
1653
|
+
- Temporary working files automatically gitignored via `.tmp` extension
|
|
1654
|
+
|
|
1655
|
+
## [0.9.3] - 2025-10-05
|
|
1656
|
+
|
|
1657
|
+
### Changed
|
|
1658
|
+
|
|
1659
|
+
- **Configuration file renamed**: `code.yml` → `config.yml` for consistency with ace-* naming conventions
|
|
1660
|
+
- Updated all references in code, tests, and documentation
|
|
1661
|
+
- Both `.ace.example/review/config.yml` and `.ace/review/config.yml` now use new name
|
|
1662
|
+
- **Preset organization improved**: All presets now stored as individual files
|
|
1663
|
+
- Extracted 7 presets from main config to separate `.yml` files in `review/presets/`
|
|
1664
|
+
- Main `config.yml` now contains only defaults and storage settings
|
|
1665
|
+
- Presets: pr, code, docs, security, performance, test, agents, ruby-atom
|
|
1666
|
+
- **Configuration cascade integration**: Removed hardcoded paths in favor of ace-core
|
|
1667
|
+
- `PresetManager` now uses `Ace::Core::Molecules::ConfigFinder` for all file discovery
|
|
1668
|
+
- Automatic cascade resolution across `./.ace → ~/.ace` without hardcoded paths
|
|
1669
|
+
- Preset files discovered automatically across entire configuration cascade
|
|
1670
|
+
- Maintains backward compatibility with fallback for environments without ace-core
|
|
1671
|
+
|
|
1672
|
+
### Fixed
|
|
1673
|
+
|
|
1674
|
+
- Configuration system now properly respects ace-core's configuration cascade
|
|
1675
|
+
- Preset loading works correctly from both local and user config directories
|
|
1676
|
+
|
|
1677
|
+
## [0.9.2] - 2025-10-05
|
|
1678
|
+
|
|
1679
|
+
### Fixed
|
|
1680
|
+
|
|
1681
|
+
- **Prompt resolution** now works correctly via ace-nav integration
|
|
1682
|
+
- Fixed custom `PromptResolver` that wasn't working properly
|
|
1683
|
+
- Replaced with `NavPromptResolver` using ace-nav's universal resolution
|
|
1684
|
+
- Registered ace-review prompts with ace-nav protocol for proper discovery
|
|
1685
|
+
- **Critical command injection vulnerability** in `GitExtractor`
|
|
1686
|
+
- Fixed unsafe string interpolation in git commands
|
|
1687
|
+
- Now uses array arguments with `Open3.capture3(*command_parts)`
|
|
1688
|
+
- **Code organization issues**
|
|
1689
|
+
- Fixed overly complex `ReviewManager#execute_review` method
|
|
1690
|
+
- Replaced hash options with proper `ReviewOptions` class
|
|
1691
|
+
- Improved separation of concerns throughout
|
|
1692
|
+
|
|
1693
|
+
### Changed
|
|
1694
|
+
|
|
1695
|
+
- Refactored `ReviewManager` into clearer, testable steps
|
|
1696
|
+
- Dependencies now include `ace-nav ~> 0.9` for proper prompt resolution
|
|
1697
|
+
|
|
1698
|
+
## [0.9.1] - 2025-10-05
|
|
1699
|
+
|
|
1700
|
+
### Fixed
|
|
1701
|
+
|
|
1702
|
+
- Replaced Zeitwerk with explicit requires following ace-gems conventions
|
|
1703
|
+
- Fixed all require_relative paths and namespace references
|
|
1704
|
+
- Removed unnecessary dependencies (zeitwerk, tty-*, rainbow, dry-cli)
|
|
1705
|
+
- Replaced dry-cli with OptionParser for consistency with other ace gems
|
|
1706
|
+
- Simplified output formatting to use plain text without external libraries
|
|
1707
|
+
|
|
1708
|
+
### Changed
|
|
1709
|
+
|
|
1710
|
+
- Minimal dependencies - now only requires ace-core (~> 0.9)
|
|
1711
|
+
- CLI implementation now follows standard ace-gems patterns
|
|
1712
|
+
|
|
1713
|
+
## [0.9.0] - 2025-10-05
|
|
1714
|
+
|
|
1715
|
+
### Changed
|
|
1716
|
+
|
|
1717
|
+
- **BREAKING**: Simplified CLI interface from `ace-review code` to just `ace-review`
|
|
1718
|
+
- Tool is now more universal - presets determine what type of review (code, docs, security, etc.)
|
|
1719
|
+
- Cleaner, more intuitive command structure
|
|
1720
|
+
- Migration from v0.8 legacy code-review system
|
|
1721
|
+
|
|
1722
|
+
### Migration
|
|
1723
|
+
|
|
1724
|
+
Update all commands from:
|
|
1725
|
+
```bash
|
|
1726
|
+
ace-review code --preset pr
|
|
1727
|
+
```
|
|
1728
|
+
|
|
1729
|
+
To:
|
|
1730
|
+
```bash
|
|
1731
|
+
ace-review --preset pr
|
|
1732
|
+
```
|
|
1733
|
+
|
|
1734
|
+
## [0.1.0] - 2025-10-05
|
|
1735
|
+
|
|
1736
|
+
### Added
|
|
1737
|
+
|
|
1738
|
+
- Initial release of ace-review gem
|
|
1739
|
+
- Migrated from dev-tools code-review implementation
|
|
1740
|
+
- ATOM architecture with atoms, molecules, organisms, and models
|
|
1741
|
+
- Preset-based review configuration system
|
|
1742
|
+
- Prompt composition with base, format, focus, and guidelines modules
|
|
1743
|
+
- Prompt cascade resolution (project → user → gem)
|
|
1744
|
+
- prompt:// URI protocol for prompt references
|
|
1745
|
+
- Support for direct file path references in prompts
|
|
1746
|
+
- Multiple focus module composition
|
|
1747
|
+
- Integration with ace-taskflow for release-based storage
|
|
1748
|
+
- CLI command: `ace-review code` with various options
|
|
1749
|
+
- Built-in presets: pr, code, docs, security, performance, test, agents
|
|
1750
|
+
- Example configuration files in .ace.example/
|
|
1751
|
+
- Comprehensive prompt library migrated from dev-handbook
|
|
1752
|
+
- LLM execution via ace-llm integration
|
|
1753
|
+
- Session management for dry-run mode
|
|
1754
|
+
- List commands for presets and prompts
|
|
1755
|
+
|
|
1756
|
+
### Changed
|
|
1757
|
+
|
|
1758
|
+
- **BREAKING**: Replaced `code-review` command with `ace-review code`
|
|
1759
|
+
- **BREAKING**: Removed `code-review-synthesize` CLI (use `wfi://synthesize-reviews` workflow)
|
|
1760
|
+
- **BREAKING**: Configuration moved from `.coding-agent/code-review.yml` to `.ace/review/config.yml`
|
|
1761
|
+
- **BREAKING**: Storage location now defaults to `.ace-taskflow/<release>/reviews/`
|
|
1762
|
+
- Preset files now support separate directory at `.ace/review/presets/`
|
|
1763
|
+
- Improved preset override system with `--add-focus` option
|
|
1764
|
+
- Enhanced prompt resolution with multiple lookup strategies
|
|
1765
|
+
|
|
1766
|
+
### Migration Notes
|
|
1767
|
+
|
|
1768
|
+
To migrate from the old code-review system:
|
|
1769
|
+
|
|
1770
|
+
1. Install ace-review gem
|
|
1771
|
+
2. Copy `.coding-agent/code-review.yml` to `.ace/review/config.yml`
|
|
1772
|
+
3. Update workflow files to use `ace-review code` instead of `code-review`
|
|
1773
|
+
4. Synthesis is now handled via workflow instructions only (no CLI command)
|
|
1774
|
+
|
|
1775
|
+
|
|
1776
|
+
## [0.40.4] - 2026-02-22
|
|
1777
|
+
|
|
1778
|
+
### Fixed
|
|
1779
|
+
- Hidden deprecated 'feedback skip' subcommand from help (use 'verify --skip' instead)
|
|
1780
|
+
- Standardized quiet, verbose, debug option descriptions to canonical strings
|