Hoard 0.5.0 released

38 points mnbryant

Hoard v0.5.0

Announcing the 0.5.0 release of Hoard, the cross-platform dotfile manager!

This release comes with a complete reworking under the hood, which you can read about in the new changelog. Here is a short summary of the user-facing changes:

Breaking Changes

  • The operation log file format was changed to better support the new hoard diff and hoard status commands.
    • Use hoard upgrade to upgrade your operation logs in-place.

Features

  • Added a new hoard edit command to allow users to modify their Hoard configuration file without needing to know where it is stored.
  • Added new hoard status and hoard diff commands, which help you understand the current state of all of your hoards. See the book for more on each command.
  • You can now tell Hoard to set special permissions on files and folders that it manages.

Bugfixes

  • Fixed an invalid directive warning if the HOARD_LOG environment variable was not set.
  • Improved logging output, including cleaning up unnecessary output and making sure error messages are logged where they occur, for maximum context when HOARD_LOG=debug or trace.

Under the Hood

Basically everything got some amount of refactoring over this release -- too much to list here. These are the highlights:

  • Replaced bare String and Pathbuf with wrapper types that enforce extra invariants.
  • Added types to cache file operations to decrease runtime.
  • Added a dependency on the multi-threaded tokio runtime, further decreasing runtime to within a few seconds.

The above changes led to an anecdotal runtime decrease from 20 minutes to less than one minute, with multiple hoards, one of which contains multiple large binary files.

Future Plans

Hoard is finally in a usable place for me, so I am going to be taking a break on features for a bit to focus on other projects. After the break, I intend to come back and work on the last major planned feature: file encryption.

I will not be taking a break from fixing bugs, so please report any you find to the issue tracker.

Links: