obsidian-tasks: Postpone button changes "wrong" date when multiple dates are set

Please check that this issue hasn’t been reported before.

  • I searched previous Bug Reports didn’t find any similar reports.

Expected Behavior

  1. I have a task with a start date on or before today and a due date after today
  2. I have a tasks view with happens on or before today
  3. I click postpone on that task
  4. It changes the due date

Current behaviour

  1. I have a task with a start date on or before today and a due date after today
  2. I have a tasks view with happens on or before today
  3. I click postpone on that task
  4. It changes the start date

Steps to reproduce

mentioned above.

Which Operating Systems are you using?

  • Android
  • iPhone/iPad
  • Linux
  • macOS
  • Windows

Obsidian Version

1.5.3

Tasks Plugin Version

5.5.0

Checks

  • I have tried it with all other plugins disabled and the error still occurs

Possible solution

there’s perhaps some matter of debate as to if this is really a bug or not. Is there a full specification for what the postpone button does?

But – when I have only a start date, it changes that. When I have only a due date, it changes that. I don’t think the button necessarily needs to be aware of the context of the view, but perhaps if the due date is after today it should check to see if there are other dates on or before today and change those.

About this issue

  • Original URL
  • State: closed
  • Created 6 months ago
  • Comments: 21

Most upvoted comments

I’d like to apologize for the grumpiness in my earlier posts.

I use Obsidian primarily on my iPad, which doesn’t offer hover state tooltips, and contextual pop-up menus are a bit … unnatural. Indeed, when attempting to long-press on either the postpone or edit task button on the iPad, it just selects the text instead. Those affordances aren’t really available everywhere Obsidian runs.

I rarely use due dates, but when I do, they are for external factors; I realize other people may not use them this way. I had previously used the postpone button to change start dates as a “get this out of my face” as @aubreyz mentions, and had assumed this button would follow the logic of “happens date”, updating the earliest of the dates present on the task. I spend a lot of time thinking about mistake-proofing in UI design, and had not considered that any other behavior would be desirable.

I missed a deadline because I made a mistake. I have ADHD and have learned the hard way that tools not designed for people with this condition are difficult to trust fully, which is what drove me into building my own system with Obsidian and this plugin to begin with. It’s been revolutionary for me. I felt betrayed by my system for the first time, and I’m sorry I posted a complaint about the behavior that, to me, sounds rash, impulsive, and grouchy; it does not reflect who I strive to be.

I’d be happy to take on filing a separate bug-fix request ticket. Either way, I see some challenges:

  • With the route of having separate buttons, there is both logic needed to display only the buttons necessary given the dates specified on a task, but a challenge of icons and spacing

    • The postpone button is already uncomfortably close to the edit button on the iPad, and adding more buttons will increase the chance of a mistaken action. These actions are not available to the application’s “undo” facility, making mistakes more difficult to recover from, as the button’s “get this out of my face” action possibly removed the task from view, and the user will have to figure out how to find it otherwise.
      • Perhaps this isn’t a problem for most people, as they could remember which backlink the task came from and find it that way, but one of the defining characteristics of ADHD is trouble with short-term memory - I like to say that I have less RAM than a Commodore 64 - and the slightest distraction can wipe that out, so it becomes a matter of “well, I hope that wasn’t important”
    • There’s also the challenge of different emoji icons for each button. The existing emoji captures the action perfectly, but if separate buttons are introduced for start/scheduled/due, that notion will need to be encapsulated in the new buttons. Would these be multi-character buttons, such as ⏳⏩ or 📅⏩ ?, or would there be an attempt to find a single emoji to represent the concept, which may be less apparent?
  • The route of having a single button act contextually runs the risk of betraying someone’s expectations, as with what led to this ticket being created to begin with.

    • Because this is a freeform system that allows people to define their own workflows, it’s possible every user of this plugin has different intended meanings for start/scheduled/due, and any prioritizing of these over another as the one to be updated could work contrary to expectations.
    • Rather than setting a priority level on the dates available on the task, what if it worked similar to the logic for “happens” date, which the documentation says is “the earliest of start date, scheduled date, and due date”. If there’s a tie, update all dates matching the tie.

Thank you @mattly for your very kind message.

I am looking forward to reading and thinking about it.

It won’t be today as I’ve spent about 7 hours on Tasks already today and have to do some other things now.

I’ll be in touch soon.

I’ve read your message several times @mattly

It has lots of good points. I believe that I understand your concerns, but right now I don’t see any value in creating separate tickets about the postpone button, as there is simply no consensus on what it should do.

I may well later make its behaviour more flexible, but right now all my bandwidth is going on managing recent and current pull-requests.

The postpone facility is great!! However I do agree that when there is both a start and a due date, it is a tad unexpected to operate on the due date. That is not I think what most people would expect, but maybe I am wrong. Postpone means “get this out of my face” - which if there is both a start & due date, is the precise purpose “start” exists. Postponing the critical deadline while keeping it in your face exactly as before is not at all intuitive or useful, at least to me. It means “I don’t want to think about this now”. Perhaps there could be a toggle indicating what the user wants it to mean globally.

I had to spend an hour or two fixing the mistakes introduced by the lack of understanding of what it was supposed to do.

That’s a shame, as in addition to the behaviour all being documented, there are tooltips to show which field is edited, and the new date value.

In case it helps save your time when adopting future Tasks releases:

  • The first page of the docs always shows the recent new features or major changes, and always links to the documentation, and now has an expandable callout to show the same for older releases
  • I often spend at least as much time on documentation as I do on implementing features, so it’s always worth reading the docs to see how new features and changes work.

I decided to release the Postpone function as it is, knowing that it would be useful to many - but not all - users, and knowing that it will be updated in future. From the very positive feedback so far, I’m comfortable with this decision.

We did think a lot about the priority order of date fields in Postpone. However, I know from doing user support on Tasks that people have very personal opinions about what is the “right” meaning of the various date fields…

Rather than making Postpone more complex to maintain by making it customisable, my intention is in future to streamline the editing of values on other date fields.

It’s not firmly decided, but my current thinking is to enable right-clicking on the emojis for each of the date fields, and pop up the same kind of menu that is currently shown by Postpone button.