Changes in 0.4.2:

* Add support for downloading images with a given, known checksum
  using the command `image-garden download-with-sha256sum URL SHA256`.

* Add well-known sha256 checksums to all Oracle cloud images.

* In the CI/CD configuration systems derived from RHEL 10 are now marked as
  needing at least a haswell CPU (aka x86_64-v3). Users of older hardware
  devices will not be able to boot such systems without setting
  `QEMU_CPU_X86_64=Haswell` (or newer). See the output of `qemu-system-x86_64
  -cpu help` for a complete list of options. For details as described by the
  Rocky project, see https://docs.rockylinux.org/10/guides/minimum_hardware_requirements/

* All cross-arch tests are marked as non-fatal as they time out on our aging
  and slow infrastructure.

* Alpine Linux is updated to release 3.23.2, and is verified with a sha256 checksum.

Changes in 0.4:

* Add `image-garden rebase SYSTEM.ARCH` command.

  This command can be used to reset the base image in the virtual machine disk
  image to the use image-garden cache directory of the current system. It is
  especially useful in Continuous Integration (CI) environments where cache
  from one system type may be used in another system type, where everything is
  compatible except for the effective location of `$GARDEN_DL_DIR`.

  Only images with a backing file, with a matching base image in
  `$GARDEN_DL_DIR`, can be rebased.

* Improve `image-garden allocate` used port detection.

  Port allocation is now using randomized probing in the range 5000-9999. This
  should reduce possibility of clashes caused by rapid parallel allocation, as
  well as properly detect occupied port numbers.

* Automatically use `nice` on desktop sessions.

  When `$XDG_SESSION_TYPE` is either `wayland` or `x11` (but not `tty`) then
  use `nice` to lower the priority of started virtual machines. This should
  make long-running tests less noticeable for interactive desktop work.

  Nice is also used for initial image construction.

* Introduce build-time rule generation system.

  This way the package build-depends on Python and retains the make interface
  that requires no complex downstream packaging updates. Ubuntu, Debian, Fedora,
  CentOS, Oracle, AlmaLinux, RockyLinux, AlmaLinux, ArchLinux, openSUSE and
  AmazonLinux cloud images are now defined in the `data/ubuntu.ini`,
  `data/debian.ini`, `data/fedora.ini`, `data/centos.ini`, `data/oracle.ini`,
  `data/almalinux.ini`, `data/rocky.ini`, `data/alpine.ini`,
  `data/archlinux.ini`, `data/opensuse.ini` and `data/amazonlinux.ini` files,
  and the long and repetitive make rules are removed.

* Fedora 38 download URL has been updated to
  `https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/...` which
  restores access to an image that is not actively maintained in the mirror
  network.

* AlmaLinux 10 is now supported.

* RockyLinux 10 is now supported.

* OracleLinux 7 is now supported.

* OracleLinux 10 is now supported.

* AlpineLinux 3 is updated from release 3.21.2 to release 3.22.

* AmazonLinux 2 is now supported.

* Fedora 43 is now supported.

* openSUSE Leap 16.0 is now supported.

* It is recommended to escape `+` as `-plus-` for working with `spread`.

* Ubuntu 14.04 is finally supported.

* Ubuntu 24.10 is no longer supported, having been removed from Ubuntu servers.

* Ubuntu 26.04 is now supported.

* All images are downloaded using http protocol, to make it possible to use
  http proxies to avoid excessive traffic. This does come at the cost of
  lowered overall security.

* Nearly all images are now verified against a checksum file that is downloaded
  over https. The exceptions are: oracle, alpine and gentoo. Those will be supported
  in the future.

* The download routine is now more resilient against interruptions being mistreated
  as finished downloads. This should reduce the number of failed tests that are caused
  by silently corrupted or partial downloads.

* Use -cpu neoverse-n1 for amazonlinux-cloud-{2,2023}.aarch64 systems. Thanks
  to Alex Bennée for the suggestion.

* The default configuration for aarch64 virtual machines now allows
  more than eight virtual CPUs, where qemu version allows this. This is done by
  using the maxiumum version of GIC instead of the default version.

* Gentoo is now supported by image-garden, but not by spread. Upstream spread
  uses relatively old selection of crypto algorithms. At present the Go ssh
  client built into spread is unable to connect to a started instance.

* Initial support for riscv64 system emulation.

  A number of Ubuntu systems are supported (since Ubuntu 24.04).

  Fedora 42 is also supported.

* Initial support for s390x system emulation.

  A number of systems are supported: Ubuntu (since Ubuntu 18.04) as well as Fedora (since 42)

* Initial support for ppc64 system emulation.

  A small number of systems are supported: Ubuntu (since Ubuntu 14.04).

  Currently all systems emulate a virtual Power 9 processor in a P-Series machine.

* Cloud-init rules are now allowed to reboot the system. Cloud-init
  execution will continue normally until finished.

Changes in 0.3.4:

* This version had no public changes except for in the snap package.

Changes in 0.3.3:

* Make all systems compatible with `QEMU_ENV_QUIRKS` feature.
  The placement of `exec` has moved after the quirks are applied, allowing
  quirks to freely export environment variables.

Changes in 0.3.2:

* Allow root to authenticate with a password on Ubuntu 16.04 systems.

Changes in 0.3.1:

* Replace dependency on `genisoimage` with `xorriso`.

* Properly detect changes to `.image-garden.mk` when `.image-garden/` directory
  is used to isolate temporary files to a hidden sub-directory.

* Allow authenticating as `root` with password `root` to all images with
  the exception of Ubuntu Core systems.

Changes in 0.3:

* Remove support for Fedora 42 Beta.

* Add support for Fedora 42.

* Add support for Ubuntu 25.10.

* Add new command `image-garden news` shows the last changelog
  entry. An optional argument may be used to see more than one entry.
  For example `image-garden news 2` shows last two entries.

Changes in 0.2.2:

* Stage dependencies needed by `wget` in the snap package.

Changes in 0.2.1:

* Fedora 42 (beta) is now supported.

* Image Garden is now available as a snap package.

Changes in 0.2:

* Amazon Linux 2023 is now supported.

* `QEMU_ENV_QUIRKS` mechanism allows persistently customising environment
  variables before invoking QEMU. This allows selecting different network or
  storage details.

* Ubuntu Core 16, 18, 20, 22 and 24 are now supported.
  Ubuntu Core 16, 18 and 20 do not support aarch64 architecture with generic
  images.

* Debian Sid is now explicitly supported as a distinct entity.

* The `image-garden allocate` command allows allocating machine that persists
  changes from one invocation to another by setting the environment variable
  `QEMU_SNAPSHOT_OPTION=""` (the value is empty). This may allow debugging
  boot failures, especially when coupled with persistent journal inside the
  virtual machine or with systemd debug shell or systemd emergency shell.

* Presence of the `.image-garden` directory now causes `image-garden` to create
  all image and log files there. This mode can be used to significantly reduce
  clutter in the root directory of the project.

* `image-garden --version` is now equivalent to `image-garden version`.

Changes in 0.1.1:

* Presence of `.image-garden.mk` file is now correctly reflected in dependencies
  of the `*.user-data` files, so that editing the local makefile automatically
  causes all the disk images to become outdated.

* Using `image-garden make -B` should no longer re-download everything, as
  `wget` is now called with `--no-clobber` and is smart enough to notice that
  re-downloading complete images is not required.

* Image garden now comes with a manual page. See `man image-garden` to learn about
  all the documented features.

* Oracle Cloud release 8 is now supported.

* SSH service is configured with "UsePAM yes" by default.

Changes in 0.1:

 * Initial release.
