Repeatable tasks appear to just have start/due dates reset, instead of creating a clone

The way it is currently implemented is that it only updates the dates and then marks the task as undone.

We could implement this so that instead of moving the dates of the current task to the future when marking it as done, it would duplicate the task and move the dates of that new, duplicated task to the future instead while not duplicating any comments.

I’m not sure how we could create a bunch of tasks for the future. I think there should be only one undone repeating task.

I’m not sure either how to prevent some task that you need to do very often (e.g. every day) from spamming the list to a point where there are hundreds of done tasks from earlier days.

If your main use case is a habit tracker, we might get away with recording when a task was marked as done and then use that data to show some statistics about how often this task or any task in a list was alrady done.

1 Like

I like the idea of recording history for certain recurring tasks, I think it would suit my needs.

The other thing that is confusing is that it instantly adds the task back when I complete it which means the list always looks like I need to do 5 things no matter what, and I have to go into the task to see if I actually did it. The filters to show only tasks with start date: today does not seem to work for me. (plus its nice to have the dopamine rush of crossing something off the list and having one less thing to look at, if even for the day)

Maybe another compromise would be the ability to create task cluster “templates”?

ie, after I set a cluster of tasks. I can one-click set up 5 new tasks that will automatically have a start date of today + x and a due date of today + y (in my case of dailies, x and y would be zero) Maybe via the API I can already do with with a giant copy paste block?

Yes, I also want to use the software for recurring tasks.
The way it is implemented now, I don’t see which tasks i’ve done and which I didn’t.
An idea I got was to show the tasks I completed in this timeframe (e.g. today) in another way.

Also, I wanted to use the feature to keep track of birthdays (recurring each year on a specific date) seems to be impossible for me (in the unstable version, too).

Edit: When keeping track of the birthdays, it would be nice to hide the “task” (birthday) in the “Current tasks” overview.

I’m a bit confused, if I create a task, set it to repeat 1h, then mark it done…should I not come back after 61 minutes and expect the task should be no longer marked as done? This is not the case…

See below, was marked done 4 days ago but has a 1h repeat

Your task needs to have some dates (due date, reminders or start/end dates). If you mark the task as done it will increase all dates by the repeating schedule you set and then make it undone again.

Why though?

Fair enough if the answer is “because thats how it was designed” but a function to repeat every “x” should be date agnostic (or perhaps some documentation around this might clear up confusion).


What date would it repeat if there is no date set on the task?

You can still set it to a repeating schedule without any dates, it just makes the task essentially uncompletable.

I guess I’m expecting this to work differently than others then, but if I set up a “daily reoccurring task” I’d expect at 12:00AM every day, if the task is marked “done”, set it to “undone”. Simple as that. No need for due dates, reminders, start/end dates.

I’m struggling to understand the current functionality (I know others have it working so it’s just me), but for example, this does not work:

I set this to repeat daily and it is still marked as done today.

For me, the definition of “do this daily” is something that happens every day. Not something that happens on a 24 hour cycle at a specific time. Like I said, as a concept, daily is date agnostic. But I appreciate this is just how my brain works, not others :slight_smile:


1 Like

That should work. What are the exact steps you took to get to the state in the screenshot? Can you reproduce it on try?

ah yes, I get that :slight_smile: We had discussions similar to this about a “do this at x” date and due dates which would be “some time on this day”. Maybe there will be changes in the future about this.

I would like to add my voice to tim1210’s expected behavior. Resetting a few dates seems to be a hacky way of making true recurring tasks.

So how would you say this should work?

  • On some schedule when a task should repeat (daily, weekly, whatever) the repeating task would duplicate itself
    • Would it duplicate the last duplicated task? Or the original one?
    • Should these duplicates be independent of the original?
    • If there’s a task repeating daily and you don’t do it a few days, there would be multiple overdue tasks.
  • On a schedule it would mark itself as undone but stay done for a longer period as opposed to now where it immediately is undone again

Hello! First off, thank you so much for your hard work!

I would say you are on the right track. For repeating tasks, I would imagine there would be UI for this, separate of the tasks. You could create a “Repeating Task” section, and that would house the ‘jobs’ if you will of what will be created at what interval. This way, your lists and tasks are not cluttered, and you aren’t bothered by a setting.

Additionally, you should have the functionality I would think, of a Parent Child, across the platform. Where you can attach childs to a Parent. Does that make sense?

Would it be possible to implement both and let user decide how they want it to work? Maybe with some kind of dropdown menu option.

