> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kodus.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Latest Kodus updates and improvements.

<div className="kodus-changelog-shell">
  <div className="kodus-changelog-filter-sidebar">
    <div className="kodus-changelog-filter-panel" aria-label="Changelog filters">
      <p className="kodus-changelog-filter-heading">Filters</p>

      <div className="kodus-changelog-filter-options">
        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-security" />

          <span>Security</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-cockpit" />

          <span>Cockpit</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-byok" />

          <span>BYOK</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-ai-engine" />

          <span>AI Engine</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-self-hosted" />

          <span>Self-hosted</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-git-provider" />

          <span>GIT Provider</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-performance" />

          <span>Performance</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-ux-interface" />

          <span>UX & Interface</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-notifications" />

          <span>Notifications</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-kody-rules" />

          <span>Kody Rules</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-mcp" />

          <span>MCP</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-billing-licenses" />

          <span>Billing & Licenses</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-cli" />

          <span>CLI</span>
        </label>
      </div>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">October 6, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ux-interface filter-kody-rules filter-byok filter-cockpit">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Platform redesign</div>
          <p className="kodus-changelog-copy">We redesigned the code review settings and a large part of the app. Previously, each page mapped to a key in <code className="kodus-changelog-code">kodus-config.yml</code>. If you wanted to make Kody less noisy in a repository, for example, you had to know that the severity threshold lived on a page called Suggestion Control. Now, each setting lives on the page that answers the question you have when you go looking for it.</p>

          <div role="heading" aria-level="4" className="kodus-changelog-title">Five code review pages</div>
          <p className="kodus-changelog-copy">Each setting now lives on the page that answers the question you have when you go looking for it:</p>

          <ul className="kodus-changelog-list">
            <li><strong>General</strong>: when Kody reviews, which PRs and files she ignores, and how she provides feedback on the PR. Ignored files now has an editor that validates each pattern and a “Test a file” field that tells you whether a file will be reviewed or which pattern is causing it to be ignored.</li>
            <li><strong>What to review</strong>: categories, the instructions that define each one, and the minimum severity required for posting, all in one place.</li>
            <li><strong>Kody Rules</strong>: rules and memories for the selected scope.</li>
            <li><strong>What Kody writes</strong>: Kody’s personality, PR summary, and the start, completion, and failure messages for reviews, with a live preview of an example PR.</li>
            <li><strong>Linked repositories</strong>: repositories Kody can read for additional context. Only available at repository scope.</li>
          </ul>

          <div role="heading" aria-level="4" className="kodus-changelog-title">One scope selector for global, repository, and directory settings</div>
          <p className="kodus-changelog-copy">Switching scopes keeps you on the same page, so comparing the global configuration with a repository configuration takes two clicks. Each scope and page shows how many settings override the global defaults. At repository and directory scope, a badge shows whether <code className="kodus-changelog-code">kodus-config.yml</code> was applied, not found, or unavailable.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://mintcdn.com/kodus/5fAvbIQz4nb4Do16/videos/scope-selector.mp4?fit=max&auto=format&n=5fAvbIQz4nb4Do16&q=85&s=6caf8d913d7dc8a91b338c9d62116c13" type="video/mp4" data-path="videos/scope-selector.mp4" />
          </video>

          <div role="heading" aria-level="4" className="kodus-changelog-title">Kody Rules in a table</div>
          <p className="kodus-changelog-copy">Each rule shows its severity, source, status, and last update. The source tells you whether the rule came from a repository file such as <code className="kodus-changelog-code">CLAUDE.md</code>, analysis of previous reviews, the library, the CLI, or someone on the team.</p>
          <p className="kodus-changelog-copy">On plans with Cockpit, the table also shows how many times each rule has triggered and a health label based on the last 30 days: healthy, noisy, ignored, stale, or not enough data. Clicking a row opens a panel with the rule’s instructions, examples, and impact. You can move between rules with J and K. Rules and memories generated by Kody appear in an approval section at the top of the page.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://kodus.io/wp-content/uploads/2026/10/Kody-Rules-em-formato-de-tabela-.mp4" type="video/mp4" />
          </video>

          <div role="heading" aria-level="4" className="kodus-changelog-title">Navigation moved to a sidebar</div>
          <p className="kodus-changelog-copy">The top navigation is gone. Everything now lives in a left sidebar with five destinations:</p>

          <ul className="kodus-changelog-list">
            <li><strong>Reviews</strong>: pull requests and CLI reviews.</li>
            <li><strong>Cockpit</strong>: now includes Issues.</li>
            <li><strong>Repositories</strong>: replaces Git Settings and Integrations.</li>
            <li><strong>AI providers</strong>: the former BYOK page, with Providers, Routing, and Budget tabs. The fallback model now lives under Routing.</li>
            <li><strong>Plugins</strong>.</li>
          </ul>

          <p className="kodus-changelog-copy">Organization settings now live in a collapsible group. Members and PR licenses are now tabs under Subscription.</p>

          <div role="heading" aria-level="4" className="kodus-changelog-title">⌘K command palette</div>
          <p className="kodus-changelog-copy">Search for any page, setting, MCP plugin, Kody Rule, or repository. Typing a number such as <code className="kodus-changelog-code">#123</code> opens that pull request. Old terms still work: searching for “byok” takes you to AI providers, and “git settings” takes you to Repositories.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://kodus.io/wp-content/uploads/2026/10/comand-k-.mp4" type="video/mp4" />
          </video>

          <div role="heading" aria-level="4" className="kodus-changelog-title">Locked pages stay visible</div>
          <p className="kodus-changelog-copy">Features outside your plan now remain visible in the sidebar with a lock icon and open a preview using data from your own workspace, such as the number of PRs reviewed in the last 30 days or how many rules are being ignored.</p>
          <p className="kodus-changelog-copy">Previously, the interface only made the limitation clear on the free plan. Workspaces with a canceled, expired, or failed license could still see the normal rules list with no warning, even though those rules were being ignored.</p>

          <div role="heading" aria-level="4" className="kodus-changelog-title">Reviews now shows what Kody skipped and what each run was missing</div>
          <p className="kodus-changelog-copy">The pull request list now includes a Kody skipped view, showing PRs that requested a review but were skipped because of configuration. The suggestions column also separates what was actually posted to the PR from what your settings prevented Kody from posting.</p>
          <p className="kodus-changelog-copy">Previously, a review that failed to check out the repository, had to switch to a fallback model, or dropped some findings still ended with a successful status. It looked the same as a complete review, and those losses were only visible in our logs. Now each of those situations is recorded in the run. When you expand a row in Reviews, you can see whether the review:</p>

          <ul className="kodus-changelog-list">
            <li>used the fallback provider;</li>
            <li>ran with less context;</li>
            <li>had its fidelity reduced to fit within a smaller context window.</li>
          </ul>

          <p className="kodus-changelog-copy">None of this is posted to the pull request. But if you are investigating why a review missed something, you can now see which context or capability was missing from that run.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://kodus.io/wp-content/uploads/2026/10/Reviews-agora-mostra-o-que-a-Kody-pulou-e-o-que-cada-execucao-perdeu-.mp4" type="video/mp4" />
          </video>

          <div role="heading" aria-level="4" className="kodus-changelog-title">What moved</div>

          <ul className="kodus-changelog-list">
            <li>Review Categories and Suggestion Control now live under What to review.</li>
            <li>Custom Prompts was split up: category-specific instructions moved to What to review, while the general tone became Kody’s personality under What Kody writes.</li>
            <li>PR Summary and Custom Messages moved to What Kody writes.</li>
            <li>Old links redirect to the new pages.</li>
          </ul>

          <p className="kodus-changelog-copy"><strong>Important:</strong> suggestion grouping and per-severity suggestion limits no longer have a UI. The keys still exist under <code className="kodus-changelog-code">suggestionControl</code> and are still applied, but they can now only be changed through <code className="kodus-changelog-code">kodus-config.yml</code>. If your team uses either of them, make sure the file defines the values you expect.</p>

          <div role="heading" aria-level="4" className="kodus-changelog-title">What to check in your workspace after the update</div>

          <ul className="kodus-changelog-list">
            <li>Use the scope selector to see which repositories override the global configuration, especially the severity threshold.</li>
            <li>If you used Custom Prompts, review each category’s instructions under What to review and Kody’s personality under What Kody writes.</li>
            <li>If you use <code className="kodus-changelog-code">kodus-config.yml</code>, make sure the repository badge says the file was applied.</li>
            <li>Under AI providers, open the Routing tab and configure a fallback model so an invalid key or provider outage does not stop reviews.</li>
          </ul>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-git-provider">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Kody replies in her own threads without requiring a mention</div>
          <p className="kodus-changelog-copy">When you reply in a thread started by Kody, you no longer need to write <code className="kodus-changelog-code">@kody</code> to get a response. Kody determines whether the message is directed at her: she responds when it is and stays quiet when you are talking to someone else on the team.</p>
          <p className="kodus-changelog-copy">There are limits on replies to other bots and on the number of replies per thread to prevent conversations from getting stuck in a loop. Available on GitHub, GitLab, Bitbucket Cloud, and Azure Repos.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-self-hosted">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Self-hosted Doctor shows whether reviews ran completely</div>
          <p className="kodus-changelog-copy"><em>Self-hosted.</em> In addition to checking installation configuration, Doctor now analyzes reviews from the last 7 days. It shows:</p>

          <ul className="kodus-changelog-list">
            <li>failed runs;</li>
            <li>what each review had to skip, such as an unavailable sandbox, switching to a fallback model, or partial Kody Rules;</li>
            <li>agents that stopped after hitting their limit;</li>
            <li>findings that could not be posted;</li>
            <li>👍/👎 feedback.</li>
          </ul>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Revised suggestions link back to the original</div>
          <p className="kodus-changelog-copy">When Kody revisits a suggestion from an earlier round, the new comment now links back to the original. She also reads the latest suggestions across the entire PR instead of only a subset per file, so she has a better memory of what she has already said.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-ux-interface">
          <div role="heading" aria-level="3" className="kodus-changelog-title">More visibility into incomplete reviews</div>
          <p className="kodus-changelog-copy">When a review loses part of its context, that is now recorded in the run. Examples include an unavailable repository checkout, switching to a fallback model, or dropped findings.</p>
          <p className="kodus-changelog-copy">When you expand a review on the Reviews page, you can see whether it ran on the fallback provider, with less context, or with reduced fidelity to fit within a smaller context window. None of this is posted to the PR, but if you are investigating why a review missed something, you can now see what it did not have access to.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok">
          <div role="heading" aria-level="3" className="kodus-changelog-title">BYOK model lists load faster</div>
          <p className="kodus-changelog-copy">For OpenAI-compatible providers, the model list loads as soon as you enter the base URL. For OpenAI, the list now shows only models that support chat.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Fewer model calls when syncing Kody Rules</div>
          <p className="kodus-changelog-copy">As long as a rule’s text does not change, Kodus reuses its reference detection results. Saving or syncing rules no longer triggers repeated model calls for the same content.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Clearer errors for centralized configuration</div>
          <p className="kodus-changelog-copy">When a rule file is rejected, the error now tells you which field failed validation.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ux-interface filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Pages show their structure first</div>
          <p className="kodus-changelog-copy">While a page is loading, you now see a preview of its actual layout instead of a blank screen or spinner. Kody Rules notifications also take you directly to the affected rule or repository.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">No duplicate suggestions across review rounds:</strong> Kody no longer flags the same issue again after already posting it on the PR, even when a new commit changes the surrounding code.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Kody Rule violated in multiple places:</strong> when the same rule is violated in multiple locations within a file, the “Also found in” list with the additional locations now appears again in the comment.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Duplicate replies to the same comment:</strong> if a Git provider delivered the same webhook more than once, Kody could reply multiple times. Now each comment gets only one reply. On GitLab, duplicate Kodus webhooks are also removed the next time the repository is saved.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Trial reviews and Kodus-managed model reviews:</strong> Fireworks retired DeepSeek V4 Flash, which was the default model, causing these reviews to fail. The default is now DeepSeek V4.1 Flash, and configurations saved with the old model automatically use the new one.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">BYOK configurations pointing to the retired Fireworks model:</strong> configurations that call Fireworks directly using the old DeepSeek V4 Flash ID no longer fail every review with a “model not found” error.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">More reliable fallback when a provider is down:</strong> if a provider keeps returning temporary errors after all retries are exhausted, the review now switches to the organization’s fallback model instead of failing.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Better compatibility with reasoning models:</strong> Kody ignores reasoning blocks sent before the JSON response. Models that always use reasoning, such as GLM and Kimi, no longer receive the parameter for enabling or disabling reasoning, which some providers reject. If a provider rejects an unsupported reasoning parameter, Kodus retries the request without it. Advanced settings written in the provider’s native format are now passed through to the request.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Empty responses from MiniMax-M3:</strong> Kodus now requests structured output in a format MiniMax-M3 can return correctly. Previously, the model could return an empty response.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">PR summaries for large PRs:</strong> if a PR does not fit within the model’s context window, the summary now processes the files in chunks and continues instead of failing.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-mcp">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Deprecated managed integrations:</strong> integrations that are no longer supported have been removed from the MCP connections list.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-security">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Cross-organization isolation:</strong> routes for members, permissions, CLI keys, issues, integrations, and Kody Rules now only accept resources belonging to the organization making the request. Invitations, organization joins, and team member changes no longer trust IDs provided in the request.</p>
            <p className="kodus-changelog-copy"><strong>Action required for MCP users:</strong> the Kodus MCP server now requires authentication. External clients such as Cursor or Claude Desktop must send a Team CLI key, and creating or editing Kody Rules requires the <code className="kodus-changelog-code">kodyRules:manage</code> permission.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-security filter-byok">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Provider account IDs in failure comments:</strong> some providers include account and key identifiers in billing errors. Those IDs are now hidden from the comments Kody posts when a review fails, including on public PRs.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-self-hosted">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Doctor incorrectly reporting that reviews were not running:</strong> Doctor no longer shows “NOT RUNNING” on installations where reviews are working. It now ignores old incidents outside the analysis window, reevaluates seat warnings, skips the model test for organizations with no repositories, and reads the license from the organizations that are actually running reviews.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Activity logs:</strong> opening the activity logs no longer throws an error when the organization has no records yet or when a filter returns no results.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-billing-licenses">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">All seats in use:</strong> assigning a seat when all seats are occupied now opens an explanatory modal, and a rejected request shows a message. On self-hosted installations, the modal points to the license key, and the number of seats in use is updated when a seat is released.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Unsaved changes that did not exist:</strong> the SSO and General pages no longer show pending changes after you toggle an option on and then back off.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Edits lost when leaving What to review:</strong> unsaved category instructions are now protected when leaving the page, just like on the other configuration pages.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-billing-licenses">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Plan buttons for users without billing access:</strong> locked features no longer show “See plans” or “Activate a license” to users who cannot access billing. Instead, they are told to contact an organization admin.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-billing-licenses filter-byok">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">False paused-reviews warning:</strong> a zero Kodus credit balance no longer shows the paused-reviews banner for organizations that do not use the Kodus provider for reviews.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Routing changes lost when switching tabs:</strong> on the AI providers page, switching tabs no longer discards unsaved routing changes.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">PR details for failed or skipped reviews:</strong> the PR page now shows the run status instead of “Nothing to flag.”</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Creating a rule from a suggestion:</strong> the “Create rule” button now becomes enabled after you select a suggested rule.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-cockpit">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Locked Cockpit:</strong> failed or skipped runs no longer count as reviewed. Organizations with older reviews are also no longer redirected to “Connect a repository.”</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface filter-billing-licenses">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Issues and plan selection copy:</strong> fixed broken counts such as “Showing of 0 issues” and inconsistent PR estimates when models do not have pricing information.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Sidebar on smaller screens:</strong> the current page item is no longer cut off, and opening the app on mobile no longer causes a page error.</p>
          </div>
        </div>
      </div>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">September 25, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok filter-ux-interface">
          <div role="heading" aria-level="3" className="kodus-changelog-title">More Bedrock models in the model picker</div>
          <p className="kodus-changelog-copy">When connecting Amazon Bedrock, the model list now includes supported text models beyond Anthropic’s inference profiles. This makes more of the models available in your Bedrock account selectable during BYOK setup.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Kody Rules using context beyond the diff:</strong> Rules that depended on code elsewhere in a file or in a related file could produce incorrect findings. Repository lookups could report an existing file as missing, and a finding could still be published after its claim had been disproved. Kody now handles that context and those checks consistently before posting the finding.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Contradictory reviews after new commits:</strong> As a PR evolved, Kody could lose track of earlier findings and suggest reversing a change the team had already made in response to her review. Review findings now reach the PR summary, and later review rounds receive previous suggestions and their implementation status as context. This helps Kody stay consistent across commits.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">BYOK in implementation checks:</strong> Checks that validate whether suggestions were implemented now use the organization’s configured model. Previously, these calls could bypass its BYOK configuration.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Findings with unusable code fixes:</strong> If Kody produces a valid finding but its proposed replacement is empty, unchanged, or incomplete, she now keeps the finding and posts it without the unusable code block. Previously, the entire finding could be discarded.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-notifications">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Marking notifications as read:</strong> Marking one notification or all notifications as read works again. Both actions had been returning a server error.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Removing a Kody Rule source:</strong> Deleting a source file, or marking it to be ignored, now removes every rule associated with that path. Previously, duplicate rule records could leave a deleted rule active and still firing.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-mcp filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">The wrong issue used as review context:</strong> When a PR already identifies an issue, Kody’s fallback now looks for that issue instead of selecting an unrelated result from an issue search. If it cannot retrieve the referenced issue, it does not substitute another one.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Documentation search failures:</strong> Kody now distinguishes an unavailable documentation search from a successful search with no results. A search failure no longer tells the review that documentation does not exist.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">OpenCode Go reviews:</strong> BYOK requests to OpenCode Go now include its required session header. Without it, the provider could reject review requests.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Bedrock connection tests:</strong> Testing or saving a Bedrock connection with a selected model no longer fails while handling the credentials. The model picker also loads for a new Bedrock connection instead of waiting for an API key field Bedrock does not use.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Editing Kody Rules and Custom Prompts:</strong> The editors no longer lose keystrokes while you type or delete. Formatting in Kody Rule instructions, including line breaks and lists, is also preserved when you save and reopen them.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Saving Custom Prompts:</strong> The Save button now becomes available when a valid Custom Prompt has been edited.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Settings for organizations without repositories:</strong> Saving code review settings no longer fails when the organization has no connected repositories.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-self-hosted filter-security">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Self-hosted SAML sign-in:</strong> Sign-in links now use the installation’s public API address. Previously, they could point the user’s browser to an internal service address that it could not reach.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">PR-level Kody Rule findings:</strong> A finding that cannot be anchored to a file and changed line is now posted on the pull request. Previously, some of these findings were silently discarded.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-billing-licenses">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Credit balances:</strong> The production web deployment now has the credential required for billing requests. Without it, a failed balance request could incorrectly appear in the interface as a zero balance.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">BYOK calls rejected for empty system messages:</strong> Kodus no longer sends an empty system message to providers that reject it, allowing affected validation calls to complete.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Findings returned outside the expected format:</strong> Kody can now recover findings returned as prose when an OpenAI or compatible provider requires JSON response mode. Previously, the recovery request itself could be rejected.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Findings with unusual confidence values:</strong> An out-of-range confidence value no longer discards an otherwise valid review finding.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Organization-wide conversations:</strong> Conversations no longer fail when the request has no selected team, which is valid for an organization-wide conversation.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-cli filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Trial reviews:</strong> Trial reviews no longer fail while trying to find an integration for the trial’s placeholder organization.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Concurrent settings updates:</strong> Simultaneous changes to the same team setting no longer collide and return an error.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">GitHub review comment placement:</strong> Kody now handles another line-validation error GitHub can return when she tries to attach a finding to a changed line.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Requests for changes:</strong> An incomplete, unpublished critical comment no longer stops Kody’s request-changes step. The step can continue without a link or summary that the comment does not have.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Legacy Azure GPT model settings:</strong> Azure model IDs such as <code className="kodus-changelog-code">gpt-35-turbo</code> are no longer mistaken for reasoning models. Kodus keeps request settings compatible with those models.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">GPT-6 Astra model settings:</strong> Kodus now recognizes GPT-6 Astra as a reasoning model and uses its correct context-window information. This fixes incompatible request parameters and avoids splitting reviews according to a much smaller default window.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">September 8, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Turn conversations with Kody into lasting context</div>
          <p className="kodus-changelog-copy">Kody now takes a more proactive role when you talk to her in a PR. When you explain a team convention, clarify why a suggestion doesn’t apply, or share context worth keeping, she can suggest creating a memory or creating or updating a Kody Rule, without waiting for you to ask.</p>
          <p className="kodus-changelog-copy">This helps turn everyday feedback into knowledge that can guide future reviews. Kody proposes the action and asks for your confirmation before saving changes.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">More flexible BYOK configuration</div>
          <p className="kodus-changelog-copy">You’re no longer tied to a single AI provider. You can now mix providers and models across repositories and specific agents, choosing the setup that best fits each task. This gives your team more flexibility to balance review quality and cost, using more capable models where they matter most and more economical options elsewhere.</p>
          <p className="kodus-changelog-copy">We also rebuilt the configuration experience around that flexibility. Setup adapts to each provider’s credentials and advanced settings, and supported integrations fetch available models directly from the provider’s API. You can configure primary and fallback models and fine-tune their settings from the updated flow.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://kodus.io/wp-content/uploads/2026/09/byok-conf-final.mp4" type="video/mp4" />
          </video>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug Fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Reasoning settings now respect the selected model:</strong> We fixed how the configured reasoning level is applied across different providers and model families, including compatibility with temperature settings.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Review sizing now respects model capacity:</strong> We improved context-window handling so reviews are split according to the available capacity of the selected model.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">OpenRouter provider preferences:</strong> You can now enter multiple providers without commas disappearing as you type. Saved preferences also remain intact when you reopen and edit the configuration.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Existing BYOK configurations remain intact:</strong> We fixed migration cases that could remove Bedrock configurations, setups containing only fallback models, or OpenRouter options. We also restored fallback model references affected by the migration.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">More reliable model fallback:</strong> Tool compatibility now takes both the primary and fallback models into account. Reviews also correctly switch to the fallback model when rate-limit retries are exhausted.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine filter-performance">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Stalled model calls no longer wait indefinitely:</strong> We added timeouts to operations that could previously get stuck, including review processing and BYOK connection checks.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine filter-notifications">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Clearer handling of unavailable models:</strong> Reviews that cannot obtain an available BYOK model are now reported as failed instead of appearing to complete successfully. We also prevent duplicate notifications for the same model-exhaustion failure.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fewer unnecessary retries after provider billing errors:</strong> Errors that require changes to the provider account or payment setup no longer trigger repeated retries that cannot resolve the issue.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Better recovery from unexpected model responses:</strong> We improved how reviews handle responses that contain useful content in an unexpected format, reducing failures caused by response structure.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">More complete suggestion formatting:</strong> We fixed cases where the formatting step could leave suggestions out of the final review.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Cleaner review comments:</strong> Internal labels used during generation and auxiliary numbered structures are now removed more consistently before suggestions are published, without rewriting normal explanatory text.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Manual review requests are preserved:</strong> When you request a review while the PR is already being processed, the request is deferred to a new attempt instead of being silently dropped.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Correct branch selection for reviews:</strong> Reviews now consistently take the repository’s default branch, configured branch patterns, and explicit exclusions into account when deciding whether a PR should be reviewed.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Bitbucket repository configuration:</strong> We fixed how Kodus reads configuration files from Bitbucket repositories, ensuring repository settings are loaded during reviews.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-mcp filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">More reliable task context retrieval:</strong> We fixed cases where issue identifiers were sent to integration fields that only accept predefined options, causing task-context requests to fail.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-performance">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">More reliable reaction counts:</strong> We fixed reaction synchronization to prevent stale counts and reduced the number of simultaneous requests sent to Git providers.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-cockpit">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Cache write costs are easier to identify:</strong> Usage related to cache writes now appears separately in token charts and cost breakdowns.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-cockpit">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Token usage is recorded even when operations fail:</strong> We fixed cases where an error could prevent token usage from being saved, leaving consumption reports incomplete.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-notifications">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Notifications follow the selected organization:</strong> The notification feed, unread count, and mark-as-read actions now consistently apply to the organization you are currently viewing.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-cockpit">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Dashboard pagination no longer skips records:</strong> We fixed how subsequent pages resume loading results, preventing records from being missed between pages.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-cockpit">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Cockpit cards respect the selected date range:</strong> We fixed analytics cards that were using their own date ranges instead of the dashboard’s shared filter.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-cockpit filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Date filters remain accurate after midnight:</strong> Date-picker presets and the current-day selection now remain correct when the page stays open across midnight.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Faster access to review findings:</strong> Clicking the suggestion count in the PR list now takes you directly to the first finding.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Easier workspace selection:</strong> The workspace selection screen now supports scrolling through longer lists and uses less space at the top of the screen.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Clearer Git integration errors:</strong> Repository connection and selection flows now show more useful error messages, making it easier to understand why an integration could not be completed.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Better keyboard navigation:</strong> We improved focus visibility and made interactive table rows accessible using Enter and Space.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Reduced-motion preferences are respected:</strong> Interface animations now reduce motion when that preference is enabled on your device.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-self-hosted">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">More reliable self-hosted startup:</strong> We updated the MongoDB versions used in Docker Compose to avoid an identified kernel compatibility issue. Dependent services now wait for the database to become healthy before starting.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">August 24, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-self-hosted filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Vertex AI without static keys</div>
          <p className="kodus-changelog-copy">Self-hosted installations can now authenticate with Vertex AI using the identity already provided by the cloud infrastructure. This reduces the need to store sensitive credentials and simplifies setup in environments such as GKE, EKS, and Cloud Run.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Jira task context:</strong> Kody now correctly identifies the Atlassian environment when fetching Jira issues used as review context. This allows it to access the right task information and use it when evaluating the pull request.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-performance">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">More reliable GitLab clones:</strong> we fixed clone failures that could occur when a project was renamed or moved to another GitLab group. We now also cache this information for a period of time, reducing API calls and speeding up the start of reviews.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Conversations with Kody in Azure DevOps:</strong> questions asked with <code className="kodus-changelog-code">@kody</code> directly in a new Azure DevOps thread now receive a response as expected. Previously, Kody could only find comments that were already replies within an existing conversation.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-billing-licenses">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Safer license management:</strong> we improved seat management to prevent licenses from being removed incorrectly and make assignment based on Git identity more reliable. Bot accounts are now handled correctly in this flow as well.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Clearer reviewer selection:</strong> we refined the loading states and buttons in the reviewer selection step. The flow now makes it clearer when an action is being processed and prevents inconsistent clicks or navigation.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Centralized Kody Rules sync:</strong> rules being changed through a configuration PR no longer disappear during synchronization. They remain visible while waiting for the PR to be merged and return to the correct state once the change is complete.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-mcp filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">More resilient business rule validation:</strong> we improved the handling of MCP integration failures and parameters with predefined options. This prevents integration errors or valid argument formats from incorrectly interrupting a validation.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Kody Rules in the organization’s language:</strong> comments generated from Kody Rules now respect the organization’s configured language. Teams configured to use Portuguese, for example, will receive rule explanations and guidance in the expected language.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Safer interpretation of Kody Rules:</strong> we added a validation step to make sure examples used internally by Kody do not reverse the intended meaning of a rule. This reduces the risk of suggesting a change that conflicts with the policy defined by the team.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">More predictable selection lists:</strong> selection menus now use the browser’s native scrolling behavior. This makes interactions more stable, especially in longer lists.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Conversations with Kody in GitLab and Bitbucket:</strong> we fixed Kody’s reply flow in pull request conversations on GitLab and Bitbucket, ensuring that questions posted in comments receive the expected response.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Bitbucket Data Center webhooks:</strong> pull requests from Bitbucket Data Center and Server are now correctly recognized when a webhook is received. Previously, some of these events could be ignored and fail to trigger an automatic review.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">August 17, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Support for Agent Rules in <code className="kodus-changelog-code">.agents/rules</code></div>
          <p className="kodus-changelog-copy">Some AI development tools let teams keep engineering instructions in the <code className="kodus-changelog-code">.agents/rules/</code> directory, including architecture standards, coding conventions, and constraints for changes to specific parts of a repository.</p>
          <p className="kodus-changelog-copy">We fixed how Kodus discovers these files. Previously, rules stored in this format could be missed during import and would not appear as a source for Kody Rules. Kody now recognizes files under <code className="kodus-changelog-code">.agents/rules/\*\*</code>, allowing these instructions to be discovered and used in the rules and review workflow.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Reasoning configuration for Anthropic BYOK models:</strong> we fixed compatibility between reasoning effort options and different generations of Anthropic models. The interface and runtime now apply only the settings supported by the selected model.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">More reliable Centralized Configuration:</strong> we fixed four scenarios related to syncing and exporting centralized configurations:</p>

            <ul className="kodus-changelog-list">
              <li>A missing configuration in a repository is no longer treated as if it had been deleted.</li>
              <li>Repositories whose configuration is organized entirely in directories now get the correct baseline, and configuration package downloads have been fixed.</li>
              <li>Rules are converted into plain objects before YAML generation, preventing incorrectly serialized content.</li>
              <li>Legacy scopes are now reconciled using ownership records already known by the system.</li>
            </ul>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules filter-billing-licenses">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Plan-restricted rules update after an upgrade:</strong> when an organization changes plans, Kody Rules that were previously unavailable are recalculated and synced again. This ensures the status shown for each rule reflects the organization’s current eligibility.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-performance">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Protection against database connection pool exhaustion:</strong> we made several related fixes to reduce pressure on the database connection pool:</p>

            <ul className="kodus-changelog-list">
              <li>Concurrent queries and workflows now handle connections and locks more safely.</li>
              <li>Cron jobs that could trigger large numbers of simultaneous queries are now limited.</li>
              <li>Supporting indexes were added to the most critical paths.</li>
              <li>The Kody Learning cron no longer continuously consumes connections while it runs.</li>
            </ul>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-performance">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Automatic retries when GitHub rate limits are reached:</strong> when a review hits the GitHub API rate limit, the job now fails as a transient error and is requeued for another attempt instead of waiting silently, making recovery more predictable.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Pull request cards refresh after suggestion validation:</strong> the “Needs attention” and “Awaiting” counters now update when suggestion implementation checks finish, so the interface no longer shows stale numbers until the next manual refresh.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-billing-licenses">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Seats from former members are removed correctly:</strong> we added cleanup for seats assigned to people who are no longer part of the organization. This keeps the license list and available seat count consistent.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-cli filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">More actionable CLI errors:</strong> the CLI no longer shows only generic messages such as <code className="kodus-changelog-code">Request failed with status 403</code>. For permission errors, oversized payloads, or large reviews, it now explains the likely cause and suggests next steps, such as narrowing the scope or using <code className="kodus-changelog-code">--branch</code>, <code className="kodus-changelog-code">--commit</code>, or <code className="kodus-changelog-code">--fast</code>.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">August 10, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Linked Repository Context in Reviews</div>
          <p className="kodus-changelog-copy">Kody can now reference linked repositories while reviewing a pull request. This gives it better context for changes that depend on contracts, shared libraries, internal APIs, or standards maintained outside the current repository.</p>
          <p className="kodus-changelog-copy">In practice, suggestions can now more accurately account for how the code connects to the rest of your organization’s ecosystem.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-cli filter-ux-interface">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Findings Sidebar and a New CLI Review Experience</div>
          <p className="kodus-changelog-copy">The Kodus CLI now offers a more complete review experience. In addition to inline comments, you can now view a sidebar with findings grouped by severity and jump directly between them.</p>
          <p className="kodus-changelog-copy">The update also improves navigation through large diffs and expands support for reviewing branches, commits, and specific files from the same interface.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://kodus.io/wp-content/uploads/2026/08/kodus-cli.mp4" type="video/mp4" />
          </video>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Fewer Duplicate Comments in Reviews</div>
          <p className="kodus-changelog-copy">Deduplication now considers suggestions generated by both Kody and Kody Rules together, with an additional semantic layer. In practice, when both flows identify the same issue, the PR is more likely to receive a single useful comment instead of repeated feedback.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fragmented <code className="kodus-changelog-code">@file</code> references in Kody Rules:</strong> we fixed how <code className="kodus-changelog-code">@file</code> references are loaded during fragmented reviews. External files are now properly considered even when a rule is processed in multiple parts.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Slow reviews no longer appear as “no review”:</strong> we improved how long-running reviews and LLM rate-limiting scenarios are handled. PR status now more accurately reflects a review that is still running or temporarily constrained, rather than suggesting that no review took place.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-performance">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Recovery after hitting GitHub rate limits:</strong> when the integration hits a GitHub API rate limit, the job now fails fast and is requeued instead of silently getting stuck. This makes review execution and recovery more predictable.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">BYOK status now accurately reflects your configuration:</strong> the subscription screen now correctly detects whether an organization has a valid BYOK key connected, including locally managed configurations. This prevents conflicting messages about the key’s status.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine filter-performance">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Large tool outputs no longer break agent execution:</strong> we improved compression for large JSON responses returned by agent tools. The data structure is preserved, and execution remains stable even with large outputs.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-performance">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">More stable event processing:</strong> we fixed a pool exhaustion and event amplification scenario that could affect asynchronous processing. The pipeline now uses resources more safely under load.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine filter-byok">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Deduplication remains stable with BYOK:</strong> the embeddings used to prevent duplicate suggestions are now pinned to the correct provider, even when an organization uses BYOK or a custom endpoint.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">July 30, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules filter-ux-interface filter-billing-licenses">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Global Rules Sync from Repositories</div>
          <p className="kodus-changelog-copy">Organizations on the Teams plan can now configure repositories as sources for Global Rules. This allows teams to keep their review rules version-controlled directly in Git, alongside the project's technical context, while Kody automatically syncs those rules for use during reviews.</p>
          <p className="kodus-changelog-copy">This release also introduces a new interface under Code Review settings where users can select, save, and manage source repositories, monitor import status, and manually trigger a new sync when needed.</p>
          <p className="kodus-changelog-copy">In practice, this makes it easier to adopt shared standards across teams and repositories. Instead of manually creating rules in each configuration, organizations can centralize conventions, best practices, and internal policies in dedicated repositories, with greater visibility and control over when those rules were last synced.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://mintcdn.com/kodus/0OLoxLFmkWlchw8B/videos/global-rules-for-repository.mp4?fit=max&auto=format&n=0OLoxLFmkWlchw8B&q=85&s=46a393c5b68e0ea8a71c07468ca5381d" type="video/mp4" data-path="videos/global-rules-for-repository.mp4" />
          </video>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules filter-ai-engine filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Kody Rules with Structured Summaries</div>
          <p className="kodus-changelog-copy">We now run a preliminary analysis on every Kody Rule to better understand its intent before it is used in a review.</p>
          <p className="kodus-changelog-copy">When a rule is too broad or covers multiple behaviors, it can be broken down into atomic rules: smaller, more specific rules that can either be validated deterministically with regex or evaluated by an LLM when contextual interpretation is required.</p>
          <p className="kodus-changelog-copy">In practice, this helps Kody apply complex rules more accurately. Instead of treating a long rule as a single block, the agent works with smaller validation units, reducing ambiguity while better preserving the rule's original intent.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Better PR Scope for Kody Rules</div>
          <p className="kodus-changelog-copy">The agent now uses the full PR diff when applying Kody Rules instead of relying only on file names. This gives Kody more meaningful context about the actual changes being reviewed.</p>
          <p className="kodus-changelog-copy">With this improvement, rules that depend on modified content have a stronger basis for evaluation. This is especially relevant for rules that verify implementation patterns, contract changes, internal API usage, or sensitive changes in specific parts of the code.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Reviews Now Skip Global Rules Source Repositories</div>
          <p className="kodus-changelog-copy">When a repository is used exclusively as a source for Global Rules, Kody now skips reviews in that repository. This prevents repositories created solely to store rules from generating unnecessary reviews.</p>
          <p className="kodus-changelog-copy">In addition to reducing noise for the team, this also avoids consuming resources on a workflow that provides no practical value. The source repository can now serve its purpose as a configuration source without being treated like a regular product repository.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Better Token and Context Management in the Agent Loop</div>
          <p className="kodus-changelog-copy">The agent's token and context management has been strengthened with stricter per-request limits, a real tokenizer, and more accurate overhead accounting. This makes the agent's behavior more predictable on large PRs or when a significant amount of context has accumulated.</p>
          <p className="kodus-changelog-copy">In practice, this reduces the risk of context overflow and makes executions more stable. The agent can operate within more reliable limits, improving both review quality and the rate of intermittent failures.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok filter-ai-engine filter-ux-interface">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Clearer LLM and BYOK Error Messages</div>
          <p className="kodus-changelog-copy">We improved the messages displayed when failures occur involving LLMs or BYOK keys. Instead of returning generic errors, the system now makes it clearer whether the issue is related to configuration, quota, billing, or communication with the provider.</p>
          <p className="kodus-changelog-copy">This makes troubleshooting easier for administrators and technical users. In BYOK environments, where the provider key and account are managed by the customer, clearer messages reduce investigation time and help teams resolve issues without relying on trial and error.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Langfuse Telemetry Compatible with AI SDK 7</div>
          <p className="kodus-changelog-copy">Langfuse telemetry has been updated to work correctly with AI SDK 7, including improved handling of cache, reasoning, and token usage fields.</p>
          <p className="kodus-changelog-copy">This improvement increases the accuracy of observability data for AI calls. With more reliable metrics, it becomes easier to monitor costs, model behavior, and the impact of changes to the review pipeline.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-git-provider filter-ux-interface filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Improved Pagination for Bitbucket and Repository Lists</div>
          <p className="kodus-changelog-copy">Pagination has been improved across Bitbucket flows and repository lists in the frontend. This makes the experience more robust for organizations with a large number of repositories or paginated responses from the integration.</p>
          <p className="kodus-changelog-copy">With this improvement, the system can handle larger volumes of data more reliably, preventing incomplete lists and reducing failures during onboarding or integration setup.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules filter-security">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Safer Centralized Config</div>
          <p className="kodus-changelog-copy">Centralized Config sync now avoids deleting configurations when discovery fails or returns an empty result. Previously, a failure during the discovery process could create a risk of incorrect reconciliation.</p>
          <p className="kodus-changelog-copy">With this safeguard, the system now handles partial failures more conservatively. This reduces the risk of accidentally losing rules or configurations and improves the reliability of a sensitive workflow for organizations that depend on centralized configuration.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fixed GitLab Suggestions:</strong> we fixed suggestion creation in GitLab so comments are only added to newly added lines, preventing phantom suggestions.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Support for Draft/WIP Merge Requests in GitLab:</strong> we now correctly respect Merge Requests marked as draft or work in progress in GitLab.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Custom Bot Usernames in GitLab:</strong> we fixed support for review commands when the GitLab bot uses a custom username.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-performance">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fixed <code className="kodus-changelog-code">getCommits</code> Timeouts:</strong> transient <code className="kodus-changelog-code">getCommits</code> failures, such as Undici timeouts, are now handled correctly and rethrown when necessary.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fixed the Needs Attention State:</strong> we fixed an issue that could leave a review stuck in the needs attention state.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fixed Onboarding and Member Telemetry:</strong> the onboarding flow received fixes to prevent it from getting stuck during member lookups and telemetry processing, especially in scenarios involving suspended users or slow API responses.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fixed the Invitation Flow:</strong> the invitation page and flow were updated to prevent failures when new users join.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fixed GitHub Webhook Creation:</strong> webhook creation and listing now correctly use the repository owner, preventing failures when the repository owner differs from the primary account.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fixed Repository-Level Configuration:</strong> we fixed the function used to delete repository-specific configurations.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fixed Rule Creation and Import:</strong> the logic for adding global or repository-level rules was fixed, along with improvements to the search field.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fixed the BYOK Switching Button:</strong> the model and provider switching experience in BYOK was updated to prevent confusion during editing.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fixed Language Flash in Settings:</strong> we fixed the visual language flash that appeared on settings pages after a reload.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fixed Progress Bar Text:</strong> we updated the text displayed in the progress bar to improve interface clarity.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-performance">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fixed API Errors for Invalid Parameters:</strong> Postgres <code className="kodus-changelog-code">22P02</code> errors, such as invalid UUIDs or integers, now return a 400 error instead of a 500.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-self-hosted filter-performance">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Sandbox Lease Fixes:</strong> we fixed race conditions and <code className="kodus-changelog-code">leaseCount</code> leaks in sandbox management, including cleanup, invalidation, and superseded lease scenarios.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-self-hosted filter-performance">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">RabbitMQ and Workflow Queue Fixes:</strong> workflow queues now use centralized arguments and are correctly declared and bound with a DLX, reducing inconsistencies during initialization.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">July 20, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules filter-ux-interface">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Kody Rules: Select Reviewers</div>
          <p className="kodus-changelog-copy">Kody Rules can now take selected reviewers into account during the configuration flow. This gives teams greater control when directing specific rules to the people or groups best suited to the context of a review.</p>
          <p className="kodus-changelog-copy">This update helps reduce noise and improves rule governance, especially in organizations with multiple teams, domain areas, or repositories with clearly distributed ownership.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ux-interface filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Removed Preset Step, Added Severity Level, and Fixed Enable/Disable Buttons</div>
          <p className="kodus-changelog-copy">We simplified the review setup by removing the preset step and adding severity-level configuration. Teams can now define the level of criticality that reviews should consider directly during onboarding.</p>
          <p className="kodus-changelog-copy">We also fixed the enabled and disabled states of several buttons, making the setup flow more predictable and reducing confusion during initial configuration.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-ux-interface">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Append Team-Authored Custom Messages to Error Comments</div>
          <p className="kodus-changelog-copy">Custom messages written by the team are now also included in code review error comments.</p>
          <p className="kodus-changelog-copy">This allows Kody's communication to preserve the tone, context, and instructions defined by each organization, even when an analysis identifies an issue. The improvement helps standardize the developer experience and makes comments better aligned with each team's internal processes.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-self-hosted filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Bounded Reaper Concurrency and Improved Handling for E2B Sandboxes That No Longer Exist</div>
          <p className="kodus-changelog-copy">We improved the process responsible for cleaning up sandboxes by introducing controlled concurrency. This prevents spikes in simultaneous operations and makes cleanup more stable in high-volume environments.</p>
          <p className="kodus-changelog-copy">We also now correctly handle cases where a sandbox no longer exists in E2B, preventing unnecessary errors and making the sandbox lifecycle more resilient.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-performance filter-cockpit filter-ux-interface">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Performance Improvements for Heavy Screens and Analytics</div>
          <p className="kodus-changelog-copy">We refactored some of the product's heavier screens, particularly areas containing lists, filters, and analytics, to improve performance and responsiveness.</p>
          <p className="kodus-changelog-copy">The work includes improvements to queries, rendering, data loading, and the overall visual experience in workflows that handle large amounts of information. The expected result is smoother navigation, less frontend overhead, and more reliable presentation of the displayed data.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Rules Generated from Past Reviews:</strong> fixed the generation of Kody Rules from previous reviews, improving the reliability of the rule-learning and creation flow.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-self-hosted">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Use the Correct Queue Names for the RabbitMQ Health Check:</strong> fixed the queue names used by the RabbitMQ health check. Previously, the check could fail to accurately reflect the state of the queues used by the application. It now checks the expected queue names, improving the accuracy of the system's health signals.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-security filter-self-hosted">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Harden Local Sandbox <code className="kodus-changelog-code">readFile</code>/<code className="kodus-changelog-code">writeFile</code> Path Validation:</strong> strengthened path validation for <code className="kodus-changelog-code">readFile</code> and <code className="kodus-changelog-code">writeFile</code> operations in the local sandbox. The change prevents unauthorized access outside the permitted directory and reinforces execution-environment isolation. This improves the security and reliability of file read and write operations within the sandbox.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fix Bitbucket Requests to Avoid 429 Errors:</strong> adjusted how requests are made to Bitbucket to reduce the occurrence of 429 rate-limit errors. The fix improves integration stability, especially for organizations with a high volume of repositories, pull requests, or simultaneous operations.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-security filter-self-hosted">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Close Parent Directory Swap TOCTOU Vulnerability in Local Sandbox <code className="kodus-changelog-code">writeFile</code>:</strong> fixed a time-of-check to time-of-use race condition in the local sandbox's <code className="kodus-changelog-code">writeFile</code> operation. The flow now performs stronger validation of the actual path before writing, preventing changes to the parent directory from redirecting the operation outside the expected location. This strengthens isolation and reduces risks during write operations.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Change <code className="kodus-changelog-code">@Kody resume</code> to <code className="kodus-changelog-code">@Kody start-review</code> in the Cadence Message:</strong> updated the cadence message to correctly instruct users to use <code className="kodus-changelog-code">@Kody start-review</code> instead of <code className="kodus-changelog-code">@Kody resume</code>. This reduces ambiguity and prevents incorrect commands from being suggested during the review flow.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-self-hosted">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Resolve CLI Sandbox Clone Platform from the Connected Integration:</strong> fixed how the platform used to clone repositories inside the CLI sandbox is resolved. The platform is now determined based on the integration connected to the repository, preventing inconsistencies in environments using GitLab, Bitbucket, or other self-managed integrations.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Fix LLM Compression Message:</strong> fixed the compression message generated by the LLM during the code review flow. This step is used when the context needs to be compressed so the analysis can continue. The fix makes the communication clearer and prevents incorrect or confusing messages during processing.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Remove Repository from Integration Configuration When Removed from Repository Settings:</strong> fixed synchronization between repository-level settings and integration settings. When a repository is removed from the repository-level configuration, it is now also correctly removed from the integration configuration, preventing inconsistent states and unexpected review behavior.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Business Rules Validation:</strong> fixed the business rules validation flow. This change improves the reliability of business-rule-based analysis, helping Kody interpret and apply these validations more consistently during code review.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">July 13, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ux-interface filter-byok">
          <div role="heading" aria-level="3" className="kodus-changelog-title">New Token Usage Experience</div>
          <p className="kodus-changelog-copy">The Token Usage page has been redesigned to provide a more complete view of consumption.</p>
          <p className="kodus-changelog-copy">It is now easier to track costs by area, model, and review activity, as well as filter the data and drill down into more specific analyses. This helps teams better understand where tokens are being used and how they can optimize costs.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://kodus.io/wp-content/uploads/2026/07/new-experience-token-usage.mp4" type="video/mp4" />
          </video>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules filter-ai-engine filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Automatic Detector Backfill for Existing Rules</div>
          <p className="kodus-changelog-copy">Organizations that created Kody Rules before this release can also benefit from the new architecture. We created an automated process that analyzes existing rules and, whenever possible, generates mechanical detectors for them.</p>
          <p className="kodus-changelog-copy">The process is incremental, safe, and does not interfere with the normal execution of rules. When a rule cannot be converted into a detector, it continues to work through the traditional semantic review flow.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules filter-ai-engine filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">More Accurate and Predictable Kody Rules</div>
          <p className="kodus-changelog-copy">We restructured how Kody applies custom rules during code reviews. Instead of relying solely on a more open-ended agent analysis, rules are now evaluated deterministically by file and PR scope.</p>
          <p className="kodus-changelog-copy">In practice, this improves rule coverage in large PRs, reduces cases where an applicable rule is overlooked, and makes Kody Rules behave more consistently across different models.</p>
          <p className="kodus-changelog-copy">We also introduced mechanical detectors for certain rules. When a rule can safely be converted into an objective check, Kody can apply it without making an LLM call, reducing costs and improving predictability.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Code Review Engine Improvements</div>
          <p className="kodus-changelog-copy">This release includes a major upgrade to the review agent runtime. We migrated important parts of the execution flow to a new agent harness foundation, making the system more modular, observable, and ready for future improvements.</p>
          <p className="kodus-changelog-copy">We also improved the engine used to search for evidence in the codebase, with a focus on finding more relevant cross-file references and increasing the quality of generated suggestions.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-ux-interface">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Cleaner Review Comments</div>
          <p className="kodus-changelog-copy">We adjusted the format of Kody's review comments to prevent internal reasoning structures from appearing in the output and to make suggestions more natural, concise, and easier to understand.</p>
          <p className="kodus-changelog-copy">We also fixed issues involving aliases and internal prompt references following recent refactors.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Improved BYOK Support</div>
          <p className="kodus-changelog-copy">We improved BYOK support across different parts of the product, including configuration, model fallback, and per-model cost calculations.</p>
          <p className="kodus-changelog-copy">We also introduced a clearer experience for viewing BYOK settings and understanding how each model affects token consumption.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">More Accurate Cost Tracking and Telemetry</div>
          <p className="kodus-changelog-copy">We improved the observability of LLM calls to ensure token usage is attributed correctly, especially within the new Kody Rules and agent workflows.</p>
          <p className="kodus-changelog-copy">This increases the accuracy of usage reports and prevents undercounting in more complex review scenarios.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-mcp filter-security">
          <div role="heading" aria-level="3" className="kodus-changelog-title">MCP Manager and Plugin Improvements</div>
          <p className="kodus-changelog-copy">We improved tenant isolation for MCP connections, enhanced connection sorting and testing, and removed legacy integrations that had already been deprecated.</p>
          <p className="kodus-changelog-copy">These changes increase the reliability of the plugins and integrations experience.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-self-hosted filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Improvements for Self-Hosted Environments</div>
          <p className="kodus-changelog-copy">We applied fixes to Dockerfiles, provisioning scripts, and local configuration to make self-hosted environments more stable.</p>
          <p className="kodus-changelog-copy">We also fixed an issue involving pnpm on macOS and adjusted the API hostname configuration used during provisioning.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-performance filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">More Stable Observability</div>
          <p className="kodus-changelog-copy">We fixed excessive memory consumption in the Mongo observability exporter and improved logging behavior across different environments.</p>
          <p className="kodus-changelog-copy">We also removed outdated references to the previous internal framework, simplifying the observability codebase.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">New Quality Tests and Validations</div>
          <p className="kodus-changelog-copy">We added new end-to-end scenarios and evaluations to validate Kody Rules, model recall, suggestion adherence, and prompt regressions.</p>
          <p className="kodus-changelog-copy">These validations help ensure that changes to models, prompts, or the underlying architecture do not reduce review quality.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ux-interface filter-byok filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Updated Documentation</div>
          <p className="kodus-changelog-copy">We updated the documentation for BYOK, custom messages, and focused reviews. We also revised the README and added new pages explaining how to guide Kody during a review.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-security filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Safer Rule Execution:</strong> we added protections against potentially unsafe regex patterns in Kody Rules detectors. This prevents malformed or computationally expensive rules from affecting review performance. We also fixed cases where outdated detectors could remain associated with a rule after an edit changed the rule's intended behavior.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-billing-licenses filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">License and Billing Improvements:</strong> we fixed issues involving trial creation, the listing of inactive users or users removed from the Git organization, and active seat counts. These changes make the license page more consistent and reduce discrepancies between the organization's actual users and the users displayed in billing.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">July 6, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Steer a review with focus</div>
          <p className="kodus-changelog-copy">You can now ask Kody to pay special attention to something specific during a review, without changing any configuration.</p>
          <p className="kodus-changelog-copy">In a PR, use <code className="kodus-changelog-code">@kody review \<directive></code>. In the CLI, use <code className="kodus-changelog-code">kodus review --focus</code>.</p>
          <p className="kodus-changelog-copy">Examples:</p>

          <ul className="kodus-changelog-list">
            <li><code className="kodus-changelog-code">@kody review focus on security</code></li>
            <li><code className="kodus-changelog-code">@kody review focus on performance</code></li>
            <li><code className="kodus-changelog-code">kodus review --focus "edge cases"</code></li>
          </ul>

          <p className="kodus-changelog-copy">This is especially useful for larger PRs or sensitive changes, where you want the review to go deeper on a specific area, such as security, performance, edge cases, a business rule, or a team standard.</p>
          <p className="kodus-changelog-copy">Focus works as a priority, not a filter. Kody pays closer attention to the context you provide, but still reports other concrete issues it finds in the diff.</p>
          <p className="kodus-changelog-copy">Learn more in the <a className="kodus-changelog-link" href="https://docs.kodus.io/en/how_to_use/code_review/review_directive">Steer a Review (Focus)</a> documentation.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-git-provider">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Consolidate LLM prompts into a single comment</div>
          <p className="kodus-changelog-copy">We added an option to generate a single PR comment containing all prompts and suggestions, so an external agent or AI tool can apply the fixes in one pass.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://kodus.io/wp-content/uploads/2026/07/agent-prompt.mp4" type="video/mp4" />
          </video>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ux-interface">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Select all repositories at once</div>
          <p className="kodus-changelog-copy">In the add repositories modal, we added <strong>select all</strong> and <strong>clear selection</strong> buttons. For teams connecting dozens of repositories, this removes the need to select each one manually and significantly reduces setup time.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://kodus.io/wp-content/uploads/2026/07/add-repo-qa.mp4" type="video/mp4" />
          </video>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Cost breakdown by model (BYOK)</div>
          <p className="kodus-changelog-copy">Teams using Bring Your Own Key now have a detailed view of LLM usage by model on the costs screen. Instead of seeing only the total amount, you can identify exactly which providers and models are driving most of the usage and make clearer decisions about what to keep, replace, or limit.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://kodus.io/wp-content/uploads/2026/07/resumo-de-custos-por-modelo.mp4" type="video/mp4" />
          </video>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Review agent consolidation</div>
          <p className="kodus-changelog-copy">We reorganized the code review agents to run on a unified infrastructure. Previously, parts of the flow were spread across different places, which could lead to duplicated suggestions and inconsistent behavior. With this consolidation, the pipeline is more predictable, easier to maintain, and less likely to repeat suggestions in the same PR.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Content guard for deduplication</div>
          <p className="kodus-changelog-copy">We improved the deduplication algorithm so distinct bugs are not grouped as if they were the same issue. The content guard now better considers the actual content of each suggestion, reducing false-positive deduplication and making sure separate issues continue to be reported individually.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Prose findings recovery + Gemini support</div>
          <p className="kodus-changelog-copy">We fixed unstable behavior in prose finding generation and restored strict mode for Gemini. We also updated the Anthropic SDK, keeping compatibility with newer models and improving response stability.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-cockpit">
          <div role="heading" aria-level="3" className="kodus-changelog-title">RBAC documentation</div>
          <p className="kodus-changelog-copy">We updated the permissions documentation, including the <code className="kodus-changelog-code">OrganizationSettings</code> scope and the restriction that only the organization Owner can configure BYOK. This makes it clearer who can do what inside the workspace.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Review comments with broken formatting:</strong> fixed cases where Kody comments appeared with unexpected formatting in pull requests.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Retry errors with BYOK providers:</strong> added preventive adjustments to avoid retry failures when a BYOK provider returns an empty response body.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Sandbox tool errors:</strong> the agent now handles errors better when running tools in the sandbox environment, without breaking the review.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Normalized user IDs:</strong> standardized how author, reviewer, and assignee IDs are handled, preventing PRs from breaking because of type differences, such as string vs. number.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">@kody conversation crashing on JSON wrapped in prose:</strong> fixed a crash that happened when Kody responded to mentions and the output came back as text containing embedded JSON.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">IDE sync config now respects approval settings:</strong> IDE rule synchronization now respects the approval configuration.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Rules with multiple directories:</strong> adjusted Kody Rules validation to correctly handle rules that apply to multiple path groups.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Automatic code review config creation:</strong> when a repository did not have a code review configuration, creating a Kody Rule could fail silently. The configuration is now created automatically.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Diff re-review in the agent:</strong> improved how the agent detects diffs from new commits during re-reviews.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-mcp">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">MCP Manager OAuth disconnect:</strong> fixed an issue with disconnecting OAuth credentials in MCP Manager that could cause inconsistent behavior.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-mcp">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">MCP Manager production build:</strong> the MCP Manager production build now correctly passes the GitHub token.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-cockpit">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Orphaned users in the license list:</strong> users removed from the GitHub organization now appear correctly in the license list.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-notifications">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Skipped review email:</strong> the notification email sent when a review is skipped now includes the author's name/email and no longer breaks when the user does not have a license.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">June 29, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Validated review engine</div>
          <p className="kodus-changelog-copy">We updated Kody's review pipeline to improve analysis accuracy and reduce cases where important issues could slip through unnoticed.</p>
          <p className="kodus-changelog-copy">The engine now identifies problematic patterns more effectively, better understands changes that span multiple files, and can review code regions with more flexibility when the context is not fully obvious.</p>
          <p className="kodus-changelog-copy">We also optimized processing and reduced the average cost per review by around 30%.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-cockpit">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Shareable dashboard views</div>
          <p className="kodus-changelog-copy">Filters applied in Cockpit are now saved in the URL, including time range, repositories, severity, and status.</p>
          <p className="kodus-changelog-copy">This means you can copy the link and share it with your team on Slack, for example. Anyone who opens the URL will see Cockpit with the same filters applied, without having to manually recreate the view.</p>
          <p className="kodus-changelog-copy">This makes it easier to share specific analyses, such as what changed over the past week or an increase in security suggestions in a repository.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://mintcdn.com/kodus/Y3FFBZB-0VxeL68o/videos/kodus-copy-url.mp4?fit=max&auto=format&n=Y3FFBZB-0VxeL68o&q=85&s=a50c3c5c6c2550c37812941af00fd7e6" type="video/mp4" data-path="videos/kodus-copy-url.mp4" />
          </video>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Unified Kody Rules lifecycle</div>
          <p className="kodus-changelog-copy">We unified the Kody Rules flow into a single lifecycle, regardless of where the rule was created: the library, manual creation, or inheritance from the organization to the repository.</p>
          <p className="kodus-changelog-copy">With this change, activating, editing, disabling, and approving rules now follow the same path inside the product. We also migrated older rules to the new format and centralized the control of rules pending approval.</p>
          <p className="kodus-changelog-copy">This makes the system more consistent, reduces unexpected states, and ensures that an active rule is actually applied in Kody reviews.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-mcp">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Migrate away from Composio</div>
          <p className="kodus-changelog-copy">We removed the dependency on Composio as an external MCP broker and moved to our own implementation for GitHub Issues, now integrated with Kodus Issues.</p>
          <p className="kodus-changelog-copy">This reduces an external point of failure, improves call reliability, and gives us more control over authentication, rate limits, and retries.</p>
          <p className="kodus-changelog-copy">As part of the migration, we also removed low-usage integrations that depended on Composio, such as ClickUp and CloudId.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Inheritance toggle</div>
          <p className="kodus-changelog-copy">When you enable or disable rule inheritance from the organization to a repository, the UI now shows the new state immediately, without waiting for the API response.</p>
          <p className="kodus-changelog-copy">If the call fails, for example because of a connection issue, the state is automatically reverted and we show an error toast. Before, users would click, wait, and not get clear feedback about what had happened.</p>
          <p className="kodus-changelog-copy">We also improved the rules cache update. Now we only invalidate the rules affected by that inheritance change, avoiding unnecessary reloads for rules that did not change.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Kody Rules Origin</div>
          <p className="kodus-changelog-copy">We added an explicit origin to all Kody Rules: <code className="kodus-changelog-code">LIBRARY</code>, <code className="kodus-changelog-code">MANUAL</code>, <code className="kodus-changelog-code">INHERITED</code>, and <code className="kodus-changelog-code">SUGGESTED</code>.</p>
          <p className="kodus-changelog-copy">This fixes an issue where some rule creation scenarios could fail silently because the backend expected an origin value that the frontend was not sending.</p>
          <p className="kodus-changelog-copy">Now the contract between frontend and backend is clearer, and the rule origin is validated before reaching the creation flow.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Atlassian Rovo</div>
          <p className="kodus-changelog-copy">Rovo is an Atlassian AI agent that generates code and edits files automatically. When it creates commits, it includes specific metadata, such as message prefixes and custom headers.</p>
          <p className="kodus-changelog-copy">Previously, our review engine identified those commits as human-written code and could suggest changes on them.</p>
          <p className="kodus-changelog-copy">Now we detect Rovo commits and skip those changes both in the code review logic and in the MCP business-rule validation preflight.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-mcp">
          <div role="heading" aria-level="3" className="kodus-changelog-title">MCP OAuth callback</div>
          <p className="kodus-changelog-copy">We fixed the OAuth flow for connecting MCPs, such as GitHub and Jira.</p>
          <p className="kodus-changelog-copy">Previously, users who had already completed onboarding could be blocked when trying to add a new MCP. Now the callback works at any time, as long as the state parameter is valid.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ux-interface filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Pending rules section</div>
          <p className="kodus-changelog-copy">Pending rules, which need approval before entering the review pipeline, now have a dedicated section with improved UX.</p>
          <p className="kodus-changelog-copy">The section shows a status badge, who suggested the rule, when it was suggested, and inline actions to approve or reject it.</p>
          <p className="kodus-changelog-copy">Previously, these rules appeared mixed together with active rules, which made it easy to miss that something needed attention.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">GitHub Integration GitHub App post-onboarding:</strong> we fixed an issue where some GitHub integration pages returned a 404 after the user completed onboarding. This affected routes such as <code className="kodus-changelog-code">/github/integration</code> and <code className="kodus-changelog-code">/github/organization-name</code> when the GitHub App installation state was not updated correctly. We also adjusted the redirect after installation and added route validations to make the integration flow more reliable across different states.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Severity slicer colors:</strong> the severity control for low, medium, high, and critical used inconsistent colors. In some places, red meant critical; in others, it meant high. We standardized it to a semantic scale: gray for low, yellow for medium, orange for high, and red for critical. This affects Cockpit filters, suggestion badges, and notification settings.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">June 22, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-git-provider">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Forgejo support is now on par with GitHub & GitLab</div>
          <p className="kodus-changelog-copy">Review comments, commit statuses, force-push detection, and webhook coverage now work consistently for Forgejo repositories. If you self-host with Forgejo, Kody behaves just like on any other major platform.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Faster PR closing for large repos</div>
          <p className="kodus-changelog-copy">Eliminated duplicate API calls when syncing Kody Rules from changed files. PRs with many files now close noticeably faster.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ux-interface">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Cleaner settings UI</div>
          <p className="kodus-changelog-copy">Platform settings that don't apply to your current Git provider, such as GitHub-specific options when you're on GitLab, are now hidden automatically. Less clutter, fewer misconfigurations.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Reconnecting a Git provider after disconnecting:</strong> previously, disconnecting a provider left stale integration configs behind, causing reconnects to fail. Now stale rows are properly cleaned up.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Kody conversation replies with empty responses:</strong> resolved an issue where Kody occasionally replied with blank content in PR comment threads when using Claude Sonnet.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">NaN deduplication indices:</strong> added three-layer protection against NaN values appearing in suggestion deduplication indices, preventing rare but confusing duplicate suggestions.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Forgejo prompt field always empty:</strong> the formatPromptForLLM function was reading a non-existent field on Forgejo PRs, causing the prompt section to be blank. Now it reads the correct field.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-self-hosted">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Self-hosted AST graph reliability:</strong> the kodus-graph CLI was installed but not available to the runtime user in self-hosted worker images. Fixed PATH and install order so graph indexing works out of the box.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Orphaned agent trace records:</strong> prevented a race condition in chunked review mode that could leave orphaned <code className="kodus-changelog-code">IN\_PROGRESS</code> trace records in the database.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Platform settings not scoped to Git tool:</strong> settings incompatible with your current Git provider were still visible. Now they're properly filtered based on the connected tool.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">June 15, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-cockpit">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Operational metrics in Cockpit</div>
          <p className="kodus-changelog-copy">Track the health of your review pipeline in real time. Throughput, queue, and processing time metrics are now available in Cockpit.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://mintcdn.com/kodus/7VSfjDYUK8FVdsW8/videos/cockpit.mp4?fit=max&auto=format&n=7VSfjDYUK8FVdsW8&q=85&s=b1ba0094bd326c51a218cf52464fa644" type="video/mp4" data-path="videos/cockpit.mp4" />
          </video>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Redesigned Kodus Review tab</div>
          <p className="kodus-changelog-copy">The review tab has been redesigned with a cleaner interface and more direct actions. You can now analyze and act on suggestions without leaving the PR screen.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://mintcdn.com/kodus/7VSfjDYUK8FVdsW8/videos/kody-review-tab.mp4?fit=max&auto=format&n=7VSfjDYUK8FVdsW8&q=85&s=725b1e80c015df1f9767b939b0a5b984" type="video/mp4" data-path="videos/kody-review-tab.mp4" />
          </video>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-self-hosted">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Backend on pnpm</div>
          <p className="kodus-changelog-copy">We migrated the backend from Yarn 1 to pnpm. This makes builds faster, improves lockfile consistency, and reduces cache issues across environments.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Token usage screen</div>
          <p className="kodus-changelog-copy">The token usage screen has been redesigned to make consumption by organization and period easier to understand. It is now simpler to track usage and see how tokens are being consumed over time.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://mintcdn.com/kodus/7VSfjDYUK8FVdsW8/videos/token-usage-redesign.mp4?fit=max&auto=format&n=7VSfjDYUK8FVdsW8&q=85&s=a757b3f3472d6fd21c418cd119078edd" type="video/mp4" data-path="videos/token-usage-redesign.mp4" />
          </video>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-self-hosted">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Self-hosted analytics:</strong> we fixed the analytics integration for self-hosted deployments. Usage metrics now appear correctly in the dashboard.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Issue cache:</strong> the issue count in the sidebar could sometimes become outdated. The cache is now invalidated correctly after changes.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">GitHub rate limit:</strong> we fixed a rate limit issue in cloud E2E tests. We now use round-robin across multiple bot accounts to better distribute requests.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-notifications">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Notification routing:</strong> we fixed the behavior of targeted notifications when combined with audience settings. Notifications now reach the right people without duplicates.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Centralized config sync:</strong> we fixed issues in the centralized sync of Kody Rules configurations across repositories. Sync now correctly handles multiple scopes, stale configurations, and merge-triggered updates.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">June 8, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-byok">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Moonshot Kimi support for BYOK</div>
          <p className="kodus-changelog-copy">We added support for Moonshot as a provider, compatible with the Anthropic API.</p>
          <p className="kodus-changelog-copy">You can now use the Kimi Coding Plan model in BYOK setups. To configure it, set the <code className="kodus-changelog-code">API\_MOONSHOT\_API\_KEY</code> key and select the model in the organization preferences.</p>
          <p className="kodus-changelog-copy">See the <a className="kodus-changelog-link" href="https://docs.kodus.io/en/knowledge_base/how-to-use-moonshot-with-kodus">Moonshot (Kimi)</a> documentation for more setup details.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Monthly token usage control</div>
          <p className="kodus-changelog-copy">Organizations can now set monthly token consumption limits per model.</p>
          <p className="kodus-changelog-copy">Usage is shown in real time in the interface, with a progress bar. When usage reaches 80% of the limit, the team receives an email alert. If the limit is reached, additional reviews can be blocked automatically.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://mintcdn.com/kodus/DBHuk6f6YXfMSEEr/videos/token-usage.mp4?fit=max&auto=format&n=DBHuk6f6YXfMSEEr&q=85&s=4549a5a972641ba9886dd686d8e57cbb" type="video/mp4" data-path="videos/token-usage.mp4" />
          </video>

          <p className="kodus-changelog-copy">See the <a className="kodus-changelog-link" href="https://docs.kodus.io/en/how_to_use/spend-limit">Monthly Spend Limit</a> documentation for more setup details.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">More resilient review agent</div>
          <p className="kodus-changelog-copy">The review engine now handles empty or malformed LLM responses better.</p>
          <p className="kodus-changelog-copy">This reduces loops in edge cases and helps ensure valid suggestions continue to be delivered even when the provider returns an unexpected response.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-self-hosted">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Telemetry for self-hosted environments</div>
          <p className="kodus-changelog-copy">On-premise installations now automatically report health metrics, such as heartbeat, and usage data.</p>
          <p className="kodus-changelog-copy">The goal is to make diagnosis and support easier without exposing sensitive customer data.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Faster Kody Rules</div>
          <p className="kodus-changelog-copy">We improved the loading and synchronization of custom rules.</p>
          <p className="kodus-changelog-copy">We also fixed the count of orphaned rules and made partial updates safer against race conditions.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-git-provider">
          <div role="heading" aria-level="3" className="kodus-changelog-title">GitLab compatibility improvements</div>

          <ul className="kodus-changelog-list">
            <li>Support for GitLab 13.x in comment webhooks</li>
            <li>Diff fallback for versions earlier than 15.7</li>
            <li>Fixes for discussion threads and replies scoped by discussionId</li>
            <li>Self-hosted development environment documentation</li>
          </ul>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-security">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">GitHub:</strong> suspended users no longer appear in the member list for license assignment.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Update Connection:</strong> integration reauthentication now correctly clears the previous configuration.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Integration reset:</strong> Kody Rules linked to the repo/directory are now removed automatically.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Release Freeze:</strong> eligibility notifications only appear when the freeze is active.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>
