Changelog
0.1.0-beta.16
- Persistent cross-PR Learnings (opt-in —
learnings.enabledin.ai-review.yml): rules captured via@botai learn """rule""", or auto-captured from@botai dismiss, are committed to.ai-review-learnings.mdon 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. Requirescontents: writein addition topull-requests: writeon thehandle-feedbackjob. 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 dismisspath since there's no inline thread to reply to. @botai reviewfrom 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:
appDirnow 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. Amajor/criticalfinding in any one subproject still forcesREQUEST_CHANGESfor the whole PR. NewmaxStackGroupsconfig (default4) bounds the LLM call count on repos with many subprojects. Fully backward compatible with the existing single-stringappDir. See Tech Stacks > Monorepos. - Fix: OpenAI reasoning models (
gpt-5*,o1*,o3*,o4*) reject any explicittemperaturevalue and the review call failed with400 Unsupported value: 'temperature' does not support 0.2 with this model. The adapter now omitstemperaturefor 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/criticalfinding always forcesREQUEST_CHANGESand 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
concurrencywithcancel-in-progress(only the latest push runs) andpaths-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/majorissues 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
selfCritiqueconfig (on by default). NewcodeRefandconfidencefields 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/criticalfindings. @botaiactions: 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 (newprojectContextconfig). - Official stack docs: version detection from
package.json(offline) plus an opt-in, fail-open Context7 provider skeleton (newofficialDocsconfig, disabled by default).
0.1.0-beta.10
@botaicommand system: replaces/explainand/dismisswith structured@botai approved | review | resolvedcommands in inline PR comment threads.@botai approved— post a reply and submit a GitHub APPROVE review.@botai review """text"""— evaluate whethertextaddresses 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:
/explainand/dismissare removed with no backwards compatibility.
0.1.0-beta.9
- Fix:
isBot()no longer usesGITHUB_ACTORto detect the bot.GITHUB_ACTORis 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 thegithub-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.jsonis 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
commentIdandthreadNodeIdafter posting (enables reliable thread resolution on subsequent commands).
0.1.0-beta.5
- Incremental re-review: on
pushevents 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
autoApproveconfig block. When the model recommendsapprove, there are nocritical/majorfindings, andoverallScoremeetsminScore, the bot posts a real GitHubAPPROVEevent. Opt-in — disabled by default. See Auto-Approve. - CI: auto-update
latestdist-tag after each beta publish inpublish.yml. - Fix:
handle-feedbackworkflow now uses@betadist-tag to avoid fetching stale@latestduring beta cycle.
0.1.0-beta.3
- Inline feedback (
handle-feedback): initial implementation of developer replies to bot inline comments. Requires thehandle-feedbackworkflow job andfeedback.enabled: truein 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 withprovider: anthropicorprovider: geminiin.ai-review.yml. - Ollama: added self-hosted provider support. Configure with
provider: ollamaandmodel: codellama(or any pulled model).ollamaUrldefaults tohttp://localhost:11434. - Dependency graph (JS/TS only): the reviewer now imports 1-level dependencies of changed files to detect regression risks.
initcommand:npx @giolabsuy/ai-code-reviewer initgenerates a pre-filled.ai-review.yml.
0.1.0-beta.1
Initial beta release.
review-prcommand — GitHub Actions integrationreview-filecommand — local single-file reviewreview-diffcommand — local diff review (--stagedor--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:orcustomInstructions:in config - Inline comments on PR diff + summary comment
- Severity filtering (
minSeverity) - Exit code
1onrequest_changes --save <path>Markdown report export- Bilingual output:
language: es | en