johannesjo / super-productivity

Super Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, Gitlab, GitHub and Open Project.
http://super-productivity.com
MIT License
9.17k stars 779 forks source link

[Feature] Task deadline/ due date #405

Open DuchGhast opened 4 years ago

johannesjo commented 4 years ago

Hey! Thanks for opening this up. For my own needs scheduling works just fine. But lets see, maybe others need this as well (if so please upvote the issue).

budinero commented 3 years ago

I think it is different to "Schedule task": "Deadline/Due date" is the date when the task must be finished, while "Schedule task" seems more appropriate to define the beginning of a task. Some other task software changes a label color as they get closer to the deadline (for example, red when the deadline is today)

johannesjo commented 3 years ago

You're right. The question for me is, what should happen with this information. Should it just be there just to look it up? Should there be a reminder? Should there be a special list for due tasks? Should they be integrated to the scheduled list?

ronilaukkarinen commented 3 years ago

When there are lots of tasks, this would be a handy feature. As coming from the Todoist world, the task should be in red (or have some other visible "negative" indicator like a triangle warning icon or something) if due date passed or even better, remind that the due date is coming. To see the deadline/duedate in tasks in similar manner than the estimated times now it would help tremendously prioritizing/ordering tasks or making scheduling decisions as superProductivity doesn't have priorities in tasks (which in my honest opinion usually overcomplicate todolists and are never used).

For consistency it would be great that there was something like "Due dates" list like "Scheduled" is now.

Just my two cents. :)

hsnprsd commented 3 years ago

I can help implementing this one as I need it for my own task management.

I put all my ideas in the app and once in a while I want to add due date to them so tasks won't get in the stale state without me noticing it. I want the app to remind me about the due dates of upcoming tasks (it can be configurable when to remind) and I want it to add them to my day automatically (or show me the tasks that have due date of today and let me add them to my day or snooze them for someday later). Also it would be nice to see all the tasks that don't have due dates to add due date to them.

WDYT @johannesjo?

johannesjo commented 3 years ago

