I’ve added a few new things to my command line time tracker, doing, with an emphasis on adding power to @tagging.

Several commands now accept --tag= as a flag, creating a filter that looks for the last entry (or entries) tagged with a specific tag (or combination of tags). doing last, doing finish, doing again (which is a new command that duplicates a previous task and starts it with a new timer) all accept --tag= to act on a tagged entry rather than the last chronological entry. All commands that accept --tag= also accept --bool=, so you can specify multiple tags separated with commas and then use --bool= to define how they’re combined (AND, OR, or NOT). Run doing help COMMAND (after updating to the latest version, of course) for any of these commands for more details.

The doing last command now accepts -e to edit the last entry in your $EDITOR. Combined with --tag=, you can edit previous entries much more easily. The entry opens in your editor with the title as the top line, and any notes on the following lines. You can update the text, tags, and note, and when you save and close the doing file is updated with the changes.

Most commands that support --tag= also support --search=. This provides fuzzy search for recent entries. If you specify a string, such as doing last --search="Test", the command will search your recent entries for something containing the letters of the string, case insensitive and in order, but separated by up to three characters each. So “Test” would match “the satire.” For doing last, you can add the -e switch to be able to edit the last entry matching a search.

As I mentioned above, doing again (aliased as doing resume) allows you to restart a finished task (as a new task), or end the previous task with the current time and start it again with a new timer. With the --tag= flag, you can now repeat an entry from earlier in the list based on tags. Which means that making liberal use of tags can now be a major benefit beyond just time tracking.

I also added doing cancel, which adds @done tags with no timestamps to recent entries, so no accumulated time is recorded for them. doing cancel also accepts the --tag= flag, so you can cancel the last tagged entry rather than just the most recent entry.

I also added a configuration key called run_after which will execute an arbitrary command or script after any command that modifies the doing file. This ties into a fun BetterTouchTool/Touch Bar/menu bar integration that I’ll write more about soon. You can also now define both editor_app (which is the app that the doing file is opened in with doing open) and config_editor_app (which is the app that doing config will open the configuration file in).

You can update doing using gem update doing. If you want to learn more about exactly what doing is, visit the project page.