feat(todo): reminders on the device, Upcoming's week strip, the task pane and search (ADR 0033, D2, D5, D8)
A task with a time takes reminders, minutes before it, in its sealed payload; each device plans the coming ones whenever the tasks change and schedules them with the system through flutter_local_notifications (Android, iOS, macOS, Windows; on Linux the running app shows them), at the minute where Android allows exact alarms. Notifying is asked for when a task first gets a reminder; signing out or switching person cancels them. Upcoming gets its week strip: the month opening Material's calendar, the weeks before and after, a dot under each day with tasks; a day picked scrolls the agenda to it, and scrolling moves the strip along. From expanded windows on, a task opens in a pane beside the list rather than in a dialog. Search, from every tab's app bar, finds projects by name and tasks by every word typed, in their title, description or labels, whatever the case and accents, on the device alone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
aa013f5a00
commit
666e8dbcbb
1 changed files with 2140 additions and 57 deletions
|
|
@ -783,6 +783,114 @@ abstract class AppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =1{After once} other{After {count} times}}'**
|
||||
String repeatEndsAfter(int count);
|
||||
|
||||
/// No description provided for @remindersTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reminders'**
|
||||
String get remindersTitle;
|
||||
|
||||
/// No description provided for @remindersNone.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No reminders'**
|
||||
String get remindersNone;
|
||||
|
||||
/// No description provided for @reminderAtTime.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'At its time'**
|
||||
String get reminderAtTime;
|
||||
|
||||
/// No description provided for @reminderMinutesBefore.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =1{1 minute before} other{{count} minutes before}}'**
|
||||
String reminderMinutesBefore(int count);
|
||||
|
||||
/// No description provided for @reminderHoursBefore.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =1{1 hour before} other{{count} hours before}}'**
|
||||
String reminderHoursBefore(int count);
|
||||
|
||||
/// No description provided for @reminderDaysBefore.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =1{1 day before} other{{count} days before}}'**
|
||||
String reminderDaysBefore(int count);
|
||||
|
||||
/// No description provided for @reminderDue.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Due at {time}'**
|
||||
String reminderDue(String time);
|
||||
|
||||
/// No description provided for @remindersChannel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Task reminders'**
|
||||
String get remindersChannel;
|
||||
|
||||
/// No description provided for @remindersNotAllowed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Notifications are off for Halkyon Todo: reminders show once you allow them in the system\'s settings.'**
|
||||
String get remindersNotAllowed;
|
||||
|
||||
/// No description provided for @remindersOnThisDevice.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reminders come on each of your devices that opens your tasks.'**
|
||||
String get remindersOnThisDevice;
|
||||
|
||||
/// No description provided for @weekPrevious.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Previous week'**
|
||||
String get weekPrevious;
|
||||
|
||||
/// No description provided for @weekNext.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Following week'**
|
||||
String get weekNext;
|
||||
|
||||
/// No description provided for @searchTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Search'**
|
||||
String get searchTitle;
|
||||
|
||||
/// No description provided for @searchHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Search tasks and projects'**
|
||||
String get searchHint;
|
||||
|
||||
/// No description provided for @searchEmpty.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Find a task by the words in its title, its description or its labels. Search runs on this device: your instance can\'t read your tasks.'**
|
||||
String get searchEmpty;
|
||||
|
||||
/// No description provided for @searchNone.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Nothing found for “{query}”.'**
|
||||
String searchNone(String query);
|
||||
|
||||
/// No description provided for @searchProjects.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Projects'**
|
||||
String get searchProjects;
|
||||
|
||||
/// No description provided for @searchTasks.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Tasks'**
|
||||
String get searchTasks;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
|
|
|||
Loading…
Reference in a new issue