feat(todo): places are watched by a quiet service, and asked to notify (ADR 0033, D32)

The first walk showed two faults. Android gives a proximity alert of an
app in the background a fix every 30 minutes (17:04:38, then 17:34:43 on
the Pixel), so a short stop goes unseen. And the place did remind, at
17:36:43, but nothing had asked to notify, so Android showed nothing.

A foreground service of the type location now takes its own fixes while
places wait, under the quietest notification there is: as long as
reaching the nearest circle takes at 30 m/s, doubled while the phone
lies still, between 30 s and 5 min. A place with a reminder asks to
notify as any reminder does.

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-05 18:17:48 +01:00
commit a7385e2169
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
5 changed files with 499 additions and 125 deletions

View file

@ -292,6 +292,8 @@
"locationRemindArrive": "Beim Ankommen",
"locationRemindLeave": "Beim Verlassen",
"locationRemove": "Entfernen",
"locationWatching": "Achtet auf deine Orte",
"locationWatchingChannel": "Überwachte Orte",
"locationAccessTitle": "Standort immer erlauben",
"locationAccessHint": "Damit Halkyon Todo dich beim Ankommen oder Verlassen erinnert, braucht es deinen Standort auch, wenn es geschlossen ist. Er bleibt auf diesem Gerät. Wähle als Nächstes „Immer zulassen“.",
"locationAccessGo": "Weiter",

View file

@ -988,6 +988,8 @@
"@locationRemove": {
"description": "A task's location's menu."
},
"locationWatching": "Watching your places",
"locationWatchingChannel": "Places watched",
"locationAccessTitle": "Allow location all the time",
"@locationAccessTitle": {
"description": "Before asking for the position in the background."

View file

@ -1852,6 +1852,18 @@ abstract class AppLocalizations {
/// **'Remove'**
String get locationRemove;
/// No description provided for @locationWatching.
///
/// In en, this message translates to:
/// **'Watching your places'**
String get locationWatching;
/// No description provided for @locationWatchingChannel.
///
/// In en, this message translates to:
/// **'Places watched'**
String get locationWatchingChannel;
/// Before asking for the position in the background.
///
/// In en, this message translates to:

View file

@ -1141,6 +1141,12 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get locationRemove => 'Entfernen';
@override
String get locationWatching => 'Achtet auf deine Orte';
@override
String get locationWatchingChannel => 'Überwachte Orte';
@override
String get locationAccessTitle => 'Standort immer erlauben';

View file

@ -1140,6 +1140,12 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get locationRemove => 'Remove';
@override
String get locationWatching => 'Watching your places';
@override
String get locationWatchingChannel => 'Places watched';
@override
String get locationAccessTitle => 'Allow location all the time';