</div>

<div className="kodus-changelog-rss-source" aria-hidden="true">
  <Update label="August 10, 2026 - Linked Repository Context in Reviews" tags={["AI Engine"]}>
    Kody can now reference linked repositories while reviewing a pull request. This gives it better context for changes that depend on contracts, shared libraries, internal APIs, or standards maintained outside the current repository.

    In practice, suggestions can now more accurately account for how the code connects to the rest of your organization’s ecosystem.
  </Update>

  <Update label="August 10, 2026 - Findings Sidebar and a New CLI Review Experience" tags={["CLI", "UX & Interface"]}>
    The Kodus CLI now offers a more complete review experience. In addition to inline comments, you can now view a sidebar with findings grouped by severity and jump directly between them.

    The update also improves navigation through large diffs and expands support for reviewing branches, commits, and specific files from the same interface.

    Video: [https://kodus.io/wp-content/uploads/2026/08/kodus-cli.mp4](https://kodus.io/wp-content/uploads/2026/08/kodus-cli.mp4)
  </Update>

  <Update label="August 10, 2026 - Fewer Duplicate Comments in Reviews" tags={["AI Engine", "Kody Rules"]}>
    Deduplication now considers suggestions generated by both Kody and Kody Rules together, with an additional semantic layer. In practice, when both flows identify the same issue, the PR is more likely to receive a single useful comment instead of repeated feedback.
  </Update>

  <Update label="August 10, 2026 - Fragmented @file References in Kody Rules" tags={["Kody Rules"]}>
    We fixed how @file references are loaded during fragmented reviews. External files are now properly considered even when a rule is processed in multiple parts.
  </Update>

  <Update label="August 10, 2026 - Slow Reviews No Longer Appear as No Review" tags={["AI Engine", "UX & Interface"]}>
    We improved how long-running reviews and LLM rate-limiting scenarios are handled. PR status now more accurately reflects a review that is still running or temporarily constrained, rather than suggesting that no review took place.
  </Update>

  <Update label="August 10, 2026 - Recovery After Hitting GitHub Rate Limits" tags={["GIT Provider", "Performance"]}>
    When the integration hits a GitHub API rate limit, the job now fails fast and is requeued instead of silently getting stuck. This makes review execution and recovery more predictable.
  </Update>

  <Update label="August 10, 2026 - BYOK Status Now Accurately Reflects Your Configuration" tags={["BYOK", "UX & Interface"]}>
    The subscription screen now correctly detects whether an organization has a valid BYOK key connected, including locally managed configurations. This prevents conflicting messages about the key’s status.
  </Update>

  <Update label="August 10, 2026 - Large Tool Outputs No Longer Break Agent Execution" tags={["AI Engine", "Performance"]}>
    We improved compression for large JSON responses returned by agent tools. The data structure is preserved, and execution remains stable even with large outputs.
  </Update>

  <Update label="August 10, 2026 - More Stable Event Processing" tags={["Performance"]}>
    We fixed a pool exhaustion and event amplification scenario that could affect asynchronous processing. The pipeline now uses resources more safely under load.
  </Update>

  <Update label="August 10, 2026 - Deduplication Remains Stable with BYOK" tags={["AI Engine", "BYOK"]}>
    The embeddings used to prevent duplicate suggestions are now pinned to the correct provider, even when an organization uses BYOK or a custom endpoint.
  </Update>

  <Update label="July 30, 2026 - Global Rules Sync from Repositories" tags={["Kody Rules", "UX & Interface", "Billing & Licenses"]}>
    Organizations on the Teams plan can now configure repositories as sources for Global Rules. This allows teams to keep their review rules version-controlled directly in Git, alongside the project's technical context, while Kody automatically syncs those rules for use during reviews.

    This release also introduces a new interface under Code Review settings where users can select, save, and manage source repositories, monitor import status, and manually trigger a new sync when needed.

    In practice, this makes it easier to adopt shared standards across teams and repositories. Instead of manually creating rules in each configuration, organizations can centralize conventions, best practices, and internal policies in dedicated repositories, with greater visibility and control over when those rules were last synced.

    Video: /videos/global-rules-for-repository.mp4
  </Update>

  <Update label="July 30, 2026 - Kody Rules with Structured Summaries" tags={["Kody Rules", "AI Engine", "Performance"]}>
    We now run a preliminary analysis on every Kody Rule to better understand its intent before it is used in a review.

    When a rule is too broad or covers multiple behaviors, it can be broken down into atomic rules: smaller, more specific rules that can either be validated deterministically with regex or evaluated by an LLM when contextual interpretation is required.

    In practice, this helps Kody apply complex rules more accurately. Instead of treating a long rule as a single block, the agent works with smaller validation units, reducing ambiguity while better preserving the rule's original intent.
  </Update>

  <Update label="July 30, 2026 - Better PR Scope for Kody Rules" tags={["Kody Rules", "AI Engine"]}>
    The agent now uses the full PR diff when applying Kody Rules instead of relying only on file names. This gives Kody more meaningful context about the actual changes being reviewed.

    With this improvement, rules that depend on modified content have a stronger basis for evaluation. This is especially relevant for rules that verify implementation patterns, contract changes, internal API usage, or sensitive changes in specific parts of the code.
  </Update>

  <Update label="July 30, 2026 - Reviews Now Skip Global Rules Source Repositories" tags={["Kody Rules", "Performance"]}>
    When a repository is used exclusively as a source for Global Rules, Kody now skips reviews in that repository. This prevents repositories created solely to store rules from generating unnecessary reviews.

    In addition to reducing noise for the team, this also avoids consuming resources on a workflow that provides no practical value. The source repository can now serve its purpose as a configuration source without being treated like a regular product repository.
  </Update>

  <Update label="July 30, 2026 - Better Token and Context Management in the Agent Loop" tags={["AI Engine", "Performance"]}>
    The agent's token and context management has been strengthened with stricter per-request limits, a real tokenizer, and more accurate overhead accounting. This makes the agent's behavior more predictable on large PRs or when a significant amount of context has accumulated.

    In practice, this reduces the risk of context overflow and makes executions more stable. The agent can operate within more reliable limits, improving both review quality and the rate of intermittent failures.
  </Update>

  <Update label="July 30, 2026 - Clearer LLM and BYOK Error Messages" tags={["BYOK", "AI Engine", "UX & Interface"]}>
    We improved the messages displayed when failures occur involving LLMs or BYOK keys. Instead of returning generic errors, the system now makes it clearer whether the issue is related to configuration, quota, billing, or communication with the provider.

    This makes troubleshooting easier for administrators and technical users. In BYOK environments, where the provider key and account are managed by the customer, clearer messages reduce investigation time and help teams resolve issues without relying on trial and error.
  </Update>

  <Update label="July 30, 2026 - Langfuse Telemetry Compatible with AI SDK 7" tags={["AI Engine", "Performance"]}>
    Langfuse telemetry has been updated to work correctly with AI SDK 7, including improved handling of cache, reasoning, and token usage fields.

    This improvement increases the accuracy of observability data for AI calls. With more reliable metrics, it becomes easier to monitor costs, model behavior, and the impact of changes to the review pipeline.
  </Update>

  <Update label="July 30, 2026 - Improved Pagination for Bitbucket and Repository Lists" tags={["GIT Provider", "UX & Interface", "Performance"]}>
    Pagination has been improved across Bitbucket flows and repository lists in the frontend. This makes the experience more robust for organizations with a large number of repositories or paginated responses from the integration.

    With this improvement, the system can handle larger volumes of data more reliably, preventing incomplete lists and reducing failures during onboarding or integration setup.
  </Update>

  <Update label="July 30, 2026 - Safer Centralized Config" tags={["Kody Rules", "Security"]}>
    Centralized Config sync now avoids deleting configurations when discovery fails or returns an empty result. Previously, a failure during the discovery process could create a risk of incorrect reconciliation.

    With this safeguard, the system now handles partial failures more conservatively. This reduces the risk of accidentally losing rules or configurations and improves the reliability of a sensitive workflow for organizations that depend on centralized configuration.
  </Update>

  <Update label="July 30, 2026 - Fixed GitLab Suggestions" tags={["GIT Provider", "AI Engine"]}>
    We fixed suggestion creation in GitLab so comments are only added to newly added lines, preventing phantom suggestions.
  </Update>

  <Update label="July 30, 2026 - Support for Draft/WIP Merge Requests in GitLab" tags={["GIT Provider"]}>
    We now correctly respect Merge Requests marked as draft or work in progress in GitLab.
  </Update>

  <Update label="July 30, 2026 - Custom Bot Usernames in GitLab" tags={["GIT Provider", "UX & Interface"]}>
    We fixed support for review commands when the GitLab bot uses a custom username.
  </Update>

  <Update label="July 30, 2026 - Fixed getCommits Timeouts" tags={["GIT Provider", "Performance"]}>
    Transient getCommits failures, such as Undici timeouts, are now handled correctly and rethrown when necessary.
  </Update>

  <Update label="July 30, 2026 - Fixed the Needs Attention State" tags={["AI Engine", "UX & Interface"]}>
    We fixed an issue that could leave a review stuck in the needs attention state.
  </Update>

  <Update label="July 30, 2026 - Fixed Onboarding and Member Telemetry" tags={["GIT Provider", "UX & Interface"]}>
    The onboarding flow received fixes to prevent it from getting stuck during member lookups and telemetry processing, especially in scenarios involving suspended users or slow API responses.
  </Update>

  <Update label="July 30, 2026 - Fixed the Invitation Flow" tags={["UX & Interface"]}>
    The invitation page and flow were updated to prevent failures when new users join.
  </Update>

  <Update label="July 30, 2026 - Fixed GitHub Webhook Creation" tags={["GIT Provider"]}>
    Webhook creation and listing now correctly use the repository owner, preventing failures when the repository owner differs from the primary account.
  </Update>

  <Update label="July 30, 2026 - Fixed Repository-Level Configuration" tags={["UX & Interface", "Kody Rules"]}>
    We fixed the function used to delete repository-specific configurations.
  </Update>

  <Update label="July 30, 2026 - Fixed Rule Creation and Import" tags={["Kody Rules", "UX & Interface"]}>
    The logic for adding global or repository-level rules was fixed, along with improvements to the search field.
  </Update>

  <Update label="July 30, 2026 - Fixed the BYOK Switching Button" tags={["BYOK", "UX & Interface"]}>
    The model and provider switching experience in BYOK was updated to prevent confusion during editing.
  </Update>

  <Update label="July 30, 2026 - Fixed Language Flash in Settings" tags={["UX & Interface"]}>
    We fixed the visual language flash that appeared on settings pages after a reload.
  </Update>

  <Update label="July 30, 2026 - Fixed Progress Bar Text" tags={["UX & Interface"]}>
    We updated the text displayed in the progress bar to improve interface clarity.
  </Update>

  <Update label="July 30, 2026 - Fixed API Errors for Invalid Parameters" tags={["Performance"]}>
    Postgres 22P02 errors, such as invalid UUIDs or integers, now return a 400 error instead of a 500.
  </Update>

  <Update label="July 30, 2026 - Sandbox Lease Fixes" tags={["Self-hosted", "Performance"]}>
    We fixed race conditions and leaseCount leaks in sandbox management, including cleanup, invalidation, and superseded lease scenarios.
  </Update>

  <Update label="July 30, 2026 - RabbitMQ and Workflow Queue Fixes" tags={["Self-hosted", "Performance"]}>
    Workflow queues now use centralized arguments and are correctly declared and bound with a DLX, reducing inconsistencies during initialization.
  </Update>

  <Update label="July 13, 2026 - New Token Usage Experience" tags={["UX & Interface", "BYOK"]}>
    The Token Usage page has been redesigned to provide a more complete view of consumption.

    It is now easier to track costs by area, model, and review activity, as well as filter the data and drill down into more specific analyses. This helps teams better understand where tokens are being used and how they can optimize costs.

    Video: [https://kodus.io/wp-content/uploads/2026/07/new-experience-token-usage.mp4](https://kodus.io/wp-content/uploads/2026/07/new-experience-token-usage.mp4)
  </Update>

  <Update label="July 13, 2026 - Automatic Detector Backfill for Existing Rules" tags={["Kody Rules", "AI Engine", "Performance"]}>
    Organizations that created Kody Rules before this release can also benefit from the new architecture. We created an automated process that analyzes existing rules and, whenever possible, generates mechanical detectors for them.

    The process is incremental, safe, and does not interfere with the normal execution of rules. When a rule cannot be converted into a detector, it continues to work through the traditional semantic review flow.
  </Update>

  <Update label="July 13, 2026 - More Accurate and Predictable Kody Rules" tags={["Kody Rules", "AI Engine", "Performance"]}>
    We restructured how Kody applies custom rules during code reviews. Instead of relying solely on a more open-ended agent analysis, rules are now evaluated deterministically by file and PR scope.

    In practice, this improves rule coverage in large PRs, reduces cases where an applicable rule is overlooked, and makes Kody Rules behave more consistently across different models.

    We also introduced mechanical detectors for certain rules. When a rule can safely be converted into an objective check, Kody can apply it without making an LLM call, reducing costs and improving predictability.
  </Update>

  <Update label="July 13, 2026 - Code Review Engine Improvements" tags={["AI Engine", "Performance"]}>
    This release includes a major upgrade to the review agent runtime. We migrated important parts of the execution flow to a new agent harness foundation, making the system more modular, observable, and ready for future improvements.

    We also improved the engine used to search for evidence in the codebase, with a focus on finding more relevant cross-file references and increasing the quality of generated suggestions.
  </Update>

  <Update label="July 13, 2026 - Cleaner Review Comments" tags={["AI Engine", "UX & Interface"]}>
    We adjusted the format of Kody's review comments to prevent internal reasoning structures from appearing in the output and to make suggestions more natural, concise, and easier to understand.

    We also fixed issues involving aliases and internal prompt references following recent refactors.
  </Update>

  <Update label="July 13, 2026 - Improved BYOK Support" tags={["BYOK", "AI Engine"]}>
    We improved BYOK support across different parts of the product, including configuration, model fallback, and per-model cost calculations.

    We also introduced a clearer experience for viewing BYOK settings and understanding how each model affects token consumption.
  </Update>

  <Update label="July 13, 2026 - More Accurate Cost Tracking and Telemetry" tags={["BYOK", "AI Engine"]}>
    We improved the observability of LLM calls to ensure token usage is attributed correctly, especially within the new Kody Rules and agent workflows.

    This increases the accuracy of usage reports and prevents undercounting in more complex review scenarios.
  </Update>

  <Update label="July 13, 2026 - MCP Manager and Plugin Improvements" tags={["MCP", "Security"]}>
    We improved tenant isolation for MCP connections, enhanced connection sorting and testing, and removed legacy integrations that had already been deprecated.

    These changes increase the reliability of the plugins and integrations experience.
  </Update>

  <Update label="July 13, 2026 - Improvements for Self-Hosted Environments" tags={["Self-hosted", "Performance"]}>
    We applied fixes to Dockerfiles, provisioning scripts, and local configuration to make self-hosted environments more stable.

    We also fixed an issue involving pnpm on macOS and adjusted the API hostname configuration used during provisioning.
  </Update>

  <Update label="July 13, 2026 - More Stable Observability" tags={["Performance", "AI Engine"]}>
    We fixed excessive memory consumption in the Mongo observability exporter and improved logging behavior across different environments.

    We also removed outdated references to the previous internal framework, simplifying the observability codebase.
  </Update>

  <Update label="July 13, 2026 - New Quality Tests and Validations" tags={["AI Engine", "Kody Rules"]}>
    We added new end-to-end scenarios and evaluations to validate Kody Rules, model recall, suggestion adherence, and prompt regressions.

    These validations help ensure that changes to models, prompts, or the underlying architecture do not reduce review quality.
  </Update>

  <Update label="July 13, 2026 - Updated Documentation" tags={["UX & Interface", "BYOK", "AI Engine"]}>
    We updated the documentation for BYOK, custom messages, and focused reviews. We also revised the README and added new pages explaining how to guide Kody during a review.
  </Update>

  <Update label="July 13, 2026 - Safer Rule Execution" tags={["Security", "Kody Rules"]}>
    We added protections against potentially unsafe regex patterns in Kody Rules detectors. This prevents malformed or computationally expensive rules from affecting review performance. We also fixed cases where outdated detectors could remain associated with a rule after an edit changed the rule's intended behavior.
  </Update>

  <Update label="July 13, 2026 - License and Billing Improvements" tags={["Billing & Licenses", "UX & Interface"]}>
    We fixed issues involving trial creation, the listing of inactive users or users removed from the Git organization, and active seat counts. These changes make the license page more consistent and reduce discrepancies between the organization's actual users and the users displayed in billing.
  </Update>

  <Update label="July 6, 2026 - Steer a review with focus" tags={["AI Engine"]}>
    You can now ask Kody to pay special attention to something specific during a review, without changing any configuration.

    In a PR, use @kody review \<directive>. In the CLI, use kodus review --focus.

    Examples: @kody review focus on security. @kody review focus on performance. Or in the CLI: kodus review --focus "edge cases".

    This is especially useful for larger PRs or sensitive changes, where you want the review to go deeper on a specific area, such as security, performance, edge cases, a business rule, or a team standard.

    Focus works as a priority, not a filter. Kody pays closer attention to the context you provide, but still reports other concrete issues it finds in the diff.

    Learn more in the Steer a Review Focus documentation: [https://docs.kodus.io/en/how\_to\_use/code\_review/review\_directive](https://docs.kodus.io/en/how_to_use/code_review/review_directive)
  </Update>

  <Update label="July 6, 2026 - Consolidate LLM prompts into a single comment" tags={["AI Engine", "GIT Provider"]}>
    We added an option to generate a single PR comment containing all prompts and suggestions, so an external agent or AI tool can apply the fixes in one pass.

    Video: [https://kodus.io/wp-content/uploads/2026/07/agent-prompt.mp4](https://kodus.io/wp-content/uploads/2026/07/agent-prompt.mp4)
  </Update>

  <Update label="July 6, 2026 - Select all repositories at once" tags={["UX & Interface"]}>
    In the add repositories modal, we added select all and clear selection buttons. For teams connecting dozens of repositories, this removes the need to select each one manually and significantly reduces setup time.

    Video: [https://kodus.io/wp-content/uploads/2026/07/add-repo-qa.mp4](https://kodus.io/wp-content/uploads/2026/07/add-repo-qa.mp4)
  </Update>

  <Update label="July 6, 2026 - Cost breakdown by model (BYOK)" tags={["BYOK"]}>
    Teams using Bring Your Own Key now have a detailed view of LLM usage by model on the costs screen. Instead of seeing only the total amount, you can identify exactly which providers and models are driving most of the usage and make clearer decisions about what to keep, replace, or limit.

    Video: [https://kodus.io/wp-content/uploads/2026/07/resumo-de-custos-por-modelo.mp4](https://kodus.io/wp-content/uploads/2026/07/resumo-de-custos-por-modelo.mp4)
  </Update>

  <Update label="July 6, 2026 - Review agent consolidation" tags={["AI Engine", "Performance"]}>
    We reorganized the code review agents to run on a unified infrastructure. Previously, parts of the flow were spread across different places, which could lead to duplicated suggestions and inconsistent behavior. With this consolidation, the pipeline is more predictable, easier to maintain, and less likely to repeat suggestions in the same PR.
  </Update>

  <Update label="July 6, 2026 - Content guard for deduplication" tags={["AI Engine"]}>
    We improved the deduplication algorithm so distinct bugs are not grouped as if they were the same issue. The content guard now better considers the actual content of each suggestion, reducing false-positive deduplication and making sure separate issues continue to be reported individually.
  </Update>

  <Update label="July 6, 2026 - Prose findings recovery + Gemini support" tags={["AI Engine"]}>
    We fixed unstable behavior in prose finding generation and restored strict mode for Gemini. We also updated the Anthropic SDK, keeping compatibility with newer models and improving response stability.
  </Update>

  <Update label="July 6, 2026 - RBAC documentation" tags={["Cockpit"]}>
    We updated the permissions documentation, including the OrganizationSettings scope and the restriction that only the organization Owner can configure BYOK. This makes it clearer who can do what inside the workspace.
  </Update>

  <Update label="July 6, 2026 - Review comments with broken formatting" tags={["UX & Interface", "GIT Provider"]}>
    Fixed cases where Kody comments appeared with unexpected formatting in pull requests.
  </Update>

  <Update label="July 6, 2026 - Retry errors with BYOK providers" tags={["BYOK"]}>
    Added preventive adjustments to avoid retry failures when a BYOK provider returns an empty response body.
  </Update>

  <Update label="July 6, 2026 - Sandbox tool errors" tags={["AI Engine"]}>
    The agent now handles errors better when running tools in the sandbox environment, without breaking the review.
  </Update>

  <Update label="July 6, 2026 - Normalized user IDs" tags={["GIT Provider"]}>
    Standardized how author, reviewer, and assignee IDs are handled, preventing PRs from breaking because of type differences, such as string vs. number.
  </Update>

  <Update label="July 6, 2026 - @kody conversation crashing on JSON wrapped in prose" tags={["AI Engine", "GIT Provider"]}>
    Fixed a crash that happened when Kody responded to mentions and the output came back as text containing embedded JSON.
  </Update>

  <Update label="July 6, 2026 - IDE sync config now respects approval settings" tags={["Kody Rules"]}>
    IDE rule synchronization now respects the approval configuration.
  </Update>

  <Update label="July 6, 2026 - Rules with multiple directories" tags={["Kody Rules"]}>
    Adjusted Kody Rules validation to correctly handle rules that apply to multiple path groups.
  </Update>

  <Update label="July 6, 2026 - Automatic code review config creation" tags={["Kody Rules"]}>
    When a repository did not have a code review configuration, creating a Kody Rule could fail silently. The configuration is now created automatically.
  </Update>

  <Update label="July 6, 2026 - Diff re-review in the agent" tags={["AI Engine"]}>
    Improved how the agent detects diffs from new commits during re-reviews.
  </Update>

  <Update label="July 6, 2026 - MCP Manager OAuth disconnect" tags={["MCP"]}>
    Fixed an issue with disconnecting OAuth credentials in MCP Manager that could cause inconsistent behavior.
  </Update>

  <Update label="July 6, 2026 - MCP Manager production build" tags={["MCP"]}>
    The MCP Manager production build now correctly passes the GitHub token.
  </Update>

  <Update label="July 6, 2026 - Orphaned users in the license list" tags={["Cockpit"]}>
    Users removed from the GitHub organization now appear correctly in the license list.
  </Update>

  <Update label="July 6, 2026 - Skipped review email" tags={["Notifications"]}>
    The notification email sent when a review is skipped now includes the author's name/email and no longer breaks when the user does not have a license.
  </Update>

  <Update label="June 29, 2026 - Validated review engine" tags={["AI Engine"]}>
    We updated Kody's review pipeline to improve analysis accuracy and reduce cases where important issues could slip through unnoticed.

    The engine now identifies problematic patterns more effectively, better understands changes that span multiple files, and can review code regions with more flexibility when the context is not fully obvious.

    We also optimized processing and reduced the average cost per review by around 30%.
  </Update>

  <Update label="June 29, 2026 - Shareable dashboard views" tags={["Cockpit"]}>
    Filters applied in Cockpit are now saved in the URL, including time range, repositories, severity, and status.

    This means you can copy the link and share it with your team on Slack, for example. Anyone who opens the URL will see Cockpit with the same filters applied, without having to manually recreate the view.

    This makes it easier to share specific analyses, such as what changed over the past week or an increase in security suggestions in a repository.

    Video: [https://kodus.io/wp-content/uploads/2026/06/kodus-copy-url.mp4](https://kodus.io/wp-content/uploads/2026/06/kodus-copy-url.mp4)
  </Update>

  <Update label="June 29, 2026 - Unified Kody Rules lifecycle" tags={["Kody Rules"]}>
    We unified the Kody Rules flow into a single lifecycle, regardless of where the rule was created: the library, manual creation, or inheritance from the organization to the repository.

    With this change, activating, editing, disabling, and approving rules now follow the same path inside the product. We also migrated older rules to the new format and centralized the control of rules pending approval.

    This makes the system more consistent, reduces unexpected states, and ensures that an active rule is actually applied in Kody reviews.
  </Update>

  <Update label="June 29, 2026 - Migrate away from Composio" tags={["MCP"]}>
    We removed the dependency on Composio as an external MCP broker and moved to our own implementation for GitHub Issues, now integrated with Kodus Issues.

    This reduces an external point of failure, improves call reliability, and gives us more control over authentication, rate limits, and retries.

    As part of the migration, we also removed low-usage integrations that depended on Composio, such as ClickUp and CloudId.
  </Update>

  <Update label="June 29, 2026 - Inheritance toggle" tags={["Kody Rules"]}>
    When you enable or disable rule inheritance from the organization to a repository, the UI now shows the new state immediately, without waiting for the API response.

    If the call fails, for example because of a connection issue, the state is automatically reverted and we show an error toast. Before, users would click, wait, and not get clear feedback about what had happened.

    We also improved the rules cache update. Now we only invalidate the rules affected by that inheritance change, avoiding unnecessary reloads for rules that did not change.
  </Update>

  <Update label="June 29, 2026 - Kody Rules Origin" tags={["Kody Rules"]}>
    We added an explicit origin to all Kody Rules: LIBRARY, MANUAL, INHERITED, and SUGGESTED.

    This fixes an issue where some rule creation scenarios could fail silently because the backend expected an origin value that the frontend was not sending.

    Now the contract between frontend and backend is clearer, and the rule origin is validated before reaching the creation flow.
  </Update>

  <Update label="June 29, 2026 - Atlassian Rovo" tags={["AI Engine"]}>
    Rovo is an Atlassian AI agent that generates code and edits files automatically. When it creates commits, it includes specific metadata, such as message prefixes and custom headers.

    Previously, our review engine identified those commits as human-written code and could suggest changes on them.

    Now we detect Rovo commits and skip those changes both in the code review logic and in the MCP business-rule validation preflight.
  </Update>

  <Update label="June 29, 2026 - MCP OAuth callback" tags={["MCP"]}>
    We fixed the OAuth flow for connecting MCPs, such as GitHub and Jira.

    Previously, users who had already completed onboarding could be blocked when trying to add a new MCP. Now the callback works at any time, as long as the state parameter is valid.
  </Update>

  <Update label="June 29, 2026 - Pending rules section" tags={["UX & Interface", "Kody Rules"]}>
    Pending rules, which need approval before entering the review pipeline, now have a dedicated section with improved UX.

    The section shows a status badge, who suggested the rule, when it was suggested, and inline actions to approve or reject it.

    Previously, these rules appeared mixed together with active rules, which made it easy to miss that something needed attention.
  </Update>

  <Update label="June 29, 2026 - GitHub Integration GitHub App post-onboarding" tags={["GIT Provider"]}>
    We fixed an issue where some GitHub integration pages returned a 404 after the user completed onboarding. This affected routes such as /github/integration and /github/organization-name when the GitHub App installation state was not updated correctly. We also adjusted the redirect after installation and added route validations to make the integration flow more reliable across different states.
  </Update>

  <Update label="June 29, 2026 - Severity slicer colors" tags={["UX & Interface"]}>
    The severity control for low, medium, high, and critical used inconsistent colors. In some places, red meant critical; in others, it meant high. We standardized it to a semantic scale: gray for low, yellow for medium, orange for high, and red for critical. This affects Cockpit filters, suggestion badges, and notification settings.
  </Update>

  <Update label="June 22, 2026 - Forgejo support is now on par with GitHub & GitLab" tags={["GIT Provider"]}>
    Review comments, commit statuses, force-push detection, and webhook coverage now work consistently for Forgejo repositories. If you self-host with Forgejo, Kody behaves just like on any other major platform.
  </Update>

  <Update label="June 22, 2026 - Faster PR closing for large repos" tags={["Performance"]}>
    Eliminated duplicate API calls when syncing Kody Rules from changed files. PRs with many files now close noticeably faster.
  </Update>

  <Update label="June 22, 2026 - Cleaner settings UI" tags={["UX & Interface"]}>
    Platform settings that don't apply to your current Git provider, such as GitHub-specific options when you're on GitLab, are now hidden automatically. Less clutter, fewer misconfigurations.
  </Update>

  <Update label="June 22, 2026 - Reconnecting a Git provider after disconnecting" tags={["GIT Provider"]}>
    Previously, disconnecting a provider left stale integration configs behind, causing reconnects to fail. Now stale rows are properly cleaned up.
  </Update>

  <Update label="June 22, 2026 - Kody conversation replies with empty responses" tags={["AI Engine"]}>
    Resolved an issue where Kody occasionally replied with blank content in PR comment threads when using Claude Sonnet.
  </Update>

  <Update label="June 22, 2026 - NaN deduplication indices" tags={["AI Engine"]}>
    Added three-layer protection against NaN values appearing in suggestion deduplication indices, preventing rare but confusing duplicate suggestions.
  </Update>

  <Update label="June 22, 2026 - Forgejo prompt field always empty" tags={["GIT Provider"]}>
    The formatPromptForLLM function was reading a non-existent field on Forgejo PRs, causing the prompt section to be blank. Now it reads the correct field.
  </Update>

  <Update label="June 22, 2026 - Self-hosted AST graph reliability" tags={["Self-hosted"]}>
    The kodus-graph CLI was installed but not available to the runtime user in self-hosted worker images. Fixed PATH and install order so graph indexing works out of the box.
  </Update>

  <Update label="June 22, 2026 - Orphaned agent trace records" tags={["AI Engine"]}>
    Prevented a race condition in chunked review mode that could leave orphaned IN\_PROGRESS trace records in the database.
  </Update>

  <Update label="June 22, 2026 - Platform settings not scoped to Git tool" tags={["UX & Interface"]}>
    Settings incompatible with your current Git provider were still visible. Now they're properly filtered based on the connected tool.
  </Update>

  <Update label="June 15, 2026 - Operational metrics in Cockpit" tags={["Cockpit"]}>
    Track the health of your review pipeline in real time. Throughput, queue, and processing time metrics are now available in Cockpit.

    Video: [https://kodus.io/wp-content/uploads/2026/06/cockpit.mp4](https://kodus.io/wp-content/uploads/2026/06/cockpit.mp4)
  </Update>

  <Update label="June 15, 2026 - Redesigned Kodus Review tab" tags={["AI Engine"]}>
    The review tab has been redesigned with a cleaner interface and more direct actions. You can now analyze and act on suggestions without leaving the PR screen.

    Video: [https://kodus.io/wp-content/uploads/2026/06/kody-review-tab.mp4](https://kodus.io/wp-content/uploads/2026/06/kody-review-tab.mp4)
  </Update>

  <Update label="June 15, 2026 - Backend on pnpm" tags={["Self-hosted"]}>
    We migrated the backend from Yarn 1 to pnpm. This makes builds faster, improves lockfile consistency, and reduces cache issues across environments.
  </Update>

  <Update label="June 15, 2026 - Token usage screen" tags={["BYOK"]}>
    The token usage screen has been redesigned to make consumption by organization and period easier to understand. It is now simpler to track usage and see how tokens are being consumed over time.

    Video: [https://kodus.io/wp-content/uploads/2026/06/token\_usage.mp4](https://kodus.io/wp-content/uploads/2026/06/token_usage.mp4)
  </Update>

  <Update label="June 15, 2026 - Self-hosted analytics" tags={["Self-hosted"]}>
    We fixed the analytics integration for self-hosted deployments. Usage metrics now appear correctly in the dashboard.
  </Update>

  <Update label="June 15, 2026 - Issue cache" tags={["AI Engine"]}>
    The issue count in the sidebar could sometimes become outdated. The cache is now invalidated correctly after changes.
  </Update>

  <Update label="June 15, 2026 - GitHub rate limit" tags={["GIT Provider"]}>
    We fixed a rate limit issue in cloud E2E tests. We now use round-robin across multiple bot accounts to better distribute requests.
  </Update>

  <Update label="June 15, 2026 - Notification routing" tags={["Notifications"]}>
    We fixed the behavior of targeted notifications when combined with audience settings. Notifications now reach the right people without duplicates.
  </Update>

  <Update label="June 15, 2026 - Centralized config sync" tags={["Kody Rules"]}>
    We fixed issues in the centralized sync of Kody Rules configurations across repositories. Sync now correctly handles multiple scopes, stale configurations, and merge-triggered updates.
  </Update>

  <Update label="June 8, 2026 - Moonshot Kimi support for BYOK" tags={["AI Engine", "BYOK"]}>
    We added support for Moonshot as a provider, compatible with the Anthropic API.

    You can now use the Kimi Coding Plan model in BYOK setups. To configure it, set the API\_MOONSHOT\_API\_KEY key and select the model in the organization preferences.

    See the Moonshot Kimi documentation for more setup details: [https://docs.kodus.io/en/knowledge\_base/how-to-use-moonshot-with-kodus](https://docs.kodus.io/en/knowledge_base/how-to-use-moonshot-with-kodus)
  </Update>

  <Update label="June 8, 2026 - Monthly token usage control" tags={["BYOK"]}>
    Organizations can now set monthly token consumption limits per model.

    Usage is shown in real time in the interface, with a progress bar. When usage reaches 80% of the limit, the team receives an email alert. If the limit is reached, additional reviews can be blocked automatically.

    Video: [https://kodus.io/wp-content/uploads/2026/06/token-usage.mov](https://kodus.io/wp-content/uploads/2026/06/token-usage.mov)

    See the Monthly Spend Limit documentation for more setup details: [https://docs.kodus.io/en/how\_to\_use/spend-limit](https://docs.kodus.io/en/how_to_use/spend-limit)
  </Update>

  <Update label="June 8, 2026 - More resilient review agent" tags={["AI Engine"]}>
    The review engine now handles empty or malformed LLM responses better. This reduces loops in edge cases and helps ensure valid suggestions continue to be delivered even when the provider returns an unexpected response.
  </Update>

  <Update label="June 8, 2026 - Telemetry for self-hosted environments" tags={["Self-hosted"]}>
    On-premise installations now automatically report health metrics, such as heartbeat, and usage data. The goal is to make diagnosis and support easier without exposing sensitive customer data.
  </Update>

  <Update label="June 8, 2026 - Faster Kody Rules" tags={["AI Engine"]}>
    We improved the loading and synchronization of custom rules. We also fixed the count of orphaned rules and made partial updates safer against race conditions.
  </Update>

  <Update label="June 8, 2026 - GitLab compatibility improvements" tags={["GIT Provider"]}>
    Support for GitLab 13.x in comment webhooks.

    Diff fallback for versions earlier than 15.7.

    Fixes for discussion threads and replies scoped by discussionId.

    Self-hosted development environment documentation.
  </Update>

  <Update label="June 8, 2026 - GitHub member list fix" tags={["GIT Provider", "Security"]}>
    Suspended users no longer appear in the member list for license assignment.
  </Update>

  <Update label="June 8, 2026 - Update Connection fix" tags={["GIT Provider"]}>
    Integration reauthentication now correctly clears the previous configuration.
  </Update>

  <Update label="June 8, 2026 - Integration reset fix" tags={["AI Engine"]}>
    Kody Rules linked to the repo or directory are now removed automatically.
  </Update>

  <Update label="June 8, 2026 - Release Freeze fix">
    Eligibility notifications only appear when the freeze is active.
  </Update>
</div>

<script>
  {`
    (() => {
      const filterSelector = ".kodus-changelog-filter-control";
      const itemSelector = ".kodus-changelog-filterable";
      const sectionSelector = ".kodus-changelog-section";
      const releaseSelector = ".kodus-changelog-release";

      const applyChangelogFilters = () => {
          const root = document.querySelector(".kodus-changelog-shell");

          if (!root) {
              return;
          }

          const selectedFilters = Array.from(root.querySelectorAll(filterSelector))
              .filter((input) => input.checked)
              .map((input) => input.id.replace("kodus-filter-", "filter-"));

          const isFiltered = selectedFilters.length > 0;

          root.querySelectorAll(filterSelector).forEach((input) => {
              input.closest(".kodus-changelog-filter-button")?.classList.toggle("is-selected", input.checked);
          });

          root.querySelectorAll(itemSelector).forEach((item) => {
              const shouldShow = !isFiltered || selectedFilters.some((filter) => item.classList.contains(filter));
              item.hidden = !shouldShow;
          });

          root.querySelectorAll(sectionSelector).forEach((section) => {
              const hasVisibleItems = Array.from(section.querySelectorAll(itemSelector)).some((item) => !item.hidden);
              section.hidden = isFiltered && !hasVisibleItems;
          });

          root.querySelectorAll(releaseSelector).forEach((release) => {
              const hasVisibleItems = Array.from(release.querySelectorAll(itemSelector)).some((item) => !item.hidden);
              release.hidden = isFiltered && !hasVisibleItems;
          });
      };

      document.addEventListener("change", (event) => {
          if (event.target.matches(filterSelector)) {
              applyChangelogFilters();
          }
      });

      window.addEventListener("pageshow", applyChangelogFilters);
      requestAnimationFrame(applyChangelogFilters);
    })();
    `}
</script>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.