Hi folks,

The 2026.05 tag has been pushed to master on gitlab.com/lava/lava.
.deb packages have been built in GitLab CI and are published at

  https://apt.lavasoftware.org/release

Docker images for amd64 and arm64 have been built in GitLab CI and
are available from

  https://registry.gitlab.com/

and

  https://hub.docker.com/u/lavasoftware


Changes in this release
==================

# New debugfs implementation for generating mountable images

Instead of using `libguestfs` LAVA uses `debugfs` command from
`e2fsprogs`. This should in theory result in fewer bugs compared to
`libguestfs`.

To fallback to `libguestfs` implementation is in place if `debugfs` command is not found.

An optional `overlay_backend` key in the deploy stage allows explicit
selection of the backend (`auto`, `e2fsprogs`, or `guestfs`):

```yaml
- deploy:
    overlay_backend: e2fsprogs
    images:
      rootfs:
        url: https://example.com/rootfs.ext4
        format: ext4
        overlays:
          lava: true
```

# Device-types

## New device-types

* r9a09g057-rzv2h-evk
* imx952-15x15-evk

# Server

## Job cancellation tracking

Admin log entries are now recorded when a job is cancelled, making it
easier to track who cancelled a job and when.

## Database

New indexes on `state` and `health` columns improve performance when
filtering jobs. The deprecated `index_together` on `TestJob` has been
replaced with dedicated per-column indexes.

## 500 error responses

Server 500 errors now return JSON instead of HTML when the client sends
an `Accept: application/json` header (as `lava-worker` and `lava-run`
now do). This prevents raw HTML from appearing in job logs.

## UI improvements

Enable search for device-type and all workers pages. Also order tags by name
(case insensitive) in the devices page.

## Future proofing

A lot of changes has been done recently to remove deprecated and old django and
python features from the LAVA source code. This was possible due to the removal
of support for Debian 10.

Multiple fixes for Debian 13 are also part of this LAVA release:

* Fixed `text_offset` not being part of device type schema even thought it was used by some u-boot devices.
* Fixed REST API pages having invalid layout on Debian 13.
* Fixed various deprecation warnings.
* Fixed LDAP settings not working on Debian 13.
* Fix OIDC settings not working on Debian 13.

# Dispatcher

## Docker test action

Docker test actions no longer require the boot action to stop at a
shell prompt. This allows booting minimal systems without a proper shell
and running tests exclusively from the Docker test shell on the worker.

## fastboot

### fastboot autodetect

When using fastboot auto-detect feature, LAVA will now run fastboot in a
container if that's requested in the job definition. Prio to this release, LAVA
was ignoring the docker configuration for running the auto-detection step.

### DUT power sequence

LAVA is now downloading and preparing image prior to powering DUT on. This
aligns fastboot deployment with the typical download-then-deploy pattern used
by the other deployment methods in LAVA.

## Test services

Environment variables from the device dictionary and job definition are
now written to a `.env` file in the test service repository. Docker
Compose reads this file automatically, making it easy to pass
per-device information to service containers.

Device dictionary example:

```jinja2
{% set environment = { 'BOARD_QDL_ID': 'D902AA38'} %}
```

Docker Compose example to expose the variable to the container:

```yaml
services:
  srv1:
    environment:
      - BOARD_QDL_ID
```

## u-boot

`#conf@XXX` is no longer required for every device when using the
`bootm` command with FIT images. The config suffix is only appended
when `bootm_device_tree_config` is set in the device dictionary.


Rgds

--
Rémi Duraffort
Principal Tech Lead
LAVA Tech Lead
Automation Software Team
Linaro