Changelogs

What's new in FriendlyReviewer — features, fixes and improvements, newest first.

October 2026

Your reviews now run in Europe, and a batch of security fixes

Oct 20, 2026 feature security fix

Two things in this release: paying accounts are now reviewed entirely on European AI providers, and several security issues have been fixed.

Your code is reviewed in Europe — at the same price

  • If you have bought credits, every AI step of your review now runs on European providers. That covers the whole review: reading your codebase, planning, the review agents, the summary, the verdict, and the validation of your fixes. Nothing about your workflow changes, and the price does not either: still $0.50 per pull request, pushes included.
  • We use a European router restricted to a list of European providers. If a European provider cannot be reached for one step, that step falls back to our standard providers so your review still completes — a constraint we cannot meet is never a failed review. Every such call is recorded.
  • The free reviews are not covered. The first 10 reviews of a new account run on the standard providers, which include providers outside Europe. Try them on a repository that is not sensitive: they are there to judge the quality of the reviews. European processing starts with your first purchase.
  • Your application, database and logs have always been hosted in Europe (Scaleway). That has not changed.

Security

  • A serious login flaw is fixed. On GitHub, it was possible to be logged in as the owner of an installation without their password, using a value that is easy to guess. This is fixed, and it required no change on your side.
  • Reviews can no longer be started anonymously. Our IDE integration (MCP) used to accept connections with no login at all, and a review started that way was billed to the repository owner. Connecting an IDE now requires you to log in, and you approve the connection from your browser.
  • Logging in from your terminal no longer asks you to copy a token. fr-agent auth login opens your browser and retrieves its credential on its own. Update with the installer command below; older versions keep working as before.
  • Two more fixes worth naming. Someone who was not a contributor can no longer trigger work on your repository, and a temporary outage on our side is now reported as such instead of looking like a permissions problem.

Fixes

  • You are no longer billed twice for the same commit. When two accounts had the same repository registered, the duplicate setup meant one commit was reviewed — and charged — twice. A repository now has a single configuration, and the last person to register it owns it.
  • Reviews of pull requests opened from a fork are now correct. They could previously analyse the wrong set of changes and report on code the pull request never touched. A case we cannot resolve now fails loudly instead of producing a wrong review.
  • Review data is purged after 40 days — the content, not the history. The repository itself is still deleted as soon as the review ends.

Install or update fr-agent:

curl -fsSL https://friendlyreviewer.fr/downloads/fr-agent/install.sh | sh

Reviews in your language, a rebuilt review layout, and a batch of fixes

Oct 05, 2026 feature improvement fix

This release is a large one. The headline is that reviews are now written in the language of the pull request, and the published review has been rebuilt around a clearer structure. It also fixes several cases where a review was skipped, empty, or wrong.

Reviews are now written in the author's language

  • FriendlyReviewer writes the review in the language of the pull request description. The language is detected once per review with a dedicated minimal call, then applied to both initial reviews and updates. The code produces the published skeleton — headings, verdict, badges, counters, error and progress messages — and the model writes the prose inside it, so the mixed output you may have seen (English headings over a French body) is gone.
  • Twelve languages are fully translated: French, Spanish, German, Italian, Portuguese, Dutch, Polish, Russian, Chinese, Japanese, Korean and Arabic, including correct plural forms per language.
  • Other languages fall back to English. A translated label that has not been verified reads badly, so English remains the default whenever a language is not fully covered — and whenever detection is not reliable.
  • Closed-vocabulary values stay English by design — APPROVED / REQUEST_CHANGES / COMMENT, high/medium/low, ok/ko/mitigated. They are parsed back by the system; translating them would break publishing.
  • The periodic review report and the emails stay in English, and so does the watchdog's "review stuck" notice. These are not tied to a pull request, so they sit outside the scope of language detection, which reads the pull request description on a per-review basis.

The published review has a new structure

  • You get the answer to "does it do what was asked" before "is it done well". The body now reads: verdict line, intro, feature-level checklist, then technical findings.
  • The checklist is one line per requirement. The per-item justification clause and the repeated emoji are gone; the emoji now marks the group intertitle only, and all three groups — satisfied, gap, reservation — are visible without expanding anything.
  • A finding's proposed action is now a distinct block when the reviewer wrote one, and nothing when it did not.
  • The verdict line is composed by code, not by the model. The classifier is the single source of the published risk phrase, and the reviewer no longer emits any status vocabulary: no more Status: or Remediation: head lines, and no approval or blocking language anywhere in the output. FriendlyReviewer writes a review, it does not approve or block a pull request.
  • The ### Beyond the description section is removed. It duplicated the pull request description and the findings printed right below it.
  • Your project rules and the pull request author's instructions are applied at every step, a convention your rules explicitly require is no longer reported as missing, .friendlyreviewer/ is not reviewed as code, and a pull request can no longer change the rules used to review it.

