Deep in our list of bugs to fix (internal link) is a misleading error message when picking a disallowed deadline time. When filing that bug report, I got thinking about the underlying issue, why you can’t set your deadline between 6am and 7am – something at least @shanaqui and @narthur have complained about before.
I think it would be a quick fix (famous last words) to at least allow earlybird deadlines as early as 6:01am instead of 7am. We’d keep 6am as the latest night-owl deadline allowed. Can we do better?
If we wanted to allow the earlybird and nightowl ranges to overlap or just have 6am in common, it would require:
- A slider UI or some other way to disambiguate between “due first thing before breakfast” vs “due well after midnight”
- Storing that choice in the goal object and having all the rest of the code check it
Or maybe 2 is a non-issue, because it’s just a positive or negative number of minutes specifying the offset from midnight? If it’s purely a UI issue, maybe we should do it? It seems easy enough.
(I don’t think I like the idea of allowing actual overlap beyond 6am itself. It means picking two arbitrary thresholds: like, say, 4 or 5am as the earliest earlybird deadline and, idk, 8am the next morning as the latest nightowl deadline. And there do have to be thresholds because an earlybird deadline of 12:01am is nonsensical and a nightowl deadline that’s like the afternoon of the following day is un-Beeminder-y.)
Alternative to a slider
The slider in the original spec lets the user understand intuitively whether they’re choosing an earlybird or nightowl deadline. That plus the dynamic text (emojis? /
) telling you which you’re getting. Also the slider lets users use 6am as either earlybird or nightowl without needing the 6:01am hack.
But if we don’t want a slider, here’s another potentially fun/cute UI. The user clicks on one of /
/
/
(for morning, afternoon, midnight, nightowl):
- Clicking
restricts the deadline field to 6am-11:59am (default 9am)
- Clicking
restricts the deadline field to 12pm-11:59pm (default 5pm)
- Clicking
sets the deadline field to midnight and makes it uneditable
- Clicking
restricts the deadline field to 12:01am-6am (default 3am)
Either way, with this or the slider, the point is to force the user to have some awareness of what kind of deadline they’re getting.
PS: Those defaults could be random or even computed to minimize peak server load.