Skip to main content

2026-10

qaboard v1.1.1

QA-Board now works with GitHub as well as GitLab, Gitea/Forgejo and Bitbucket, searches all of a project's commits, opens big commits much faster, and has a file browser and a video viewer. A quickstart, a user guide and release notes in the app help you get started; admins, check your git host settings before upgrading, and at SIRC install one more package when you upgrade qaboard.

Project integration

GitHub and other git hosts

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

Learn more →
Users

Search all your commits, browse your files

The commit list's Filter box searches all of a project's commits, not only the last days: by message, committer, branch, batch or hash. Open a folder under /s/ to get a file browser. Commit pages with 1000 runs filter and sort without freezing, and big commit lists and the projects list load much faster.

Learn more →
Users

What's new, a user guide, logs and videos

Release notes pop up once a month is over: read them again from the sparkles button in the sidebar. A new user guide, with screenshots of demo projects, explains the web app. Logs update live, with search, failed LSF runs show why LSF stopped them, and videos compare with a wipe, frame by frame.

Learn more →
Admins

Quickstart, Kubernetes, and upgrading

Try QA-Board with one Compose file and demo projects. deployments/deploy.py rolls out new backend replicas next to the old ones and rolls back instantly, and each release publishes its images and a Helm chart. Before upgrading, keep GITLAB_HOST set or list your GitLab in QABOARD_GIT_HOSTS: a migration records the git host of each project.

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 →