# Changes

## 0.1.1 (2026-03-28)

- FIX: Read The Docs build

## 0.1.0 (2026-03-28)

**CAUTION**: The configuration layout changed, effectively **BREAKING BACKWARDS COMPATIBILITY** for most use-cases!

With this release, the Python implementation is sunset and may only receive bugfixes. For new deployments, please use the Rust-reimplementation as of version >= 0.2.

The `keep_backlog` configuration parameter, which could previously be both a boolean and an integer, is now only allowed to be an integer. If no snapshots shall be kept on the target side, it must now be set to `0`. If all snapshots shall be kept on the target side (default behavior), it must now be set to `-1`. Arbitrary numbers greater than `0` remains unaffected by this change.

`abgleich` will use **semantic versioning** from now on. Breaking changes will be indicated by increasing the second version number, the minor version. Going for example from `0.0.x` to `0.1.y` or going from `0.1.x` to `0.2.y` therefore indicates a breaking change.

- FEATURE: `abgleich` can be initialized i.e. told to generate an initial configuration via a simple CLI wizard by running `abgleich init {filename}.yaml`.
- FEATURE: Introduced a debug mode, activated by setting the `ABGLEICH_DEBUG` environment variable to `1`. Debug features were previously hard-coded activated, making `abgleich` now with debug features deactivated by default much faster.
- FIX: Improved error handling by not passing snapshots failed to send completely to stdout.
- DEV: Moved from `setuptools` for packaging to `pyproject.toml` via `flit`.
- DEV: Added rudimentary test suite.

## 0.0.8 (2022-01-21)

- FEATURE: `zfs-auto-snapshot` can be told to ignore backup datasets on the target side, see #3.
- FEATURE: `samba` can optionally be told to NOT share/expose backup datasets on the target side, see #4.
- FEATURE: `ssh`-port on source and target becomes configurable, see #22.
- FEATURE: New configuration fields for `source` and `target` each: `processing`. They can carry shell commands for pre- and post-processing of data before and after it is transferred via ssh. This enables the use of e.g. `lzma` or `bzip2` as a custom transfer compression beyond the compression capabilities of `ssh` itself. See #23.
- FEATURE: `abgleich clean` can also remove snapshots on `target` but only if they are not part of the current overlap with `source`. The behavior can be controlled via the new `keep_backlog` configuration option, see #24 and #25.
- FEATURE: Configuration module contains default values for parameters, making it much easier to write lightweight configuration files, see #28. The configuration parser now also provides much more useful output.
- FEATURE: `abgleich tree` and `abgleich compare` highlight ignored datasets.
- FEATURE: Significantly more flexible shell command wrapper and, as a result, cleaned up transaction handling.
- FEATURE: Python 3.9 and 3.10 compatibility.
- FIX: Many cleanups in code base, enabling future developments.

## 0.0.7 (2020-08-05)

- FIX: `tree` now properly checks if source or target is up, depending on what a user wants to see, see #20.
- FIX: All `abgleich` commands can properly initialize (instead of crashing) if the target tree is empty, see #19.
- FIX: `tree` shows message if there is no tree instead of crashing, see #18.

## 0.0.6 (2020-07-24)

- FIX: Development installs with `make install` do no longer fail, see #17.
- FIX: Python up to 3.7.1 does not handle type checks for `OrderedDict` properly and either causes exceptions or crashes. Fixed with workaround, see #16.

## 0.0.5 (2020-07-24)

- FEATURE: Version shown in GUI
- FEATURE: Version exposed through `--version` option on command line
- FEATURE: While `{zpool}{/{prefix}}` is included in all operations by default, this can be deactivated by setting the new `include_root` configuration option to `no`, see #14.
- FIX: If a remote host is not up, provide a proper error and fail gracefully, see #15.

## 0.0.4 (2020-07-22)

- FEATURE: Improved labels in wizard GUI
- FEATURE: Significantly improved German translation
- FIX: Importing `CLoader` and `CDumper` from `pyyaml` caused crashes if they were not present in `pyyaml` packages, see #2.
- FIX: The `mountpoint` property of ZFS datasets is no longer assumed to be present at all (set or unset). This allows to handle ZVOLs without crashing, see issue #6.
- FIX: Versions 0.0.2 and 0.0.3 were completely ignoring ZVOLs when looking for snapshot tasks, see issue #10.

## 0.0.3 (2020-07-19)

- FEATURE: Added wizard GUI for backup tasks (`snap`, `backup`, `cleanup`)
- FEATURE: Added new configuration options (`always_changed`, `written_threshold`, `check_diff`) for detecting snapshot tasks
- FEATURE: CLI and GUI translations (i18n)
- FIX: Added missing type checks

## 0.0.2 (2020-07-14)

- FEATURE: New, fully object oriented base library
- FEATURE: Python 3.8 support added
- FIX: `cleanup` does not delete snapshots on source if they are not present on target.
- FIX: Wait for ZFS's garbage collection after `cleanup` for getting a meaningful value for freed space.
- Dropped Python 3.5 support

## 0.0.1 (2019-08-05)

- Initial release.
