Add a weekly review system


Continuing the discussion from What's missing in TaskPaper 3 Preview?:


Ok. I’ll go into some detail here. David Allen describes the Weekly Review as, “This is the critical behavior to make personal organization a vital, dynamic reality.”

OmniFocus does this by scheduling a weekly review for items. You then go through your tasks one by one, thinking about them, updating them, basically keeping them up to date or keeping them from getting stale in your mind.

Here is how I achieve this in TaskPaper. It would be great to have something like this as a native feature.

I have one AppleScript that adds a @review tag to every item. This is triggered every Wednesday, at 1:00pm by Keyboard Maestro.

When I do the review, I have another AppleScript that removes the @review tag from the currently active item, then it moves the text cursor to the next item, by typing the down arrow key. I have this set to Control-m in Keyboard Maestro.

So, once a week, I review my entire task list. As I finish reviewing each one, I type control-m, and the @review tag is removed, and I go to the next one. If I am interrupted during the review process, I can pick it up again by searching for remaining @review tags.

Finally, I have a AppleScript that goes through the entire task list, and removes the @review tag in bulk. I added this, as my system adds @review tags to archived items, which I do not need to review.

Let me know if the about makes sense. If you need more info, I can make a screencast showing it in action.


I’m not going to do anything on this in the near term, but bring it back up once I’ve documented scripting. It’s possible I could eventually add this as built in, not sure.

One thing that makes TaskPaper 3 different from TaskPaper 2 is that the JavaScript based scripting is working at the native level. So there wouldn’t really be any difference between a “native” solution an a javascript solution. In TaskPaper 3 all the outline/task/tag/etc logic is written in JavaScript. There is a “native” Objective-C Cocoa layer that glues this underlying JavaScript model to a NSTextView… but all the interesting application logic is in the JavaScript layer. When you script TaskPaper 3 with Javascript you have direct access to that layer.

Anyway, I’ll look at this more once I have a chance to document things.


Jim, I understand why you want what you want, but I think this should just be a saved filter that lets you read through your list. My two cents.


@jessegrosjean — Fair enough, I’ll bring it up at a later point. Until the documentation is ready, do you have a small Javascript example that I could take a look at? I’m not looking for anything fancy—I just want to “get my feet wet” (as I often learn by examples.

@jackbrannen — How would a saved filter keep track of what I’ve reviewed? One of the advantages of my current process, is if I am interrupted in the middle of a weekly review, my progress is kept intact, even if I quit TaskPaper and continue the review the next day.


I think your best bet for getting an idea of what the scripting will be like is to look at the FoldingText for Atom project here:

And in particular:

Documentation > User’s Guide > Hacking FoldingText
Documentation > API Reference

That project (even though it’s called FoldingText for Atom) is actually the base for the current TaskPaper 3. I’ve made changes as I build TaskPaper 3 on it, but the core design is pretty much the same.


Thanks Jesse! That helps!


Seems like a weekly review can just be a scan through all of your tasks. The feature in Omnifocus always seemed like a nice to have, but sometimes it was an additional complication. For me anyways.

What I would like is some kind of repeating task functionality for things like daily and weekly routines. That might be beyond the scope of TP, and probably belongs in a calendar or reminder program, but nevertheless…


Review tagging could solve this problem. Then just tie a keyboard shortcut to add a @reviewed(YYYY-MM-DD) tag to every task in a project or just an individually selected task (either would work fine). Then you could search for tag attributes to find all tasks NOT reviewed yet. Unfortunately there’s a bug in the search syntax

I’ve marked a tag as @reviewed(2015-11-06) but the search syntax only supports a partial date search like @reviewed < 2015 but not @reviewed < 2015-11-07


Thanks, tracking that now… for a workaround you can wrap 2015-11-07 in quotes like this:

@reviewed < "2015-11-07"


I suppose you have something very specific in mind when you mean weekly review. When I think of a weekly review, I think of a pretty speedy read-through of my list. That is not a criticism of you, of course! :slight_smile: But you may have a more specialized workflow than most.


It would be very cool if the syntax supported Natural Language dates like @reviewed < today. Nothing too crazy but “today”, “tomorrow”, “next week” seem like they’d be super handy. I know, TextExpander could be used to determine exact date but that’d be cool for saved searches.


Just adding an update since the new date operators were added to TP3. You can use this filter for checking items that need review:

Needs Review @search(@review <  [d] today except @done)

Works like a charm. Of course maintaining a complex review system like this would not be something I’d choose for many projects since it would only work with setting explicit review dates which might become tedious.