What about native support for task managers features?


#1

I really like the Taskpaper format and I’m always looking for the Taskpaper development, but every time I stop to think about buying the software, this comes to my mind: what is the real benefit of owning this over using a generic text editor with a plugin (like Plaintasks for Sublime or taskpaper.vim)?

This time I realized what I’d really like to get with the Taskpaper app: a native solution for the basic features of task managers. And these features are almost completely there: we have projects, priority, tags, search/filter… but what about due dates handling? What about notifications? I’d like to open the app, add a @tomorrow tag to a task and open it again the other day and see the task tagged with @today. I’d like to easily get a view of the tasks I have planned for the week. I’d like to set a reminder on a task and get a notification for it.

I know I can get this and even more with scripts, but the thing with scripting should be the possibility of going far beyond, generating more complex views, automating workflows, etc. The basic features of task managers should be there, out of the box. That is the thing that would make this software appealing.


#2

I agree that some sort of reminder integration would be nice in TaskPaper.

But the implementation is difficult due to how TaskPaper works. All of TaskPaper’s data is just a plain text file that can be edited by any other application. This makes it difficult to impossible to keep reminders in the OS X reminders database in sync with reminder tasks in a TaskPaper document.

I’m open to suggestions, but at this point I still don’t know how I would like to implement such an integration.


#3

Yeah, it’s difficult to not agree that reminders would be a nice feature. Unfortunately I can’t help you with suggestions on how to solve this. If this integration comes to Takspaper someday, I’m sure we’re all gonna be happy.

And what can you say about due dates handling? And an integrated parser for date formats? This would be just useful and seems to be simpler to implement, without the need to deal with external stuff, just a self-contained solution. I’m talking about keeping track of due dates – updating @due(2015-11-10) to @today or adding an @overdue to @due(yesterday) – and parsing natural date formats – understand @monday as @due(next monday) as @due(2015-11-16).


#4

Actually… thinking about this more. I disagree! :smile:

It’s always seemed reasonable to to eventually add reminders to TaskPaper, but I think it just fundamentally won’t work in a “safe” way. Users have (and will continue to I hope) build scripts to support there own reminders system, but I think those solutions are only appropriate for the types of users who use scripts and think about what’s going on behind the scenes.

For “normal” users I don’t think that TaskPaper will ever provide a suitable (alert style) reminder system. Trying to keep a plain text document in sync with a centralized reminder system sets up too many expectations and has to many fail points.

So unless you change the fundamentals of TaskPaper (plain text document based app) I think it’s impossible to implement a fool proof reminder system.

And now that I think it’s impossible… I’m not sure this is a bad thing. The original GTD book made a point of not putting date based todo’s in your lists. That’s what calendars are for. The problem with date based stuff is that you can’t do multiple things at the same time, calendar UI’s are designed to show and avoid such overlap.

So going forward that’s TaskPaper’s reminder solution. Use a calendar. Maybe a script can make it easy to turn a todo in your list into a calendar item… but it’s the calendar that provides the reminder. TaskPaper is just lists.

This is something that I think TaskPaper can do well. The recommended format for dates in TaskPaper is ISO formatting, because those dates sort alphabetically. So if you have @due(2015-11-01) in your list. Then you can search for:

@due < "2015-11-11"

And get a list of all overdue items. That’s the core of the system, but I’ll be doing a number of things to make this work better soon including:

  • Adding some sort of smart folder system so that you can just click on an item in the sidebar to set the filter instead of having to type it out.

  • Fixing the query parser so that you don’t need to put 2015-11-11 in quotes.

  • Adding some constants to the query syntax (such as “today”) that will expand to the current date. So your searches will work over time.

  • I can also imagine adding some UI to make entering dates easier… I know right now it’s difficult to translate mentally translate (this is due next week) into as ISO style date.

If I understand correctly… I don’t think TaskPaper will do those types of changes. Automatically adding, removing, updating tags is problematic for a number of reasons. But I think combining smart folders (once implemented) with a natural language way to create ISO dates will give the same results. Once you have the due date in ISO format, you can then use smart folders to quickly find which items are overdue, due today, due next week… etc.


#5

One thing that could be possible even with the plain text file “limitations” is TaskPaper just showing a due/overdue count or even a list. I’d love to have a toolbar button (that has a keyboard shortcut) that works just like the “Projects” button, but shows due and/or overdue items. Or three groups of overdue, due and due soon tasks; when clicking they could be tagged with @today or something. The count could also be used on the icon. Would something like this be in scope?


#6

Just a note that TaskPaperRuby can do that.

doc = TaskPaperDocument.open("~/Desktop/test.taskpaper")
puts doc.due_today

The code above will output all items from the given file that either have a “today” tag, or have a “due” tag whose date is before midnight tonight. There are many more advanced things you can do too, by filtering doc.all_tasks_not_done etc.


#7

I think you could create a Due/Overdue “view” with a saved search?


#8

You can try these saved searches:

Today @search(\(\(@today or @due<=[d]today\) and not @done\))
Due soon @search(\(@due>[d]today and @due<[d]+5 day and not @done\))
Overdue @search(\(@due<[d]today and not @done\))
  • Today filters items tagged with @today or @due(some date) where “some date” is less than or equals today.
  • Due soon filters items tagged with @due(some date) where “some date” is due in the next 5 days.
  • Overdue filters items tagged with @due(some date) where “some date” is less than today.

And a note I should add as the author of this thread:

The development of Taskpaper since the original post changed the scenario I was talking about. I paid for the Preview version and I have no regrets. Jesse has been working hard improving the application and supporting its users. The saved searches and the date parser he implemented solved the main issues I mentioned above. And embracing Taskpaper I discovered I was asking for things that actually I don’t need. For now, I’m really satisfied with Taskpaper for my task management needs.


#9

Thanks all; yes, the saved searches come very close to what I’ve described, works for me! Mattt’s Ruby script is also very useful!