email rss
imag 0.4.0
Sep 24, 2017
4 minutes read

Not even one month after imag 0.3.0 I just released imag 0.4.0.

First of all (like with the 0.3.0 release): This is not production-ready software. Use at your own risk! This is a release for people to notice that some things work and one could start to play around with it. Do not trust imag with your personal data if you do not have backups. There are bugs. This is not perfect. This is alpha quality or pre-alpha quality software!

imag is a personal information management suite for the commandline. Its target audience are commandline- and power-users. PIM aspects are implemented as imag “modules”, where each module can be used independently of the other modules. imag gives the user the power to connect data from different existing tools and add meta-information to these connections, so one can do data-mining on PIM data.

How the release was done

The release was done like the 0.3.0 release - each crate published by hand, one after another. The order how the crates were published was changed, though, due to new inter-dependencies and also new library crates within the imag codebase.

As always, some patches had to be applied to the release branch before the actual release could happen. But it was way less than last time.

The .imag-documentation crate was not published, I wrote in the release notes of the 0.3.0 release that I wanted to remove that crate. That did not yet happen. Issue is filed now, though.

Changelog / What’s in there

  • ~325 commits
  • 82 merge-commits / 243 non-merge commits
  • 2 contributors
  • 447 files changed
  • 9754 insertions(+), 7810 deletions(-) (Surely because of the reorganization of the entire codebase)

In this release we have merged 82 branches. The release itself is clearly smaller than the last release and I like that.

What’s coming

The 0.5.0 milestone already exists and there are a lot of things already added to it.

When will I be there? The next version will be there if its ready. Honestly I don’t know. We have a lot of things to tackle and this is growing to be a really huge project, especially for a one-man-show, which it almost is, still.


Finally, here again the changelog. You can also find it in the repository

  • Major changes
    • The libimagstore::toml_ext module was removed. The toml_query crate should be used as a replacement. Its interface only differs in few places from the old libimagstore::toml_ext interface.
    • The codebase was moved to a more tree-ish approach, where several subdirectories were introduced for different types of crates
    • The documentation got a major overhaul and was partly rewritten
    • The logger is now configurable via the config file.
    • The error handling of the whole codebase is based on the error_chain now. libimagerror only contains convenience functionality, no error-generating macros or such things anymore.
    • imag-diary can now use a configuration in the imagrc.toml file where for each diary there is a config whether entries should be created minutely or hourly (or daily, which is when specifying nothing).
  • New
    • libimagentrygps was introduced
    • imag-gps was introduced
    • imag-grep was introduced
    • The imag command now passes all arguments properly to the called subcommand
  • Fixed bugs
    • The config loading in libimagrt was fixed.
    • libimagentrylink used imag as the location for putting links in entries. This is not allowed because this namespace is reserved for the store itself. This bug was fixed, links are now located in the links namespace in the header of an entry.
    • Store::delete() did only check the store-internal cache whether an entry exists, but not the filesystem. This was fixed.
  • Minor changes

    • If building from a nix-shell, the mozilla rust overlay is expected to be present
    • Unused imports in the codebase were removed
    • Compiler Warnings were fixed
    • We specify inter-dependencies via path and variable now, so one can build the 0.3.0 release from the checkout of the codebase.
    • The imag binary was refactored and rewritten, the crossbeam dependency was removed.
    • The Makefile was removed as cargo is powerful enough to fit our needs
    • libimagstore::storeid::StoreId::is_in_collection() was added
    • The libimagentrylink is now rudimentarily tested
    • We compile with rustc 1.17, 1.18, .., nightly
    • The imag-store binary now uses positional arguments in its CLI
    • The “toml-query” dependency was updated to 0.3.1
    • imag-timetrack track is now able to parse “now”, date-only start/stop dates and date-time start/stop times.
    • libimagnotes does not longer wrap store types but extend them.
    • imag-notes uses positional arguments now.
    • libimagentrylist does not export a CLI helper module anymore.
  • Stats

    • ~329 commits
    • 82 merge-commits / 247 non-merge commits
    • 2 contributors
    • 447 files changed
    • 9749 insertions(+) / 7806 deletions(-) (Surely because of the reorganization of the entire codebase)

Back to posts