Skip to main content

2026-10

qaboard v1.1.1

A new image viewer, readable configuration diffs, a dark theme and a commit page that stays fast with 1000 runs. QA-Board now works with GitHub and other git hosts, and comes with a quickstart, a tutorial and a user guide. Admins: read "Before you upgrade" first; at SIRC, also install `qaboard-site-sirc` when you upgrade qaboard.

Users

A new image viewer

Compare images side by side, with a wipe, one at a time in place, or as their difference, measured perceptually or in ΔE 2000. Zoom in to read the pixels' own values, even 16-bit or float, run a blind test, and rank the runs of a page by how much their images changed. Videos compare the same way, frame by frame.

Learn more →
Users

See what changed in a configuration

Runs show how their configuration differs from their reference run's, like gain: 3 → 4, and hide the settings all runs share. Lists and tuning parameters are readable, and runs are compared with the reference run whose configuration is closest. Copy a run's settings as qa options.

Learn more →
Users

Fast with 1000 runs and years of commits

On a commit with 1000 runs, filtering takes half a second instead of freezing the page for 7, and the Metrics Table opens in a third of a second instead of 7. The commit search box finds any of a project's commits, and long commit lists and the projects list load as you scroll.

Learn more →
Users

Dark theme and more room for results

Switch to a dark theme, or follow your system's. Collapse the sidebar to icons, dock the View options on the right (o), and switch commit lists to Compact. Press ? for the keyboard shortcuts and the filter syntax.

Learn more →
Users

Logs, files and reruns

Logs update live, with search, and failed LSF runs say why LSF stopped them. Browse a run's files under /s/, edit your batches in Available Tests with errors flagged as you type, and redo only the runs you filtered, with the batch's runner and concurrency.

Learn more →
Project integration

GitHub, other git hosts and a quality gate

QA-Board works with GitHub and GitHub Enterprise as well as GitLab, and receives the push events of Gitea, Forgejo and Bitbucket Cloud. qa batch sets a commit status that links to the results, you can start GitHub Actions workflows from the web app, and the experimental qa gate fails the CI when quality regresses.

Learn more →
Project integration

Get started in minutes

Try QA-Board on your computer with one Compose file and demo projects, then follow the tutorial: it shows the steps for your server, git host, CI and runners. A user guide explains the web app, and release notes pop up in it once a month is over.

Learn more →
Admins

Deploy, monitor and upgrade safely

deployments/deploy.py rolls out new backend replicas next to the old ones and rolls back instantly, a Helm chart runs QA-Board on Kubernetes, and Sentry traces requests from the browser to the database. Before upgrading, check your git host, QABOARD_STORAGE_ROOTS and QABOARD_PROXY_HOSTS settings, and your backups.

Learn more →

2026-09

Cap how many runs of a batch use the LSF cluster at the same time, or run batches of short runs on a pool of Dask workers. The server is easier to deploy from scratch, and re-running outputs or tuning on LSF goes through the configured LSF bridge.

Project integration

Limit batch concurrency on LSF

Set runners.lsf.concurrency in qaboard.yaml, or use qa batch --lsf-concurrency 20, so a batch never has more than 20 LSF jobs running at once and doesn't flood the cluster. The default, 0, keeps the previous behavior: no limit.

Learn more →
Project integration

Dask runner

With qa batch --runner dask, a batch's runs execute on a few long-lived Dask workers started as LSF jobs, with a bounded number of runs in flight. It avoids paying LSF's scheduling overhead for each of many short runs. Install it with pip install "qaboard[dask]".

Learn more →

2026-q2

The image viewer shows TIFF versions of PNG outputs when they exist and compares outputs saved in different formats. Jenkins build statuses update live and survive page refreshes, and shared milestones now have owners and can be filtered by person.

Users

TIFF versions of images

When an output has both image.png and image.tiff, the image viewer shows the TIFF. When comparing to a reference saved in another format, each side falls back to the file it has: TIFF, PNG or the older BMP.

Learn more →
Users

Live Jenkins build status

After you trigger a Jenkins build from the commit page, its status tag now updates on its own (queued, running, then the result), and it is still there when you refresh the page or come back to the commit in the same browser.

Learn more →
Users

Milestone owners

Shared milestones remember who created them and the commit's author. Filter milestones by their names, and only a milestone's owners can edit or delete it.

