What's new in this version:
Enhancements and changes:
- Added Data Volume backup Operation and Setup Assistant. This supports full backup of just the 'Data' portion of macOS 11, Big Sur, and newer versions of macOS.
- Added the assertion that SmartScan on macOS 12, Montery, requires admin access
- Modified the Bootable Backup and Data Volume backup list of automatically excluded items
- Added logic to detect certain types of fsEvent database problems associated with updating fsEvents on the same volume from different OS versions
- Updated/added a variety of readiness warnings to deal with Data Volume Backup and
- SmartScan issues
- Updated licensing terms
- Fixed a problem that could cause -2070 errors when copying files with no creation dates between HFS+ and APFS filesystems
- Added the ability to alter iCloud application container collection behavior via plist msettings
- Fixed a bug whereby removing a rule from an expanded rule group could cause a crash
- Fixed a bug whereby an Archive could not be relocated to a folder on the active Data volume
- Fixed a bug whereby the bootable blacklist was being applied to a target that mreferenced the root level of any volume
- Fixed a bug that could cause a crash on application launch if a file helper’s associated application was removed from the system
Enhancements and changes:
- Added Bootable Backup support on Apple Silicon/M1 Macs for macOS 12.4
- New power manager behaviors
- Modified the Bootable Backup list of automatically excluded items
- Fixed a bug whereby ChronoSync was not properly creating a Keychain entry
- Fixed a bug whereby some Direct Messaging e-mail provider connections were failing
Enhancements and changes:
- Added more informative error messages to the console when an agent connection is lost
- Made a wholesale change throughout ChronoSync regarding how sheet windows are displayed and managed, removing old, deprecated APIs
- Added logic to simulate user activity when running the Clone Volume command
- Improved exception handling when loading and saving sync task documents
- a bug whereby pre v4 sync task documents could not be opened
- a bug whereby responding to the completion of a relocation of the archive was taking place in a background thread which would raise an exception
- a bug whereby a relocation of the archive was not guaranteed to create a new archive with the proper document ID
- a bug when duplicating sync tasks or choosing a new, custom archive location where the source archive path was not properly constructed
- a bug that could leave interval timers in place when closing Sync Task and Container Task document windows that could lead to a crash
- a bug whereby certain classes could respond to events in a background thread which would raise an exception in newer versions of macOS
- a bug whereby the Bootable Backup Assistant could allow the user to advance to the next step even when there were no valid source volumes to choose from
- a bug whereby when collecting information about a mounted volume, an exception could be raise if some volume details were unobtainable
- a bug which could cause failure to delete items in an archive when the corresponding sync task is being deleted
- a bug that could cause failure to duplicate an archive when duplicating a sync task
- a potential crash that could occur when refreshing the Analyze Panel’s contents while running a sync task
- a bug whereby relative date rules were not getting properly encoded/decoded in v10 format sync task documents
- a bug whereby custom archive locations were not being properly decoded from pre-v10 file formats
- a bug whereby the “Allow SmartScan” setting for Target Options was not being properly interpreted
- a bug whereby the SyncDocumentDeleter would not generate any error messages if it failed because it could not locate an archive that it was instructed to delete
- a bug whereby the SyncDocumentDeleter would not prompt the user about archive deletion if the sync task was never previously run
- a bug whereby package merge operations were not being asked to aggregate modi fication dates of merged packages, thus causing unnecessary calls to aggregate package contents after the merge was completed. This was causing timeouts and lost agent connections on some systems
- a problem with the SyncDocumentDuplicator whereby it would continue to duplicate the task document even if an error occurred while duplicating the task document’s archive
- a problem with the SyncDocumentDuplicator and SyncDocumentDeleter whereby no attempt was made to mount a target archive’s volume when duplicating or deleting an associated archive
- a problem whereby the SyncTargetArchiveMover would not properly cleanup after itself if a problem occurred when moving an archive
- a bug whereby when specifying a custom archive location in the Options Panel ChronoSync would fail to move non-document relative archives
Apple Silicon Native:
- ChronoSync v10 is a Universal binary Application
New Minimum OS:
- ChronoSync v10 Requires macOS 10.12, Sierra, or newer
Return of Google Cloud Support:
- Existing connection profiles work but will need to be re-authenticated
- Added Direct iCloud Support
All-New Support for Big Sur and Monterey Bootable Backups:
- The Bootable Backup Setup Assistant uses the ASR tool to create a cloned image on the destination volume as part of the bootable task creation process
- After the full system clone is made, only the data volume is backed up
- When an OS version change is detected, ASR will be automatically employed to re-image the destination without disrupting any existing Archiving of the user’s data
- When the user manually configures a bootable backup, the Volume Group Converter will provide the option to re-image the destination (using ASR)
New Archive Management:
- Archives for new Sync Tasks are located in a document-specific folder relative to “_Archived Items”
- Old documents still store archives just beneath “_Archived Items”
- The location of “_Archived Items” may be changed on a per-target basis. It can reside at any location that is reachable by the Target’s File manager.
- Added ‘Actions->Archive->Maintain Archive’ to run just the maintenance step of a synchronization. This is useful if the maintenance will free up disk space, which may be necessary to complete the synchronization.
- Added ‘Actions->Archive->Cleanup Archive” tool, to reclaim the specified amount of disk space from the archive
- When duplicating sync tasks via the Organizer window, the option to retain the archive will actually copy the entire archive to a new, document specific location
- New Sync Task Document File format
- ChronoSync v10 will prompt to update the file format the first time you open a sync task document
- Scheduled syncs that have not been upgraded work fine
- The “File->Save as” window allows saving in either the new or old format
- Eliminated Most Blocking UI Logic
- Improved Sync Engine
- Updated OpenSSL Library
- Updated SFTP Library
- Various UI Enhancements
- New Data Encoding for Scheduler Database, Connection Profiles and other Application data
- New Version Numbering Scheme
- Implemented the “No Bootables” readiness test that checks if you’re trying to make a 12.3 (or later) bootable backup on an Apple Silicon machine. If so, it will generate an error and not let you proceed.
- The Bootable Backup Assistant will not present any source volumes that have a signed OS installed on them if running on Apple Silicon and macOS 12.3 or later.
- The ‘ShouldBeBootable’ readiness warning, that is triggered when the user has chosen a System volume as their source target but not a Bootable operation, is now considered an error if CS is running on Catalina or later.
- The active-boot-volume-to-file-server readiness warning only evaluates if we are directly accessing a local file system for our source.
- When changing the sync operation from non-bootable to bootable, we now force the re-selection of targets. This avoids several loopholes that existed whereby the sync task would not be properly constructed if the user chose targets before changing the operation to bootable.
- Now more accurately determines the mount point for a ‘System’ volume in an APFS volume group, even if it has multiple mount points due to pending software updates.
- Error messages generated by the post-synchronizer (responsible for making destination volume bootable) will now be included in notification emails.
- Enhanced the logic that determines if a bootable system is installed on a volume.
- Filename case changes are now factored into bootable backups.
- Added more diagnostics when comparing volume specifiers.
- The Analyze panel now provides better feedback when one of the targets is attempting to mount a volume.
- The Folder-to-Disk-Image Assistant now defaults to APFS when configuring the disk image on Mojave and later.
- Added checks to make preserving folder timestamps within a package more reliable on filesystems that are unreliable in this regard e.g. some SMB file servers and ExFAT volumes.
- Significantly reworked the sequence in which a target attempts to mount volumes.
- Employed new volume ejection/dismount strategies.
- Employed new Spotlight disabling strategies.
- Enhanced some diagnostics when copying or moving files.
- Fixed various cosmetic issues in the user interface.
- Added periods to some tooltips that were missing them.
- Updated online help.
- Fixed a bug whereby attempts to suspend Spotlight indexing on a volume was actually disabling Spotlight for that volume
- Fixed a bug in the Bootable Backup Assistant whereby it would sometimes show the boot volume as a selectable source twice
- Fixed a bug in the Bootable Backup Assistant whereby it would sometimes show data volumes of volume groups in addition to the system volume
- Fixed a bug in the Bootable Backup Assistant whereby it would sometimes show “as is” as a formatting option when the destination was not properly constructed to allow “as is” as a choice
- Fixed a bug with the Restore operation whereby it would not connect to the target file managers when setting up the configuration sheet and thus an improper icon would be displayed
- Fixed a grammar error in the Disk Image Assistant
- Fixed a crash that could occur when deleting a rule.
- Fixed a bug that would cause a scheduled item to be added twice if created from th
- Document Organizer window
- Fixed some bugs that could cause tickle threads to get created when reclaiming a lost connection
- Fixed a crash that could occur when switching to the Analyze Panel
- Fixed a potential problem whereby the app could not properly detect if the background scheduler was launched because the OS needs the main run loop to run in order to update its list of running applications
- Improved the validation of contextual menu plugins (aka System Service) items added to contextual popup menus in Analyze, Archive and Trial Sync outline/table views (and a few other places). Such items will not appear if the involved targets do not support Finder interaction
- Fixed a bug whereby sync task documents that were initially created when the user closed the sync task window and gave it a file name would not immediately show valid sync task information in the Organizer window
- Fixed a bug whereby the window title of a sync task’s Log would not be correct if the sync task was a duplicated copy of another sync task and the log was being displayed from the Organizer window
- Fixed a bug whereby attempts to mount the volume upon which a target disk image resides would fail
- Fixed a bug whereby scheduled syncs would issue two concurrent attempts to mount target volumes in separate threads. Was only an issue if one of those attempts failed, in which case a crash could occur
- Fixed a bug whereby some target volumes could incorrectly be identified as mounted when they were in fact not mounted
- Added logic to ensure that container and sync task documents get saved on the main thread when run from the background scheduler
- The Bootable Backup Assistant now explicitly waits for connection to be established with the destination target after creating the sync task document before moving on to complete the document configuration
- The Bootable Backup Assistant now gracefully handles any exceptions raised while attempting to clear saved application states on the destination target
- Added more thread fingerprinting when executing code on various operation queues
- The Toolbar Pathname Controller now behaves consistently with AppKit’s handling of command-clicking window names
- Added a missing period to Japanese text in the Document Organizer window
- Fixed a crashing bug that could occur when attempting to connect to an SMB server using a supplied username & password
- Fixed a bug whereby the read-only status of the Data volume in a targeted APFS volume group was not being properly determined. CS always thought such volumes were writable
- Fixed a bug in the OS Version mismatch Readiness test whereby if the OS version could not be determined from the destination volume, but could from the source, a mismatch was not being reported
- Fixed a bug in the signed source volume test whereby if the OS version could not be determined from the destination volume, an OS mismatch was not being detected and thus post-sync re-imaging would not be performed
- The Volume Group Converter will now mark the associated synchronizer as ‘busy’ when running a clone operation. This prevents events such as volume mounts/dismounts from resulting in targets updating themselves while the clone operation is running
- Fixed a bug whereby the Validator Setup Sheet’s Help button wasn’t wired to an action in non-English languages
- Fixed a bug whereby the OS mismatch readiness test was still being performed when targets weren’t verified
- Fixed a bug whereby the ‘bless’ utility was not being properly executed when the source was a signed system
- Fixed a bug whereby if a sync was being started as part of a container task, but it couldn’t be started because it was busy, it would still retain its encapsulated state
- Fixed an uncaught exception that could be raised when removing a rule from a rule group
- If the fsEvents database reports no activity since the reference event, a test file is created then deleted on the target volume and fsEvents is queried again. If it still reports no activity, the fsEvent query is reset and designated as such. A log message is generated warning the user that there may be a problem
- Attempted to harden code that deals with volume mount/unmount events so that they cannot cause a crash when a target is being instantiated
- Fixed a bug whereby SmartScan would be attempted even if the corresponding file manager did not support SmartScan
- Fixed a bug that could cause a crash if a target’s relative pathname was only one character long
- Fixed some potential deadlocks that could occur when using the Bootable Backup Assistant and having volumes mount & unmount at the same time
- Remote connections now produce more meaningful diagnostics
- We now obtain a generic icon when an exception is raised on a remote connection rather than terminating the remote connection
- Added diagnostics to the exception handler that traps exceptions raised when trying to run a scheduled item
Changes & Enhancements:
- Updated the list of AWS S3 endpoint regions
- Added a warning to the Bootable Backup Assistant that explains why macOS Big Sur volumes aren't listed as sources and directs users to our tech-note on how to create a macOS Big Sur bootable backup
- Worked around a macOS Big Sur behavior that made it difficult to identify a targeted APFS volume group after an OS update
- Worked around a macOS Big Sur bug that was causing exceptions to be thrown when running scheduled sync tasks on some systems
- Fixed some bugs with the Resolve Alias feature that was introduced by macOS Big Sur changes
- Corrected a recently introduced auto-layout bug in the Archive Handling options panel
Changes and enhancements:
- Cells in the Schedule Editor Advanced Interval panel used for selecting day-hour-minute ranges are now highlighted using the current system Accent Color
- If the sync task document is unnamed, the Sync Task Document Name toolbar item will display "Unknown" instead of being blank
- Modified various target selection dialogs so that the file selector dialog is able to fully dismiss before the selection is processed
- Added logic to deal with the possibility that the Task documents folder does not exist, in which case it will revert to the "~/Library/Application Support/ChronoSync/Tasks" folder when naming/creating new tasks.
- Implemented a new Data Volume-Only Mismatched macOS Readiness Warning. This prevents Data Volume-Only backups on macOS 11, Big Sur, if the source and destination OS versions are different.
- When selecting a target that represents the root folder of the Data volume of an APFS volume group, and running on macOS 11, Big Sur, the target will now be forced to refer to the Data volume instead of the System volume group. This allows Data Volume-only backups on macOS 11, Big Sur.
- The Create Bootable Backup Readiness Test will now prevent a bootable backup from occurring if macOS 11, Big Sur, is installed on the source target volume.
- Fixed a bug that could result in forcing the synchronization of all multiply-hard-linked files on the initial run of a synchronizer
- Fixed several problems identifying System volumes on macOS 11, Big Sur
- Fixed numerous cosmetic glitches on macOS 11, Big Sur
- Fixed a bug whereby opening the Document Organizer or Scheduled Tasks Manager window from the TouchBar would not prevent ChronoSync from automatically terminating if it was launched for a scheduled synchronization.
- Fixed a bug in the Multiple Folder Backup Assistant, to prevent folders in the common "/Volumes" parent folder from being combined into a single sync task
- Fixed a typo whereby "quickly" was displayed as "quicky" in various controls and tooltips
- Fixed a bug whereby the Archive Panel outline view would not be scrollable after refreshing on app activation
- Fixed a bug whereby, on an initial sync, if the data size trigger was in effect, it could result in an older file replacing a younger one
- Fixed a bug whereby counting files in a branch would not skip excluded items. This is used by the validator and could lead to an erratic progress bar and scan count
- Fixed bug that could result in an erratic Validator progress bar mostly noticeable on macOS 11, Big Sur
- Fixed a bug whereby some of the predefined rules had the word "Template" in their name
- Fixed a bug in identifying that macOS 11, Big Sur, is installed on a mounted volume
- Fixed a bug whereby push notifications could not be configured if the Mac system name contained an ampersand character
- Fixed a bug whereby the Ignore Ownership Readiness Test would not immediately update its status after responding to the 'fix' command
Changes and enhancements:
- Modified Bootable Backup sync task behavior to account for macOS 10.15.5 not allowing creation of valid firmlinks. On macOS 10.15.6+ ChronoSync provides the 'Fix' Readiness option to configure the required valid APFS Volume Group. On macOS 10.15.5 systems, the backup volume must be erased using the Bootable Backup Setup Assistant to create the required APFS Volume Group for Bootable Backup
- Altered the logic so that sub-second timestamps have to differ by 2ms or more for a file-pair to be considered different when comparing package file contents
- Added the ability to detect if a connected ChronoAgent implements the firmlink creation to allow Remote Bootable Backup on ChronoAgent connections
- Added logic to allow instantiating sync task documents in-memory if for some reason the underlying macOS system doesn't allow document creation read from storage/disk
- The Google Cloud connection profile type is no longer available to users UNLESS an existing Google Cloud connection profile is defined. In this case, the user is able to edit and create Google Cloud profiles, but they won't work due to API changes on Google's side
- The Bootable Backup Readiness Test now generates an error if the source target of a bootable backup resides on a macOS 11 (aka Big Sur) or later system
- Added the ability to specify a custom location for mounting APFS snapshot volumes via the 'Snapshot_Mount_Folder' plist setting on macOS 10.15 or newer
- Snapshot mount points now use 0755 permissions
- The Bootable Backup Assistant does not present source volumes with Big Sur (or later) installed on them as potential sources for a Bootable backup operation
- Applied fall back logic to all error conditions that occur when attempting to obtain attributes for an item
- Improved recognition of the active System component of the boot APFS volume group and its Data counterpart
- Increased the priority of the Bootable Backup Readiness test so that it is evaluated before many other readiness errors and reported to the user before other terminal conditions
- If a bootable backup operation encounters an error when running the UpdatePreboot tool, the entire output generated by UpdatePreboot is dumped to the ChronoSync-console.log
- Snapshot mount points are now created by the ChronoSync process instead of ChronoAgentLocal on macOS 10.15 or newer
- Determining if volumes are mounted is now done in a more Big Sur compatible way
- Modified the console messages produced when post-processing a bootable backup to provide a clearer idea of what is happening when diagnosing problems
- Changed the package aggregation algorithm to improve bulk file and folder attribute collection
- Added the ability to collect diagnostic messages when invoking the Restore operation
- Modified the Validator date compare to take into account date value rounding that can occur
- Fixed a bug whereby deleting a task document from the Organizer window would not delete any scheduled items that are referencing that task document
- Fixed a bug whereby interpreting millisecond timestamps attached to files on APFS filesystems was subject to a scaling error when converting between time representations. This could result in unnecessary file data copying
- Fixed a bug whereby the Volume Group Converter would raise exceptions and fail to completely convert a single volume to a volume group if the user just previously retargeted their destination and opted to preserve sync history
- Fixed a bug whereby the Volume Group Converter wouldn't work correctly in some right-to-left scenarios
- Fixed an error handling bug when collecting attributes to force a rescan of the directory contents instead of causing an immediate fatal error
- Fixed a bug when collecting attributes for directory contents and identifying items that should remain invisible to apps and be ignored
- Fixed a bug whereby if a sync task document window is open, and the completion summary sheet is displayed, scheduled synchronizations for that sync task will fail because the summary sheet does not get auto-dismissed
- Fix for a cosmetic problem displaying checkboxes in the Trial Sync Selector on Big Sur
- Fixed a bug regarding priority of Readiness Tests when working from a saved sync task document
Changes and enhancements:
- Implemented work-around for failing bootable backups on macOS 10.15.5 (Catalina). See tech note: https://www.econtechnologies.com/chronosync/TN-CS-Bootable-10-15-5-Catalina.html
- When instantiating new sync and container tasks from their default template file, we now catch any exception that is raised.
- Hardened all logic involved with reading result data back from any shell task to better deals with situations that could cause indefinite hangs.
- Fixed a bug whereby an exception that occurs while Blessing the destination after a bootable backup would cause the application to terminate.
- Fixed a bug in the AWS S3 Connections whereby if the user's account was restrictive to the point that they weren't allowed to list buckets, the connection 'Test' would fail and not allow the user to manually specify a bucket name in the next panel.
- Fixed a bug whereby attempts to mount the volume that a target disk image resided on were likely to fail on Mojave (and later) systems.
Changes and enhancements:
- Improved reliability and compatibility when mounting disk images
- Completely reworked the OAuth code to conform to the latest authentication requirements from Google. This includes a custom landing web page presented upon success.
- Changed the interval at which each connection profile’s connection status is retested if a connection profile is deemed to be 'available'
- Added logic to the Background Scheduler that checks to see if any other instance of the Background Scheduler is running and terminates duplicate instances
- A target connecting to an AFP File Server will now use Carbon-based APIs for accessing the target by default
- Improved error logging when testing the availability of AWS S3 servers
- Fixed a bug whereby the Catalina APFS Volume Group Readiness Test would not reliably present the "Fix" option
- Modified how ChronoSync communicates with the hdiutil tool to combat a possible hang
- Eliminated the attempt to unmount a volume for connections that do not support volume mounting
- Fixed the long-standing "Synchronizer deallocated with task views in place" bug that was related to Task Containers that were trying to adjust a non-existent progress sheet
- Fixed a problem that would cause files moved to a synchronizer's archive to become locked
- Fixed a bug whereby Archive Maintenance was failing to remove old archive files on a Catalina bootable backup
- Fixed a bug whereby the user could not delete files in a Catalina bootable backup archive using the Archive Panel
- Fixed a bug whereby the user could not restore files from a Catalina bootable backup archive using the Archive Panel
- Fixed a bug whereby deleting a file from the archive during the maintenance phase of synchronization would fail if the folder containing that file in the archive was locked
- Fixed a bug whereby creating a folder in the archive during a synchronization would fail if the parent for that folder was locked
Changes and enhancements:
- Implemented the ability to 'force mirror' empty folders as part of the bootable blacklisting. Applied this logic for saved application state folders & preference files
- Implemented the FireWire Bootable Device readiness test that will flag a warning if attempting to create a bootable backup of a Catalina (or later) system onto a FireWire device because Catalina does not support booting from FireWire devices
- Implemented the Archive Performance readiness test that will flag a warning if archiving is enabled on a target that does not offer an efficient move/rename capability.The warning suggests performance may be poor and offers to 'Fix' the problem by disabling archiving. Currently this is only triggered by cloud-based targets
- Implemented the Safe-Copy Performance readiness test that will flag a warning if safe-copy is enabled on a target that does not offer an efficient move/rename capability. The warning suggests performance may be poor and offers to 'Fix' the problem by disabling safe-copy. Currently this is only triggered by cloud-based targets
- Modernized routines and implemented additional logic when attempting to move files to the trash so that any restrictive ACLs are temporarily removed from the files to ensure success. This eliminates a potential problem when moving files to the trash without admin access
- Modernized file lock/unlock routines
- Implemented the 'SFTP_SkipShellProbe' public plist property which will indicate that SFTP connections should skip the test for shell support and assume that shell operations are unsupported
- Implemented the 'SFTP_ReconnectDelay' public plist property which will indicate a pause (in seconds) that should be introduced between a failed probe for shell support and a reconnection without shell support
- Fixed a regression bug whereby Terabyte-sized numbers would be formatted as if they were Gigabyte-sized
- Fixed a bug in the Backblaze storage provider whereby if a single large-file transfer took more than 24 hours to complete, the authorization token for that transfer was allowed to expire resulting in a failed file transfer
- Fixed a bug whereby the APFS Compound Volume readiness test was always allowing the 'Fix' option when the destination volume was HFS+ formatted, regardless of the operating system running on the destination volume Mac. Thus older OS's connected via ChronoAgent would present 'Fix,' which would allow the APFS Volume Converter to be invoked and was certain to fail if the destination OS was not Catalina or later
- Fixed a bug whereby a set of bootable backup operations was still being unnecessarily performed on non-Catalina systems
- Fixed a bug whereby determining the version of the OS installed on a bootable target was destined to fail if the target was connected via a ChronoAgent connection
- Fixed some bugs to generate more meaningful error messages when converting volumes to APFS Volume Group format for Catalina Bootable Backup
- Fixed a bug whereby a logic error in the 'Archive Deletions Not Supported' readiness test that could have caused a crash
- Fixed a bug whereby, with a certain combination of task settings, the Analysis Report would fail to print the last page of the report
- Fixed a bug that could cause the Validator to hang while validating a large sync set that contained package files
- Fixed a bug when determining if a volume is mounted whereby it was assumed that calling diskutil with the "-plist" argument would return results in plist format. This is not the case when connected to a ChronoAgent running on an old (pre 10.5 era) OS and triggered an exception
Changes and enhancements:
- The APFS Volume Group Converter utility is now capable of converting an HFS+ formatted volume to an APFS Volume Group
- If a download is in progress for an in-app-update when the application is quit by the user, the termination will be aborted and the download progress panel window will be brought to the front
- The Configured System Identifier readiness test can now be ignored to allow the sync task to be run on different systems without the warning preventing it from running
- Improved the Trial Key Retriever reliability on macOS 10.15, Catalina (or later)
- Improved shell task execution reliability to better handle errors and exceptions
- Fixed a problem whereby if "Launch at login" was enabled and so was "Use background scheduler," the Background Scheduler could conceivably be launched twice at login
- Fixed a long-standing bug whereby the results of running external commands and tasks could be misinterpreted because of failing to read the entire output/result from running that command affecting operations such as mounting Disk Images or Blessing bootable backup targets
- If running on macOS Catalina (or later), the Background Scheduler uses the UUID of the corresponding 'Data' volume to prevent a situation whereby an OS update causes a change in the UUID of the System volume
- If running on macOS Catalina (or later), the configured system identifier stored in Task Documents is derived from the UUID of the corresponding 'Data' volume to prevent a situation whereby an OS update causes a change in the UUID of the System volume
- Fixed a problem whereby a change to the System volume's UUID caused by an OS update could trick the mount detection logic for a given target to fail, forcing the user to re-select the target
- Fixed a bug whereby selecting a pre- or post- sync script could cause the application to crash
- Fixed a consistency problem whereby kilobyte file sizes and transfer rates were displayed with the K symbol instead of KB
- Fixed a bug whereby a file-folder pair (i.e. folder on one side, file on the other, both with the same name) marked for synchronization would not display a status icon in both the Analyze panel or the Trial Sync Selector sheet window
- Fixed a bug whereby a file-folder pair (i.e. folder on one side, file on the other, both with the same name) was likely to generate a folder enumeration error when running a Trial Sync (the error was benign if the user just ignored it)
- Fixed a bug whereby auditing differences in a file-pair would not factor the file size in some circumstances resulting in the File/Folder Information in the Analyze panel failing to display a file size difference in red
- Fixed a problem whereby some some displayed file attributes in the Analyze panel would remain in cache after file entries were reloaded
- Fixed several bugs in the Synchronizer, Bootable Backup Assistant and APFS Volume Group Converter whereby errors and/or incorrect behavior would result if there was an existing APFS Preboot volume on the destination but it wasn’t spelled exactly 'Preboot' e.g. 'PreBoot'
- Fixed a Catalina-specific bug whereby file system observers would fail to detect deep file system changes if the root folder being modified resided on your boot system's 'Data' volume causing live triggered syncs not to run after deep file system changes were made
- Fixed a bug in our custom target selector whereby rapidly selecting folders before their contents were displayed could conceivably cause a crash
- Fixed a bug in our custom target selector whereby rapidly selecting folders could result in unnecessary fetches of folder contents and extraneous re-display of folder contents
- Fixed a bug in the APFS Volume Group Converter utility whereby it was assumed that the destination volume had ownership enabled but that isn't necessarily the case
- Fixed a bug whereby a copy task could be initiated with a user abort pending and the copy would have to fully complete before the abort was recognized
- Fixed a bug in the Backblaze B2 storage provider whereby move/rename operations on files larger than 5 GB would always fail
- Fixed a bug in the Backblaze B2 storage provider whereby move/rename operations on files that result in a timeout would get caught in a timeout loop until the move/rename operation succeeded
Changes and enhancements:
- Added support for Archiving over Backblaze B2 connections
- Added support for identifying and managing APFS Volume Groups
- Added support for properly handling firmlinks in Bootable Backup
- Added support for APFS Volume Groups to the Bootable Backup Assistant
- Added the Compound Volume Group readiness check to ensure that a destination volume is constructed properly for Catalina bootable backups
- Implemented the all-new Volume Group Converter utility that allows a single APFS volume to be converted to an APFS Volume Group on macOS Catalina. This utility activates when the user attempts to 'fix' the readiness warning
- The Bootable Backup Assistant now presents the option of creating a sibling APFS volume. To get this option, you must select an existing APFS volume as your destination. When presented with formatting/erase options for that volume, you'll now have the option to create a sibling volume. This will create an all new volume in the same container as the destination volume you selected
- The Bootable Backup Assistant now enforces unique volume names when naming your destination volume (either after choosing to erase it or to create a sibling volume).The restriction is such that you cannot choose a name that already exists in your destination APFS container, unless you are erasing an existing volume and keeping the same name. Note that duplicate volume names are allowed, just not in the same APFS container
- The Bootable Backup Assistant now makes sure that Preboot and Recovery volumes are dereferenced when deleting or erasing existing APFS volumes
- The Bootable Backup Assistant now creates a bootable sync task that has Aggressive Smart Scan enabled on the destination
- The Bootable Backup assistant will now append "Not recommended" to the "Proceed as-is" formatting option if a) the source and destination are APFS volumes AND b) they have mismatched crypto users as a crypto user mismatch is likely to produce errors from the UpdatePreboot utility
- Implemented logic whereby sync task targets configured on pre-Catalina systems will automatically update the VolumeSpecifier object (if necessary) after being opened for the first time after a Catalina upgrade
- Now attempts to suspend Spotlight operation on Admin Access Volumes
- Improved volume detection and mounting efficiency
- Modified Full Disk Access detection logic for macOS 10.15 (Catalina)
Converted to using bookmark objects instead of alias objects to track the location of various files and folders. This affects the location of:
- The main 'Tasks' (aka 'Sync Documents') folder
- Any sync task ever opened by ChronoSync and tracked in the Organizer
- A scheduled item's reference to the sync task that is scheduled
- A container sync task's reference to all contained sync tasks
- A sync (and container sync) task's reference to pre- and -post- sync scripts
- Any File Comparison Helper's reference to the helper application
- Improved the Readiness Manager efficiency by caching commonly used sync task properties when evaluating all readiness tests
- The Resolve Alias and Freeze Filesystem readiness warning is no longer generated if the target file manager is not running with root privileges because a snapshot will not be taken unless you're running with root privileges
- The 'Aggressive' SmartScan mode now functions as it was originally intended by turning off self-audits. Previously, all this setting did was reduce the frequency of self-audits
- All assistants that create uni-directional sync tasks with SmartScan enabled will now enable Aggressive Mode on the destination target
- The Delete Action UI presented from Analyze when manually deleting files now displays the "Deletion is permanent" warning using the OS's secondary label color instead of disabled text color
- If the application is instructed to terminate due to a system shutdown or restart, and there are currently scheduled syncs running, the warning dialog that tells the user about the running sync will auto-dismiss after 10 seconds. If this happens, the app will behave as if the user instructed the dialog to abort all syncs and terminate. If the user interacts with the dialog within the 10 second window, system shutdown/restart can be cancelled
- On application termination, will now shut down any active Bonjour service listeners before quitting
- Retrieval of a graphic resource when displaying an update notice is now performed asynchronously in a background thread to avoid the potential of a rather long block before the update notice was displayed
- When selecting a target, a new VolumeSpecifier object is now always created even if the new target resides on the same volume as the previous target to prevent potential problems whereby not all properties of the volume are collected, and some of those properties may have changed since the target was last specified
- Optimized the mount detection logic for non-local volumes for ChronoAgent-connected targets for which we have valid device information and a device GUID
- SmartScan query reset log messages will now indicate the name of the volume where the reset occurred
- File system freezing log messages now indicate the volume name which contains the frozen filesystem
- Disabled self-validation when creating alias objects
- The "/Cores" folder is no longer part of the bootable backup blacklist
- The "/Volumes" folder has been added to the auto-exclusion blacklist
- Eliminated the use of deprecated APIs when attempting to move items to the trash
- Copying and/or deleting dylib files in the /Users domain will no longer trigger the execution of update_dyld_shared_cache at the end of a bootable backup synchronization
- Fixed a bug in the False Mount Point Detection Readiness Test that could lead to erroneous false-mount-point warnings when the real problem was that the target was not connected
- Fixed a bug in the Validator whereby validating the root level of a volume could introduce an error and premature termination of the validation process
- Fixed a bug in the SFTP storage provider whereby it was assumed that an SFTP server would always provide a list of valid authentication methods which could cause a crash
- Fixed a bug whereby if the user had selected a file-pair in Analyze and the program was in the midst of fetching file information as a result, and the user then switched back to Setup and selected a different file manager, the program could crash when trying to display the results of the file information fetch that was still pending
- Fixed a bug whereby attempting to create the parent path of a nested item which had no parent that could result in unexpectedly synchronizing all files or creating a new destination folder outside of the sync tree
- Fixed a bug whereby entering a blank value in the "Max retry attempts" field (when scheduling tasks) would raise an exception
- Fixed a bug whereby when executing external tasks, an overflow of the error stream's pipe buffer would cause a long stall and slow execution of the task. This was most evident when running update_dyld_shared_cache during the "Optimizing" phase of a bootable backup. A stall would occur if that task generated a lot of error output
- Fixed a bug whereby the Resource Fork Unsupported Readiness Test would generate a warning even if the sync task had 'preserve resource forks' set to NO
- Fixed a bug whereby the Full Disk Access Readiness Test could erroneously report that full disk access was required on the right target, if it needed testing
- Fixed a bug whereby the partition scheme readiness test would sometimes be performed when a target volume was not mounted, resulting in an erroneous warning about the partition scheme
- Fixed a bug whereby the VolumeSpecifier might not perform its final, 'forced' attempt to unmount a volume if the standard efforts to unmount the volume failed
- Fixed a bug whereby the Bootable Backup Assistant would indicate that an HFS+ filesystem must be selected even though there were APFS options presented
- Fixed some bugs in the archive management logic whereby assumptions were being made about the location of the sync task archive that could cause some features to break if the archive were located anywhere but at the root level of the corresponding target
- Fixed a bug whereby the archiving logic would produce an error if the archive data structure became out-of-sync with the filesystem with regards to a package becoming a folder. It now self heals if an attempt is made to archive a file that resides within a package rather than the package as a whole. This sort of problem was possible when enabling dissect packages on a sync task that was previously run with standard/merge package handling
- When calling update_dyld_shared_cache as part of the 'Optimizing' phase of a bootable backup, some newly added arguments will not be passed to the utility on pre-10.14 systems since older OS's don't appear to handle them properly
- Fixed a bug in the Sync Task Document Window Controller whereby a UI change was being performed in a background thread
- Fixed a bug whereby inconsistent information could be returned about mounted disk images, causing a sync task target to lose information necessary to mount the disk image
- Fixed a bug whereby the test to see if a sync target's volume contained a bootable operating system was being performed on a file server connection. This was always destined to fail
- Fixed a bug whereby when un-registering with the push notification server, we now properly re-establish hardware identity properties to prevent a reset from continuing to occur every time a push notification is sent
Changes and enhancements:
- Changed Strict Volume Identification to no longer examine deviceModel and deviceProtocol
- Implemented full Diagnostic Logging support in the InterConneX connections
- Fixed a bug when communicating with an InterConneX sharespace as a target whereby it was not likely going to be able to copy into a locked folder
- Fixed a bug whereby if invoking a Trial Sync and target validation fails, subsequent attempts to invoke a standard sync (after correcting the cause of the validation failure) would invoke Trial Sync again unexpectedly
- Fixed a few diagnostic messages that were being generated in non-debug builds
- Fixed the logic used to determine a unique, temporary file name for copying to a remote cloud or InterConneX target as it had concurrence issues and could return non-unique filenames if called simultaneously from different threads
- Fixed a bug whereby setting the UF_HIDDEN, UF_IMMUTABLE and UF_APPEND BSD flags on a file stored in an InterConneX target was prone to setting random values for those flags
- Fixed a bug whereby extracting a file path from a collection record could result in a corrupt path. This could lead to errors or even a crash
- Fixed a bug whereby the read-only destination readiness test would report "Left target is read-only" when BOTH targets were read-only, even though it was a left-to-right sync
Enhancements and Changes:
- Changed the algorithm for determining temporary file names to be less prone to natural filename collisions during concurrent copying tasks.
Now handles any exceptions when obtaining attributes from an SFTP directory entry and treats this condition as a non-directory entry (i.e. it just skips it)
- When a comparison helper is called, the sync target's file manager is now used to obtain information about the files being compared
- Now validates any relative alias object created and compares it against the original item to catch potential mismatches
- Now only replacing the reference to the task document when modifying a scheduled item if it has actually changed
- Improved memory management in the Backblaze B2 storage provider
- Added logic to the sync task document loader so that it can better deal with potentially damaged task documents
- Significantly reduced the size of the scheduler database and the overhead of loading/saving it
- More efficiently instantiate scheduled items from the scheduled items database to handle potentially corrupt elements
- Modified how the scheduled item database gets saved so that multiple changes made in quick succession are coalesced before saving
- Reduced app activation overhead by no longer reconstructing the Templates contextual menu on every activation of the app
- Updated the Trial Sync results window to clean up a path to an item before passing that off to a helper tool or external service such a 'Get Info in Finder' to ensure that the path represents the file object on the real target and not a snapshotted version of it
- Now performs a sync history reset (retaining exclusions) after changing Package Handling, Sync Operation, and Sync Triggers on a previously synchronized task document to ensure all appropriate information gets collected and items are handled correctly on the next run
- Changed the terminology used to identify Backblaze B2 application keys & account IDs to match the latest B2 terminology and to be consistent (i.e. English) across all languages
- All the cloud service connection profile editors have had their authentication's credential fields set to character-wrap instead of word-wrap.
Added logic that ensures any excluded file-pair does not have any other status set
- Fixed a bug whereby the pre-defined AWS S3 endpoint strings were inadvertently translated in non-English languages
- The ChronoAgentLocal-Console.log file is now being rolled-over automatically
- Fixed some auto-layout problems in the AWS and Backblaze B2 connection profile editors
- Fixed some bugs whereby many commands were not properly setting the thread-specific error property when they completed
- Fixed a bug that occurs when launching comparison helper applications in a manner that was incompatible with files residing on an APFS snapshot volume
- Fixed a bug whereby an alias located in the immediate descendant of a resolved folder alias would not be resolved correctly
- Fixed a bug that was affecting the synchronizer's ability to identify self-referencing aliases when 'resolve aliases' was in effect and the target currently referred to an APFS snapshot volume
- Fixed a (harmless) bug that could result in wasted time and a guaranteed low-level error (and console messages) when trying to do Trial Sync or Sync Selection on an APFS snapshot
- Fixed a bug in resolving an alias on an APFS snapshot
- Fixed a bug whereby it was possible to convert an existing object that was marked as a symbolic link or directory to a regular file when updating attributes on Backblaze B2
- Fixed a bug in the Backblaze B2 storage provider whereby it wasn't always correctly identifying package files
- Fixed a bug resolving an alias file where it was possible that it would resolve to a URL but a file pathname could not be extracted from the URL causing an exception
- Fixed a bug whereby when presenting an error caused by enumerating folders in the file system, the object used to contain information about the error was volatile and could be corrupted by another thread that was preparing to present a different error likely resulting in a crash
- Fixed a bug whereby marking a folder node for exclusion would release all children and setup a potential crash for any other code that has retained a direct reference to one of those children. This is possible in Trial Sync and sync-selection scenarios
- Added logic to the outermost node processing loop that checks each node's exclusion state before attempting to process it to prevent unwanted operations and/or potential crashes
- Fixed a bug whereby attempting to retry a failed deletion of a file on the destination would trigger an unrecoverable, infinite loop and potentially cause a crash or memory consumption
- Fixed a bug whereby retry attempts would be performed on failed processing of nodes even if an abort condition were signaled
- Fixed a bug whereby when editing a previously created "When independent volume mounts" scheduled item, a "Connect" message was not being sent to the independent volume specifier. Thus the volume would always appear as "Not available" in the user interface even though it was
- Fixed a bug in the file system notification trigger that would not reliably start a live filesystem trigger after it was created
- Fixed a bug in the file system notification trigger that would not reliably remove a live filesystem trigger after it was disabled or deleted
- Fixed a bug whereby package merging between a source file system that supports millisecond timestamps (APFS) and a destination that doesn't could result in failure to efficiently merge
Changes and enhancements:
- Optimized APFS Support for faster file scanning and copying
- A new 'Freeze file system' option allowing you to take a snapshot of your filesystem before syncing
- Mojave Dark Mode support
- Full Disk Access assistant to grant ChronoSync permission to fully access your files
- A completely overhauled ChronoSync Organizer window with better sorting and organization options, along with a toolbar, allowing easier access to task functions
- Improved Restore function allows you to recover data directly and with greater control from the Analyze panel
- Touch ID Support feature to allow ChronoSync to access system data
- Smarter Assistants that can format drives and disk images using an APFS filesystem
- New "Running Scheduled Tasks" System menu option to monitor your scheduled tasks without having to open ChronoSync
- Improved Container Editor interface includes a "Special Notes" section and now displays more information about each contained task
- Can now instantly access task logs directly from the ChronoSync Organizer window
- Better management of ChronoAgent connections
- Faster launch and shutdown times
- More efficient Amazon S3 and Backblaze B2 data transfers
- A new Validator "Recommended Settings" button
Changes & Enhancements:
- Added support for path-style URLs in the Amazon S3 Connection.
- Added intelligence to the Amazon S3 connection setup process so that the "Path-style URLs" setting is automatically enabled during a "Test" connection if the remote server requires it.
- Constructed URLS no longer escape the '/' character when appending the object key in the Amazon S3 Connection.
- We now include the 'Date' header when constructing the string that is used to sign any request to Amazon S3 connections.
- Improved the responsiveness when trying to abort agent-based tasks after a connection is abruptly broken.
- Changed the behavior of "Open Other..." so that it defaults to the current location of the "Task Documents" folder as specified in the "ChronoSync->Preferences->General" panel.
- Added logic to prevent sync-on-launch and sync-on-quit jobs from running when ChronoSync is launched and quit via scheduled task execution.
- Limited requests for some unneeded volume data which results in slightly more efficient operations on HFS+ volumes in certain instances.
- Volume mount checks now occur within their own autorelease pool.
- The file format accessory view is now only displayed on Save if the current document is NOT a v4 document format.
- Fixed various minor auto-layout problems, tooltips and spelling errors throughout the App.
- Update Online Help.
- Fixed a potential crash if a log window was left open while the parent document window was closed by the user.
- Fixed a bug whereby auto-exclusion of root folder items was not properly occurring.
- Fixed a bug whereby the "Optimizing" message during a bootable backup would not be displayed under certain circumstances.
- Fixed a minor bug whereby the wrong Resource Fork handling mode was set briefly after connection with the remote file manager is established.
- Fixed a bug whereby the diagnostic setting was not being automatically applied to previously created task documents.
- Fixed a bug whereby pasting a rule into a group would not set the rule's parent properly, eventually resulting in an exception being raised.
- Fixed a bug whereby opening a task document on the Archive panel would result in no archive path being displayed.
- Fixed a bug whereby the Google Cloud service object was not being deallocated after a connection was closed.
- Fixed a potential problem where an occasional exception while browsing files on an 'Admin Access' connection was being thrown.
- Fixed a bug whereby the online help was not being linked from the B2 Connection Profile editor.
- Fixed a bug whereby the test for nested folders in the Multi-Folder Assistant could easily be tricked by partially matching folder names e.g. "/Test Folder 2/Subfolder" would be flagged as a child of "/Test Folder".
- Fixed a bug whereby the custom folder selector wasn't being displayed when downloading an update.
- Added support to connect directly to the BackBlaze B2 cloud service
- Added new Dock menu items to provide quick access to open the ChronoSync Organizer and Scheduled Task Manager windows
- The Backup to Disk Image Assistant now has a relaxed storage space requirement when creating a sparse/sparse bundle disk image. As long as we’re not sizing the image based on the source, we will allow the creation of disk images with only a minimal amount of free space on the destination. This allows you to create, for example, a 1 GB disk image when only 700 MB is free
- We now makes sure that a connection is NOT in progress when attempting to mount volumes or verify targets
- We eliminated the duplicate ChronoSync Organizer window entry from the Window menu
- The ‘percentComplete’ reported by a Sync Task now subtracts any in-progress file copies before calculating the percentage to provide more accurate progress reporting in places such as the Scheduled Task Manager and Task Container Task List panel
- We reworked the logic associated with ChronoSync starting up ChronoAgentLocal and determining if it is running and ready for business
- We now post "Reset sync history" to the synchronizer's log whenever a "Reset Sync History" operation is performed
- We added log messages that get posted when updating the Preboot volume on an APFS bootable backup
- We now always attempt to delete the mount point for the Preboot volume even if the unmount attempt fails (which probably happens because it wasn’t mounted)
- When running the updatePreboot command after an APFS bootable backup, we now better deal with errors caused by deleted directory service users
- Added extensive workaround logic to deal with diskutil’s newfound (10.13.4) inability to create & mount APFS auxiliary volumes at custom mount points
- Added logic to deal with problems with diskutil not mounting APFS auxiliary volumes on DiskImages (a problem which existed prior to 10.13.4)
- We added an exception handler to manage potential system exceptions that could occur when requesting removable volume insertion
- We added an exception handler to prevent problems displaying the Task Container Task List
- We added more descriptive error strings for the SSL-related error codes -1200 thru -1206
- Changed some diagnostic error messages so that they always get posted, not just on debug builds
- Updated localizations
- Fixed a bug in the Google Cloud connection whereby replaced files would have the ‘hidden’ attribute set
- Fixed a potential error in the Google Cloud connection by making sure we have buffered data available to re-attempt an upload for the previous data block, if requested
- Fixed a bug in the S3 connection whereby replaced files would have the 'hidden' attribute set
- Fixed an inefficient attribute caching bug when connected to Amazon S3 with no metadata preservation enabled
- Fixed a bug whereby the "Get" localized string had the incorrect key
- Fixed a bug whereby the sync statistics (scan count, error count, etc) would not be properly updated when processing items concurrently in a contained synchroni