imag/doc/src/09020-changelog.md

27 KiB

Changelog

This section contains the changelog.

We try to include a changelog line in each pull request, to make sure the changelog is up to date when releasing a new version of the codebase. Make sure to append the new change to the list, do not prepend it.

The "Major" section of each section includes huge changes in functionality and interfaces (but not necessarily user-facing ones), whereas the "Minor" section contains only small stuff. Some things, like typo fixes, version string updates and such are not stated in the changelog (though updating of dependencies is). Please note that we do not have a "Breaking changes" section as we are in Version 0.y.z and thus we can break the API like we want and need to.

Next

This section contains the changelog from the last release to the next release.

  • Major changes
    • imag-timetrack list --from/--to now have kairos support - that means that complex --from/--to arguments (like yesterday or today-2weeks) are now possible
    • libimagerror got a major refactoring and uses ChainedError from error-chain for logging errors now.
    • libimagentryref and all libraries using it were rewritten. libimagentryref was rewritten to make its API simpler and yet more powerful. Also because it used to put entries under a "ref" collection in the store, but users of the library really should be be able to put entries under custom collections.
  • Minor changes
    • A license-checker was included into the CI setup, which checks whether all ".rs"-files have the license header at the top of the file
    • imag-link does not allow linking the entry to itself
    • imag sorts available commands alphabetically now
    • imag has a new subcommand help for consistency with other tools
    • imag-grep does not print grep statistics when only files with matches are listed
    • The "Ok" output which was printed on success was removed from all commands
    • imag-log show was aliased to imag-log list
    • imag-* --version shows git describe output if binary was compiled in "debug" mode.
  • Bugfixes
    • imag does not panic anymore when piping and breaking that pipe, for example like with imag store ids | head -n 1. For that, libimagerror got a Result extension which can translate errors into exit codes and one for unwrapping or exiting with the Err(i32) from the result.

0.6.1

Bugfix release for fixing two severe bugs in imag-init:

  • imag-init created the git directory inside the imag directory. Fixed by defaulting to {imag directory}/.git.
  • imag-init was buggy as it did not include the imagrc.toml file in the release, thus building it from crates.io failed

0.6.0

  • Major changes
    • The config infrastructure of libimagstore was removed, as it was unused.
    • The iterators of libimagstore were improved and are now abstract over all iterator types. For example, all iterators over StoreId can now be transformed into a StoreGetIterator.
    • imag-log was introduced
    • imag-init was introduced
    • libimagdiary supports second-granularity now.
    • libimagstore::store::Store::retrieve_copy was renamed to libimagstore::store::Store::get_copy, which describes the semantics of the function way better.
    • libimagentryutil was introduced, a library for helpers for libimagstore::store::Entry handling and writing extension-writing.
    • imag-edit was introduced
    • imag-diary got second-granularity support in the CLI.
  • Minor changes
    • Internals were refactored from matching all the things into function chaining
    • The toml-query dependency was updated to 0.5.0
    • imag-timetrack list lists with a table now
    • imag-timetrack stop now stops all running tags if none are specified
    • The toml-query dependency was updated to 0.6.0
    • ResultExt::map_err_trace_exit() was removed in favour of ResultExt::map_err_trace_exit_unwrap().
    • imag-view shows content by default now. Use -C to hide the content.
    • kairos dependency was updated to 0.1.0
  • Bugfixes
    • libimagbookmark contained a type which wrapped a FileLockEntry from libimagstore. This was considered a bug and was fixed.
    • We depended on a crate which was licensed as GPLv2, which would yield imag GPL as well. The dependency was removed.
    • The imag crate prints the "command filed" error message to stderr now. It also prefixes the subcommand with imag-<command> for better user experience.
    • libimagnotes did not set the note name in the header of the note.
    • imag-mv automatically fixes links when moving an entry in the store.
    • imag-log listed non-log entries (normal diary entries) before, was changed to only list log entries.

0.5.0

  • Major changes

    • imag-counter and libimagcounter was removed.
    • imag-mv was introduced
    • imag-view uses positional args now
    • imag-view uses the configuration file now to find the command to call for viewing the entry. This way one can view the entry in an editor or the browser or on the toaster.
    • The logger is now able to handle multiple destinations (file and "-" for stderr)
    • imag-store can dump all storeids now
    • imag-annotate was introduced
    • imag-diagnostics was added
    • The runtime does not read the config file for editor settings anymore. Specifying an editor either via CLI or via the $EDITOR environment variable still possible.
    • imag-contact was added (with basic contact support so far).
    • imag-habit was introduced
    • imag-link commandline was redesigned to be easier but with the same features.
  • Minor changes

    • libimagentryannotation got a rewrite, is not based on libimagnotes anymore. This is minor because libimagentryanntation is not yet used by any other crate.
    • imag now reads the IMAG_RTP environment variable before trying to access $HOME/.imag for its runtimepath.
    • libimagnotification was introduced, though not yet integrated into the CLI tools
  • Bugfixes

    • Store::entries() does not yield StoreIds which point to directories anymore, only StoreIds pointing to files.
  • Stats

    • 227 commits
    • 51 merge-commits / 176 non-merge commits
    • 2 contributors
    • 186 files changed
    • 6707 insertions(+) / 3255 deletions(-)

