Skip to content

v1.4.0

Compare
Choose a tag to compare
@samschott samschott released this 14 Feb 22:21

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 are create 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, and revoke to revoke a shared link.
  • Added a command group maestral config to provide direct access to config values. Subcommands are get and set to read and write config values, respectively. This provides access to previously inaccessible config values such as reindex_interval or max_cpu_percent. Please refer to a Wiki for an overview of all config values. Use the set 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 or download 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 and max_user_instances = 1024 or double the current values, whichever is higher. Advise to apply the changes with sysctl -p.

Changes to CLI:

  • Moved linking and unlinking to a new command group maestral auth with subcommands link, unlink and status.
  • Renamed the command file-status to filestatus.
  • Added a --yes, -Y flag to the unlink to command to skip the confirmation prompt.
  • Renamed the configs command to list config files to config-files.
  • Added an option --clean to config-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. Use stop and start instead.
  • Removed the CLI command maestral account-info. Use maestral auth status instead.
  • Removed the public API methods Maestral.resume_sync and Maestral.pause_sync. Use Maestral.start_sync and Maestral.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 the notify module.
  • Removed the bugsnag dependency.