So I’ve fleshed na out into a pretty great tool for querying and adding to a TaskPaper file, making it easy to manage having a todo list in every project directory I work in. But there was one thing I couldn’t do quickly from the command line: mark a task as completed.

na update

As of version 1.2, na can now perform actions on tasks based on a quick text/tag search. Just run na update -a Do that thing and it will find an entry containing “do,” “that,” and “thing”, mark it @done, and archive it. See na help update for a full list of actions you can perform — everything from adding/removing tags to completing/deleting/archiving. You can even add notes to existing actions. It’s pretty nifty. There are still plenty of times where it’s faster to just open up TaskPaper or load the todo file in my editor with a TaskPaper extension, but for quick one-offs I no longer have to leave the command line.

By the way, the update command works best if you have fzf installed. You can get it with brew install fzf. It will fall back to gum and then to a readline interface, but fzf will give you the most elegant menus1.

There are also new commands for viewing project hierarchies, listing todo file history, seeing the changelog, and more. Check out the docs!


If this is the feature that finally got you to install na, see the Installation instructions in the docs. It’s a gem, so the simplest install is gem install na, but there are tips for using brew gem in there as well.

If you’re already using na, you can update to v1.2.x using gem upgrade na or brew gem upgrade na, depending on how you installed it.

Other Changes


  • na add --to now specifies a project, --in specifies a todo file
  • Prefer fzf over gum when available


  • --edit and --delete for saved searches (na saved)
  • na add --todo FILE will match any known todo file when adding an action
  • na add --project PROJ will match any existing project when adding an action
  • na update [options] search string will update an existing task, moving it between projects, adding and removing tags, marking finished, setting priority, adding/replacing notes, or archiving it
  • --tagged TAG flag for na update searches by tag/value
  • na projects will list all projects in a todo file, optional argument to query known todos
  • --delete switch for na update
  • Added --done tag to next/find/tagged to include @done actions in the output
  • Use na changes to view the changelog and see recent changes


  • A parenthetical at the end of an action will be interpreted as a note. If –note is additionally supplied, entered note is concatenated to parenthetical note.
  • Allow multi-line notes
  • Include arguments with na edit to narrow down which file to edit (partial matching)
  • Improved handling of todo file search arguments for na next
  • If todo file search returns zero results, loosen search
  • When using !negations in todo matching, allow the negation to match any part of the path, not just last element
  • Full token matching when using na todos QUERY
  • Offer gum and readline fallbacks for fzf menu with na update
  • --overwrite option when adding a note using na update (defaults to append)
  • Allow multiple file selections for na update
  • Display “Inbox” as a parent
  • You can run na SAVED_SEARCH using any saved search (same as running na saved SAVED_SEARCH but niftier)


  • Unable to search for next action tag with find or tagged
  • na add --priority being interpreted as note
  • Immediately save created todo files to history
  • Project regex
  • Error when an action contains a left curly brace
  • Don’t show @done tasks unless specifically searched for
  1. Doing can install fzf itself, but this project is significantly smaller than Doing and I think people can take responsibility for their own prerequisites.