31 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 havekairos
support - that means that complex--from/--to
arguments (likeyesterday
ortoday-2weeks
) are now possiblelibimagerror
got a major refactoring and usesChainedError
fromerror-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.imag store ids
was replaced byimag ids
.libimagentrylist
was removed. Its functionality was inconvenient to use and ugly to implement. Its API was cumbersome. Listing of entries shall be implemented without it.libimagcontact
is now able to fetch all contacts from the store.libimagcontact
takes the hash from the vcard object (UID) now.imag-contact
got afind
command, which matches in fullname, email and address and either shows or lists the found contactsimag-contact list
andimag-contact find
is now able to print the output as JSON.imag-edit
can now read store ids from stdin, soimag ids | fzf | imag edit -I
is now a thing.imag ids
does not print the path of the store. Can be turned on using commandline flag.imag-habit today --done
andimag-habit status --done
was added for showing habits which are already done.libimagrt
allows external subcommands now in the default clap app builder helper. It also provides a helper for handling unknown subcommands:Runtime::handle_unknown_subcommand()
. See docs for details.imag-link list
prints output in ascii-table now, use--plain
to print as plain text.
- 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 itselfimag
sorts available commands alphabetically nowimag
has a new subcommandhelp
for consistency with other toolsimag-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 toimag-log list
imag-* --version
showsgit describe
output if binary was compiled in "debug" mode.imag-diary
supports "daily" diaries now.imag-contact
joins multiple emails with "," nowimag-tag
commandline was rewritten for positional arguments.libimagrt
automatically takes "rt.editor" into account when building editor objectlibimagentryref
got a utility function for making an entry a ref.libimaghabit
gotHabit::instance_exists_for_date()
imag contact find
understands--format
now.imag contact
uses ", " as seperator for output of lists of values.imag contact find --id / --full-id
was added for printing Store Id / Filepath of found contacts.imag view
can now view multiple entries at onceimag view -I
reads store ids from stdin now.
- 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 aResult
extension which can translate errors into exit codes and one for unwrapping or exiting with theErr(i32)
from the result. libimagdiary
did not add the header markers on diary entries.imag-diary
used the default diary rather than the CLI setting. Now it rather uses the CLI setting and only if that is not present, it uses the default.libimagerror
printed errors withwrite!()
rather thanwriteln!()
when tracing.- A parsing error in
libimagstore
, which caused the parsing of entries with a line "---" in the content part to fail, was fixed. - The patch explained by the point above introduced a bug which caused entries to be read as a single line, which was fixed as well.
imag-diary create --timed
did not work as expectedlibimagstore
got another fix with the file parsing, as thestd::str::Lines
iterator takes empty lines as no lines.libimagentryedit
fixed to inherit stdin and stderr to child process for editor command.libimagrt
produced the editor command without taking arguments into account.libimagentryref
got a fix where the buffer for the hash calculation was not allocated properly.libimagstore::store::Store::create
overwrote existing entries.libimaghabit::habit::HabitTemplate
did not link new instances.imag-init
creates~/.imag
but not~/.imag/store
.
- imag does not panic anymore when piping and breaking that pipe, for
example like with
0.6.3
Bugfix release for fixing:
libimagstore
got another fix with the file parsing, as thestd::str::Lines
iterator takes empty lines as no lines.
0.6.2
Bugfix release for fixing:
imag-diary
did not recognize the "-d DIARY" setting.- A parsing error in
libimagstore
, which caused the parsing of entries with a line "---" in the content part to fail, was fixed. - The bugfix above introduced another bug which caused entries to be rewritten in one line when accessing them. This was fixed.
imag-diary
did not properly set "minute" and "second" when creating "hourly" or "minutely" entries.- Version numbers for all crates as well as in the docs were updated to "0.6.2".
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 theimagrc.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 overStoreId
can now be transformed into aStoreGetIterator
. imag-log
was introducedimag-init
was introducedlibimagdiary
supports second-granularity now.libimagstore::store::Store::retrieve_copy
was renamed tolibimagstore::store::Store::get_copy
, which describes the semantics of the function way better.libimagentryutil
was introduced, a library for helpers forlibimagstore::store::Entry
handling and writing extension-writing.imag-edit
was introducedimag-diary
got second-granularity support in the CLI.
- The config infrastructure of
- Minor changes
- Internals were refactored from
match
ing all the things into function chaining - The
toml-query
dependency was updated to 0.5.0 imag-timetrack list
lists with a table nowimag-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 ofResultExt::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
- Internals were refactored from
- Bugfixes
libimagbookmark
contained a type which wrapped aFileLockEntry
fromlibimagstore
. 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 withimag-<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 listlog
entries.
0.5.0
-
Major changes
imag-counter
andlibimagcounter
was removed.imag-mv
was introducedimag-view
uses positional args nowimag-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 nowimag-annotate
was introducedimag-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 introducedimag-link
commandline was redesigned to be easier but with the same features.
-
Minor changes
libimagentryannotation
got a rewrite, is not based onlibimagnotes
anymore. This is minor becauselibimagentryanntation
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. Thetoml_query
crate should be used as a replacement. Its interface only differs in few places from the oldlibimagstore::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).
- The
-
New
libimagentrygps
was introducedimag-gps
was introducedimag-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
usedimag
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 thelinks
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.
- The config loading in
-
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, thecrossbeam
dependency was removed. - The
Makefile
was removed ascargo
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.
- If building from a
-
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.