Hey @hsnprsd this is a great news! Thank you very much for the offer. Makes sense to me so far. It probably makes sense to add a new section to the task side panel for that. We also need two Dialogs. One for handling adding a due date (for this you can probably use the schedule dialog as boilerplate and another one for showing a reminder for one or multiple upcoming tasks (or we could simply re-use the task reminder dialog that already exists).

ishanarora commented 3 years ago

the task should be in red ... if due date passed or even better, remind that the due date is coming.

Perhaps in the dialog for adding a due date, we could also specify the schedule date in terms of days (or duration) before the due date.

github-actions[bot] commented 2 years ago

This issue has not received any updates in 90 days. Please comment, if this still relevant!

github-actions[bot] commented 2 years ago

This issue has not received any updates in 90 days. Please comment, if this still relevant!

github-actions[bot] commented 2 years ago

This issue has not received any updates in 90 days. Please comment, if this still relevant!

baiger commented 2 years ago

How has this been going? I'd like to take this up if nobody is working on it.

johannesjo commented 2 years ago

Hi @baiger ! This is great news! Could you maybe outline your thoughts on how you'd like to implement this?

baiger commented 2 years ago

Hi @baiger ! This is great news! Could you maybe outline your thoughts on how you'd like to implement this?

My thought is simply to add a due date option to tasks and timeline view ordered by due dates (omitting all tasks without due dates). I imagine both can take advantage of existing code of scheduled reminders. Once that is done I can take a look at reminders, related settings, and other stuff.

johannesjo commented 2 years ago

@baiger makes sense to start like this. Would be great if you'd work on this!

github-actions[bot] commented 1 year ago

This issue has not received any updates in 90 days. Please comment, if this still relevant!

ishanarora commented 1 year ago

Hi @baiger ! Just checking, are you working on this?

github-actions[bot] commented 1 year ago

This issue has not received any updates in 90 days. Please comment, if this still relevant!

ishanarora commented 1 year ago

Still relevant

awesomehaze commented 11 months ago

Would love to have this feature as a student!

Jagdfalke commented 8 months ago

I really love Super Productivity. However the single feature I am missing the most is the option to set a due date. Therefore, I tried to provide a more refined specification of how Super Productivity should handle due dates:

What is a 'due date' or a 'task deadline'?

A 'due date' or 'task deadline' is the information about when a task is supposed to be done. Usually, not meeting the deadline has some form of negative consequence. Therefore it is a vital piece of information for a task.

What should be implemented?

Task Property 'due date'

Currently, a task has the properties "Time", "Scheduled Date", "Description", "Attachement", "Repeat". A new property called "due date" shall be added. The creation dialogue can be identical to the "Schedule Task" dialogue. As with the scheduled date, a default time should be pre-set (e.g. 09:00, as it is currently for scheduled tasks). Ideally, the default time can be configured in the settings. Similar to the other properties "Time", "Description" etc. the property "due date" shall be optional.

New standard view for tasks with a due date

Currently, there are three standard views: Today, Timeline and Scheduled. A new standard-view shall be added called "Due tasks". This view shall list all tasks that have a due date configured in the following categories. The tasks shall be ordered according to their due date.

(Alternatively, the below mentioned categories could be introduced into the "scheduled tasks" view and show both scheduled and due tasks. The view should be renamed to "Due/Scheduled")

Overdue

All tasks that are due before the current date.

Due Today

All tasks that are due on the current date

Due this week

All tasks that are due from tomorrow until the end of the current week

Due within 30 days

All tasks that are due from tomorrow until 30 days in the future. (Yes, this category will also show tasks from the previous category "Due this week")

Due after 30 days

All tasks that are due after 30 days in the future.

Due tasks in the timeline-view

Currently, the timeline-view shows tasks that are scheduled and shows future instances of repeated tasks. Similar to the how repeated tasks are shown, tasks with a due date shall be listed in the timeline-view. If a due date does not have a specific time, the task shall be listed at the start of the day. Tasks with due dates should be visually distinguishable from "repeated" tasks, either by color or by a certain icon (maybe an exclamation mark or a clock symbol).

Color-Coding/ Highlighting of due tasks

There shall be the option to enable color-coding or highlighting for tasks that are near their due date. When there are less than the configured days until the due date, the task shall be highlighted in the configured color.

The options shall be:

Quick add syntax for due dates

(related Issue: #2209) Currently, it is possible to add tags and a time estimation via keywords when adding a tasks. It shall be possible to add a due date when adding a task via text shortcut. It shall be possible to use either a proper formatted date and certain keywords (e.g. "New task 2h due tomorrow" or "New task 2h due 23.05.2024"). The date format shall be configurable in the setting.

The following keywords shall be supported:

ishanarora commented 8 months ago

Thanks @Jagdfalke for the feedback.

The due date is just a date without a specific time

I believe deadlines could also have a time. Instead of not allowing for a specific time, a default time should suffice.

Jagdfalke commented 8 months ago

Thanks @Jagdfalke for the feedback.

The due date is just a date without a specific time

I believe deadlines could also have a time. Instead of not allowing for a specific time, a default time should suffice.

Thanks for your feedback. You are right. I changed the specification accordingly.

saavedra29 commented 7 months ago

I think a due date/time is at least as useful (if not more) as the "schedule" date/time. Most of the times we care more about when something has to be finished than when it has to be started. It would be a great feature. I hope it will be added some time.

johannesjo commented 7 months ago

Thank you very much @Jagdfalke

I am currently conceptualizing how this feature might look like and your input is most helpful! Biggest question for me is, if we really need schedule and due as separate features, since having two similar functionalities will likely be confusing to new users.

Personally I am using schedule as others might use a due feature. So I am curious, if someone would like to have due AND schedule and what is their reasoning for it to need both. Maybe something like renaming schedule to due and making reminders and setting a time optional, could be an alternative?

What do you (and everyone else) think?

mimavox commented 7 months ago

My reasoning is this:

My tasks often have due dates when they MUST be done. However, it doesn't work for me to get them on my radar on this due date, because then it will be too late. I need a couple of days of heads up - that is, a date when I should START working on them.

To give a real-life example: I'm a teacher, and a common task for me is to prepare slides for a lecture. The due date for such a task would be the day I'm about to give the lecture. Hence, it wouldn't suffice for me to get this task on my radar at the due date, because then it would be too late. This kind of task is someting I work at off and on for a couple of days before it's due, and therefore I would need it to pop up in advance.

I'm currently using Nirvana as my task manager, and in their GTD system a task can have a hard due date. But you can also schedule when you want to start working on the task, and at that start date the task will pop into my next-list to give me a heads-up that I need to start working on it and it shows how many days I have left until due date.

To me, it's simple: When should I START working on the task, and when must it be DONE? I don't see how that distinction could be confusing for newcomers?

Jagdfalke commented 7 months ago

Thank you very much @Jagdfalke

I am currently conceptualizing how this feature might look like and your input is most helpful! Biggest question for me is, if we really need schedule and due as separate features, since having two similar functionalities will likely be confusing to new users.

Personally I am using schedule as others might use a due feature. So I am curious, if someone would like to have due AND schedule and what is their reasoning for it to need both. Maybe something like renaming schedule to due and making reminders and setting a time optional, could be an alternative?

What do you (and everyone else) think?

Thank you very much for revisting this feature request! 👍

TL;DR: I think it would be beneficial to have both and frankly I don't think it would be confusing to new users as long as both scheduling and setting a due date remain optional.

I've given your idea to just rename the scheduling to a due date some thought. While it might work in some cases, I am not convinced it is the best solution to having a due date. (Also if I understood you correctly, as soon as I set a reminder and change the scheduling date, I lose the information of the original due date, right?) Additionally, according to my opinion one of Super Productivity's main strengths is the (short term) scheduling and handling of scheduled tasks, so why change the label on this strong feature?

Having written all that I am well aware that implementing this feature is a huge change in the code. So I understand why you would want to keep the implementation simpler compared to what I suggested. However, below is the reasoning why I think it would be worth implementing.

Originally I included the distinction between a due date and a schedule date. I should have sticked to that. 😉 The easiest way I can think of to describe the difference is the following:

A due date is the information, when a task is supposed to be done. In contrast to that, a scheduled date is the information on when I plan to do the task. Ideally the scheduled date is well before the actual due date.

@mimavox has already given a prime example on this. For me personally it is very similar: I have appointments to prepare for, reports to provide, out-of-the-ordinary tasks that all have to be done by a certain date. But usually I don't want to start the tasks right before when they are due but rather days or even weeks in advance. I also need to be flexible with the scheduling of my tasks, but at the same time keep the information when they are actually due.

In contrast to @mimavox I have switched to Super Productivity entirely for my task management. I heaviliy use the scheduling feature along with the time estimation feature to keep an overview over my upcoming workload. Currently, I am keeping the due date in the task description or in the task headline. While that does work somehow, I would prefer to have a dedicated field and some visualisation and functionality around it (as described above 😉).

Lastly, also in the same note as @mimavox wrote, most task managers have both a due date and some functionality to schedule tasks that work independently from another. Therefore I also don't think users would have an issue with having both a due date and a scheduled date. (Btw isn't this even the most upvoted feature request at the moment? I would assume, most users are aware of the difference between a schedule date and a due date.)

NS1435 commented 7 months ago

Hello! I use this for school. I love all of the features in this app. It is nearly perfect for me. The only thing missing is the lack of a due date function. I can schedule when I want to do tasks, but not when I need them done. I would LOVE if I could do both. Right now I use the schedule feature to do that, but then it won't remind me of it's existence until one hour before maximum. I could also use the tags, but I would rather not rely on them for that purpose.

I don't think that it would confuse new users. I found this app today and was more confused about how there was an option to schedule when things GOT done and not when they WERE done. I think this could be easily distinguished if you implemented a "Planning" widget on the sidebar and changed the name of "Scheduled" to something like "deadlines" or "due dates". I don't know if everybody would benefit from this feature but I sure would. It would be extremely helpful if I could prioritize into two separate lists when something is due and when I need to get something done. I used Microsoft To do before this and often I would have to scramble to get a project or any other lengthy assignment done because just flagging it as important was insufficient. I like to schedule everything at the beginning of my semesters and so I had to flag all of those assignments as important, leading me to ignore them over time because some of them weren't going to be important for months. Being able to see when I want to work on something/have something done and when something is due would be a lifesaver.

If you wanted really make this great you could add a feature that lets me create a "main/whole" task, split it up into sub tasks, and then allow me to choose when I wanted to do those while being able to see when the "main/whole" task needs to be completed. So far I haven't seen this ability in any of the planning apps that I've tried to use.

I have ADHD and hearing issues. One of the problems I have with apps like these is that I can't specify everything that I need to in order to make them really effective. I still have to rely on my memory for a big part of what I'm trying to plan. It's hard to do when I deal with not hearing important things or getting distracted when I am. I could just use a paper planner to do all that, but I often forget those at home or wherever I was using it at. It's would be way easier for me to be able to pull all that up onto my phone or computer while I'm using those same devices to do my work. For me, the more customization and control I have over my scheduling, the better. I believe this so much that I made an account just to make this post.

I'm so glad I found this app and I'm so thankful that it's all for free. Thank you for this wonderful tool.

johannesjo commented 7 months ago

Thank you very much for your input @Jagdfalke, @NS1435 amd @mimavox !!! After giving this some thought and also checking other todo apps like todoist and ms todo I now have a broad idea of how a sensible due implementation would like to me.

When I'd mark a task as due, I would expect the following things.

  1. I can specify a date and not necessarily a time.
  2. Some sort of reminder is shown for the task on the due date
  3. Being able to set a custom reminder I can set in addition to the due date itself

I also believe that it is not intuitive what the difference between a due and a scheduled task would be (hence the discussion here).

Furthermore I believe that in most cases (at least for my personal usage of the app) I as a user want a simple reminder on the day I schedule a task. I don't want to do it today, so I set another day. For stuff that occurs on specific time I usually use my calendar, since that is what other people use and it is easy to share events.

Due to this I think it would be best to do the following:

  1. Rename schedule to due
    • if no time is set it works like it it would now if a task is scheduled for 9:00 (or a custom default time) for the due day date
  2. Provide a couple more options for when a reminder is shown
  3. There always should be a reminder for the day a task is due at the beginning of the day, if the task is not done already.

This way the current schedule functionality is "replaced" by the due date reminder function, but we have a sensible default behavior. Both MS Todo and Todoist do it this way and I found it intuitive to use. This change would also be much easier to implement compared to adding both due and schedule as independent options.

Please let me know what you think!

If you wanted really make this great you could add a feature that lets me create a "main/whole" task, split it up into sub tasks, and then allow me to choose when I wanted to do those while being able to see when the "main/whole" task needs to be completed. So far I haven't seen this ability in any of the planning apps that I've tried to use.

It will be possible with the next release to only add sub tasks to today, but not their parents :)

