iSoron / uhabits

Loop Habit Tracker, a mobile app for creating and maintaining long-term positive habits
GNU General Public License v3.0
7.83k stars 934 forks source link

Allow scheduling happens "at most every x days, at least every y days" #653

Closed ocharles closed 3 years ago

ocharles commented 3 years ago

I hope you don't mind, but I'd like to promote my comment here to a full issue.

Currently Habits gives me the option to repeat a habit x times in y days. However, I think a better system is "at most every x days, at least every y days". This is the system adopted by org-habit, a habit tracker built on top of org-mode in Emacs.

To give motivation for this feature, consider the habit of watering your plants. Once you do this habit, there's no point doing it until the plants need watering again. With the above suggestion, I can say that I want to water my plants at most every 4 days, but at least every 7 days. With Habits at the moment, I can only say something like "2 times in 10 days", but this ends up scheduling the habit on adjacent days, which is sub-optimal. If I water plants on Saturday, if I'm asked to do it on Sunday I just trivially acknowledge the habit, which defeats the point.

rancidfrog commented 3 years ago

Scheduling improvements. In addition, some habits are temporary. So, being able to set Habit x times for x amount of days. For example, I need to do something Once for Ten days

This is useful for certain activities such as

They are not constant repetitions. But simply a habit that needs to be done continuously for a certain time and kept track of, of course

iSoron commented 3 years ago

Thank you for the suggestion, @ocharles. In your example, is there any reason why you chose "2 times in 10 days" instead of "1 time in 10 days"? If you choose the latter and add a checkmark on Saturday, the app will automatically skip the next 9 days, but you can still add a checkmark manually if you do it earlier.

To be honest, this "at most/at least" scheduling is still not very clear to me. I'm open to it as an additional scheduling method, but I fail to see how could it replace the current one we have. For example, how could you specify that a habit should be done 5 times per week with this "at most/at least" scheduling?

iSoron commented 3 years ago

@rancidfrog Thank you for the suggestion, but this unfortunately falls outside the scope of the app. Loop was designed for long-term, ongoing habits. For such short "habits", I would suggest using your regular calendar app.

ocharles commented 3 years ago

Thanks, @iSoron. I agree this probably needs a bit more thought, and I don't think I have the time to help spec that out for now. I think the burden of this feature request should be on me, not you, so I'll close this issue for now, and will re-open if I find more time in the future. Thanks!