Also about not doing the task for a few recurring periods, what about instead of making duplicates of tasks on every recurring period, have the ability to duplicate the task only after it was marked as “done” and set next due date from todays perspective and not from the original task due?
Because there might be multiple types of recurring tasks. One could be something like “write weekly report”, which you must do every week, even if you skipped one week, you still have do it later for both weeks. And another type of task might be something like “clean the desk once in a week”, when even if you skip one week, you don’t need to do it twice to make it up.

1 Like

My personal preference would be to have the repeating task generate a new one once the existing one has been marked as completed.
I think it would be good to have multiple options on how this would work:

  • Option 1: Create the new task strictly based on the recurring schedule even if the completed task is so overdue that even the new one is overdue.
  • Option 2: Create the new task loosely based on the recurring schedule so that the next instance of the generated task is always today or in the future.
  • Option 3: Create the new task relative to the completion of the previous one. So for example a task repeated every 7 days that was completed 2 days late would generate the next task 7 days from the completion date (which is 9 days from the original due date).

I think it should duplicate the most recent completed one so that the task can be updated as needed throughout iterations (for example if I take a multi-vitamin every day and several months in I want to add another supplement I could just update the current task and all following generated tasks would reflect that).
I think having the duplicated task independent would be best so that “historic” information doesn’t get modified unintentionally.

Regarding your previous concern “I’m not sure either how to prevent some task that you need to do very often (e.g. every day) from spamming the list to a point where there are hundreds of done tasks from earlier days.”
This may get overly complicated, but having a per task retention period setting may be helpful for this.

Thanks for all of your suggestions!

TBH I think having a seperate UI for this is more confusing than a setting or another option on the task detail page. I fear this would become too complicated for new users.

Like the already existing subtask relation between tasks?

Per Task or globally? I think this makes more sense on a per-user basis but then it becomes more complicated when we talk about shared repeating tasks.

Something like this (probably not exactly) can already be done with the “repeat from current date” option.

This is possible with the “repeat from current date” option.

My idea so far was something like this but create the new task exactly in between the two repetitions. This would allow for all kinds of repeating schedules and be a good enough approximation. What do you think? How are other tools handling this?

Only the following or also the ones in the past? What about comments?

You mean where a task gets deleted after that period?

I’m coming here from this other thread: Temporary marking as done on recurring tasks

Just wanted to throw in my two cents.

I personally don’t see the need to have a recurring task create a duplicate of itself. That would cause a lot of clutter by having duplicate tasks in the completed list.

Like the user in that other thread though, I would really like to see an option for a recurring task marked as Done to stay marked as Done. For example, if I have a bunch of daily tasks that have a due date of today, I want to be able to mark them as done to remove them from the Upcoming view. I don’t need to immediately see that task back in the Upcoming view because I’ve already completed it.

It would make more sense to me to have recurring tasks get reset at midnight instead of immediately. If there was an option for “reset immediately” or “reset at set time” I think that would be ideal. Similar to how you have the “Repeat Mode” dropdown on the task, there could be a “Reset Mode” option, or something like that, with a similar dropdown.

1 Like

Do you think this should be a user setting or per task? Or just for everyone without an option to configure it? I think it could get too confusing either way, might be better to make it the default behaviour for everyone.

I would obviously love for this to be the default behavior, not sure about others. I think it could be a little troublesome to make it a user setting because, as you mentioned for something else, that could cause problems with shared tasks or shared lists. If users could set different behavior, I feel like you would also need to have the option to set the behavior for recurring tasks at the List or even Namespace level. You wouldn’t want different people with different settings to create tasks in a list and then have different behaviors for the tasks that are in the same shared list. That might be a nice long term goal, but I imagine that would be quite a bit of work.

I think in general it would be better to have the default behavior be resetting the recurring tasks at midnight, because there’s currently no way to replicate that use case with how the app currently functions. If people want the tasks to immediately reappear in the list with a new due date, they would at least be able to mimic that by just updating the due date. To make it easier for the people who want that functionality, you could even add a button for “Reset recurring due date” or something like that.

1 Like

That sounds reasonable.

It would make more sense to me to have recurring tasks get reset at midnight instead of immediately.

I see this more as a view setting. For example you could say that you like to show “all tasks”, “active tasks” or only “done tasks”.

This is from TodoMVC

Additionally to this we’re just merging a pull request that makes tasks in general not disappear immediately when you mark them as done.

Related: some visual inspiration how to select repeatable tasks