Jagdfalke commented 7 months ago

Thank you very much for your input @Jagdfalke, @NS1435 amd @mimavox !!! After giving this some thought and also checking other todo apps like todoist and ms todo I now have a broad idea of how a sensible due implementation would like to me.

When I'd mark a task as due, I would expect the following things.

  1. I can specify a date and not necessarily a time.
  2. Some sort of reminder is shown for the task on the due date
  3. Being able to set a custom reminder I can set in addition to the due date itself

I also believe that it is not intuitive what the difference between a due and a scheduled task would be (hence the discussion here).

Furthermore I believe that in most cases (at least for my personal usage of the app) I as a user want a simple reminder on the day I schedule a task. I don't want to do it today, so I set another day. For stuff that occurs on specific time I usually use my calendar, since that is what other people use and it is easy to share events.

Due to this I think it would be best to do the following:

  1. Rename schedule to due
  • if no time is set it works like it it would now if a task is scheduled for 9:00 (or a custom default time) for the due day date
  1. Provide a couple more options for when a reminder is shown
  2. There always should be a reminder for the day a task is due at the beginning of the day, if the task is not done already.

This way the current schedule functionality is "replaced" by the due date reminder function, but we have a sensible default behavior. Both MS Todo and Todoist do it this way and I found it intuitive to use. This change would also be much easier to implement compared to adding both due and schedule as independent options.

