v1.4.0
This release brings significant extensions to the command line interface: It introduces commands to create and manage shared links, to compare older version of a file and print the diff output to the terminal, and commands for direct access to config values (note the warning below). It also adds optional one-way syncing, for instance to keep a mirror of a remote Dropbox folder while ignoring local changes.
Several bugs have been fixed which could occur when resuming the sync activity after the connection had been lost while indexing a remote folder.
Finally, this release removes automatic error reporting via Bugsnag. Please file any bug reports as issues on GitHub where it is possible to follow up.
Added:
- Added a command
maestral diff
to compare different versions of a text file. The resulting diff is printed to the console. Credit goes to @OrangeFran. - Resurrected the command
maestral revs
to list previous versions (revisions) of a file. - Added a command group
maestral sharelink
to create and manage shared links. Subcommands arecreate
to create a shared link for a file or folder,list
to list shared links, either for a specific file or folder or for all items in your Dropbox, andrevoke
to revoke a shared link. - Added a command group
maestral config
to provide direct access to config values. Subcommands areget
andset
to read and write config values, respectively. This provides access to previously inaccessible config values such asreindex_interval
ormax_cpu_percent
. Please refer to a Wiki for an overview of all config values. Use theset
command with caution: setting some config values may leave the daemon in an inconsistent state (e.g., changing the location of the Dropbox folder). Always use the equivalent command from the Settings group (e.g.,maestral move-dir
). - Added the ability to disable a single sync direction, for instance to enable download syncs only. This can be useful when you want to mirror a remote folder while ignoring local changes or when syncing to a file system which does not support inotify. To use this, set the respective config values for
upload
ordownload
to False. Note that conflict resolution remains unaffected. For instance, when an unsynced local change would be overwritten by a remote change, the local file will be moved to a "conflicting copy" first. However, the conflicting copy will not be uploaded.
Changed:
Changes to daemon:
- Avoid scanning of objects matching an
.mignore
pattern (file watches will still be added however). This results in performance improvements during startup and resume. A resulting behavioral change is that maestral will remove files matching an ignore pattern from Dropbox. After this change it will be immaterial if an.mignore
pattern is added before or after having matching files in Dropbox. - If Maestral is quit or interrupted during indexing, for instance due to connection problems, it will later resume from the same position instead of restarting from the beginning.
- Indexing will no longer skip excluded folders. This is necessary for the above change.
- Defer periodic reindexing, typically carried out weekly, if the device is not connected to an AC power supply. This prevents draining the battery when hashing file contents.
- Improved the error message when the user is running out of inotify watches: Recommend default values of
max_user_watches = 524288
andmax_user_instances = 1024
or double the current values, whichever is higher. Advise to apply the changes withsysctl -p
.
Changes to CLI:
- Moved linking and unlinking to a new command group
maestral auth
with subcommandslink
,unlink
andstatus
. - Renamed the command
file-status
tofilestatus
. - Added a
--yes, -Y
flag to theunlink
to command to skip the confirmation prompt. - Renamed the
configs
command to list config files toconfig-files
. - Added an option
--clean
toconfig-files
to remove all stale config files (those without a linked Dropbox account).
Fixed:
- Fixes an issue with the CLI on Python 3.6 where commands that print dates to the console would raise an exception.
- Properly handle a rare OSError "[Errno 41] Protocol wrong type for socket" on macOS, see https://bugs.python.org/issue33450.
- Allow creating local files even if we cannot set their permissions, for instances on some mounted NTFS drives.
- Fixes an issue with the selective sync dialog in the Qt / Linux GUI where the "Update" button could be incorrectly enabled or disabled.
- Fixes an issue where a lost internet connection while starting the sync could lead to a stuck sync thread or an endless indexing cycle.
- Fixes an issue where a lost internet connection during the download of a folder newly included in selective sync could result in the download never being completed.
- Fixes an issue where pausing the sync during the download of a folder newly included in selective sync could result in the download never being completed. Credit goes to @andrewsali.
Removed:
- Removed automatic error reporting via bugsnag.
- Removed the CLI command
maestral restart
. Usestop
andstart
instead. - Removed the CLI command
maestral account-info
. Usemaestral auth status
instead. - Removed the public API methods
Maestral.resume_sync
andMaestral.pause_sync
. UseMaestral.start_sync
andMaestral.stop_sync
instead.
Dependencies:
- Bumped survey to version >=3.2.2,<4.0.
- Bumped keyring to version >=22.
- Bumped watchdog to version >= 2.0.
- Added
desktop-notifier
dependency. This is spin-off project from Maestral, built on the code previously in thenotify
module. - Removed the bugsnag dependency.