Fewer wrong or empty reviews

  • A degenerate report is never posted as a review. A production incident where the aggregation call echoed its own closing instruction was published as the review; such output is now retried and, failing that, replaced by the executors' own summaries.
  • A notice is published when findings are dropped. If a finding lacks a usable file and line reference it is removed, and the intro and checklist could keep referring to it. The comment now says so instead of leaving a verdict whose justification has vanished.
  • Findings are no longer lost to a stray character in their file header. A combining accent, line #26 or line: 26 used to make the anchor unparsable, silently dropping the finding and publishing a blocking verdict with an empty findings section.
  • An orphan ** no longer bolds an entire comment, and the text-integrity pass no longer rewrites legitimate prose — finding #20 is no longer mangled into finding 20, and member access is not read as a missing space.
  • Reviews that died on an oversized conversation now complete. A single assistant message could carry hundreds of duplicate file reads; the batch is now bounded and identical calls execute once.
  • Bugs found in our own reviews of this work are fixed, including the aggregator receiving the pull request context it judges against, and the synthesis being given the user context it needs.

Skipped reviews, tokens and channels

  • A branch added in the dashboard is now actually reviewed. Editing target branches only wrote the database while the webhook kept a stale copy, so every pull request against a newly added branch was skipped silently — no comment, no error. The two sources are now unioned, and the dashboard reports whether the platform webhook was refreshed instead of always claiming success.
  • GitLab tokens are managed consistently and renewed before each use, fixing reviews cancelled by how project access tokens were stored and renewed.
  • fr-agent and MCP now return the same cleaned text as the forge. These channels returned the raw model output while the posted comment was repaired, so a terminal user saw corruption the forge no longer had.
  • Review reports are sanitized before their content is published.
  • A superadmin decision-model management page was added, and the decisions page that rendered blank is fixed.

What a review contains, and when it runs

  • A failure no longer replaces a published review. A failed setup, a deleted or already-merged source branch, an oversized pull request, an aborted analysis or a refused credit no longer erase a previously published review.
  • No duplicate "all clear", and a push that does not change the reviewed commit is no longer counted as a completed review.
  • Bitbucket reviews that fail now actually post their failure notification.
  • Every finding carries a kind — defect, robustness, performance or convention — and findings that ask for no code change are no longer emitted.
  • Fewer hallucinated characters in long reviews.
September 2026

Review reports, event-loop safety, and review pipeline hardening

Sep 14, 2026 feature improvement fix

Review reports — FriendlyReviewer reviews itself

FriendlyReviewer now analyzes its own work across your repository's reviews and generates periodic reports that help your team level up their practices. Each report includes quality trends, concrete recommendations for your coding guidelines, tuning suggestions for the AI reviewer itself, and priority actions to focus on. Reports are generated automatically once enough data has accumulated (typically around 50 reviews) or after a month, and are sent by email to the account owner. This feature is included at no additional cost.

Event-loop safety overhaul

We found and fixed a class of bugs where synchronous database and AI calls could block the main event loop, freezing the entire application. All blocking operations are now offloaded to a thread pool, with structural guards to prevent regressions. This makes the service more resilient under load and during deployments.

GitLab token reliability

GitLab project access tokens that are revoked (e.g. by a project maintainer) are now automatically recreated on the next review, with per-project locking to prevent race conditions.

Authentication fixes

  • Agent-triggered reviews on GitHub now correctly inject the namespace administrator's GitHub App installation ID, fixing clone failures for organization-owned repositories.
  • The fr-agent project rules command now redirects unauthenticated users to the login flow instead of returning a 403 error.

Fixed authentication for project rules and GitHub App reviews

Sep 08, 2026 fix

Improved review reliability

We fixed a timeout issue that could occur during repository initialization and improved a few rare edge cases where reviews could fail unexpectedly.

Fixed: authentication for project rules

The fr-agent project rules command no longer returns a 403 error when the user is not authenticated. It now redirects to the login flow instead.

Fixed: GitHub App review authentication

