~bmp/hsh

An all-in-one life management tool for the command line

09c55f3 change default list size to be correct for me personally

~bmp pushed to ~bmp/hsh git

a month ago

67f402c todos: many improvements

~bmp pushed to ~bmp/hsh git

a month ago

#hsh: an all-in-one life-management tool

The goal of hsh is to be an all-in-one life management tool. Specifically, the eventual goal is that hsh will have, at a bare minimum:

  • A note-taking tool
  • A todo tool
  • A bookmarking tool
  • A calendaring tool
  • An address book tool

Additionally, while my initial focus is on the CLI, and I care very much about ensuring that hsh always has an outstanding command line, I explicitly want to make sure that hsh also has a good web front-end.

#Design and Inspiration

hsh unapologetically owes a great debt to nb, and started off fully compatible with it. In fact, if you point hsh and nb to the same notebook, they will currently largely be able to operate the same way. And like nb, hsh believes completely in the primacy of plain text. My intention is that all of the above features use plain text files as their sources of truth.

That said, hsh is heading in a different direction:

  • I do not consider notes' short IDs canonical; they're ust a convenience. As such, while nb and hsh will use the same sort IDs if pointed at the same notebook, hsh explicitly will not keep those IDs stable. I fully get and like Zettelkasten's note IDs, but for hsh, those are the timestamp of the note's creation. As a reuslt, while hsh currently honors files with arbitrary names, it only creates them with dates, and I consider supporting title-based notes (e.g. what you get with nb move --title) to be an antifeature that hsh will not support. (In fact, in a kind of reverse of that, hsh will soon have a command to restore filenames to their original creation date.)
  • While notes may have an arbitrary hierarchy, more structured data, like bookmarks, tasks, calendars, etc., will go in specific folders, and will not necessarily expose a hierarchy that users can manipualte.
  • While nb relies on a rich collection of command-line tools to work, my goal with hsh is for it to be fully self-contained. (That said, it currently relies on ripgrep, and it'll probably be a bit before we break that one.)
  • While hsh, like nb, currently relies on Git for a lot of its history and metadata, and while I plan for hsh to continue optionally supporting that flow, my intention is for hsh to track much of that metadata internally and directly.

#Current Status

Note taking and a loose concept of todos are now present. In particular, the following functionality exists:

  • Cloning notebooks
  • Adding and removing notes
  • Searching (requires ripgrep)
  • Using Git to sync and manage the notebooks
  • Search todos and marking them complete or incomplete