Changelog¶
Versioning policy¶
Deptool versions are named MAJOR.MINOR.PATCH.
- The major version number is purely cosmetic and represents the author’s sentiment.
- The minor version is bumped for new features and changes that are not bugfixes.
- The patch version is bumped for bugfixes.
The version number is not a semantic version. Changes that have compatibility impact will be clearly marked as such in the changelog.
Next¶
Unreleased.
New features:
- Add support for Podman quadlets.
- Add support for systemd-networkd config. Deptool executes
networkctl reloadafter a managed networkd file changes. - Add
deptool reapply, a command that re-applies the currently deployed revision on every host in the cluster. This command should not be needed normally, but it helps to recover from manually created drift and bugs.
Improvements:
- Do not depend on shell brace expansion when installing the agent to improve compatibility, and print stderr when agent installation fails to aid debugging.
- List which specific systemd units failed to become active, if any.
- Improve the error message for when symlink reconcile fails to remove an existing path.
- Subdirectories in the
systemddirectory (used for systemd drop-ins) are now handled correctly, see the directory layout chapter. - It is now possible to remove all apps from a host by leaving the host’s directory empty in the config tree. Previously this required creating a placeholder file in the directory as a workaround.
- Deptool now reports IO errors that happen on the target host with more context, in particular errors always include the path involved in the failed operation.
Bugfixes:
- Fix a bug where an inactive unit could be masked by an active one when multiple systemd units were affected in the same deployment.
- Files in the config tree that are outside app directories (e.g. a readme per host) are no longer committed to the store, and no longer cause empty plans for a host when only such files changed.
- Managed systemd units that are enabled are now re-enabled on every deploy. This fixes a bug where units could fail to start after a reboot. This happens because
systemctl enableresolves symlinks, in particular it resolves/var/lib/deptool/apps/<app>/currentto a fixed version. This means the symlink that systemd creates in.wantsbecomes stale after deploying a new version, and may even point to a version that got garbage-collected after a later deploy. Re-enabling after every change ensures that the.wantssymlinks point to the correct versions. - In addition in order to ensure that enabled units start after a reboot, make symlink reconciliation less aggressive. Deptool no longer removes symlinks in
.wantsdirectories created by systemd. It now only removes symlinks that point throughcurrent, as those are the only symlinks Deptool creates. - Trigger
systemctl daemon-reloadafter an app with systemd unit changes. Previously it was triggered only when units were enabled or disabled. - Fix a bug where an existing symlink that points to the correct target directory, caused deployment to fail with a vague Is a directory error. This could happen in particular when a rollback-unsafe deployment created the symlink. A retry of that deployment would try to test if the contents of the target path already matched the contents of the source path, but this failed because the target path is a directory rather than a file. Now Deptool skips symlinks that already point at the correct source, and it reports a clear error when the target path is a directory.
1.0.0¶
Released 2026-05-06.
This is the initial public release. It’s accompanied by an announcement post. The 1.0 version number represents the fact that the author uses this version successfully for personal infra. It’s not a stability commitment, though if future changes have compatibility impact, they will be clearly marked as such in this changelog.