Changelog

Changelog

0.1.0-beta.16

  • Persistent cross-PR Learnings (opt-in — learnings.enabled in .ai-review.yml): rules captured via @botai learn """rule""", or auto-captured from @botai dismiss, are committed to .ai-review-learnings.md on the PR's base branch and injected into every future review of that branch. Previously, per-PR suppression meant a false positive dismissed in one PR would be flagged fresh again in the next. Requires contents: write in addition to pull-requests: write on the handle-feedback job. See Inline Feedback.
  • @botai ask """question""": general-purpose Q&A, distinct from @botai explain (which requires a specific finding thread). Works inline (uses the surrounding code, no finding metadata required) and from a general PR comment (uses the PR's AI Code Review summary). Never triggers a re-review. See Inline Feedback.

0.1.0-beta.15

  • Orphan finding tracking: findings that can't map to a diff line are now tagged with an embedded marker in the summary comment and fed into incremental "prior open findings," instead of having no metadata at all. Previously, a PR whose only blocking finding was an orphan could never enter incremental mode — every push re-ran a full review from scratch and could re-flag the same finding forever, with no @botai dismiss path since there's no inline thread to reply to.
  • @botai review from a general PR comment: previously only worked as a reply inside an inline diff thread. Now, posted as a general comment, it re-runs the full PR review — feeding the model your explanation (quoted with """...""", or gathered from earlier general comments since the bot's last review) so it can recognize an already-addressed concern instead of repeating it. See Inline Feedback.

0.1.0-beta.14

  • Multi-stack review by directory: appDir now accepts a list of subproject directories (e.g. a Flutter app + a NestJS backend in the same monorepo). Each changed file is reviewed under the rules of whichever configured directory is its longest matching path prefix — own LLM call, own tech-specific rules template per group — and results merge into a single PR review. A major/critical finding in any one subproject still forces REQUEST_CHANGES for the whole PR. New maxStackGroups config (default 4) bounds the LLM call count on repos with many subprojects. Fully backward compatible with the existing single-string appDir. See Tech Stacks > Monorepos.
  • Fix: OpenAI reasoning models (gpt-5*, o1*, o3*, o4*) reject any explicit temperature value and the review call failed with 400 Unsupported value: 'temperature' does not support 0.2 with this model. The adapter now omits temperature for those models.

0.1.0-beta.13

  • Fix: the "AI Code Review" explanation is now a single issue comment created once and edited in place on every later push, instead of a brand-new review body per push (which duplicated the explanation and silently broke the auto-resolve feature).
  • New rule: a major/critical finding always forces REQUEST_CHANGES and blocks the PR, regardless of the model's own recommendation or score. Auto-approve only fires when there are no blocking findings and the score clears the threshold.
  • Code suggestions are always wrapped in a fenced code block, even if the model forgets to fence them.
  • Bot header icon changed from 🤖 to ✨.

0.1.0-beta.12

Reviewer maturity — 8 axes (see the Reviewer Maturity page):

  • CI cost: the example workflow now uses concurrency with cancel-in-progress (only the latest push runs) and paths-ignore (docs/lockfiles/images no longer trigger a review).
  • Fewer false positives: findings now use a position-independent fingerprint (file + category + normalized code), so they are not re-reported when a line shifts or the title is reworded. Dismissed findings are stored in a suppression list and never re-posted.
  • No comment trickle: incremental re-reviews are now strictly verify-only (only new critical/major issues introduced by the push); the full first run stays exhaustive.
  • Self-critique: an adversarial verification pass refutes weak findings and drops low-confidence, low-severity ones before posting. New selfCritique config (on by default). New codeRef and confidence fields per finding.
  • Bug certainty: explicit detection checklist (regression, silent failures, tech debt, domain violations, architecture patterns), budgeted full-file context, and mandatory code suggestions for major/critical findings.
  • @botai actions: new @botai dismiss (mark false positive → suppress permanently) and @botai explain (on-demand explanation + fix), plus an actions footer on every inline comment. Resolution checks are now biased toward accepting fixes.
  • Project grounding: the reviewer reads CLAUDE.md + docs/ as authority above the generic stack rules (new projectContext config).
  • Official stack docs: version detection from package.json (offline) plus an opt-in, fail-open Context7 provider skeleton (new officialDocs config, disabled by default).

0.1.0-beta.10

  • @botai command system: replaces /explain and /dismiss with structured @botai approved | review | resolved commands in inline PR comment threads.
    • @botai approved — post a reply and submit a GitHub APPROVE review.
    • @botai review """text""" — evaluate whether text addresses the finding via LLM; always replies with the decision; resolves thread if resolved.
    • @botai resolved — immediately close the thread; auto-approves the PR when all bot findings are resolved.
  • Breaking: /explain and /dismiss are removed with no backwards compatibility.

0.1.0-beta.9

  • Fix: isBot() no longer uses GITHUB_ACTOR to detect the bot. GITHUB_ACTOR is set by GitHub Actions to the human commenter, which caused the handler to silently ignore all human replies. The bot is now identified solely by the github-actions[bot] login.

0.1.0-beta.8

  • Auto-feedback evaluation: when a developer replies to a bot inline comment with free-form text, the bot fetches the current state of the file and asks the LLM whether the reply addresses the finding. It always posts a response and resolves the thread if the decision is resolved.
  • Project context graph: the reviewer caches the detected tech stack in a hidden PR issue comment after the first review. Subsequent reviews read from cache, skipping re-detection — fixes "Stack detectado: Generic" on monorepos where package.json is not at the repo root.

0.1.0-beta.7

  • Internal release: tests and tooling improvements.

0.1.0-beta.6

  • Fix: patch inline comment metadata with real commentId and threadNodeId after posting (enables reliable thread resolution on subsequent commands).

0.1.0-beta.5

  • Incremental re-review: on push events to an existing PR, only the new diff is reviewed. Prior open findings are passed as context so the LLM avoids re-flagging already tracked issues.

0.1.0-beta.4

  • Auto-approve: new autoApprove config block. When the model recommends approve, there are no critical/major findings, and overallScore meets minScore, the bot posts a real GitHub APPROVE event. Opt-in — disabled by default. See Auto-Approve.
  • CI: auto-update latest dist-tag after each beta publish in publish.yml.
  • Fix: handle-feedback workflow now uses @beta dist-tag to avoid fetching stale @latest during beta cycle.

0.1.0-beta.3

  • Inline feedback (handle-feedback): initial implementation of developer replies to bot inline comments. Requires the handle-feedback workflow job and feedback.enabled: true in config. See Inline Feedback.
  • Auto-resolve on push: when new commits are pushed that address a finding, the bot resolves the comment automatically.

0.1.0-beta.2

  • Multi-provider: added support for Anthropic (claude-* models) and Gemini (gemini-* models). Configure with provider: anthropic or provider: gemini in .ai-review.yml.
  • Ollama: added self-hosted provider support. Configure with provider: ollama and model: codellama (or any pulled model). ollamaUrl defaults to http://localhost:11434.
  • Dependency graph (JS/TS only): the reviewer now imports 1-level dependencies of changed files to detect regression risks.
  • init command: npx @giolabsuy/ai-code-reviewer init generates a pre-filled .ai-review.yml.

0.1.0-beta.1

Initial beta release.

  • review-pr command — GitHub Actions integration
  • review-file command — local single-file review
  • review-diff command — local diff review (--staged or --base)
  • OpenAI provider with structured output (json_schema)
  • Tech stack auto-detection: NestJS, Next.js, React, TypeScript, Node.js, Flutter, Laravel, generic
  • Built-in rules templates per stack
  • Custom rules via rules: or customInstructions: in config
  • Inline comments on PR diff + summary comment
  • Severity filtering (minSeverity)
  • Exit code 1 on request_changes
  • --save <path> Markdown report export
  • Bilingual output: language: es | en