Skip to content

Releases: moduloTech/autodev

v0.8.3

03 Apr 21:13

Choose a tag to compare

Fixed

  • Fix label workflow routing: issues in pending state with label_mr are now correctly routed to processing instead of being silently skipped. Previously, only label_todo triggered processing for pending issues.

v0.8.2

03 Apr 20:31

Choose a tag to compare

Fixed

  • Fix issues with existing MRs reset to pending on startup recovery: recover_stuck_processing! now resumes at checking_pipeline when the issue already has a MR, matching the behaviour of recover_errored!.

v0.8.1

03 Apr 20:23

Choose a tag to compare

Added

  • Comprehensive config validation at startup
  • Localized GitLab issue comments (French/English auto-detection)
  • JSON Lines structured log files (.jsonl) for LLM consumption
  • Minitest suite with 278 tests

Changed

  • Full RuboCop Metrics compliance: decompose all modules into focused sub-modules
  • Reuse GitLab client across retried issues in the same poll tick
  • Deduplicate error retry branches

Fixed

  • Write context files to /tmp instead of the git work tree so they cannot be accidentally committed by danger-claude
  • Use process groups for subprocess timeout cleanup (prevent orphaned Docker containers)
  • Fix cleanup_labels private method error in MrFixer
  • Fix issues stuck on label_doing after error retry
  • Fix issues with existing MRs restarting from scratch after error retry

v0.8.0

02 Apr 20:35

Choose a tag to compare

Added

  • Label-driven workflow: new per-project config fields labels_todo (array), label_doing, label_mr, label_done, label_blocked replace labels_to_remove/label_to_add with a full lifecycle. Labels are set/removed at each state transition.
  • Resume from over: issues in over state can be re-activated via labels. Adding a labels_todo label triggers full re-processing. label_mr with unresolved discussions triggers automatic fix. New events: resume_todo!, resume_mr!.
  • Context file: issue context and MR discussions written to a markdown file at clone root instead of inline in prompts.
  • Post-completion hook: per-project post_completion command runs after pipeline green, before over. Non-fatal. Env vars: AUTODEV_ISSUE_IID, AUTODEV_MR_IID, AUTODEV_BRANCH_NAME.
  • Issue assignment: autodev assigns itself on start, reassigns author on completion.
  • Code-conventions skill: language-agnostic rules for comments and commits, injected into all projects.
  • Explicit skill listing in all prompts.
  • --version / -v flag and version tag in GitLab comments.

Changed

  • needs_clarification sets labels_todo label for re-processing on human response.
  • question_answered removes label_doing without adding a label — human decides next step.
  • Crash recovery resets active processing states to pending on startup.
  • rails-conventions skill no longer contains code comments / commit message rules (moved to code-conventions).

Deprecated

  • labels_to_remove and label_to_add config fields. Use new label workflow fields instead.

v0.7.0

31 Mar 14:15

Choose a tag to compare

Added

  • Question/investigation ticket handling: autodev now recognizes tickets that ask questions about existing behavior (not implementation requests), investigates the codebase, and posts an answer as a GitLab comment instead of attempting code changes. New state answering_question with events question_detected and question_answered.

Changed

  • Spec check now instructs Claude to resolve app URLs from tickets by looking up the route in config/routes.rb, reading the controller and view code, and using that context to self-answer questions before requesting clarification.
  • --errors now includes blocked issues in addition to errored ones, with distinct color coding (yellow for blocked, red for error).
  • New model and effort config keys (global and per-project) forwarded to danger-claude as --model and --effort. Project-level overrides global.
  • rails-conventions skill now requires code comments in English covering WHAT, WHY, and HOW, and commit messages in English using Conventional Commits format.
  • Pipeline auto-retrigger is now conditional on pre-triage verdict — :code failures go straight to the fix phase, saving a full pipeline cycle.

Fixed

  • Worker pool now deduplicates enqueue calls, fixing a race condition where the polling loop could enqueue the same task twice.
  • Image download errors now include the exception class and message instead of a generic "download failed".
  • Skills are now injected as subdirectories with SKILL.md files matching the Claude Code skill format.
  • Jobs with allow_failure: true are now excluded from pipeline failure analysis and fix attempts.
  • API rate limit errors no longer burn retry attempts. Issues are parked until the reset time without incrementing retry_count.
  • Deploy jobs are now classified as infra in pre-triage and skipped during pipeline fix.

v0.6.3

30 Mar 15:06

Choose a tag to compare

Added

  • --status now shows the worker assigned to each active issue (e.g. [worker-3]), matching the poll status summary. Worker assignments are persisted to ~/.autodev/workers.json by the running instance.
  • --errors [IID] shows error details (message, stderr) for issues in error state. Without IID, shows all; with IID, shows a specific issue.
  • --reset [IID] resets errored issues to pending (retry_count zeroed). Without IID, resets all; with IID, resets a specific issue.

Fixed

  • Fix datetime('now') and datetime('now', '+N seconds') stored as literal strings instead of being evaluated by SQLite for started_at, finished_at, and next_retry_at fields. This broke automatic error retries since next_retry_at comparisons never matched.

v0.6.2

30 Mar 13:12

Choose a tag to compare

Added

  • Poll status summary: compact status of active issues printed after each poll cycle, with worker assignments.

Changed

  • Dashboard (--status) hides completed issues by default. Use --status --all to show all.

Fixed

  • Fix branch checkout on shallow clones: explicit refspec to bypass --single-branch restriction.
  • Fix Could not process image API error: validate Content-Type before passing images to Claude.
  • Fix Ctrl+C marking issues as errored: detect SIGINT on subprocess and re-raise Interrupt.
  • Fix garbled stdout: truncate multiline log messages on console, close stdin on subprocesses.

v0.6.1

30 Mar 11:22

Choose a tag to compare

Fixed

  • Fix crash on transient network errors (DNS resolution, connection refused) during issue polling. The rescue clause caught only AutodevError instead of StandardError, letting Socket::ResolutionError and similar exceptions kill the process.

v0.6.0

30 Mar 11:09

Choose a tag to compare

Added

  • Dashboard: autodev --status displays a table of all tracked issues with their state, project, MR link, and contextual comments. Color-coded by status with a summary line.

Fixed

  • Fix clarification detection: compare timestamps as parsed Time objects instead of raw strings. SQLite's datetime('now') format and GitLab's ISO 8601 format were compared lexicographically, causing needs_clarification issues to never detect human replies.
  • Fix clarification_requested_at stored as literal string "datetime('now')" instead of evaluated timestamp. Sequel.lit() is not interpreted by Sequel::Model#update — use dataset-level update instead.
  • Fix GitLab image download failing with 302: follow HTTP redirects (up to 3 hops) when downloading issue attachments. GitLab redirects authenticated upload URLs, and Net::HTTP does not follow redirects automatically.

v0.5.1

27 Mar 16:34

Choose a tag to compare

Fixed

  • Add logger gem to inline Gemfile for Ruby 4.0 compatibility (logger was removed from default gems).
  • Fix AASM + Sequel compatibility on Ruby 4.0: name the Issue class via const_set before include AASM so that AASM's StateMachineStore registers under the correct key ("Issue" instead of the anonymous class name).