<!-- SPDX-FileCopyrightText: no
     SPDX-License-Identifier: CC0-1.0
-->

This is the changelog for Calamares. For each release, the major changes and
contributors are listed. Note that Calamares does not have a historical
changelog -- this log starts with version 3.3.0. See CHANGES-3.2 for
the history of the 3.2 series (2018-05 - 2022-08).


# 3.3.0-alpha3 (unreleased)

This release contains contributions from (alphabetically by first name):
 - Adriaan de Groot
 - Aleksey Samoilov
 - Anke Boersma
 - Emir Sari
 - Evan James
 - Jeremy Attall
 - Johannes Kamprad
 - Mario Haustein
 - Masato TOYOSHIMA
 - Paolo Dongilli
 - Peter Jung
 - Shivanand
 - wiz64

## Core ##
 - Incompatible module-configuration changes, see #1438.
 - Branding entries use ${var} instead of @{var} for substitutions,
   in line with all the other substitution mechanisms used from C++
   core. See documentation in `branding.desc`.
 - Boost::Python requires at least version 1.72.
 - KDE Frameworks must be version 5.58 or later.
 - The `INSTALL_CONFIG` option has been removed. If you are installing
   the example configuration files from the Calamares repository, just
   stop. That was never a good idea, and you should keep your configs elsewhere.
 - Progress percentage during install can now be localized. (thanks Emir)

## Modules ##
 - *dracut* added a configurable kernel name. (thanks Anke)
 - *initcpiocfg* orders hookds slightly differently. (thanks Peter)
 - *localeq* moved to using Drawer instead of ComboBox in UI. (thanks Anke)
 - *keyboardq* moved to using Drawer instead of ComboBox in UI. (thanks Anke)
 - *netinstall* now has a new *noncheckable* option for groups, which prevent
   it a group from being checked/uncheckd as a whole. You can still check
   individual items **in** the group though. (thanks Shivanand)
 - *partition* can now pick LUKS or LUKS2. (thanks Jeremy)
 - *zfs* creates a hostid through zgenhostid.
 - *zfshostid* new module to copy zfs generated /etc/hostid


# 3.3.0-alpha2 (2022-08-23)

Second alpha release, with updated ABI compatibility checking,
some 3.3.0 release goals, new features in modules and important bugfixes.

This release contains contributions from (alphabetically by first name):
 - Adriaan de Groot
 - Anke Boersma
 - Evan James
 - Shivanand
 - Vitor Lopes

## Core ##

A core **TODO** is moving all library code into the `Calamares` namespace,
dropping the `CalamaresUtils` namespace. Modern C++ supports nested namespaces,
so in some cases we can use those. This has a drastic effect on ABI compatibility,
though, as functions move from one namespace to another. This needs to be
completed before a 3.3.0 with ABI stability is released.

## Modules ##

Module schemas have been updated to reflect all the incompatible changes.


# 3.3.0-alpha1 (2022-06-27)

Initial 3.3.0 alpha release to check the release scripts &c.

This release contains contributions from (alphabetically by first name):
 - Adriaan de Groot
 - Aleksey Samoilov
 - Anke Boersma
 - Dan Simmons
 - Evan James
 - Peter Jung


# 3.3.0-pre-alpha (unreleased) #

This release contains contributions from (alphabetically by first name):
 - Anke Boersma
 - Anubhav Choudhary
 - Evan James
 - Vitor Lopes

This is a "minor" version change, but the size of the changes is very
large. Configuration files from previous versions of Calamares will
**certainly** need to be re-validated. Take heed of the many changes
in the *Modules* heading, below.

Users (distributions) are **strongly** advised to use the tools
for configuration validation (`ci/configvalidator.py`) to check
that the distribution configuration files follow the current schema.

## Project ##
 - The C++ code in the project is now formatted with clang-format 12 or 13,
   with the coding-style as found in `.clang-format`; there are minor
   differences from the tool, compared to the clang-format 9 usually applied
   to Calamares 3.2.
 - The CMake code in the project is now formatted with gersemi 0.7.5.

## Core ##
 - CMake 3.16, Qt 5.15 are now required; the newer CMake is to support
   new features (also for KDE Frameworks), Qt is the current LTS version.
 - Running `calamares -d` no longer enforces a single-application
   (it is for debugging purposes, after all).
 - Python 3.6 or later is now required, to allow for F-strings in
   Python code and allow other tidy-ups in the Python modules.
   Boost::Python now requires 1.67 or later (for CMake support).
 - The log file now **always** contains a debug-log, and the `-D` flag
   primarily controls what is printed to stdout. By default, stdout
   only gets errors; use `-D6` to match stdout with the file. Use `-D8`
   to get an extra-verbose log file **and** verbose stdout.

## Modules ##
 - *bootloader* now supports more options when building the kernel
   command-line. (Thanks Evan)
 - *bootloader* no longer supports `@@`-style suffixes for unique-EFI-id
   generation. Use `${}` instead.
 - *displaymanager* no longer supports the discontinued *kdm* display manager.
 - *fstab* configuration has been completely re-done. Many configuration
   options have moved to the *mount* module. See #1993
 - *grubcfg* changed the key *keepDistributor* to *keep_distributor*.
   Please update configurations.
 - *mount* now does most of the mounting; options that were in *fstab*
   have moved here. See #1993
 - *oemid* now uses consistent variable replacement (e.g. KMacroExpander)
   and does not support `@@DATE@@` anymore (use `${DATE}`).
 - *partition* requires KPMCore 21.12 (e.g. KPMCore 4.2 API, or later).
 - *partition* can now skip installing the bootloader in more scenarios.
   #1632 (Thanks Anubhav)
 - *preservefiles* follows `${}` variable syntax instead of `@@`.