RsyncUI version release notes and changelogs.
Version 3.0.2
🚀 Changelog: RsyncUI 3.0.0 → 3.0.2 (release candidate)
This build is based on the actual Git diff from v3.0.0 to commit 64a97b8a (dated June 24, 2026). If no bugs are reported next week, this commit will become the next official release without requiring a new build. Consequently, users who download and test it now will not receive a notification to download a new version later.
📋 Improved rsync output
- Added structured presentation of itemized rsync output.
- Changes are classified as added, updated, deleted, metadata-only, or other.
- Added colored icons and clearer file paths for each change.
- Added support for both rsync and openrsync output formats.
- Automatically enables –itemize-changes during synchronization, estimation, and verification.
- Ensures the option is added only once and does not modify saved task parameters.
🗓️ More reliable scheduling
- Fixed duplicate daily and weekly schedules after recomputation or application restart.
- Improved persistence by storing schedule definitions instead of generated occurrences.
- Fixed schedule calculation across month and year boundaries.
- Schedules are now limited correctly through the end of the following month.
- Invalid, expired, and out-of-range dates are rejected.
- Prevented duplicate schedule definitions.
- Deleting the earliest schedule now correctly activates the next one.
- Deleting the final schedule clears the timer and next-schedule state.
- Improved handling and deletion of schedules missed while the Mac was asleep.
- Schedule selections are cleared after deletion.
🧹 Interface improvements
- Removed the redundant reset-selection toolbar button from the log-record view.
- Simplified itemized-output detection.
- Corrected the schedule-type picker value binding.
- Minor cleanup of the log statistics chart implementation.
✅ Testing
- Added scheduler tests covering deletion, deduplication, persistence, date validation, and year boundaries.
- Added tests for itemized rsync output parsing.
- Added tests ensuring –itemize-changes is inserted correctly and only once.
- Added a dedicated schedule test tag.
🔧 Maintenance
- Updated the application and widget version to 3.0.2 (build 196).
- Updated release and download references for the 3.0 series.
- Updated development documentation.
- Diff summary: 25 files changed, 591 insertions, and 229 deletions.

Version 3.0.0
Version 3.0.0 - May 14, 2026
Bugfix: Resolved the issue with adding tasks. Additionally, removed an annoying message regarding the missing configuration file.
The bug was caused by incorrect use of Swift concurrency in the Add function. The add and update tasks are asynchronous functions running on the @MainActor. The update was triggered by an unstructured task that completed after the caller was completed and cleared the values, causing the error.
To fix this, use structured concurrency with await. Await suspends execution until the async function completes.
Mastering Swift concurrency is challenging, and I’m learning daily. Swift concurrency and actor isolation in RsyncUI are minimized, but some model updates remain. I’m developing another app where Swift concurrency and actor isolation are essential, demonstrating mastery and highlighting areas for further learning.
Version 2.9.8
Version 2.9.8 - May 12, 2026
In this release, there are a few minor UI updates. If you prefer the update without the UI updates, please inform me, and I can create an updated version without the UI updates.
This version primarily focuses on refactoring and cleaning up the model component of RsyncUI. Additionally, there are some updates to the main Synchronize and Tasks view. There are more internal updates planned, and the next and hopefully final cleanup of the code is scheduled for June or July.
A comprehensive release notes detailing all model updates in this release is available. The detailed release notes can be accessed at the RsyncUI main repository on GitHub. The changelog is generated by AI after reviewing all Git commits and modifications to the source code.
Next version represents a substantial internal refactor, primarily focusing on enhancing the application’s codebase. RsyncUI has been in development and maintenance since late 2020, spanning over five years. It is imperative to maintain the source code’s up-to-date status to ensure the continued development and maintenance of the application. During this period, I have experienced a significant learning curve, particularly through the development of my latest application, RawCull, a culling app designed for raw files (photo app).
In the past year, artificial intelligence (AI) has emerged as an increasingly indispensable and valuable tool in the development process. For this version of RsyncUI, both GitHub’s copilot-cli and ChatGPTs codex terminal clients have proven instrumental in facilitating this cleanup effort.