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

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:

Cheers.

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”.

image
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

Hi! How about this: if the task has a start date, only mark it as undone when that date is reached. This way one can easily know if the task has been done or not. In my particular use case I have monthly tasks that I can only do within some period of the month, like the 13th until the 16th. The tasks always appear as undone and I can’t do them yet.
I believe this would also solve the problem for those that have daily tasks but haven’t gone to bed before midnight: just set the start date for 4am or whatever suits you.

PS: At last, a simple opensource (kanban) task manager but with decent looks! Many thanks!

My 2c on this one. I would like to see the history of when the recurring task was completed and how many times. So the option of duplication on completion sounds good to me. Another option could be to show a list of completion dates inside the task details.

Hopping in here as this is my one hangup with Vikunja - everything else works so wonderfully (incredible work, really) but the way repeating tasks are implemented is pretty jarring. I planned to use it for infrequent housework but it’s pretty difficult to see at a glance what has and hasn’t been done in a given time period with how it currently works.

This behavior has probably been described in a few other posts, but here’s my take:

Repeating tasks that are marked as complete should stay done (marked complete) until indicated by the next repeating interval - e.x.

  • Daily (default) - reset at midnight
  • Daily (from current date) - ^
  • Weekly (default) - 7 days after the start date
  • Weekly (from current date) - in 7 days from marking completion

(I’ll stop here as I’m kind of just writing what recurrence does currently, at least from my understanding).

I like Olivetree’s suggestion as well that the task should be marked un-done at the (new) start date if it has one. Otherwise mark undone one repeat interval from the due date or date of completion according to recurrence settings.

Whether the “new” task is a clone or just the old task un-marked as done, I don’t think it particularly matters. My preference is to make it a clone of the template task, which starts with the original content/settings and is modified by any edits that occur on the (at the time of the edit) currently active (latest) clone. Edit a past clone = not persisted to future tasks. Comments should not be carried forward, probably.

Re: shared lists - definitely should be a list setting. I’d imagine it’s likely that the same repeat semantic works for (nearly) all users of a shared list.

Finally,

If there’s a task repeating daily and you don’t do it a few days, there would be multiple overdue tasks.

This behavior should be an option per-task (common to all users in a shared list as well). I can see value in both letting tasks stack up and just pushing the date forward for one task, for different scenarios.

And fwiw, if I ever dust off my contributor hat I’d love to take a crack at this one :slight_smile:

1 Like

I like this.

Not sure about the cloning aspect, but maybe let’s start with the un-marking and go from there.

1 Like

Perhaps there should be a weekly clearing function for the progress bar?

just opened Self-replicating Repeating Tasks which is related and this was also requested in Temporary marking as done on recurring tasks