Every household has a day, and it is not the server's. Our servers keep time in UTC, which is fine for timestamps and wrong for calendars. A chore due on Tuesday is due on the household's Tuesday, and the household's Tuesday starts and ends when the household's clocks say so. A code review this month found several places where we had judged "today" by the server's clock instead of yours, and we want to tell you what that did.
What you might have noticed
From about eight in the evening in the United States, the server was already on tomorrow. So a chore due today turned amber and read overdue at dinner time. Tomorrow's items appeared on today's list a few hours early. Complete an anytime chore at nine at night and it was recorded against tomorrow — which meant a daily chore ticked in the evening could skip a day. The kitchen display had the same fault: a chore finished this evening could come back onto the wall as pending. And for households far east of UTC, the weekly digest could leave out a task that had gone overdue the day before.
Each of these was a small thing. Together they were the app being slightly wrong about the most basic fact it holds — what day it is where you live — every evening, for everyone.
Fixed once, everywhere
Every household has a time zone, recorded when it is created. The fix was to ask for it in every place a due date is judged — chores, maintenance tasks, recurring list items, the digest, the display, the reminders — rather than in the places we had remembered to. The test that guards it now sets one household to UTC+14 and another to UTC−11, which are on different calendar days from the server at every moment of every day, so the test fails at any hour if the bug ever returns.
A due date is a fact about your day. The server's day is nobody's.
If a chore ever looked overdue on a Tuesday evening and you shrugged and did it anyway — that was us, and it is done.