Recuring Tasks
Task recurrence patterns are not part of the todo.txt format spec! SwiftoDo supports them anyway, using the same standard other todo.txt apps use.
What is a recurring task?
A recurring task is something you have to do regularly, like every week or every month. In SwiftoDo, a recurring task is defined as a task that has a properly formed recurrence tag, such as rec:1w
for a task that recurs weekly. Recurring tasks should also have due dates; if you omit the due date, SwiftoDo assumes the task was due on the day you completed it.
Marking a recurring task as complete will (1) complete that task, and (2) create a new task based on the recurrence pattern defined. The newly created task will be a copy of the completed task, with an updated creation date, due date, and threshold date. The due date and thresehold date assigned to the newly created task are calculated based on the recurrence pattern defined in the rec:
tag.
How do I create a recurring task?
To create a recurring task, add a rec:
tag. You can use the rec:
button in SwiftoDo’s task editor to easily configure and add a recurrence pattern.
The rec:
tag value (what goes after the colon) must conform the following pattern:
- It always contains a number, for the number of days, weeks, etc.
- It can, but does not have to, start with a
+
, to denote a strict recurrence pattern (which is described in more detail below). - It always ends with a letter, which stands for the date part (week, month, etc.) to use for recurrence.
Letter codes for day parts
Letter | Date Part |
---|---|
d |
days (calendar days) |
b |
business days (work days or non-weekend days) |
w |
weeks |
m |
months |
y |
years |
“Normal” vs. “strict” recurrence?
Normal recurrence means that the adjusted due date of the new task is calculated relative to the completion date of the task being marked complete. In SwiftoDo, marking a task complete always uses today’s date as the completion date.
empty trash can due:2021-04-19 rec:1d
). However, during the week your trash can does not fill up and you don’t empty it (and therefore don’t complete the task) until Friday (x 2021-04-23 empty trash can due:2021-04-19 rec:1d
). In this case, while you did not empty your trash every day like you planned to, once you did empty it the task is done until the next day; you don’t have to empty it once for every day that you didn’t do it, because that makes no sense. In this example, SwiftoDo would create the next recurrence of the task so that it is due tomorrow (one day after the completion date of the original task): empty trash can due:2021-04-24 rec:1d
Strict recurrence means that the adjusted due date of the new task is calculated relative to the due date of the task being marked complete.
rec:+1w
), or on the first day of every month (rec:+1m
). An example might be sending a weekly status report to your boss on every Monday (send weekly status report due:2021-04-19 rec:+1w
). When you complete this task, even if you complete it past its due date, SwiftoDo would create the next recurrence of the task so that it is due the following Monday (one week after the due date of the original task): send weekly status report due:2021-04-26 rec:+1w
.
If the task has no due date, today’s date is assumed to be the due date. If the task has a threshold date, a new threshold date will be calculated based on the number of days between the due date and the threshold date of the task being marked complete.
+
before the number in the recurrence pattern.
Examples of recurrence patterns
Recurrence Pattern | Meaning |
---|---|
rec:1d |
repeat this task every day; the next task’s due date will be one day after this task’s completion date |
rec:+10b |
repeat this task every ten business days; the next task’s due date will be ten business days after this task’s due date |
rec:+2w |
2 weeks, strict recurrence |
When are new recurring tasks created?
New recurring tasks are created only when a recurring task is marked complete in SwiftoDo. SwiftoDo does not create tasks in the background, on launch, or while refreshing the task list.