Learn more →

2026-03

Synced zoom and pan in the image viewer stays smooth on pages with many images, and the server can track GitHub repositories. Every deployment now runs the same code: site-specific settings moved to compose overlays and to site packages for the qa CLI.

Users

Smoother synced zoom and pan

On pages with many images, zooming or panning one image no longer slows down the page: only the images on screen follow along, and the others catch up instantly when you scroll to them. Images that load late open at the current zoom and position.

Learn more →
Admins

GitHub repositories

Besides GitLab, the server can now follow projects hosted on GitHub or GitHub Enterprise: it receives push events on /webhook/github, clones the repositories with GITHUB_ACCESS_TOKEN and shows GitHub avatars. Commit statuses and GitHub Actions are not supported yet.

Learn more →
Admins

One codebase for every site

The base docker-compose.yml now has open-source defaults, and each site adds its own settings with an overlay in deployments/, for example deployments/sirc/sirc.yml. Copy deployments/example.yml to describe your own site.

Learn more →
Users

Site packages for the qa CLI

Install qaboard[sirc] to get your site's defaults (server URL, secrets location, internal dependencies) without setting environment variables. Environment variables still override them.

Learn more →

2026-02

Image and text viewers no longer react to their keyboard shortcuts while you type or use Ctrl/Cmd shortcuts, and the storage quota link works again.

2026-01

A fix for triggering Jenkins builds from the web app.

2025-q4

Use -- to pass arguments to your own code with qa run, qa postprocess and qa batch, and save your custom batches in the web app with Ctrl-S. The backend image moved to Debian trixie and Python 3.13.

Users

Forward arguments with --

Everything after -- on the command line is passed as-is to your code, for example qa batch my-batch -- --my-flag. Late qa options like qa batch my-batch --list keep working.

Learn more →
Users

Ctrl-S to save custom batches

In the web app's editor for custom batches, used by tuning experiments, press Ctrl-S (Cmd-S on macOS) to save your changes instead of clicking "Update Batches".

Learn more →

2025-q3

Copy a run's configuration in one click, ready to paste in a tuning experiment, and qa batch accepts several batch names at once. Commit pages use less memory on the server.

Users

Copy configurations, also in tuning format

Hover a run's configuration tags to copy one item, the full configuration, or the full configuration in the format the tuning form expects.

Users

Paste parameters into the tuning form

When you paste key=value parameter lines into the tuning form's editor, including multi-line matrices, they are converted to the tuning format for you.

Learn more →
Users

Several batches in one qa batch

Run qa batch first-batch second-batch instead of repeating --batch for each one. Options that start with a dash after the batch names are still forwarded to qa run.

Learn more →

2025-06

The commit page has a new controls panel to pick visualizations, metrics and sorting, and options like the frame to show can now be synced across all outputs or set per output. Input types can have their own runner settings.

Users

A controls panel on the commit page

A panel on the right side of the commit page gathers the viewer controls: which visualizations to show, with a filter box, the image diff toggle, sorting and the metrics to display. Collapse it with its arrow button when you need the room.

Learn more →
Users

Synced or per-output visualization options

Options that come from visualization paths, like :frame, default to synced: one control in the panel drives every output. Unsync an option to pick its value separately in each output card.

Learn more →
Project integration

Runner settings per input type

Input types in qaboard.yaml can now have their own runner settings under runners, for instance a different LSF queue for each type of input. Settings in a batch still win, and flags you pass to qa batch win over both.

Learn more →
Users

Searchable batch selector

The batch selector in the commit navbar is now a search box. Find a batch by name, by the user who launched it, or with words like failed, running or tuning.

2025-05

qaboard v1.0.3

qaboard 1.0.3 is packaged with a modern pyproject.toml, and the backend's dependencies are managed with uv. The image viewer stops flagging images whose pixels are identical as different.

Users

Images compared by their pixels

When the outputs manifest has a hash of an image's pixel values, the image viewer uses it to decide whether the new and reference images are the same. Images that only differ in their metadata are no longer shown as changed.

Learn more →
Project integration

qaboard 1.0.3, built with pyproject.toml

The qaboard package is now defined in pyproject.toml instead of setup.py. Developers install it with uv sync --extra dev, and the backend's dependencies are locked with uv instead of poetry.

Learn more →