# Duplicati v2.3.0.109_canary_2026-08-14 - Product: Duplicati (https://whatsnew.fyi/product/duplicati) - Vendor: Duplicati - Date: 2026-08-14 - Version: v2.3.0.109_canary_2026-08-14 - Original notes: https://github.com/duplicati/duplicati/releases/tag/v2.3.0.109_canary_2026-08-14 - Permalink: https://whatsnew.fyi/product/duplicati/releases/v2.3.0.109-canary-2026-08-14 - Labels: Pre-release What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Add native desktop notifications on Windows as toast notifications with click-to-open support, on macOS via the native notification center, and on Linux via DBus integration - **added** — Add support for native $VAR and ${VAR} environment variable syntax in paths and filters on Linux and macOS - **added** — Add validation that detects misconfigured filters and reports them with a warning instead of silently matching nothing - **added** — Add validation that rejects an unusable update check interval instead of ignoring it - **added** — Add validation that fails on an invalid webservice timezone instead of silently resetting it - **changed** — Make restore honor stop requests promptly by letting an abort interrupt in-progress file reads and writes - **changed** — Run all main database queries through the slow-query monitor so --long-database-query-threshold now warns about hanging queries - **changed** — Match backend URL schemes without regard to case - **changed** — Parse SSH, SMB, FTP, XMPP, pCloud, Tahoe-LAFS, and OAuth login URLs with the standard URI parser - **changed** — Rename the internal URL parser to RelaxedUri - **changed** — Recompute the next scheduled run when weekdays or interval change - **changed** — Treat an existing folder as success when auto-creating a destination - **fixed** — Fix aborted restore no longer reporting errors, blaming the backup, or leaking temporary files - **fixed** — Fix files interrupted by a shutdown no longer listed as broken during restore - **fixed** — Fix requested shutdown no longer reported as a failure - **fixed** — Fix legacy restore engine creating a real folder in place of a directory symlink - **fixed** — Fix wrong seek offset when copying verified local blocks during restore - **fixed** — Fix incorrect buffer copy when merging a hash fragment during restore - **fixed** — Fix restore not preserving the selected folder and not applying configured default options when restore request does not explicitly specify them - **fixed** — Fix credentials leaking through URL sanitizing on malformed URLs This release is a canary release intended to be used for testing. #### Native desktop notifications This release adds native desktop notifications on all supported desktop platforms. Backup results and other tray-icon notifications are now shown as real operating-system notifications instead of only appearing inside the UI. On Windows, notifications are shown as Windows toast notifications with click-to-open support, thanks @JamBalaya56562. On macOS, notifications are shown via the native notification center. On Linux, notifications are sent over DBus and integrate with the desktop environment's notification daemon. #### Native environment variable syntax on Linux and macOS Paths and filters now support the native `$VAR` and `${VAR}` environment variable syntax on Linux and macOS, most notably `$HOME`, thanks @JamBalaya56562. Previously only the Windows-style `%VAR%` syntax was expanded, so the native forms were silently left unexpanded on non-Windows systems. The expansion is additive: `%VAR%` keeps working everywhere, and an undefined variable is left as-is. If you previously worked around this with literal `$` characters in paths or filters, those entries will now be expanded. #### Restore improvements and fixes Several restore issues have been fixed in this release, thanks @JamBalaya56562. Restore now honors stop requests promptly: an abort interrupts in-progress file reads and writes, where it previously could keep running for minutes after the request. An aborted restore no longer reports errors, blames the backup, or leaks temporary files, and files that a shutdown interrupted are no longer listed as broken. A requested shutdown is in general no longer reported as a failure. Two bugs that could corrupt restored data were fixed: a wrong seek offset when copying verified local blocks, and an incorrect buffer copy when merging a hash fragment. Restore now also preserves the selected folder and applies configured default options (such as `--restore-permissions`) when the restore request does not explicitly specify them. On the legacy restore engine, restoring a directory symlink no longer creates a real folder in its place. #### Stricter validation of settings This release adds validation in places that previously failed silently, which may surface new warnings or errors after upgrading: - Misconfigured filters are now detected and reported with a warning, instead of silently matching nothing. - An unusable update check interval is now rejected instead of being ignored. - An invalid webservice timezone now fails instead of being silently reset. ##### Detailed list of changes - Let an abort interrupt the restore's file reads and writes, so a restore stops promptly, thanks @JamBalaya56562 - Stopped listing files interrupted by a shutdown as broken during restore, thanks @JamBalaya56562 - Stopped reporting a requested shutdown as a failure, thanks @JamBalaya56562 - Fixed the legacy restore engine creating a real folder in place of a directory symlink, thanks @JamBalaya56562 - Ran all main database queries through the slow-query monitor, so `--long-database-query-threshold` now warns about hanging queries, thanks @JamBalaya56562 - Added native desktop notifications: Windows toast notifications with click-to-open, macOS notifications, and Linux DBus notifications, thanks @JamBalaya56562 - Added support for native `$VAR`/`${VAR}` environment variable syntax in paths and filters on Linux and macOS, thanks @JamBalaya56562 - Made restore honor stop requests; aborted restores no longer report errors, blame the backup, or leak temp files, thanks @JamBalaya56562 - Fixed wrong seek offset when copying verified local blocks during restore, thanks @JamBalaya56562 - Fixed incorrect buffer copy when merging a hash fragment during restore, thanks @JamBalaya56562 - Preserved the selected folder during restore, thanks @JamBalaya56562 - Let configured default options apply when restore options are not specified, thanks @JamBalaya56 _[Truncated at 4000 characters — full notes: https://github.com/duplicati/duplicati/releases/tag/v2.3.0.109_canary_2026-08-14]_