Please let me know what you think!

If you wanted really make this great you could add a feature that lets me create a "main/whole" task, split it up into sub tasks, and then allow me to choose when I wanted to do those while being able to see when the "main/whole" task needs to be completed. So far I haven't seen this ability in any of the planning apps that I've tried to use.

It will be possible with the next release to only add sub tasks to today, but not their parents :)

I'm not sure if I understand correcty how you plan the implementation. Especially since you mentioned both Todoist and MS To Do as examples. I think both handle things slightly differently.

I'm not too familiar with Todoist, but in my opinion Todoist handles dates rather weirdly. If this is your prime reference, I can see where the confusion might come from. Todoist calls it due date, but the functionality around it is more like the scheduling in Super Producivity. When you want to schedule a task for today, you have to set the due date to today, even though the actual due date might be some time later. I've never used the pro version, so I don't know how reminders work.

MS To Do on the other hand does allow both setting a due date and a reminder independendly. The reminder is responsible for when a date is actually scheduled and MS To Do maintains the information, when a task is actually due. Also if a task is overdue, this overwrites the scheduling. I've created a quick example to illustrate what I mean:

image

If the implementation would work similar to MS To Do, I think that would be feasible. It would fulfill the need to have both scheduling and due date independently. And in my opinion the most important part is to not lose the information about the due date. I actually like how MS To Do consideres whatever date is earlier (either due date or the scheduling part). That would probably fit in well with how Super Productivity works right now.

