Repeating todos is looking for a new maintainer. If you are interested, contact @BeatLink
Overview
This plugin allows to-do's in joplin to be repeated based on the to-do alarm date. When a to-do is checked as complete, the todo alarm date is immediately reset to the next recurrence date, and the to-do is unmarked as completed.
This plugin allows to-dos to be repeated every minute, hour, day, week, month and year, based on the to-do alarm date and time. Weekly to-dos can also recur on specific weekdays (eg Mon-Fri or Sun, Sat and Wendesday, etc.) and monthly to-dos can recur on specific weekdays of the month (eg, the first Sunday, the second Friday, the last Tuesday, etc)
The plugin also stops to-dos from being repeated after a certain number of repetitions or after a specific date
Installation
Repeating Todos can be installed from within Joplin by navigating to the plugins page in the settings menu then searching for and installing "Repeating Todos"
Okay so I have some good news; I've resumed work on the plugin as I really need it myself in my personal life.
The database storage of recurrence data is more or less complete. Next will be to integrate the recurrence dialog with said database. After that, would be to implement the logic to calculate the next date a recurring to-do should be done so the system can revert the done status of a task. And finally, I will need to implement the timer/loop that does the undoing of the task at the right time.
From there on, its documenting, testing, clean-up and publishing!
So I will try to get the dialog and database working together today.
Oh also, I've moved the repo away from GitHub to GitLab. Mainly for privacy and open source reasons but also GitLab is just better to work with.
The database is now tied into the dialog for each note so now the recurrence data for each note can be seen and manipulated, with all changes saved to the database.
furthermore i went ahead and did some major refactoring, documenting and the like, but there is a lot more work to do.
Next will be to clean up the recurrence class and implement the logic for calculating the to-do reset date
Ive implemented a workaround for the checking of note changes. The plugin is now feature complete and is ready for alpha testing! I've already taken the liberty to publish it to NPM
Now all that remains is testing, code cleanup and documentation
I'm not sure but in this loop isn't await getCompletedNotes() being executed on each iteration?
export async function reviewCompletedTasks(){
for (var note of await getCompletedNotes()){ // For note in completed notes
await processRecurrence(note) // Process Note
}
setInterval(await reviewCompletedTasks, 300000) // Run loop again after 60 seconds
}
Also in this code it will create a new interval every time reviewCompletedTasks() is called and that interval will never be cleared.
Edit: Actually I don't understand what's the intent of this code? It looks like it's going into infinite recursion?