-
-
Notifications
You must be signed in to change notification settings - Fork 286
Description
โ ๏ธ Please check that this feature request hasn't been suggested before.
- I searched previous Ideas in Discussions didn't find any similar feature requests.
- I searched previous Issues didn't find any similar feature requests.
- I am only requesting a single feature. Multiple changes should be split into individual requests, with links between them.
- I believe my requested feature will be generally applicable to other users, not just me: it is not uniquely tied to my personal workflow.
๐ Feature description
Feature scope :
- Add a time estimate to tasks
- Add a time spent on tasks
- Track time spent on task directly within Obsidian
- Add query for tasks based on time estimate and time spent, examples :
- Total time estimated for task that happens/due/scheduled/start on DATE
- Total time spent on task done on DATE
- Tasks with or without estimated/tracked time
- Tasks that have an estimated/tracked time of x or less/more
โ๏ธ Solution
โ Add New Tasks metadata(s)
First, we'd need to add new task metadatas for time.
Either only one that gets the tracked time and estimated time :
- [STATUS] DESCRIPTION
โฑ๏ธ [ (_h) _m / (_h) _m]
๐RECURSION โ CREATED_DATE ๐ DUE_DATE โณ SCHEDULED_DATE ๐ซ START_DATE
Or in the form of two new metadatas :
- [STATUS] DESCRIPTION
โฑ๏ธ (_h) _m
๐งฎ (_h) _m
๐RECURSION โ CREATED_DATE ๐ DUE_DATE โณ SCHEDULED_DATE ๐ซ START_DATE
The time format would be like that : (_h) _m
โ x hours x min
Examples :
- 25m
- 1h 10m
- 6h 30m
It would be simple enough to write without using the obsidian-task dialog, and yet simple enough to calculate from this simple timestamp.
โ Questions are :
- Should we always add them to tasks like the CREATED_DATE, make it customisable in settings, or add one/both only when a time tracked/estimate is added via the dialog box ?
- How to handle recurring tasks ? I'd suggest resetting time tracked but keeping time estimate.
โ Update the Current Dialog Box
In FR #1649, there's this way of handling things :
I'd personally go more for something like that, using a simpler time format :
We would type in the time spent/estimate in the correct format, or use the wheel to easily input the time estimate. The inspiration is entirely from Super Productivity which is an amazing piece of software but lacks the note capabilities of Obsidian for managing references materials of tasks and projects.
โ Add Time Tracking Capabilities to Obsidian
- Clicking on the watch emoji would trigger a timer that would go right into the bottom bar of Obsidian :
โฑ๏ธ (_h) _m
. - It would store the
click
timestamp, add the already tracked time if existing, and calculate from here, showing the tracked time in the(_h) _m
format in the bottom bar but using a more precise timestamp in ISO format to calculate from. - It would keep track or the task filename and description to be able to come back to it and modify it.
- When the user end it by clicking in the bottom bar, it would then add the rounded time spent to the time spend metadata or create it if it doesn't yet exist.
โ Question is : How should we manage :
- Obsidian being closed during a timer. โ Ask user if they really want to close it ? Edit task and sync before closing (if possible ?) ? Do nothing ?
- Storing the timestamp for calculation in obsidian-tasks settings ? Inside the task ?
- File moved or title edited during calculation, how to adapt like obsidian linking adapt ? Just stop the timer and show an error wouldn't be enough.
- What do we do if we start a timer on a machine and go on another one ? Should we be able to see it going still, and turn it off ? Meaning there would be only one timer at a time in a certain emplacement on obsidian-tasks plugin config ?
โ Add New Queries
Maybe just starting with simple queries to show time estimate for DATE and/or time spent on done task on DATE would be enough first.
Then adding the other one featured in the feature description above.
โ Alternatives
N/A
๐ Additional Context
-
I got largely inspired by the amazing and simple way that Super Productivity deals with time boxing :
Each task has a time estimate in(_h) _m
. It allows us to see the estimated working time of the day and compare it to our agenda. And we can review our working time at the end of the day to learn to better estimate our capabilities. -
There's been a feature request for time tracking only based on status (Feature Request: Time trackingย #179), but it lacked the execution and where to store the timestamp.
-
There's a feature request for adding a time estimate to tasks, it has quite the same idea as I have, and some Super Productivity users got lost here as well it seems (feat: add estimated time (i.e. Duration) to complete in Taskย #1649). I just do think that both features need to be worked on at the same time to use the same formatting and such, that's why I created this FR. I just hope I'll be able to get people opinion about how to better add such functionalities.
-
I see that there is already a
ObsidianSimpleTimeTracker
plugin, we might be able to take advantage of how he handled the timestamp. That could allow us to start a timer on a machine and continue it on another one. -
I hope for this FR to be able to gather information about how to technically implement these features (that's why I left some questioning here and there with the โ emoji).
-
I hope it could help focus on how to add the two other linked FR that supplements each others.
-
I don't have any dev experience yet, but I'd be glad to play around this feature and try to implement it if someone wants to lend a hand.