Skip to main content

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 →

Web app​

  • The visualizations section of the commit page's controls panel shows up right away, instead of waiting for every output's file list to load.
  • Avatars from any git server now go through QA-Board, so they are no longer blocked as mixed content when QA-Board is served over HTTPS.

CLI and project setup​

  • Without QABOARD_HOST or a site package, qa now connects to http://localhost:5151, the default local server. It used to try an internal SIRC server. At SIRC, install qaboard[sirc] (see Client Installation).
  • Removed qaboard.on_vdi and qaboard.on_lsf, which detected SIRC hosts from the hostname: update project code that imports them. Site packages now provide site-specific settings.
  • An internal SIRC dependency is now installed only with qaboard[sirc], so pip install qaboard works outside SIRC.

Server and administration​

  • Deploy with your site's overlay on top of the base files, e.g. docker compose -f docker-compose.yml -f production.yml -f deployments/sirc/sirc.yml up -d. Site-specific nginx configuration, volumes and services (fluentd, metabase...) moved to deployments/<site>/.
  • The Docker images build with no arguments by default. Behind a proxy, pass the PROXY_URL, CA_CERT_URL and NO_PROXY build args, and QABOARD_EXTRA to include a site package in the backend image.
  • Credentials for LDAP, Sentry and PostHog are read from a .env file instead of the compose files. .env.sirc.example lists the SIRC variables.
  • The web app now gets its settings from the server when it loads (image servers, login type, Sentry and PostHog keys, path mappings, docs URL), so changing them no longer requires rebuilding the web app image.
  • QABOARD_IMAGE_SERVERS picks the IIIF image server per file extension, e.g. one server for raw images and Cantaloupe for the rest.
  • QABOARD_PATH_MAPPINGS (a JSON list of Windows/Linux path pairs) replaces the hardcoded mappings used to convert paths between Windows shares and Linux.
  • QABOARD_TUNING_RUNNER chooses how tuning batches started from the web app run: local (default), celery or lsf. QABOARD_DEFAULT_USER sets the user that owns their outputs. See tuning from the web app.
  • GITLAB_HOST and GITLAB_ACCESS_TOKEN are no longer required to start the backend: without a token, repositories are cloned anonymously.
  • The backend now gives up after 20 seconds when the database is unreachable, instead of hanging silently.

Documentation​

  • The server and client installation docs describe the compose overlays and site packages. MIGRATION.md, at the root of the repository, lists the changes to make when upgrading an existing deployment.

Fixes​

  • Opening another page now always starts images at the default zoom, even when the previous page had images synced with the same key.
  • Fixed crashes of the backend when several people read pixel values on the same image at the same time. Its image cache, which had been turned off because of them, is back on, so pixel values show up faster.
  • The visualizations panel now resets when you switch to another commit or batch, keeps your show/hide choices when the project configuration reloads, and lists the options found in all output files (only the first 1000 files were used).