A peek into what's been going on in the OtterWise product development department. We publish changelogs for even the smaller updates, in an effort to stay transparent.
The file viewer now marks which lines gained or lost coverage since the base commit, not only which lines have coverage now. Each gets a counter and jump buttons at the top of the file. This also covers the files under "Unchanged files with coverage changes", where a test change flips coverage without the file itself changing.
The coverage comment we post on your pull requests now has a Covered Lines row. It shows how many lines your tests cover, so the table adds up to: Lines = Covered Lines + Misses. This is the number the Coverage percentage is calculated from.
Fixed: The Files with reduced coverage table in pull request comments listed files where the coverage percentage did not change at all. Deleting a few covered lines moves the coverage by less than the two decimals we show, so a file could be listed with a "-" change. Removing covered code is not a coverage regression, so these files are now left out.
Fixed: The Files with coverage changes and Unchanged files with coverage changes tabs only looked at the folder you had open, so from the top of a repository they usually showed nothing. Both tabs now look inside folders, and a folder is listed when a file below it matches. Keep in mind that the numbers on a folder row still count every file in it, not only the matching ones.
The Complexity vs Coverage quadrant in Repository Analytics no longer flags very small files as hard to test. A two-line model at 0% coverage is cheap to cover and tells you little, so it no longer pushes real candidates down the list. The "Hard-to-Test Files" table is now ranked by payoff — how much untested, risky code each file holds — and shows an "Uncovered" column so you can see the ranking.
The Churn-Weighted Coverage Risk report now scales scores down for files that are almost fully covered, and for files too small to hold much risk. A large, busy file tested to 99% is not a testing priority, and it no longer reads as high risk. Your top rows now point at the files where tests will actually remove risk.
The Contributors report now measures "Covered / Lines added" from the actual changes in each pull request (the diff) instead of subtracting whole-commit coverage totals. This makes the numbers reflect the lines a person really added or modified, and fixes wildly inflated figures for organizations using carry-forward flags/components (where a commit only uploads part of the coverage).
Added a new "Uncovered lines added" column to the Contributors report, showing how many of the lines each contributor added or modified are not covered by tests. It is measured from each pull request's diff, so it stays reliable even when carry-forward is enabled.
The "Uncovered lines removed" column now shows a note for organizations using carry-forward flags/components, explaining that it compares whole-commit coverage totals (which include coverage carried forward from the default branch) and can therefore be inaccurate — pointing to the new "Uncovered lines added" column as the reliable per–pull request figure.
For organizations using carry-forward flags/components, the pull request page, the repository pull request list, and the coverage comment posted to GitHub now flag that the base→head change (±) on Tracked Lines / Covered Lines / Misses compares whole-commit totals (which include carried-forward coverage) and can be inaccurate. The absolute numbers, Coverage and Patch Coverage remain reliable.
Fixed: Uploading an empty LCOV coverage report (one where the test run covered no files) would fail to process. These reports are now accepted and recorded correctly.
Our whole app has gotten a visual refresh, including support for Dark Mode. This is a purely visual update — no functionality has changed, everything works exactly as it did before.
Dark Mode automatically follows your system/browser preference, so there is nothing to toggle.
This is still being tested, so if you run into anything that looks off or have any feedback, please let us know. We appreciate any and all findings.
Added search to the branch selector on the repository page, making it much easier to find the right branch on repositories with many branches.
Added a quick search you can open anywhere in the app with ⌘K (Mac) or Ctrl+K (Windows/Linux). Start typing to instantly jump to any of your organizations, any repository across all your organizations, or common pages like Reporting, Billing, Settings and Team — only showing what you have access to.
Improved the reliability and speed of how we talk to GitHub behind the scenes. Sign-ins and data syncing are now smoother and less likely to be interrupted during busy periods.
Added a "Commits" tab to the pull request view, listing all commits added to the head branch since the PR was opened, sorted most recent first. Each row shows author, short SHA, message, tracked/covered lines, coverage and patch coverage.
Added a "Show coverage at this commit" button next to each commit in the new tab. Selecting it loads the file tree, coverage stats and file viewer for that commit instead of the PR head, making it easier to compare how coverage evolved across review iterations. A dismissible banner makes the active commit clear and a single click resets back to the PR head.
Fixed: Coverage uploads could fail for repositories with very high execution hit counts (such as lines inside large loops). The internal counters have been widened to handle these cases.
Added more information to the pull request view. This should hopefully make "View full report" more viable for usage during review time. Now includes tracked and covered lines, clearer coverage data, patch coverage, type coverage (when enabled), and deltas where relevant. You can now also see head and base branch as well as PR state (open, closed, ...).
Tightened spacing, cleaned up visuals for a better experience with large pull requests.
Fixed: "Pull Request" was repeated in the header.
Added quick navigation arrows for uncovered lines of code, called "Sections". A section is when a group of lines are all not covered by tests, without any covered lines in-between them.
Added quick navigation arrows for changed lines when viewing files inside Pull Requests, to quickly hop between changed lines of code.
Fixed: In very rare instances, the file viewer for pull requests would not render diffs for private repositories.
A minimap has been added to the right-side of the in-app code viewer, which gives a quick overview of where coverage gaps are. This is especially useful for large files. You can click on the minimap to navigate to the sections of the code
The alert shown in code viewer ("Using Code Viewer token") informing about expiration is now dismissible to clear up more vertical space.
We are also experimenting with syntax highlighting and displaying of hits, as well as other metrics. It is being gradually rolled out to users over the next 2 weeks with full GA expected on 25th of May 2026.
Added a copy button next to the file/folder breadcrumb in the repository file view. It copies the path (without the repository name) to your clipboard, making it easier to share or paste paths elsewhere.
Fixed: Opening a file in the code viewer would error out when the GitHub organization had OAuth App access restrictions enabled but had not approved our code viewer app. The file view now shows a dedicated message naming the organization, with a link to request access on GitHub and a re-authorize button for after an org owner approves.
Pull Request comments now include a per-flag and per-component coverage breakdown table when multiple flags or components are present (or a single non-default one). Each table shows base coverage, head coverage, and the difference, giving you a clear view of how each flag or component is affected by the pull request.
Fixed an issue where Pull Request comments could exceed GitHub's 65,536 character limit for repositories with a large number of files with reduced coverage. The "Files with reduced coverage" table is now limited to the 25 files with the largest coverage drop, with a note when additional files are truncated. A safety truncation has also been added as a safeguard for edge cases.
We are slowly rolling out a new version of our dashboard UI. In first iteration, only small changes are being implemented:
In the upcoming releases, we have the following (and more) planned:
We appreciate any feedback on the current and upcoming design changes. The goal is to improve your experience. All opinions and ideas are welcome!
Removed "All orgs and repos" menu for users without multiple organizations
Auto selected first organization for users without multiple organizations
Fixed the "New Covered Lines" leaderboard category reporting inflated numbers. The metric was incorrectly using execution hit counts (how many times a line was executed) instead of distinct covered lines. For example, a single line inside a loop executed 1,000 times would count as 1,000 rather than 1. The leaderboard now correctly counts the number of unique newly covered lines per pull request.
Organization Reporting → Pull Requests now includes Cycle Time Percentiles (p50, p75, p90) with repo and author breakdowns. This helps you spot slow review paths and outliers at a glance.
Repository Analytics now includes a Complexity vs Coverage quadrant chart that highlights “hard to test” files (low coverage + high complexity/CRAP per line). You can click points to jump directly to the file, and use the table to prioritize the top candidates for testing improvements.
Organization Reporting → Pull Requests now includes a new "Time to merge" chart. It shows the average number of days from PR creation to merge, grouped by month, so you can spot review-cycle trends over time.
PR comments, status checks, line annotations, and trends, all without code access. Free for public repos; per-repo pricing for private repos.