Agent-triggered reviews on GitHub repositories now correctly inject the namespace administrator's GitHub App installation ID, fixing clone authentication failures for organization-owned repositories.

August 2026

Stronger error recovery and deeper reasoning on critical review stages

Aug 31, 2026 improvement feature

Better resilience on errors

Error recovery has been reinforced across the entire review pipeline. When a transient failure occurs (timeout, invalid response), the system now retries cleanly without accumulating artifacts from previous attempts — reviews stay consistent and reliable.

More reasoning on critical stages

The planning and aggregation phases of the review now use a dedicated reasoning model. This enables deeper analysis on the steps where judgment quality matters most — without impacting the execution speed of the review itself.

Review pipeline hardening, webhook reliability and general fixes

Aug 30, 2026 improvement fix

A substantial round of behind-the-scenes improvements to make reviews more reliable — no change to the format of the feedback you receive.

Review pipeline hardening

  • Format tolerance. When the reviewer produces output in a non-standard format, the knowledge-base reformat step now rescues it automatically — both for initial reviews and updates — instead of failing the review.
  • No more review when nothing changed. If every finding is already fixed, the update step skips the LLM call entirely and posts a clean "no new review" notice instead of a redundant report.
  • Safer retries. Retry loops are bounded and fail fast on empty content, preventing runaway retries or cascading failures.
  • Markdown-first output. The aggregator and update-review steps now produce Markdown instead of brittle JSON, making partial salvage far more reliable when the model deviates from the expected format.

Webhook reliability

  • GitLab. Reviews are now correctly skipped when the MR is closed, merged, or still a draft. Stale checkout SHAs are recovered automatically, and unregistered repos are ignored instead of causing errors. Old project tokens are revoked before new ones are created.
  • GitHub. Webhook deletion is now wrapped in a try/except to handle transient network errors cleanly, and the repo removal step verifies the webhook is actually deleted before proceeding.
  • System notes. GitLab approval notes no longer trigger unnecessary review cycles.

General reliability fixes

  • Merged or deleted branches. Reviews now handle the case where a branch has already been merged and deleted gracefully instead of failing.
  • Validation watchdog. The AI validation step has a bounded duration guard, and refunds are only issued when the parent review actually needs them — preventing incorrect credit deductions.
  • Agent resilience. Transient git sync failures are retried automatically, and file paths with backticks are stripped correctly. Explicit comment-triggered reviews are no longer deduplicated away.
  • Grep search. Search terms starting with - are now treated as literal patterns instead of being interpreted as flags.

Author replies and compliance verdicts in updates

Aug 11, 2026 feature

Review updates are smarter in two ways:

  • Author replies count. When you answer a finding as the author of a pull request (say, "out of scope" or "not blocking"), FriendlyReviewer captures your intent and takes it into account in the following reviews, instead of re-flagging the same thing on every update. Works on GitHub, GitLab and Bitbucket. Replying doesn't trigger a new review by itself.
  • Compliance verdicts are re-evaluated. Like technical findings, compliance verdicts are now re-judged on every update: when a failed or mitigated requirement is actually fixed, it moves to the "Fixed" section of the report and stays resolved in subsequent reviews, instead of being copied as-is.

Reviews in your language

Aug 09, 2026 feature

Reviews now follow the language of your pull request description: the reviewer detects the language of your PR or MR, and the whole review — summary, findings and report — is written in it, on new reviews and updates alike. If the language can't be detected reliably, reviews fall back to English. You can also force a repository to English only by ticking the "EN ONLY" box in the repositories table on your dashboard.

Updated benchmark and quality improvements

Aug 06, 2026 improvement

The review benchmark has been updated to better reflect real-world code, and the reviewer pipeline got a round of quality and robustness optimizations. Reviews are now more consistent and reliable, with no change to the format of the feedback you receive.

Faster code reviews

Aug 01, 2026 improvement

Reviews now complete noticeably faster. The reviewer's code search step was reworked to be lighter, so your feedback lands sooner — with no change to the review format or the findings you get back.

Resolved findings stay resolved

Aug 01, 2026 fix

Findings you validate as resolved in a review now stay resolved. Previously they could reappear in later rounds of the same review and get re-flagged all over again; now the resolution is persisted across cycles, so the review converges cleanly.

July 2026

Review rules from your AGENTS.md

Jul 25, 2026 feature

