NotePlan has a simple built-in repeat mechanism, which allows for @repeat(1/n). That wasn't flexible enough for my purposes, so I created my own extension to this mechanism.
This plugin allows repeats every x days, weeks, months, quarters or years. It does the work of creating the next task using information from completed tasks that include a @repeat(interval), on the appropriate future date. For example when this task:
* [ ] put out recycling bin @repeat(2w)
is completed, and then /rpt run, the task then becomes:
* [x] put out recycling bin @repeat(2w) @done(2021-07-01)
* [ ] put out recycling bin @repeat(2w) >2021-07-15
and the task will show up again 2 weeks later.
It runs on the currently open note, by typing /generate repeats (or its alias /rpt) in the command bar.
- When run on a project note, it creates the new repeated task straight after the completed task.
- When run on a daily note, it creates the new repeated task on the date of the new repeat.
There is no automatic way to trigger plugins in NotePlan at the moment, so it needs to be run each time one of these @repeat(interval) tasks is completed.
The time intervals have two parts: number and then a character. The character is one of:
b: business days (ignore weekends, but doesn't ignore public holidays, as they're different for each country.)d: daysw: weeksm: monthsq: quartersy: years.
When the number starts with a + (e.g. +1m) it will duplicate the task for 1 month after the date the task was completed.
When the number doesn't start with a + (e.g. 1m) it will duplicate the task for 1 month after the date the task was last due. This is found from a >yyyy-mm-dd scheduled date. If this can't be determined, then it defaults to the first option.
For this feature to work, you need to have the 'Append Completion Date' NotePlan setting turned on in the Preferences (and not to mind the time portion of the @done(...) tag being removed, as a sign that the line has been processed).
Please see the CHANGELOG.