Releases: westpoint-io/lazyrsync
Releases · westpoint-io/lazyrsync
Release list
v0.3.0
Added
rsync_pathinsettings.tomlpicks which rsync binary runs instead of the
first one on$PATH. Useful on macOS 15.4 and later, where/usr/bin/rsync
is openrsync and shadows Homebrew's rsync, and in any launch context with a
minimal$PATHsuch as cron. The configured binary is what the resolved
command in the TUI andlazyrsync listreports.- A startup warning when the rsync found on
$PATHis older than 3.1. The
preview needs--itemize-changes, the progress bar needs--info=progress2
and snapshots need--link-dest; openrsync has none of the first two and
accepts--link-destwithout reliably hardlinking. - Statically linked musl release binaries for
x86_64-unknown-linux-musland
aarch64-unknown-linux-musl, so distributions carrying a glibc older than
2.34 can run a prebuilt binary.cargo binstallresolves them on musl hosts.
Changed
- Saving
settings.tomlpreserves comments and every hand-edited key; only
hintsandlast_profileare rewritten. Editing the file while the TUI is
open no longer loses those edits on exit. settings.tomlrejects unknown keys, the ruleprofiles.tomlalready
followed. One consequence for both: a file written by a newer lazyrsync may
fail to load on an older binary rather than being partially ignored.
Fixed
- A
settings.tomlthat exists but cannot be read or parsed is now a loud
error instead of being silently discarded and replaced with defaults.
v0.2.0
Added
- Headless runs:
lazyrsync run PROFILEruns every task in a profile without
the TUI, andPROFILE/TASKruns a single task by the idlistprints. Suited
to cron and systemd timers — Snapshot tasks resolve their--link-destchain
fresh on every run, which no static crontab line can express. run -nfor a real dry run,--yesto allow tasks that delete at the
destination, and-vto include rsync's own output per task.- Documented exit codes:
0success,1refused for want of--yes,2
unknown target or unloadable config,3a task that could not start or was
killed, otherwise the first failing task's rsync exit code. - Dynamic paths:
{now},{now:FORMAT},{utcnow},{hostname},{user},
$VAR/${VAR}and~expand every time a task runs, so one saved task can
write to a new dated folder each night. Unknown placeholders and unset
variables are left as typed;{{and$$escape. - A separate opt-out per confirmation prompt in
settings.toml
(skip_delete_warning,skip_run_confirm,skip_remove_confirm), all
falseby default.
Changed
- A headless real run passes rsync
-qand reports one line per task; a dry run
is never quiet, and neither carries the TUI-only--info=progress2or
--statsflags. profiles.tomlrejects unknown keys instead of ignoring them, so a typo in a
field name fails loudly at load time rather than silently dropping a setting.
Fixed
- A task that enables
--delete-excludedon its own now warns, matching the
existing--deletewarning. - Placeholders resolve before a path is classified as remote, so a placeholder
that expands to contain a colon no longer looks like an SSH target.
v0.1.1
Changed
- Feature GIFs are committed in the repo and referenced relatively, so they
render on both GitHub and the crates.io page.
v0.1.0
Added
- Initial release: an rsync terminal UI with reusable profiles and tasks,
dry-run diff preview, live run progress with cancellation, a filters/flags
editor, SSH remotes (user@host:/path), and local snapshots.