# What's coming up in imag (11)

We cracked the 70-stars mark on github! Wow. We reached the 2,000-commits-mark. Wow. We also reached the 500 PR/Issue mark. Another wow.

But there happened a lot more things in the last 14 days in imag, the personal information management suite for the commandline. Read it up here.

# The past

Wow. 14 days can be so damn short. We got a few things done in the last 14 days, but first, I want to thank all contributors:

• mario-kr who did a semester project at his university with some fellow students. He submitted a pull request to implement libimagtodo, which is a todo module for imag, currently using task-hookrs as backend for talking to taskwarrior. This is really great!
• mario-kr also submitted some more PRs:
• A bugfix for the bin/imag binary
• A lot of suggestions and comments in issues what is wrong with task-hookrs.
• jsirois opened two PRs after reading my this-week-in-rust entries where I submitted two issues which could be done by people wanting to learn some Rust: 531 and 532 - absolutely awesome!
• I also want to thank impo who submitted a PR to build the docs to a manpage. This reminds me that I really should work on the docs. Either way, a big “Thank you!” to you, impo!

Wow, so much contributions! Awesome, keep it up, guys! Lets take a look on the merged pull requests.

## PRs merged

The following PRs were merged in the last 14 days:

• 468 added libimagref - a library to create references to files on the filesystem. Something like pointers to external data. This can be used to reference files outside of the store, track them by content (SHA1), their permissions, their location and so on. This will also be used to implement a list of other tools, such as a wiki module, a movie-, music-, images-module and so on. There are a lot of possibilities here.
• 481 implements a frontend for libimagref for the commandline, so a user can use libimagref directly to create filesystem references.
• 487 added an implementation of Display for StoreId. You can now println!("{}", id) - awesome!
• 489 refactored the internals of the store a bit, by moving a function from Store to StoreId. This shouldn’t change the use of libimagstore at all.
• 496 made the CoreLister-Type from libimagentrylist more generic. You should be able to pass not only closures, but also normal functions now.
• 500 contained a bug-fix for 468
• 503 fixed a flaw in the Display implementation for StoreId
• 513 adds a configuration option which makes it possible to deny altering hooks per aspect in the store hook execution
• 517 fixed a bug in libimaginteraction which caused the ask_bool() (and possibly other) function to loop endlessly
• 518 removes a unneeded dependency from imag-view
• 519 puts the out directory in the gitignore file
• 521 adds the implementation for libimagbookmark - the bookmark feature of imag (the library part).
• 525 updates the documentation. Before, the documentation was a technical document. I do not believe that this will bring us any advantages anymore. This PR rewrites the document to be a user documentation.
• 528 updates all the crate versions from “0.1.0” to “0.2.0”, as we currently develop imag in this newer version.
• 531 removes some unused code and therefor cleans up the warnings the compiler gives us about the unused code. This PR was later superceded by 536 and 537.
• 532 adds a fold_result utility function for all iterators and therefor closes
• 533 fixed a header-field naming error in libimagref.
• 534 introduces a (hopefully) temporary fix for libimagentrylink. The check, whether a StoreId object points to an external link store object or not was buggy as it assumed the PathBuf inside the StoreId to be absolute to the Store root.
• 536 superceded 531
• 537 superceded 531
• 538 refactored some code in the store to remove duplication.

## PRs about to be merged

And here are some PRs which are work in progress and might be merged in the next 14 days. These were opened in the last 14 days and I hope to close them (merged or not merged) fast… some of them seem to be pointless (the ones on the store refactoring for testing are kind of duplicated as I tried different approaches) so they might get closed unmerged.

• 486 implements a git store hook, which then puts the store into a git repository and tracks changes within the store. I’m not sure whether I will be able to merge this, as I still have problems getting the git2 crate building, as zlib is somehow missing, though I added it to my nixos setup… we will see…
• 497 implements an iterator type for libimagref, so we can iterate over references in a nice way.
• 498 uses 497 in imag-ref (481) to list references if the user requests this.
• 514 adds an abstraction layer for the filesystem which should simplify store testing option which makes it possible to deny altering hooks per aspect in the store hook execution
• 522 adds the implementation for imag-bookmark - the frontend for libimagbookmark, which is implemented in #521 - so this is basically the other half of the feature.
• 529 is an attempt to pass only store-absolute StoreId-instances to the Entry objects inside the store. This PR might be superceded by 530
• 530 tries to rewrite the Store internals to use another StoreId type (EntryStoreId) inside the Store implementation which is always absolute to the Store root and never relative to the filesystem root. 499, which is absolutely awesome.
• 535 introduces a feature for imag-counter, which gives you the possibility to add units to your counters (when creating them). So you can attach a meaning to the counters and everybody will know that this is not the count of your daily pushups but rather the number of jellybaby you’ve eaten!

# The Future

So what will happen next? I opened quite a bunch of issues in the last 14 days, most of them are rather simple things to do!

## Issues opened/I want to get done

We reached the 60-open-issues line as well in the last 14 days. This is not necessarily a bad thing, as these are not all bugs but also feature requests and so on. Here is a list of issues which were opened in the last two weeks. I hope I can close some of them within a few days (some of them might be already closed at the time of writing).

I’m not including a description of each issue here… this would yield this post waaaay to long actually.

## Other things

Well, I am in the last phase of my bachelors thesis right now… so I would say: Plenty of time to work on imag, right?

I hope to get the bookmark implementation finished and the listing support for the reference utility merged. Besides that (and after the reference foo is merged) I would love to start implementing a backend for the diary or bookmark module by either using jrnl.sh or buku. Not because I use them as commandline tools (I’m not saying I wouldn’t) but because they seem to be simple to adapt. Maybe I’m wrong… but well… lets see.