Skip to content

Support for recurring tasks#3021

Merged
raimund-schluessler merged 1 commit into
nextcloud:mainfrom
schulm:recurring-tasks
Mar 8, 2026
Merged

Support for recurring tasks#3021
raimund-schluessler merged 1 commit into
nextcloud:mainfrom
schulm:recurring-tasks

Conversation

@schulm

@schulm schulm commented Jan 9, 2026

Copy link
Copy Markdown
Contributor

Fixes #34

@raimund-schluessler

Copy link
Copy Markdown
Member

Thanks a lot. This seems to be a new implementation, not based on #2318, right?

@schulm

schulm commented Jan 9, 2026

Copy link
Copy Markdown
Contributor Author

@raimund-schluessler Wasn't aware of #2318, its a new implementation, will add some a proper description later on, about how different tools (Thunderbird, Apple Calendar) are handling the recurring tasks, how this is done here. The markup part is mostly copied from the calendar.

@schulm schulm changed the title First working version of recurring tasks Support for recurring tasks Jan 9, 2026
@asavageiv

Copy link
Copy Markdown
Contributor

Just loaded this manually and it seems to work on first impression. I'll let it run for a while to see if I find any issues. Thank you so so so much!

@tjbp

tjbp commented Jan 21, 2026

Copy link
Copy Markdown

Thanks, this has worked well in testing. However I get an error from the ical lib when End is On date, and when End is After the max occurrences appear to be ignored. Am happy to work on patches if useful.

@schulm

schulm commented Jan 21, 2026

Copy link
Copy Markdown
Contributor Author

@tjbp Can you elaborate on the error?

@tjbp

tjbp commented Jan 21, 2026

Copy link
Copy Markdown

@schulm error with stack trace.

@devn1x

devn1x commented Jan 21, 2026

Copy link
Copy Markdown

I also have a little bit of feedback regarding the selection dialog for reccurrence, if you are interested.

It would be pretty handy to have different parameters, depending on which type of reccurance you select. As inspiration I have also included examples from the Tasks.org Android app, which I personally find extraordinarily intuitive.

  • Daily: I think this can stay as it is. It makes sense to just select the interval of days. Heres a screenshot for comparison:
image
  • Weekly: I think it might make sense to allow the user to additionally select the specific weekdays, on which the Task should reoccur.
image
  • Monthly: Maybe allow the user to select the day of the month this should reoccur or (if its not too complex) even something like every 3rd wednesday of the month.
image
  • Yearly: Nothing to add here as well.

This is my opinion at least, but I am open to discuss this further. And of course, thanks for working on this!

@schulm

schulm commented Jan 22, 2026

Copy link
Copy Markdown
Contributor Author

@devn1x @tjbp @asavageiv
I have fixed some issues with the number of occurence and also aligned the UI to the one of the calendar. Happy to get some feedback

@provokateurin

Copy link
Copy Markdown
Member

@schulm you should not add the translations yourself, the translation community will do this automatically once this PR is merged. Also I assume that they are AI generated, which can often lead to wrong translations due to missing context.

Comment thread src/components/Repeat/RepeatForkWarning.vue Outdated
@raimund-schluessler

Copy link
Copy Markdown
Member

@schulm you should not add the translations yourself, the translation community will do this automatically once this PR is merged. Also I assume that they are AI generated, which can often lead to wrong translations due to missing context.

