obsidian-tasks-group / obsidian-tasks

Task management for the Obsidian knowledge base.
https://publish.obsidian.md/tasks/
MIT License
2.43k stars 228 forks source link

Feature: Automatic recording of date of last status change of task #1746

Closed Nils-72 closed 1 year ago

Nils-72 commented 1 year ago

⚠️ Please check that this feature request hasn't been suggested before.

🔖 Feature description

To be able to query on tasks of which the status was recently changed (not only completed, but also e.g. canceled, in progress, ...) add the option to automaticaly include/update a 'StatusLastUpdated' date to the task.

(Relates to question asked in Obsidian Forum: https://forum.obsidian.md/t/dataview-query-on-all-tasks-with-modified-status-possible-or-not/56105?u=nils72)

✔️ Solution

In my daily note I have a basic dataview query that shows a list of all tasks that I completed on that day. However … during the day I also change the status of tasks to (e.g.) ‘In progress’ or ‘Canceled’. I would also like to also see those changes in my daily ‘Modified tasks’ overview.

Since no date is recorded for changes other than setting the status to ‘Completed’, It is not possible to get list of recently updated tasks. Or at least ... not without adding anual steps/macro's etc.

What I would like to be able to do is use a query like this:

TASK WHERE StatusChangeDate= this.file.day

(Where, obviously, the StatusChangeDate attribute currently does not exist)

❓ Alternatives

Some work-arounds/solutions were mentioned by other users. These involve using Templater, QuickAdd, regex and custoim dataview attributes. Could work, but adds steps to the workflow (and could be prone to errors)

📝 Additional Context

No response

ilandikov commented 1 year ago

@Nils-72 this seems to be an awesome idea. Could you elaborate on the issue you are trying to solve? Let's say you can query by the status change and see those changes ‘Modified tasks’ overview. What then?

claremacrae commented 1 year ago

This comment on that Forum post made me smile:

Since there appears to be no easy solution for this, and because I think others could also benefit from having this functionality, I have made a Feature request for the Tasks plug-in.

https://github.com/obsidian-tasks-group/obsidian-tasks/issues/1746

It isn't easy in the Tasks plugin either! 😄

All the comments in that dataview Forum post also apply to tasks, such as about Obsidian only tracking changes at the file level, not the line level.

And there are so many ways that users can modify their task lines, that Tasks will not know about. Manual typing, toggling via another plugin (like Dataview!), editing in an external editor.

Someone recently added the ability to track created date via Tasks, but it will only work in very specific circumstances, where it is the Tasks plugin that actually edits the line.

The same limitations would apply to this facility, if it were added.

I would like to wait and see how much user-support traffic the created field adds, before considering whether to add this field as well.

Nils-72 commented 1 year ago

@claremacrae

@Nils-72 this seems to be an awesome idea. Could you elaborate on the issue you are trying to solve? Let's say you can query by the status change and see those changes ‘Modified tasks’ overview. What then?

@ilandikov:

I would like to wait and see how much user-support traffic the created field adds, before considering whether to add this field as well.

Hi @ilandikov and @claremacrae, this would be mainly be to show how 'alive' certain tasks are. Being able to sort, group, filter on the date of the last status change (either in directly via the Tasks plug-in or via Dataview) helps to see which tasks are actualy worked on even though they are not yet completed. Only having Created and Completed dates results in kind of losing the work done one a task in between those states, even though the new custom statuses make more detailed tracking already possible.

(And being able to show all those daily changes to tasks would help with my daily dose of Dopamine .... ;-))

Nils-72 commented 1 year ago

Additional info. In the Obsidian-forum, user holroy is working on a way to make this easier within the current constraints of the Tasks plug-in. Might be interesting to also take a look at that. He wrote a Templater template and a verry extensive explanation:

https://forum.obsidian.md/t/dataview-query-on-all-tasks-with-modified-status-possible-or-not/56105/8

ilandikov commented 1 year ago

I would like to wait and see how much user-support traffic the created field adds, before considering whether to add this field as well.

This seems to be a very good point.

Hi @ilandikov and @claremacrae, this would be mainly be to show how 'alive' certain tasks are. Being able to sort, group, filter on the date of the last status change (either in directly via the Tasks plug-in or via Dataview) helps to see which tasks are actualy worked on even though they are not yet completed. Only having Created and Completed dates results in kind of losing the work done one a task in between those states, even though the new custom statuses make more detailed tracking already possible.

(And being able to show all those daily changes to tasks would help with my daily dose of Dopamine .... ;-))

Thanks a lot for this honest answer. So let's step out a bit from the Tasks plugin context. First of all, you wouldn't have had this issue if some of your tasks are were "alive", right? So the issue is here is that some tasks are "dead".

You can change the wording which may help (at least it does for me) like "do the thing" -> "do that thing arrrrggggg" (emotional formulations help getting things done).

But most importantly, you don't need to see the the "alive" tasks, you need the "dead" ones, the one you have not been doing. And I'm pretty sure the "last change" is not the solution here. At least because simply updating the task's last changed date will provide the sensation of getting things done, but we know the truth =)

Also in the next release you will have the created date. So if (today - created date > X day) { task is dead...} you see where it is going ;)

I hope that this philosophical spin-off gave you some helpful thoughts.

claremacrae commented 1 year ago

At least because simply updating the task's last changed date will provide the sensation of getting things done, but we know the truth =)

I had the exact same thought.

claremacrae commented 1 year ago

I currently don't feel that there is a very strong case for adding this field.

I'll leave this issue open for a little while to see if any extra motivations are suggested, though.

claremacrae commented 1 year ago

PS Thank you both for the very helpful discussion.

Nils-72 commented 1 year ago

@claremacrae, thank you for your for looking at this idea and indeed having a good discussion. And @ilandikov, thank you for helping to make the idea a bit more crisp.

I am very much OK with the outcome. Might be that others have stronger use-cases which they can add in the future (thank you for keeping the discussion open for now). I fully acknowledge that my own task-tracking-needs might differ from others. This is - luckily - not only about getting my daily Dopamine-fix ;-). This is also about keeping track of (e.g.) tasks that were forwarded to others or that were canceled. Specifically for the forwarded tasks, knowing the forwarded-date will help to know when to start chasing colleagues. Looking at a KanBan way of working, the change-date is what could be used to track how long something has been in a specific column on a KanBan board (if those columns are state-based).

I want to thank you for all the hard work you put in the Tasks plug-in and for the open way of discussing any thoughts and ideas others - like myself - might have.

ilandikov commented 1 year ago

My feeling is that Obisidian (and Tasks as a derivative) were build without multi-user approach (which is the case for tools Notion & coda). So adding "delegation" functionality will require a tremendous effort. Maybe you can have it done with a combination of regex and tags. The final decision is not mine, but if you ask me, I would not even think to go in that direction at least right now.

As for the initial request, now we will have the created field, so maybe we can think about and option in the settings that this field is updated each time the task is edited. This seems to be an easier solution if needed at all.

I'm not sure how you use kanban in your workflow, I have setup something simple with "due, not scheduled", "scheduled later", "scheduled today or due today" and "done" using Tasks (Let's not debate the columns/states, this is a choice) and Canvas. If something is too long overdue you can see it be diff between today and due/scheduled date. You can also consider the start date field.

claremacrae commented 1 year ago

I currently don't feel that there is a very strong case for adding this field.

I'll leave this issue open for a little while to see if any extra motivations are suggested, though.

I still feel the same: this is not high enough priority to justify the considerable extra complexity that it would add to the Tasks code.

Closing as 'wont do'.