Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Repeating tasks #34

Open
revjtanton opened this issue Jan 14, 2017 · 149 comments · May be fixed by #2318
Open

[Feature Request] Repeating tasks #34

revjtanton opened this issue Jan 14, 2017 · 149 comments · May be fixed by #2318

Comments

@revjtanton
Copy link

Repeating tasks, like calendar items, would be a really useful feature. Right now I'm putting repeating tasks in the calendar (stuff like taking out the trash weekly) but really that'd be better as a repeating task in this app.

I'm not very familiar with the Nextcloud platform, but it looks pretty straight forward. I will fork this repo and try my hand at adding this feature myself. Between my unfamiliarity with the platform, and other projects, I may not ever get it done though. I'm posting the idea here in hopes that someone else who is more knowledgable about this project take up this cause.

@revjtanton revjtanton changed the title Repeating tasks [Feature Request] Repeating tasks Jan 24, 2017
@jurgenhaas
Copy link

I second that, recurring tasks would be really useful because I could then replace my GTD tool and bring everything into NextCloud tasks,

@revjtanton
Copy link
Author

revjtanton commented Feb 2, 2017

I've looked at doing this myself a little bit, and I think I have an idea on how this could function in-line with current Tasks functionality.

Currently a Task can span many days or months. The task has a progress bar. This is not similar to other task programs like Todoist or others where a task is simply due on a date, or recurring.

To create a repeating option for Nextcloud Tasks I suggest it act as a reminder for a task in progress. So you set your task start date/end date, then under a repeating or reminders tab (just like a calendar item) you set how you will be reminded (pop-up, email, etc) and then the interval (every 1 day, 1 month, etc--this is where it is different than Calendar and is a combination of the reminder and recurring tabs).

I'm not sure how this would work with third party items like DAVdroid/Tasks on Android (for example), but I think this type of recurring reminder would be complementary to the way Tasks is currently implemented in Nextcloud.

@Perelandra0x309
Copy link

+1 for repeating tasks

@ddanielww
Copy link

I would also like this feature

@xpilgrim
Copy link

me also ;-)

@schnups
Copy link

schnups commented May 2, 2017

yes, this would be awesome

@durchflieger
Copy link

I like it too

@tschiu
Copy link

tschiu commented May 28, 2017

This would be very helpful.
Maybe a quick method would be to put a database table in place for repeating task info, then install a cron job to read that table and create the new entries in the app database table?

@raimund-schluessler raimund-schluessler changed the title [Feature Request] Repeating tasks Repeating tasks Jul 22, 2017
@rnolty

This comment has been minimized.

@ghost

This comment has been minimized.

@Trollwut
Copy link

Trollwut commented Sep 6, 2017

Hello! Are there any plans on implementing this feature? A deadline?

Love the whole software and this is the only feature that keeps me using another app for managing my shit. :)

@SeaDude
Copy link

SeaDude commented Oct 20, 2017

I would love to see this feature as well. This would make things much easier for my family to track our activities. I'm willing to give $20 toward this feature if it would help.

@Trollwut
Copy link

Trollwut commented Oct 20, 2017

@SeaDude at Bountysource you can pay a bounty for specific issues, so that developers get paid if they solve them.

Haven't used that platform for specific bounties (just to donate devs in general) and don't know if there's an open issues for repeating tasks. But I guess that would be where those 20 bucks could be heading to. :)
https://www.bountysource.com/teams/nextcloud/issues

@rsudev
Copy link

rsudev commented Dec 20, 2017

An implementation of recurring tasks I had used before (in another app) just spawned the next occurrence, if the current one was marked as done. Currently I do this in a more manual fashion by just moving the entry to the next occurrence instead of recording it as done.
Not sure if the implementation suggestion above provides the same level of information (see the next occurrence as a due entry in the task list).
Good interworking with clients (DAVdroid/Tasks and Thunderbird/Tasks in my case) is of course quite crucial...
And of course a big thanks for providing this app in the first place!

@ghost
Copy link

ghost commented Feb 20, 2018

I am also in favor of repeating tasks. I wanted to add a few more thoughts.

Suppose I schedule a repeating task for every Monday. On Monday, when I look at my "Today" tasks, it should appear. If I mark it off as complete, it should disappear until next Monday, when it should reappear. I suspect there's wide consensus on that point.

If I don't do it on Monday, however, to my mind it's still outstanding, so on Tuesday it should still appear as an (over-)due task. There may be a few cases where people will want it to just disappear (e.g. if you didn't take out the garbage on Monday, there's no point in doing it on Tuesday), but those are probably few enough that just checking them off as done is sufficient. Perhaps an option is needed there, but I think it's probably low priority.