FriendlyReviewer now reads the AGENTS.md file at the root of your repository and applies the conventions it describes to every review — no extra configuration needed.

  • Rules are extracted from AGENTS.md and injected into each review alongside your existing .friendlyreviewer/helper.md team rules.
  • The file is only re-processed when its content actually changes (tracked by a content hash per project), so an unchanged AGENTS.md adds no overhead.
  • Only declarative rules about the code are kept; setup instructions and other non-review content are ignored.
  • You can inspect what was extracted before starting a review, with fr-agent project rules --remote <url> (CLI 1.2.0 or later) or the matching fr_get_rules MCP tool. Both read your local AGENTS.md by default; override the path with --agents-md <path>.
  • The answer tells you where you stand: ok returns the enforced rules, none means nothing is cached yet (rules are generated on your next review), and version_mismatch means your local AGENTS.md no longer matches the cached version.

Provider errors no longer leak into your merge requests

Jul 25, 2026 security

When a review failed for an internal reason, the raw error could end up posted in the comment on your merge request. That no longer happens.

  • Raw AI provider responses and system traces — which could include billing messages, internal endpoints or stack traces — were posted verbatim in the review comment, visible to everyone with access to the merge request.
  • A failed review now posts a single neutral notice telling you the review is unavailable and that we have been alerted. The details go to our logs and to an internal alert instead.

No more repeated 'MR too big' messages

Jul 25, 2026 improvement

When a merge request is too large to review, FriendlyReviewer now tells you once instead of repeating itself on every push.

  • Previously, each new push to an oversized MR re-triggered the review and posted the "review aborted — too big" notice again, cluttering the thread.
  • Now the notice is posted a single time. On later pushes that are still too big, FriendlyReviewer stays quiet and removes the transient "review started" comment it had just added.
  • If you trim the MR back under the limit and it later grows too large again, you'll be notified once more — the state resets on its own.

Redesigned public header + Changelogs page

Jul 22, 2026 feature improvement

The public site navigation has been reworked to make room for more entries and to behave properly on small screens:

  • Nav links are now lightweight text links, keeping the header uncluttered as the number of pages grows.
  • A burger menu collapses the navigation below 900px for a clean mobile layout.
  • New Changelogs page (this one), fed by one Markdown file per entry with a month-based index.

Review time shown

Jul 20, 2026 improvement

The formatted review now shows how long the review took, displayed just before the review history.

Vibe coding prompt block

Jul 20, 2026 feature

GitHub and GitLab reviews now include a ready-to-copy "vibe coding" prompt block, so you can feed findings straight back to your AI coding agent.

One-click GitLab connection

Jul 16, 2026 feature

Added a Connect with GitLab SSO button on the setup page for a one-click connection.

Customize your reviews

Jul 12, 2026 feature

New Customize page walking you through how to tailor FriendlyReviewer to your project via .friendlyreviewer/ config files — set your review rules, ignore patterns and conventions, with a bootstrap guide to generate the config.

More reliable reviews

Jul 10, 2026 fix

Added a per-request timeout on AI calls to prevent reviews from getting stuck when a model call hangs.

June 2026

Bitbucket Cloud support

Jun 26, 2026 feature

FriendlyReviewer now reviews pull requests on Bitbucket Cloud, in addition to GitHub and GitLab.

Faster reviews

Jun 10, 2026 improvement

Knowledge Base analysis now batches multiple files per AI call, and the KB/dependencies phase is skipped on update reviews — noticeably reducing review time.

May 2026

Dashboard: Platforms section

May 29, 2026 improvement

The dashboard's "Settings" section is now Platforms, with a reordered navigation to make connecting GitHub and GitLab clearer.

Weather-themed severity badges

May 28, 2026 improvement

Review severity is now shown with weather-themed badges, giving a quicker read of a review's overall risk at a glance.

New grouped review format

May 27, 2026 feature

Review output is now grouped and easier to scan, with emoji severity badges that surface the most important findings first.

Hosted MCP support

May 18, 2026 feature

Added a context-light hosted MCP endpoint so MCP-compatible agents can request reviews. Access is scoped per review with short-lived tokens, and authentication failures now return a proper OAuth challenge.

fr-agent CLI

May 15, 2026 feature

FriendlyReviewer is now available as a standalone command-line agent (fr-agent), so your AI coding agents can trigger and drive reviews directly from the terminal. The friendly-review workflow has been migrated to the new CLI.

Diff-based re-review

May 13, 2026 improvement

When a PR or MR is updated, FriendlyReviewer now re-reviews using a single diff-based pass, so follow-up reviews focus on what actually changed rather than re-scanning the whole change.