feat(todo): Today, Upcoming, Inbox, projects, quick add and the task sheet (ADR 0033, D8, D9)

The tabs hold the person's tasks: Today what is overdue (Reschedule
moving it all to a day, times kept) and what is due today; Upcoming the
overdue ones and the next four weeks day by day; Inbox and each
project's screen from Browse the tasks above and in their sections, done
ones on asking; Browse the projects with their open counts and the
labels. A task's row shows its check in its priority's colour, its date
in the colour of how near it is, its deadline, its sub-tasks done and
its labels; quick add takes its title, date, priority, project, labels
and description and stays for the next; its sheet edits all of it, adds
sub-tasks and deletes it with them after asking. Colours are the
palette's, cerise for overdue and P1 against the strawberry wash.

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-01 10:25:34 +01:00
commit 030c62ddde
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -160,36 +160,6 @@ abstract class AppLocalizations {
/// **'Browse'**
String get shellTabBrowse;
/// No description provided for @todayLaterTitle.
///
/// In en, this message translates to:
/// **'Today\'s tasks come here'**
String get todayLaterTitle;
/// No description provided for @upcomingLaterTitle.
///
/// In en, this message translates to:
/// **'The days ahead come here'**
String get upcomingLaterTitle;
/// No description provided for @inboxLaterTitle.
///
/// In en, this message translates to:
/// **'Tasks without a project come here'**
String get inboxLaterTitle;
/// No description provided for @browseLaterTitle.
///
/// In en, this message translates to:
/// **'Your projects and labels come here'**
String get browseLaterTitle;
/// No description provided for @tasksLaterHint.
///
/// In en, this message translates to:
/// **'Tasks come with a later version of Halkyon Todo.'**
String get tasksLaterHint;
/// No description provided for @settingsTitle.
///
/// In en, this message translates to:
@ -201,6 +171,468 @@ abstract class AppLocalizations {
/// In en, this message translates to:
/// **'Version {version} (build {build})'**
String settingsVersion(String version, String build);
/// No description provided for @clear.
///
/// In en, this message translates to:
/// **'Clear'**
String get clear;
/// No description provided for @colorLabel.
///
/// In en, this message translates to:
/// **'Colour'**
String get colorLabel;
/// No description provided for @completedShow.
///
/// In en, this message translates to:
/// **'Show done tasks'**
String get completedShow;
/// No description provided for @completedHide.
///
/// In en, this message translates to:
/// **'Hide done tasks'**
String get completedHide;
/// No description provided for @dateTitle.
///
/// In en, this message translates to:
/// **'Date'**
String get dateTitle;
/// No description provided for @dateNextWeek.
///
/// In en, this message translates to:
/// **'Next week'**
String get dateNextWeek;
/// No description provided for @dateWeekend.
///
/// In en, this message translates to:
/// **'This weekend'**
String get dateWeekend;
/// No description provided for @datePick.
///
/// In en, this message translates to:
/// **'Pick a day'**
String get datePick;
/// No description provided for @dateTime.
///
/// In en, this message translates to:
/// **'Time'**
String get dateTime;
/// No description provided for @dateNone.
///
/// In en, this message translates to:
/// **'No date'**
String get dateNone;
/// No description provided for @dateNoneYet.
///
/// In en, this message translates to:
/// **'No date'**
String get dateNoneYet;
/// No description provided for @dayToday.
///
/// In en, this message translates to:
/// **'Today'**
String get dayToday;
/// No description provided for @dayTomorrow.
///
/// In en, this message translates to:
/// **'Tomorrow'**
String get dayTomorrow;
/// No description provided for @dayYesterday.
///
/// In en, this message translates to:
/// **'Yesterday'**
String get dayYesterday;
/// No description provided for @dayHeadingNamed.
///
/// In en, this message translates to:
/// **'{date} · {name}'**
String dayHeadingNamed(String date, String name);
/// No description provided for @deadlineOn.
///
/// In en, this message translates to:
/// **'Deadline {day}'**
String deadlineOn(String day);
/// No description provided for @deadlineNone.
///
/// In en, this message translates to:
/// **'No deadline'**
String get deadlineNone;
/// No description provided for @keysMissing.
///
/// In en, this message translates to:
/// **'This device can\'t save: it doesn\'t hold your account\'s keys. Sign in with your password or recovery phrase to add them.'**
String get keysMissing;
/// No description provided for @labelsTitle.
///
/// In en, this message translates to:
/// **'Labels'**
String get labelsTitle;
/// No description provided for @labelsNone.
///
/// In en, this message translates to:
/// **'No labels yet.'**
String get labelsNone;
/// No description provided for @labelsNoneSet.
///
/// In en, this message translates to:
/// **'No labels'**
String get labelsNoneSet;
/// No description provided for @labelsCount.
///
/// In en, this message translates to:
/// **'{count, plural, =1{1 label} other{{count} labels}}'**
String labelsCount(int count);
/// No description provided for @labelAdd.
///
/// In en, this message translates to:
/// **'New label'**
String get labelAdd;
/// No description provided for @labelEdit.
///
/// In en, this message translates to:
/// **'Edit label'**
String get labelEdit;
/// No description provided for @labelDelete.
///
/// In en, this message translates to:
/// **'Delete label'**
String get labelDelete;
/// No description provided for @labelDeleteTitle.
///
/// In en, this message translates to:
/// **'Delete the label?'**
String get labelDeleteTitle;
/// No description provided for @labelDeleteMessage.
///
/// In en, this message translates to:
/// **'\"{name}\" is taken off every task that has it.'**
String labelDeleteMessage(String name);
/// No description provided for @nameLabel.
///
/// In en, this message translates to:
/// **'Name'**
String get nameLabel;
/// No description provided for @save.
///
/// In en, this message translates to:
/// **'Save'**
String get save;
/// No description provided for @overdue.
///
/// In en, this message translates to:
/// **'Overdue'**
String get overdue;
/// No description provided for @reschedule.
///
/// In en, this message translates to:
/// **'Reschedule'**
String get reschedule;
/// No description provided for @priorityTitle.
///
/// In en, this message translates to:
/// **'Priority'**
String get priorityTitle;
/// No description provided for @priority1.
///
/// In en, this message translates to:
/// **'Priority 1'**
String get priority1;
/// No description provided for @priority2.
///
/// In en, this message translates to:
/// **'Priority 2'**
String get priority2;
/// No description provided for @priority3.
///
/// In en, this message translates to:
/// **'Priority 3'**
String get priority3;
/// No description provided for @priority4.
///
/// In en, this message translates to:
/// **'No priority'**
String get priority4;
/// No description provided for @projectsTitle.
///
/// In en, this message translates to:
/// **'Projects'**
String get projectsTitle;
/// No description provided for @projectsNone.
///
/// In en, this message translates to:
/// **'No projects of your own yet.'**
String get projectsNone;
/// No description provided for @projectAdd.
///
/// In en, this message translates to:
/// **'New project'**
String get projectAdd;
/// No description provided for @projectEdit.
///
/// In en, this message translates to:
/// **'Edit project'**
String get projectEdit;
/// No description provided for @projectDelete.
///
/// In en, this message translates to:
/// **'Delete project'**
String get projectDelete;
/// No description provided for @projectDeleteTitle.
///
/// In en, this message translates to:
/// **'Delete the project?'**
String get projectDeleteTitle;
/// No description provided for @projectDeleteMessage.
///
/// In en, this message translates to:
/// **'\"{name}\" is deleted with its sections and tasks, on all your devices.'**
String projectDeleteMessage(String name);
/// No description provided for @projectEmptyTitle.
///
/// In en, this message translates to:
/// **'Nothing to do here'**
String get projectEmptyTitle;
/// No description provided for @projectEmptyHint.
///
/// In en, this message translates to:
/// **'Add a task with the + button.'**
String get projectEmptyHint;
/// No description provided for @projectGone.
///
/// In en, this message translates to:
/// **'This project was deleted.'**
String get projectGone;
/// No description provided for @projectMenu.
///
/// In en, this message translates to:
/// **'More'**
String get projectMenu;
/// No description provided for @projectPickTitle.
///
/// In en, this message translates to:
/// **'Project'**
String get projectPickTitle;
/// No description provided for @sectionAdd.
///
/// In en, this message translates to:
/// **'New section'**
String get sectionAdd;
/// No description provided for @sectionEdit.
///
/// In en, this message translates to:
/// **'Rename section'**
String get sectionEdit;
/// No description provided for @sectionDelete.
///
/// In en, this message translates to:
/// **'Delete section'**
String get sectionDelete;
/// No description provided for @sectionDeleteTitle.
///
/// In en, this message translates to:
/// **'Delete the section?'**
String get sectionDeleteTitle;
/// No description provided for @sectionDeleteMessage.
///
/// In en, this message translates to:
/// **'\"{name}\" is deleted with its tasks.'**
String sectionDeleteMessage(String name);
/// No description provided for @sectionMenu.
///
/// In en, this message translates to:
/// **'Section'**
String get sectionMenu;
/// No description provided for @subTasks.
///
/// In en, this message translates to:
/// **'Sub-tasks'**
String get subTasks;
/// No description provided for @subTasksDone.
///
/// In en, this message translates to:
/// **'Sub-tasks {done}/{count}'**
String subTasksDone(int done, int count);
/// No description provided for @subTaskAdd.
///
/// In en, this message translates to:
/// **'Add sub-task'**
String get subTaskAdd;
/// No description provided for @taskTitle.
///
/// In en, this message translates to:
/// **'Task'**
String get taskTitle;
/// No description provided for @taskAddTitle.
///
/// In en, this message translates to:
/// **'Add task'**
String get taskAddTitle;
/// No description provided for @taskAdd.
///
/// In en, this message translates to:
/// **'Add'**
String get taskAdd;
/// No description provided for @taskAddOn.
///
/// In en, this message translates to:
/// **'Add a task on {day}'**
String taskAddOn(String day);
/// No description provided for @taskTitleHint.
///
/// In en, this message translates to:
/// **'What\'s to be done?'**
String get taskTitleHint;
/// No description provided for @taskDescription.
///
/// In en, this message translates to:
/// **'Description'**
String get taskDescription;
/// No description provided for @taskDescriptionHint.
///
/// In en, this message translates to:
/// **'Description'**
String get taskDescriptionHint;
/// No description provided for @taskComplete.
///
/// In en, this message translates to:
/// **'Mark as done'**
String get taskComplete;
/// No description provided for @taskReopen.
///
/// In en, this message translates to:
/// **'Mark as not done'**
String get taskReopen;
/// No description provided for @taskCompleted.
///
/// In en, this message translates to:
/// **'Task done'**
String get taskCompleted;
/// No description provided for @taskDelete.
///
/// In en, this message translates to:
/// **'Delete task'**
String get taskDelete;
/// No description provided for @taskDeleteTitle.
///
/// In en, this message translates to:
/// **'Delete the task?'**
String get taskDeleteTitle;
/// No description provided for @taskDeleteMessage.
///
/// In en, this message translates to:
/// **'\"{title}\" is deleted on all your devices.'**
String taskDeleteMessage(String title);
/// No description provided for @taskDeleteWithSubTasks.
///
/// In en, this message translates to:
/// **'\"{title}\" is deleted with its {count, plural, =1{sub-task} other{{count} sub-tasks}}, on all your devices.'**
String taskDeleteWithSubTasks(String title, int count);
/// No description provided for @taskGone.
///
/// In en, this message translates to:
/// **'This task was deleted.'**
String get taskGone;
/// No description provided for @todayEmptyTitle.
///
/// In en, this message translates to:
/// **'Nothing due today'**
String get todayEmptyTitle;
/// No description provided for @todayEmptyHint.
///
/// In en, this message translates to:
/// **'Tasks dated today, and those overdue, show here.'**
String get todayEmptyHint;
/// No description provided for @lockedRows.
///
/// In en, this message translates to:
/// **'{count, plural, =1{1 item doesn\'t open on this device.} other{{count} items don\'t open on this device.}}'**
String lockedRows(int count);
/// No description provided for @inboxMissingTitle.
///
/// In en, this message translates to:
/// **'No Inbox yet'**
String get inboxMissingTitle;
/// No description provided for @inboxMissingHint.
///
/// In en, this message translates to:
/// **'Your Inbox comes with the next sync, or once this device holds your account\'s keys.'**
String get inboxMissingHint;
}
class _AppLocalizationsDelegate