feat(todo): a place reminds once a day, from the task's day on (ADR 0033, D32)

A task for tomorrow stays quiet today; an overdue task or one without a
day reminds on each day the phone arrives; a daily task once a day, not
again after it was ticked off in the morning. Todoist's location
reminders ignore the due date, which r/todoist's reports show reminding
of a weekly task on every arrival and of a daily one up to twenty times
a day; once until the task changed had both faults and lost the
shopping list left open to remind on every visit.

The device keeps which tasks reminded today, and an inexact alarm at
midnight lets the new day's places wait. A place waiting again on a new
day reminds only after the phone crosses its circle, so a task whose
place is home doesn't remind just after midnight.

Whats-New: A task's place reminds once a day, and not before the task's day.
Whats-New-De: Der Ort einer Aufgabe erinnert einmal am Tag und nicht vor ihrem Tag.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-11-07 19:38:47 +01:00
commit 30ee2a9ca3
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -70,6 +70,27 @@ void main() {
);
});
test('a place reminds from the day the task is for on, or any day '
'without one', () {
expect(
planLocationWatches([
task('a', date: const TaskDate(Day(2026, 11, 8), time: 9 * 60)),
]).single.from,
const Day(2026, 11, 8),
);
expect(planLocationWatches([task('a')]).single.from, isNull);
expect(
planLocationWatches([
task('a', date: const TaskDate(Day(2026, 11, 8))),
]).single.toJson()['from'],
'2026-11-08',
);
expect(
planLocationWatches([task('a')]).single.toJson(),
isNot(contains('from')),
);
});
test('a changed task reminds anew: its stamp changes with what it is', () {
final stamp = planLocationWatches([task('a')]).single.stamp;
expect(planLocationWatches([task('a')]).single.stamp, stamp);