0.4.0

  • 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

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

0.3.0

Note: As this file was written _after_ the 0.3.0 release, we simply list the merges here instead of explaining what changed.
  • Merges
    • d14c972 matthiasbeyer/release-commits-import
    • f6a1c7d matthiasbeyer/make-check
    • 0404b24 matthiasbeyer/update-deps
    • 85e95d1 matthiasbeyer/readme-rewrite
    • fa64c2d matthiasbeyer/libimagstore/store-id-cmp-without-base
    • 0a04081 matthiasbeyer/cargo-rustc-codegen-units
    • a4db420 matthiasbeyer/cargo-workspaces
    • 8bacdb4 matthiasbeyer/libimagref/remove-unused
    • 13c57aa matthiasbeyer/imag-link/reduce-unwraps
    • e70fdc6 matthiasbeyer/libimagentrytag/remove-impl-tagable-on-fle
    • 1db063f Stebalien/master
    • a6a7e43 mario-kr/add_shell-completion
    • 002c50a matthiasbeyer/clap-completion
    • b210b0e matthiasbeyer/libimagstore/entry-eq
    • fe1c577 matthiasbeyer/libimagstore/extract-toml-functionality
    • 4ca560a matthiasbeyer/travis-use-old-rustc
    • 0310c21 rnestler/libimagdiary/refactor_from_store_id
    • 9714028 matthiasbeyer/clap-recommend-versions
    • 2003efd matthiasbeyer/imag-mail/init
    • 7c7aad9 matthiasbeyer/libimagentrylink/fix-docu-typo
    • 0dd8498 matthiasbeyer/update-deps
    • 9375c71 matthiasbeyer/makefile-check-outdated
    • 23a80ee matthiasbeyer/imag-link/external-link-remove-arg
    • 4a821d7 matthiasbeyer/rust-beta-remove-top-level-cargotoml
    • 0cf5640 mario-kr/add_workspace-support
    • c96e129 matthiasbeyer/libimagrt/logger-pub
    • 2c4946a matthiasbeyer/remove-for-focus-shift
    • 9d7a26b matthiasbeyer/libimagrt/dbg-fileline-opt
    • 6dbecbd matthiasbeyer/libimagrt/config-types-pub
    • 03a90c9 matthiasbeyer/cleanup-bash-compl-gen
    • 6f564b5 matthiasbeyer/love-to-defaultnix
    • ce36b38 matthiasbeyer/fix-imag-bin-build
    • cd684b0 matthiasbeyer/travis-opt
    • 636bfbb matthiasbeyer/imag-link/list-internal-only
    • 1e3193e matthiasbeyer/imag-ruby
    • 71e1a4c matthiasbeyer/libimagerror/fix-warnings
    • b03d1b5 matthiasbeyer/libimagstore/fix-warnings
    • 0a417aa matthiasbeyer/libimagruby/fix-warnings
    • 55ea7f8 matthiasbeyer/readme-updates
    • ddc49de matthiasbeyer/libimagruby/fix-macro
    • df0fa43 matthiasbeyer/imag-tag/remove-warning
    • 3c7edcf matthiasbeyer/update-regex
    • 15b3567 matthiasbeyer/workspace-fix-missing-doc
    • 6585677 matthiasbeyer/libimagentryfilter/remove-unused-import
    • 2ca89b7 matthiasbeyer/workspace-fix
    • 63ffbf6 matthiasbeyer/libimagstore/eliminate-header-type
    • 3ffedec matthiasbeyer/remove-warnings
    • 4d1282d matthiasbeyer/libimagruby/impl-retrieve-for-mod
    • c43538d matthiasbeyer/ruby-build-setup
    • 2beb795 matthiasbeyer/revert-871-ruby-build-setup
    • b67b6f5 matthiasbeyer/libimagstore/doc
    • dc1c473 matthiasbeyer/libimag-todos
    • bb126d5 matthiasbeyer/libimagruby/api-brush
    • b50334c matthiasbeyer/libimagrt/doc
    • 54655b9 matthiasbeyer/libimaginteraction/unpub-fn
    • e33e5d2 matthiasbeyer/libimagannotation/init
    • f3af9e0 matthiasbeyer/clap-bump
    • ef07c2c matthiasbeyer/libimagstore/verify-panic
    • a0f581b matthiasbeyer/libimagentryedit/dont-impl-for-fle
    • 84bcdc6 matthiasbeyer/libimagnote/note-doesnt-need-to-be-tagable
    • 85cb954 matthiasbeyer/less-fold-more-defresult
    • c4bd98a mario-kr/makefile_use_workspaces
    • 3a0166b matthiasbeyer/libimagruby/error-types
    • 5d4ef8e matthiasbeyer/libimagstore/non-consuming-update
    • e615ec0 matthiasbeyer/add-libruby-travis-dep
    • 63faf06 matthiasbeyer/fix-warnings
    • 6f6368e matthiasbeyer/travis-fixes
    • 9396acc matthiasbeyer/superceed-898
    • 6fa281a matthiasbeyer/redo-ruby-build-setup
    • 5b93f38 matthiasbeyer/libimagstore/storeid-exists-interface-result
    • 03f17b8 matthiasbeyer/libimagentrylink/annotations
    • 25a3518 matthiasbeyer/libimagentrylink/fix-exists
    • 7e3c946 matthiasbeyer/libimagutil/fix
    • 8eaead5 matthiasbeyer/fix-build-quick
    • 241f975 matthiasbeyer/libimagentryedit/remove-unused-imports
    • c74c26c matthiasbeyer/fix-readme-links
    • 878162f matthiasbeyer/libimagstore/store-id-tests
    • 1da56c6 matthiasbeyer/prepare-0.3.0
    • 4257ec1 matthiasbeyer/update-toml
    • a5857fa matthiasbeyer/libimagstore/configuration-tests
    • 4ba1943 matthiasbeyer/add-dep-ismatch
    • 5ba2568 asuivelentine/master
    • dd24ce8 matthiasbeyer/revert-854
    • bb9ff5b matthiasbeyer/remove-hooks
    • 08f43c8 matthiasbeyer/update-toml-query
    • 16a12af matthiasbeyer/libimagentrydate/init
    • 1b15d45 matthiasbeyer/libimagentrydate/fix-header-location
    • 4fff92e matthiasbeyer/libimagmail/use-email-crate
    • ef82b2a matthiasbeyer/add-missing-license-header
    • 15b77ac matthiasbeyer/libimagentrytag/clap-validators
    • a9d2d7c matthiasbeyer/libimagstore/fs-memory-backend-as-dependency-injection
    • c4d4fe9 matthiasbeyer/libimagstore/remove-todo-comment
    • 71e3d3d matthiasbeyer/libimagentrytag/validator-helper-enhancement
    • bc95c56 matthiasbeyer/libimagstore/fs-abstraction-pub
    • f487550 matthiasbeyer/libimagstore/storeid-local-part-altering
    • cd99873 matthiasbeyer/libimagstore/io-backend
    • e75c37f matthiasbeyer/libimagstore/io-backend-knows-format
    • d33b435 matthiasbeyer/libimagstore/all-entries
    • f8ed679 matthiasbeyer/libimagstore/backend-replacement
    • 2c97d6f matthiasbeyer/libimagstore/embellishments
    • 17bab5b matthiasbeyer/libimagstore/fixes
    • 2b77064 matthiasbeyer/libimagrt/fixes
    • c9d03fc matthiasbeyer/update-travis
    • 22a4dc0 matthiasbeyer/libimagrt/cleanup
    • b47972b matthiasbeyer/imag-store-dump
    • 1b88c22 matthiasbeyer/libimagentrycategory/init
    • 7dea53c matthiasbeyer/libimagannotation/add-doc
    • c71b707 matthiasbeyer/libimagannotation/add-is_annotation
    • b3e7f09 matthiasbeyer/libimagtimetrack
    • c75cfe4 matthiasbeyer/imag-link/fix-panic
    • e80608c matthiasbeyer/libimagstore/fix-file-length-setting
    • b4d0398 matthiasbeyer/imag-link/export-consistency-check
    • f041fb3 matthiasbeyer/fix-dep-rustc-version
    • 297eeb1 matthiasbeyer/remove-nix-deps
    • bee4e06 irobert91/imag-link/rewrite-tests
    • afc5d1f matthiasbeyer/update-toml-query
    • 58047d3 matthiasbeyer/libimagtimetrack-to-libimagentrytimetrack
    • 3c07f47 matthiasbeyer/libimagtimetrack/more-features
    • 3767d8d matthiasbeyer/update-chrono
    • c9360a4 matthiasbeyer/imag-link/test-utils-to-libimagutil
    • e4f8d4e matthiasbeyer/imag-tag/tests
    • fc5bbc3 matthiasbeyer/libimagstore/glob-iterator-fix
    • ec1c1e8 matthiasbeyer/bin-refactor
    • 4b07c21 matthiasbeyer/todo
    • 057d919 matthiasbeyer/imag-timetrack
    • 0f436d5 matthiasbeyer/doc-overhaul
    • a1289cc matthiasbeyer/update-readme
  • Stats:
    • 127 merged branches
    • 8 contributors

0.2.0

  • Complete rewrite of 0.1.0 with new architecture and "modules" instead of monolithic approach. Can be considered first version.

0.1.0

  • Initial version, nothing special.