For tasks that are completed late, there's the question of when to reschedule them. In many cases, if it is scheduled for Monday, it should be rescheduled for next Monday regardless of when it has been completed. However, there are other cases where the interval is more important then the start date. Suppose I want to change the oil in my car every three months. I set up a task to start on January 1 and repeat every 3 months. Come April, though, I'm out of town and don't change the oil until April 15th. Some people will think the next oil change should be June 1, but others will want June 15 (because that's when the oil is 3 months old). Other scheduling apps handle this by allowing rescheduling to be on a date (1st of the month every 3rd months) or on an interval (every 3 months).

Anything that can be done for repeating tasks would be wonderful. The above is just to help raise the issues a developer may want to consider.
If I complete the task on Tuesday, it should disappear until

@DJCrashdummy
Copy link

just a hint if some of you didn't know:
(i had problems importing an calendar with recurring tasks and alarms as you can see in nextcloud/calendar#777, but) syncing recurring tasks, ticking and modifying them in a client seem to work fine... but it's really a pity, that only the first task is displayed in nextcloud-tasks. - the only way for now is to don't tick these "master", because this will tick all it's "subtasks" in your clients.
...and to be on the safe side i also don't edit them within nextcloud to don't mess things up. 😞

@raimund-schluessler raimund-schluessler changed the title Repeating tasks [Feature Request] Repeating tasks Jun 19, 2018
@Dr-Cool
Copy link

Dr-Cool commented Jun 30, 2018

Just posted a $10 bounty at Bountysource for this feature. Will accept the claim if implementation of repeating tasks is compatible with Tasks (Astrid To-Do List Clone).

@SkylightXD

This comment has been minimized.

@randyheydon
Copy link

@MartinConsultingServicesInc I've been using etm up until now, and it handles what you describe in a simple way. Repeating tasks can have an "overdue" rule to select desired behaviour. It defaults to "keep", or can be set to "skip" or "restart". "Keep" has overdue tasks stay until complete, and future repetitions are not affected; "skip" has overdue tasks disappear, and future repetitions are not affected (like your garbage example); and "restart" has overdue tasks stay until complete, and further repetitions are scheduled based on the completion date (like your oil change example).

In my experience, these three options are sufficient to cover most any case I've encountered, and might be good inspiration for repeating tasks in Nextcloud.

@995190

This comment has been minimized.

@crazybadger
Copy link

I was just about to add a feature request for this until I found this! Only just started playing with this in Nextcloud, but so far it looks really good. This was the first thing I found to be missing, as a long time OmniFocus user.

@mrstegeman
Copy link

This is actually already supported by the server. If you manage your task list with an external app, such as the Tasks app in macOS or Evolution on Linux, you can manage recurrence. There's just no way to do it through Nextcloud's UI.

@crazybadger
Copy link

What's the Tasks app in macOS?

@bpmartin20
Copy link

bpmartin20 commented Feb 28, 2023 via email

@meichthys
Copy link

meichthys commented Feb 28, 2023

@bpmartin20 Bounties used to be done via Bountysource, but no longer. AFAIK there has been no official Nextcloud statement on where to issue bounties.

There is however a 'freelancing' section in the forum that may be our best location for such a 'bounty'.

@bernhard1701
Copy link

I also would love to have the recurring tasks feature

@WebworkrNet
Copy link

This missing, in my eyes, essential function is currently preventing me from switching to Nextcloud Tasks. :-(

@meichthys
Copy link

meichthys commented Apr 8, 2023

Also, as a warning, don't try to interact with repeating tasks via Nextcloud tasks or you may notice unintended side effects like the task being deleted, duplicated, or not changed.

Its best to use a different client instead like tasks.org, or thunderbird to work with repeating tasks.

@AbelLykens
Copy link

I can recommend jtx for android, but still would like native support. Too bad there are no bounties anymore.

@meichthys
Copy link

meichthys commented May 10, 2023

I can recommend jtx for android, but still would like native support. Too bad there are no bounties anymore.

Tasks.org or any client that supports caldav should also work with the Nextcloud backend. The Nextcloud Tasks frontend client is the issue here.

@AbelLykens
Copy link

AbelLykens commented May 11, 2023

Correct. Some more background:
When you set up a recurring task (for example in jtx), it uses the RRULE property it seems:

BEGIN:VTODO
DTSTAMP:20230510T135913Z
UID:99999999-0000-1111-2222-33333333333333
SEQUENCE:12
CREATED:20230510T135521Z
LAST-MODIFIED:20230510T135840Z
SUMMARY:Water the plants
CATEGORIES:House
DTSTART:20230512T070000
RRULE:FREQ=DAILY;COUNT=-1;INTERVAL=7
PRIORITY:0
DUE:20230513T140000
END:VTODO

These recursion properties (RRULE, EXDATE et cetera) are properly stored by the dav backend of nextcloud, so that's good.
As @meichthys indicates, the frontend is missing features here. Which is correct: if I check-complete a task in the frontend, it completes all the tasks in the series (because the front end does not understand recursion).

Implementing this will not be easy, I can think of a lot of exceptions, UI stuff you'd need to implement. But it would be appreciated a lot.

RRULE is described in RFC5545.

@bpmartin20
Copy link

Clearly we'd all like the UI to handle reoccurring tasks, and clearly this is difficult. As an interim step to limit damage, would it be easier to tell the UI to reschedule a task with an RRULE, instead of deleting it as it does now? This wouldn't allow a person to enter a reoccurring task on the UI or edit the recurrence (yet - that's the hard part). It would, however, keep the UI from damaging a task with an RRULE, and allow an individual to mark an occurrence of a task as complete through the UI. I think the damage mitigation particularly would be a big step forward.

@meichthys
Copy link

@bpmartin20 I've filed a separate issue for the destructive nature of completing a recurring task via the webUI: #2276

@meichthys
Copy link

meichthys commented Jun 1, 2023

@raimund-schluessler @AbelLykens Since interacting with any recurring tasks removes them, how difficult do you think it would be to just ignore any tasks that have a RRULE? Until full recurring tasks is implemented, it seems like this would be the safest way to prevent tasks from being destroyed. Currently I cannot use the tasks app because it's too easy to destroy my recurring tasks. If the recurring tasks were ignored, i could at least safely interact with the remaining "one-off" tasks.

I'm not good with javascript, but could we add something to tasks.js: to filter out recurring tasks? Something like this 'pythonized' pseudo code:

	getTasksByCalendarId: (state, getters, rootState) =>
		/**
		 * @param {string} calendarId The Id of the calendar in question
		 * @return {Array<Task>} The tasks
		 */
		(calendarId) => {
			const calendar = getters.getCalendarById(calendarId)
			if (calendar) {
			        /* Start pseudo code <-------------
			        **tasks = []
                                for each task in calendar:
                                        if not task.hasRRULE:
                                                tasks.append(task)
				return tasks
                                */ End pseudo code <-----------------
			}
		},

@sunkup
Copy link

sunkup commented Jun 11, 2023

Miss this feature too. Completely new to nextcloud app development, but I will play around a bit. Maybe something useful comes out of it.

@meichthys
Copy link

@sunkup, It's really great to see someone putting some code out there to move this long standing (and destructive) issue forward!
If anyone wants to support you on your valiant endeavor, is there a way we can support you financially, or would it be helpful to donate to https://github.com/bitfireAT instead?

@sunkup
Copy link

sunkup commented Aug 13, 2023

@meichthys That's very kind of you, but money is not an issue. No need to donate. I am doing this for fun and because I need the feature myself. The limiting factor is - as so often - time. I took a bigger holiday break, but as things return to everyday life I hope to be able to work a few hours per week on this again.

As of right now, the core functionlity stands, but creating the sidebar UI properly is much more work than I anticipated (even when re-using code from nextcloud/calendar).

About helping out: Once it's ready and I wrote some unit tests, I would love to have a few people test it thoroughly! Since this is my first time working on a nextcloud app, it is very likely there will be bugs which need be addressed before merging.

@sunkup sunkup linked a pull request Aug 17, 2023 that will close this issue
@raimund-schluessler raimund-schluessler linked a pull request Aug 17, 2023 that will close this issue
@raimund-schluessler raimund-schluessler modified the milestones: 0.16.0, 0.17.0 Oct 7, 2023
@raimund-schluessler raimund-schluessler linked a pull request Jan 4, 2024 that will close this issue
@meichthys
Copy link

I don't intend to rush things, but @sunkup do you think there is any chance this could land in v0.16?
Thanks again for your work on this!

@llzzrrdd

This comment has been minimized.

@sunkup
Copy link

sunkup commented Jan 8, 2024

I don't intend to rush things, but @sunkup do you think there is any chance this could land in v0.16? Thanks again for your work on this!

No, I don't think so. My priorities lie elsewhere in life right now. I really just work on this sporadically. While I will continue to work on this, I can give no ETA whatsoever.

On that note - I don't mind someone else taking over or helping me out where possible :)

@ghost
Copy link

ghost commented Jan 8, 2024

No, I don't think so. My priorities lie elsewhere in life right now.

No problem focusing on what's important! I'm no coder (just a data analyst), but like I said before; I'm happy to donate funds if it helps motivate progress at all.

@meichthys
Copy link

meichthys commented Jan 8, 2024

No problem whatsoever. Thanks for following up! I would help, but I've only ever dealt with Python 🐍

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

Successfully merging a pull request may close this issue.