fix(todo): the permission to notify asked wherever a reminder is planned, and Settings saying while it is off (ADR 0033, D31)

On a fresh install Todo's reminders never showed: the permission to notify
(Android 13's POST_NOTIFICATIONS, iOS' and macOS' alert) was asked only
where a task's sheet chose its first reminder, so reminders typed in quick
add, added by the automatic reminder or brought by sync were scheduled and
dropped by the system without a word.

Now NotificationAccess, the device's, reads whether notifications are
allowed whenever the plan holds a reminder and asks where they aren't,
once an app start, so that a refusal isn't met with the dialog again and
again; the task sheet asks through it. While reminders are planned and
notifications are off, Settings' Reminders say so, with Turn on: asked
again, and where that doesn't allow it, the system's notification settings
of the app opened (flutter_local_notifications' own call, nothing added).
Read again whenever the app comes back.

Whats-New: Todo asks to notify as soon as there is a reminder, and Settings › Reminders shows when notifications are off, with Turn on.
Whats-New-De: Todo fragt nach Benachrichtigungen, sobald es eine Erinnerung gibt, und Einstellungen › Erinnerungen zeigt, wenn sie aus sind, mit Einschalten.

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-04 22:35:06 +01:00
commit 82f1bf2739
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
5 changed files with 458 additions and 33 deletions

View file

@ -254,6 +254,9 @@
"snoozeTitle": "Schlummern für",
"snoozeMinutes": "{count, plural, =1{1 Minute} other{{count} Minuten}}",
"reminderSnooze": "{count} Min. schlummern",
"notificationsOffTitle": "Benachrichtigungen sind aus",
"notificationsOffHint": "Erinnerungen erscheinen erst, wenn Halkyon Todo dich benachrichtigen darf.",
"notificationsTurnOn": "Einschalten",
"monthMore": "{count} weitere",
"dayHeadingPattern": "EEEE, d. MMM",
"overdueHide": "Überfälliges ausblenden",

View file

@ -812,6 +812,18 @@
}
}
},
"notificationsOffTitle": "Notifications are off",
"@notificationsOffTitle": {
"description": "Settings' Reminders while notifications are off and reminders are planned (ADR 0033, D31)."
},
"notificationsOffHint": "Reminders can't show until Halkyon Todo may notify you.",
"@notificationsOffHint": {
"description": "Settings' Reminders while notifications are off and reminders are planned (ADR 0033, D31)."
},
"notificationsTurnOn": "Turn on",
"@notificationsTurnOn": {
"description": "Settings' Reminders while notifications are off and reminders are planned (ADR 0033, D31)."
},
"monthMore": "{count} more",
"@monthMore": {
"description": "A project's Calendar as a month on wide windows (ADR 0033, D17): a day's tasks that don't fit.",

View file

@ -1624,6 +1624,24 @@ abstract class AppLocalizations {
/// **'Snooze {count} min'**
String reminderSnooze(int count);
/// Settings' Reminders while notifications are off and reminders are planned (ADR 0033, D31).
///
/// In en, this message translates to:
/// **'Notifications are off'**
String get notificationsOffTitle;
/// Settings' Reminders while notifications are off and reminders are planned (ADR 0033, D31).
///
/// In en, this message translates to:
/// **'Reminders can\'t show until Halkyon Todo may notify you.'**
String get notificationsOffHint;
/// Settings' Reminders while notifications are off and reminders are planned (ADR 0033, D31).
///
/// In en, this message translates to:
/// **'Turn on'**
String get notificationsTurnOn;
/// A project's Calendar as a month on wide windows (ADR 0033, D17): a day's tasks that don't fit.
///
/// In en, this message translates to:

View file

@ -1006,6 +1006,16 @@ class AppLocalizationsDe extends AppLocalizations {
return '$count Min. schlummern';
}
@override
String get notificationsOffTitle => 'Benachrichtigungen sind aus';
@override
String get notificationsOffHint =>
'Erinnerungen erscheinen erst, wenn Halkyon Todo dich benachrichtigen darf.';
@override
String get notificationsTurnOn => 'Einschalten';
@override
String monthMore(int count) {
return '$count weitere';

View file

@ -1006,6 +1006,16 @@ class AppLocalizationsEn extends AppLocalizations {
return 'Snooze $count min';
}
@override
String get notificationsOffTitle => 'Notifications are off';
@override
String get notificationsOffHint =>
'Reminders can\'t show until Halkyon Todo may notify you.';
@override
String get notificationsTurnOn => 'Turn on';
@override
String monthMore(int count) {
return '$count more';