Skip to content

Commit b69f1c4

Browse files
Matthieu Ciapparaclaude
andcommitted
Release v0.8.1
Context files written to /tmp to prevent accidental commits, config validation, localized comments, structured logging, 278 tests, full RuboCop Metrics compliance, and multiple bug fixes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 1a6173f commit b69f1c4

2 files changed

Lines changed: 12 additions & 13 deletions

File tree

CHANGELOG.md

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,29 @@
22

33
## [Unreleased]
44

5-
### Changed
6-
7-
- Refactor `DangerClaudeRunner` to fix all Metrics RuboCop offenses: extract `LabelManager`, `IssueNotifier`, and `ProcessRunner` modules, decompose `run_with_timeout` into smaller methods, and extract helpers for prompt logging, AM/PM conversion, and process cleanup.
8-
9-
### Fixed
10-
11-
- Write context files to `/tmp` instead of the git work tree so they cannot be accidentally committed by danger-claude. Mount `/tmp` into the container via `-v /tmp`.
12-
- Use process groups (`pgroup: true`) for subprocess spawning so that timeout kills (`TERM`/`KILL`) reach the entire process tree, not just the direct child. Prevents orphaned grandchild processes (e.g., Docker containers) from lingering after a timeout.
13-
- Fix `NoMethodError: private method 'cleanup_labels' called for an instance of MrFixer` when polling detects a done label. The method inherited from `DangerClaudeRunner` is now explicitly made public in `MrFixer`.
14-
- Fix issues stuck on `label_doing` after error retry: when an issue hits a rate limit or error and is later retried back to `pending`, the GitLab label is now restored to `labels_todo` so the polling loop picks it up correctly.
15-
- Fix issues with existing MRs restarting from scratch after error retry: issues that already have a MR now resume at `checking_pipeline` (with `label_mr` restored) instead of `pending`, so the pipeline monitor retries the fix instead of re-implementing from zero. Applies to both runtime retry and startup recovery.
5+
## [0.8.1] - 2026-04-03
166

177
### Added
188

199
- Comprehensive config validation (`Config.validate!`) at startup: validates global numeric fields are positive integers, `log_level` is a valid level, `gitlab_token` is present, and per-project fields (`path` required, `post_completion` must be array of strings, `post_completion_timeout` requires `post_completion`, `clone_depth` non-negative, `sparse_checkout` array of strings).
2010
- Localized GitLab issue comments: language is auto-detected from the issue body (French/English heuristic via function-word frequency) and stored in a `locale` column. All 14 `notify_issue` calls now use locale-aware templates (`Locales.t`).
2111
- JSON Lines structured log files (`.jsonl`): log files now emit one JSON object per line with `timestamp`, `level`, `project`, `issue_iid`, `state`, `event`, `message`, and `context` fields for LLM consumption. Console output remains human-readable with colors.
22-
- Minitest test suite with 129 tests covering state machine transitions and guards, startup recovery, pipeline pre-triage classification, config validation, language detection, locales, logger JSON output, and error classes. Run with `bundle exec rake test`.
12+
- Minitest test suite with 278 tests covering state machine transitions and guards, startup recovery, pipeline pre-triage classification, config validation, language detection, locales, logger JSON output, and error classes.
2313

2414
### Changed
2515

16+
- Refactor all modules to fix Metrics RuboCop offenses: extract `LabelManager`, `IssueNotifier`, and `ProcessRunner` from `DangerClaudeRunner`; decompose `IssueProcessor`, `PipelineMonitor`, `MrFixer`, `SkillsInjector`, `GitlabHelpers`, `Config`, `Database`, and `bin/autodev` into focused sub-modules.
2617
- Hoist GitLab client and `MrFixer` helper instantiation above the error retry loop so they are reused across retried issues in the same poll tick instead of being recreated per issue.
2718
- Deduplicate error retry branches: the MR vs non-MR paths now share a single code path that selects the transition method, label, and log target based on `mr_iid` presence.
2819

20+
### Fixed
21+
22+
- Write context files to `/tmp` instead of the git work tree so they cannot be accidentally committed by danger-claude. Mount `/tmp` into the container via `-v /tmp`.
23+
- Use process groups (`pgroup: true`) for subprocess spawning so that timeout kills (`TERM`/`KILL`) reach the entire process tree, not just the direct child. Prevents orphaned grandchild processes (e.g., Docker containers) from lingering after a timeout.
24+
- Fix `NoMethodError: private method 'cleanup_labels' called for an instance of MrFixer` when polling detects a done label.
25+
- Fix issues stuck on `label_doing` after error retry: restore `labels_todo` on retry so the polling loop picks them up correctly.
26+
- Fix issues with existing MRs restarting from scratch after error retry: resume at `checking_pipeline` instead of `pending`.
27+
2928
## [0.8.0] - 2026-04-02
3029

3130
### Added

lib/autodev.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# frozen_string_literal: true
22

33
module Autodev
4-
VERSION = '0.8.0'
4+
VERSION = '0.8.1'
55
end
66

77
require_relative 'autodev/errors'

0 commit comments

Comments
 (0)