I would not like to see the implementation to work like Todoist though as that would not really change anything from the status quo besides the name.

(Also I am still not conviced due date and scheduling would confuse new users. 😉 As an example for a software that actually has several kind of dates you could check out Amazing Marvin. Amazing Marvin has a planning feature similar to Super Productivity and also features a due date for each task.)

/edit: The earlier version of this post sounded a bit harsh, as I was in a rush when writing it. That was not intentional. When re-reading my own post I rephrased some sentences.

Yuukkihana commented 4 months ago

Hello!

I recently downloaded SuperProductivity and wanted to move to it as my task management app since it's open source and it has some really nice features, so I wanted to give some feedback on the app so far. What I am really missing tho is a deadline function. I'm used to putting deadlines on all my tasks, especially since lots of them are for university and there we have strict deadlines for all our projects. The scheduling function is nice, so I can plan when I will work on a certain task and schedule time for it, but I am using this function now as a deadline function since deadlines are more important to me. Maybe the same way there is a "scheduled" section, there could be a "deadlines" section, where we could see what's upcoming and which tasks need urgent attention. This could also be implemented in the "today" tab. There could be a section with tasks due on the current day. I would personally prefer a separate Deadlines Tab tho so I can see all my upcoming tasks, not just the ones for the current day.

Starframe commented 1 month ago

I'm not a good enough coder to implement the feature, but I would be happy to help out with this by making some UI mock ups, if that would help settle on an implementation path. If that is wanted, just ping me and I'll put some variations together in figma as I have some UI/UX experience.

johannesjo commented 1 month ago

Hey starframe! Some UI mockups would be welcome! Thank you! I think they would help with the discussion and to clarify what should be implemented.