I think there may be a weird problem with the TaskPaper parsing when dealing with large projects. I’m running build 259670, which seems to be the latest, and when I try to round-trip a project out to TaskPaper and back — even if I don’t make any modifications — I’m ending up with a bunch of the tasks being duplicate in the Inbox.
For example, I was using a single action list of household chores just to test the TaskPaper aspects, and everything landed in Editorial in TaskPaper format without any problems. A total of 152 tasks, of which 122 have been completed. Everything looks fine in the TaskPaper file as far as I can tell, but when I re-import that same project back into OmniFocus (with only the name of the project changed), either using the Editorial workflow or simply by pasting it in, I get an additional 102 tasks from that project duplicated in my INBOX, with all of the properties intact except for the Project.
The closest thing I can see to a pattern is that the duplication may be a result of the way it’s parsing tasks of the same name. For example, a quick run of the TaskPaper file through sed/uniq to filter on just the task name reveals about 45 unique lines out of the 152 tasks, and a couple of counts of the results I’m seeing in the INBOX would seem to suggest that what OmniFocus is doing is taking all of the tasks in a same-named series and duplicating every task except the first into the INBOX.
For example, if I paste the following TaskPaper snippet into OmniFocus, I’ll end up with the correct project in place wherever I paste it, but I’ll also get the last three tasks duplicated in the INBOX, with all of the correct properties in place except for completed status and project.
test Household: @parallel(true) @context(Home)
- Task @flagged @context(Home : Arriving Home) @due(2016-04-07 17:00) @defer(2016-04-07 08:00) @repeat-method(fixed) @repeat-rule(FREQ=WEEKLY) @done(2016-04-07 20:09)
- Task @flagged @context(Home : Arriving Home) @due(2016-04-14 17:00) @defer(2016-04-14 08:00) @repeat-method(fixed) @repeat-rule(FREQ=WEEKLY) @done(2016-04-14 16:25)
- Task @flagged @context(Home : Arriving Home) @due(2016-04-21 17:00) @defer(2016-04-21 08:00) @repeat-method(fixed) @repeat-rule(FREQ=WEEKLY) @done(2016-04-21 18:22)
- Task @flagged @context(Home : Arriving Home) @due(2016-04-28 17:00) @defer(2016-04-28 08:00) @repeat-method(fixed) @repeat-rule(FREQ=WEEKLY)
This behaviour only seems to occur if at least one of the items is marked as @done in the TaskPaper source document, and the logic currently seems to be to skip the first @done item, and then grab as many items after that as there are items marked @done. So if the first items 1-5 of 8 are marked as @done, OmniFocus will duplicate items 2-6 in the INBOX. Interestingly, however, in that scenario, OmniFocus will use the names of tasks 1-5, but the dates of tasks 2-6. In other words, given a TaskPaper document like this:
test project: @parallel(true) @context(Home)
- Task 1 @flagged @context(Home : Arriving Home) @due(2016-03-10 17:00) @defer(2016-03-10 08:00) @repeat-method(fixed) @repeat-rule(FREQ=WEEKLY) @done(2016-03-10 19:00)
- Task 2 @flagged @context(Home : Arriving Home) @due(2016-03-17 17:00) @defer(2016-03-17 08:00) @repeat-method(fixed) @repeat-rule(FREQ=WEEKLY) @done(2016-03-17 19:00)
- Task 3 @context(Home : Arriving Home) @due(2016-03-24 17:00) @defer(2016-03-24 08:00) @repeat-method(fixed) @repeat-rule(FREQ=DAILY) @done(2016-03-24 19:00)
- Task 4 @flagged @context(Home) @due(2016-03-31 17:00) @defer(2016-03-31 08:00) @repeat-method(fixed) @repeat-rule(FREQ=WEEKLY) @done(2016-03-31 19:00)
- Task 5 @flagged @context(Home : Arriving Home) @due(2016-04-07 17:00) @defer(2016-04-07 08:00) @repeat-method(fixed) @repeat-rule(FREQ=WEEKLY) @done(2016-04-07 19:00)
- Task 6 @flagged @context(Home : Arriving Home) @due(2016-04-14 17:00) @defer(2016-04-14 08:00) @repeat-method(fixed) @repeat-rule(FREQ=WEEKLY)
- Task 7 @flagged @context(Home : Arriving Home) @due(2016-04-21 17:00) @defer(2016-04-21 08:00) @repeat-method(fixed) @repeat-rule(FREQ=WEEKLY)
- Task 8 @flagged @context(Home : Arriving Home) @due(2016-04-28 17:00) @defer(2016-04-28 08:00) @repeat-method(fixed) @repeat-rule(FREQ=WEEKLY)
The INBOX will contain tasks named Task 1, Task 2, Task 3, Task 4, Task 5, but the dates will be from Task 2, Task 3, Task 4, Task 5, and Task 6, respectively. Other properties such as flagged status, repeat interval, and context appear to match the task names, however (e.g., Task 3 is unfledged and has a daily repeat interval, but the defer date and due dates are set to the dates from Task 4.
I recognize that this is something of an edge case — I’m not sure there’s a need to import completed tasks most of the time, but I can see if happening if somebody is trying to round-trip a project to TaskPaper to make modifications and send it back into OmniFocus “as-is” — in my case I was kind of taken aback to suddenly have over 100 items in my INBOX, all of which were overdue (as they were previously completed items :) ).