Correct, translations are handled on Transifex and synced to the repo automatically once the PR is merged.
Please just make sure they reference the correct app, so t('tasks', ... instead of t('calendar', ... (see my suggested change above).

@schulm

schulm commented Jan 22, 2026

Copy link
Copy Markdown
Contributor Author

So I just revert my changes from in l10n/? @raimund-schluessler

@raimund-schluessler

Copy link
Copy Markdown
Member

So I just revert my changes from in l10n/? @raimund-schluessler

Yes, you should drop all changes to the files in l10n. Thanks!

@schulm schulm marked this pull request as ready for review January 22, 2026 12:54
@provokateurin

Copy link
Copy Markdown
Member

BTW if this duplicates code from the calendar app, it probably makes sense to talk to the Calendar app maintainers and create a shared library both apps can use.

@devn1x

devn1x commented Jan 22, 2026

Copy link
Copy Markdown

@schulm: I looked at it locally and at first glance it looks really good. If I had to say something regarding the ui, I would only mention that the alignment between components sometimes feels a little off. E.g. (maybe you wanted to push the dropdown to a new line?):
image

Sadly, I hadn't had the time to check it functionality wise.

But you see, this is now small stuff. I think it was a really good idea to copy the design from the calendar.

@schulm

schulm commented Jan 22, 2026

Copy link
Copy Markdown
Contributor Author

@devn1x This modal is now aligned with the calendar one.

@devn1x

devn1x commented Jan 22, 2026

Copy link
Copy Markdown

Nice. That looks better. While testing I noticed, that when I select the checkbox "On the", it shifts to the right. Before:
image
And after clicking:
image

I also have question. When you select "On the" first "day" like this, isn't this redundant to "On a specific day"? Although this applies to the calendar as well.
image

@schulm

schulm commented Jan 22, 2026

Copy link
Copy Markdown
Contributor Author

@devn1x
Added some css fixes, some items like the weekday/day of month and month selectors are now having 100% width

fixed the "On the" container (also full width)

Yes its redundand, but maybe you need the option for example for "every second to last day", so it will work for month with different lengths...

@devn1x

devn1x commented Jan 22, 2026

Copy link
Copy Markdown

@schulm

Oh right, that could indeed be helpful.

Thanks. I tested again with the latest version and now it behaves like this, which is rather interesting:
screen_recording.webm

@schulm

schulm commented Jan 22, 2026

Copy link
Copy Markdown
Contributor Author

@devn1x That doesn't look like my current changes, the list of days should have full width. Maybe a browser cache issue?

image

@devn1x

devn1x commented Jan 22, 2026

Copy link
Copy Markdown

Oh sorry, you are right. Now it looks better. Thanks!

It seems there is nothing that jumps out at me right now.

@github-actions

Copy link
Copy Markdown

Hello there,
Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.

We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process.

Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6

Thank you for contributing to Nextcloud and we hope to hear from you soon!

(If you believe you should not receive this message, you can add yourself to the blocklist.)

@devn1x

devn1x commented Jan 24, 2026

Copy link
Copy Markdown

@schulm
I discovered some other probably unintended behaviour (I didn't show it in the video, but they where both shown at the start):
screen_recording.webm

Otherwise, I also had another idea for possible improvement. In my use cases, it's really helpful to identify recurring Tasks in the list view at a glance. Maybe it would make sense to add some kind of indicator in the list of tasks. Maybe like the icon that gets displayed, when the description is filled? What do you think?

@schulm

schulm commented Jan 24, 2026

Copy link
Copy Markdown
Contributor Author

@devn1x I've changed the visibility of the RecurrenceItem in the sidebar, its only visible if a task has a start date, this is also done by other task apps. Also I've added a recurring icon in the task list.

Update: there is still somehow an issue there...

@devn1x

devn1x commented Jan 28, 2026

Copy link
Copy Markdown

For now I don't know what else there could be. It would be really interesting to hear the opinion from one of the maintainers. They of course must be happy as well for it to be merged :)

@raimund-schluessler

Copy link
Copy Markdown
Member

I am definitely very happy that this has been tackeled. Thanks a lot @schulm!

I will hopefully have time to have a look at the weekend.

@schulm

schulm commented Feb 15, 2026

Copy link
Copy Markdown
Contributor Author

@raimund-schluessler Any update?

@raimund-schluessler

Copy link
Copy Markdown
Member

@schulm I had a look now. It seems to work as far as I can tell from the short time I tested it yet. Thanks a lot!

However, there are some lint errors. Most of them are cosmetic (more or less) and due to the fact that the code was copied from Calendar, which still uses vue 2 (Tasks uses vue 3). But a few lint problems are actual errors, especially the could not resolve path to module errors. Could you have a look and fix them, please?

If that is done, I would like to move forward and merge the PR. We should then test it a bit more, including an alpha release of Tasks 0.18.0.

@schulm

schulm commented Feb 16, 2026

Copy link
Copy Markdown
Contributor Author

@raimund-schluessler I've done a cleanup

@manfredu

manfredu commented Mar 5, 2026

Copy link
Copy Markdown

@schulm
Hi Martin, it looks like you need to do something here, so that the changes can be merged:
https://github.com/nextcloud/tasks/pull/3021/checks?check_run_id=63775050672

Thanks a lot for you work, looking forward to see it implemented.

Implement recurring task functionality including:
- Recurrence rule model and UI components (frequency, interval, end conditions)
- Weekly, monthly, and yearly recurrence options
- Automatic creation of next occurrence when completing a recurring task
- RecurrenceItem sidebar component showing recurrence summary
- Recurrence rule formatting filter for human-readable display
- Unit tests for recurring task logic

Fixes nextcloud#34

Signed-off-by: Martin Schulze <schulm@outlook.com>
@schulm schulm force-pushed the recurring-tasks branch from fcfa95a to 6dcff41 Compare March 6, 2026 20:47
@schulm

schulm commented Mar 6, 2026

Copy link
Copy Markdown
Contributor Author

@manfredu done

@manfredu

manfredu commented Mar 8, 2026

Copy link
Copy Markdown

@manfredu done
Thanks.
@raimund-schluessler Can this be merged now or is there anything still missing?

@raimund-schluessler

Copy link
Copy Markdown
Member

@schulm I am going to merge this now. Thank you very much for this very welcome and big contribution. As this implements a very long requested feature, I would like to test it for a while to collect feedback how it works, especially in combination with other clients. I will create an alpha release to make testing easier.

@raimund-schluessler raimund-schluessler merged commit ba241bc into nextcloud:main Mar 8, 2026
25 checks passed
@RayBB

RayBB commented Mar 8, 2026

Copy link
Copy Markdown
Contributor

@schulm you are the goat! Thank goodness for getting this through! You too @raimund-schluessler

@corbin-auriti

Copy link
Copy Markdown

Thank you so much @schulm , I'm testing and so far so good in 33.0 <3

@tflidd

tflidd commented Mar 15, 2026

Copy link
Copy Markdown

A few people were offering some money to implement this feature:
https://help.nextcloud.com/t/repeating-tasks/225106

@bpmartin20

Copy link
Copy Markdown

This is fantastic. I just checked and confirmed that this has been merged into nextcloud:main. As @corbin-auriti, a bunch of us offered rewards for this work. Looks like it adds up to something over $600 USD. I'm ready to fulfill my part.

@schulm, we need some instructions on where to send payment. I can do Paypal and Venmo immediately, and I'm open to any other legit payment platform. Whether you knew about these informal bounties or not, you brought us across the finish line, and you deserve the reward. Please, tell us how to pay off.

@schulm

schulm commented Mar 15, 2026

Copy link
Copy Markdown
Contributor Author

@bpmartin20 My Paypal is https://www.paypal.com/paypalme/schulm

@heikok88

Copy link
Copy Markdown

Hello, and thank you very much for implementing this!
Do you already know which stable release of Nextcloud or the Tasks app this change will be included in?

@schulm

schulm commented May 27, 2026

Copy link
Copy Markdown
Contributor Author

@raimund-schluessler Can we have a release?

@xX-MrN0b0dy-Xx

Copy link
Copy Markdown

I've been waiting for this since I started my self-hosting journey years ago, can't wait to try it 😍.
Thanks a lot guys!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature Request] Repeating tasks