feat(todo): quick add's keys, sub-projects' colours, a task's menu on a right click, and the completed tasks deleted at once
The developer's list of 9 Nov 2026, Todo's part: - Quick add: the down arrow and Tab move into the description, with its cursor (halkyon_editor's fix); Escape closes the projects or labels suggested first, then closes quick add, what was typed discarded; the project's chip shows the project's colour. - A project without a colour of its own shows its parent's, the nearest ancestor's with one (colorOfProject, TodoCubit.colorOf), wherever a project's colour shows; the project editor's "Same colour as its parent" keeps it so, and the parent picker shows each project in its colour. A project of its own always has one. - The task pane's x closes it, always; Close left the ⋮ menu. - A task's row opens its menu on a right click: Mark as done, Date, Move to, Labels, Priority, Deadline, Duplicate and Delete, the selection's actions for that one task. - Delete completed tasks, in the ⋮ of the Inbox, Today, Upcoming and a project, with Undo: the tasks leave the list at once and are deleted once the snack bar goes without its Undo (halkyon_ui's showUndoSnackBar gains onKept). Whats-New: Quick add: the arrow keys and Tab reach the description, and Escape closes it without saving. Whats-New-De: Schnell hinzufügen: Pfeiltasten und Tab erreichen die Beschreibung, und Escape schließt es, ohne zu speichern. Whats-New: Sub-projects take their parent's colour unless they have their own. Whats-New-De: Unterprojekte übernehmen die Farbe ihres übergeordneten Projekts, wenn sie keine eigene haben. Whats-New: A right click on a task opens its menu, with Move to and more; Delete completed tasks clears a list, with Undo. Whats-New-De: Ein Rechtsklick auf eine Aufgabe öffnet ihr Menü, mit Verschieben nach und mehr; Erledigte Aufgaben löschen räumt eine Liste auf, mit Rückgängig. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
560de2ed93
commit
9e1442d89e
6 changed files with 810 additions and 78 deletions
|
|
@ -132,6 +132,7 @@
|
|||
"projectDelete": "Projekt löschen",
|
||||
"projectDeleteTitle": "Projekt löschen?",
|
||||
"projectDeleteMessage": "„{name}“ wird mit seinen Abschnitten und Aufgaben auf all deinen Geräten gelöscht.",
|
||||
"projectInheritColor": "Gleiche Farbe wie das übergeordnete Projekt",
|
||||
"projectParent": "Übergeordnetes Projekt",
|
||||
"projectNoParent": "Kein übergeordnetes Projekt",
|
||||
"projectFavorite": "Favorit",
|
||||
|
|
@ -231,7 +232,6 @@
|
|||
"taskDuplicated": "Aufgabe dupliziert",
|
||||
"subTasksHideDone": "Erledigte Unteraufgaben ausblenden",
|
||||
"subTasksShowDone": "Erledigte Unteraufgaben zeigen",
|
||||
"taskClose": "Schließen",
|
||||
"taskPath": "Wo die Aufgabe liegt",
|
||||
"weekToday": "Zurück zu heute",
|
||||
"monthPrevious": "Voriger Monat",
|
||||
|
|
@ -402,5 +402,7 @@
|
|||
"locationOffTitle": "Standort ist für Erinnerungen aus",
|
||||
"locationOffHint": "Erinnerungen an einem Ort brauchen „Immer zulassen“.",
|
||||
"locationArrived": "Du bist bei {name}",
|
||||
"locationLeft": "Du hast {name} verlassen"
|
||||
"locationLeft": "Du hast {name} verlassen",
|
||||
"tasksDeleteCompleted": "Erledigte Aufgaben löschen",
|
||||
"tasksCompletedDeleted": "{count, plural, =1{1 erledigte Aufgabe gelöscht} other{{count} erledigte Aufgaben gelöscht}}"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -282,6 +282,10 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"projectInheritColor": "Same colour as its parent",
|
||||
"@projectInheritColor": {
|
||||
"description": "In a sub-project's editor: whether it shows in its parent's colour rather than one of its own (the developer's review, 9 Nov 2026)."
|
||||
},
|
||||
"projectParent": "Parent project",
|
||||
"@projectParent": {
|
||||
"description": "A project's editor (ADR 0033, D28), as Todoist's Add project."
|
||||
|
|
@ -598,7 +602,6 @@
|
|||
"taskDuplicated": "Task duplicated",
|
||||
"subTasksHideDone": "Hide done sub-tasks",
|
||||
"subTasksShowDone": "Show done sub-tasks",
|
||||
"taskClose": "Close",
|
||||
"taskPath": "Where the task is",
|
||||
"weekToday": "Back to today",
|
||||
"monthPrevious": "Previous month",
|
||||
|
|
@ -1246,5 +1249,18 @@
|
|||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tasksDeleteCompleted": "Delete completed tasks",
|
||||
"@tasksDeleteCompleted": {
|
||||
"description": "A list's menu: deletes its done tasks, with an Undo (the developer's review, 9 Nov 2026)."
|
||||
},
|
||||
"tasksCompletedDeleted": "{count, plural, =1{1 completed task deleted} other{{count} completed tasks deleted}}",
|
||||
"@tasksCompletedDeleted": {
|
||||
"description": "The snack bar after Delete completed tasks, with its Undo.",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"@@locale": "en_US",
|
||||
"projectFavorite": "Favorite",
|
||||
"favoritesTitle": "Favorites"
|
||||
"favoritesTitle": "Favorites",
|
||||
"projectInheritColor": "Same color as its parent"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -892,6 +892,12 @@ abstract class AppLocalizations {
|
|||
/// **'\"{name}\" is deleted with its sections and tasks, on all your devices.'**
|
||||
String projectDeleteMessage(String name);
|
||||
|
||||
/// In a sub-project's editor: whether it shows in its parent's colour rather than one of its own (the developer's review, 9 Nov 2026).
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Same colour as its parent'**
|
||||
String get projectInheritColor;
|
||||
|
||||
/// A project's editor (ADR 0033, D28), as Todoist's Add project.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
@ -1486,12 +1492,6 @@ abstract class AppLocalizations {
|
|||
/// **'Show done sub-tasks'**
|
||||
String get subTasksShowDone;
|
||||
|
||||
/// No description provided for @taskClose.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Close'**
|
||||
String get taskClose;
|
||||
|
||||
/// No description provided for @taskPath.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
@ -2517,6 +2517,18 @@ abstract class AppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'You\'ve left {name}'**
|
||||
String locationLeft(String name);
|
||||
|
||||
/// A list's menu: deletes its done tasks, with an Undo (the developer's review, 9 Nov 2026).
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete completed tasks'**
|
||||
String get tasksDeleteCompleted;
|
||||
|
||||
/// The snack bar after Delete completed tasks, with its Undo.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =1{1 completed task deleted} other{{count} completed tasks deleted}}'**
|
||||
String tasksCompletedDeleted(int count);
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
|
|
|||
|
|
@ -487,6 +487,10 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
return '„$name“ wird mit seinen Abschnitten und Aufgaben auf all deinen Geräten gelöscht.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get projectInheritColor =>
|
||||
'Gleiche Farbe wie das übergeordnete Projekt';
|
||||
|
||||
@override
|
||||
String get projectParent => 'Übergeordnetes Projekt';
|
||||
|
||||
|
|
@ -921,9 +925,6 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
@override
|
||||
String get subTasksShowDone => 'Erledigte Unteraufgaben zeigen';
|
||||
|
||||
@override
|
||||
String get taskClose => 'Schließen';
|
||||
|
||||
@override
|
||||
String get taskPath => 'Wo die Aufgabe liegt';
|
||||
|
||||
|
|
@ -1574,4 +1575,18 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
String locationLeft(String name) {
|
||||
return 'Du hast $name verlassen';
|
||||
}
|
||||
|
||||
@override
|
||||
String get tasksDeleteCompleted => 'Erledigte Aufgaben löschen';
|
||||
|
||||
@override
|
||||
String tasksCompletedDeleted(int count) {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count erledigte Aufgaben gelöscht',
|
||||
one: '1 erledigte Aufgabe gelöscht',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -487,6 +487,9 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
return '\"$name\" is deleted with its sections and tasks, on all your devices.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get projectInheritColor => 'Same colour as its parent';
|
||||
|
||||
@override
|
||||
String get projectParent => 'Parent project';
|
||||
|
||||
|
|
@ -921,9 +924,6 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
@override
|
||||
String get subTasksShowDone => 'Show done sub-tasks';
|
||||
|
||||
@override
|
||||
String get taskClose => 'Close';
|
||||
|
||||
@override
|
||||
String get taskPath => 'Where the task is';
|
||||
|
||||
|
|
@ -1572,6 +1572,20 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
String locationLeft(String name) {
|
||||
return 'You\'ve left $name';
|
||||
}
|
||||
|
||||
@override
|
||||
String get tasksDeleteCompleted => 'Delete completed tasks';
|
||||
|
||||
@override
|
||||
String tasksCompletedDeleted(int count) {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count completed tasks deleted',
|
||||
one: '1 completed task deleted',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
}
|
||||
|
||||
/// The translations for English, as used in the United Kingdom (`en_GB`).
|
||||
|
|
@ -1583,6 +1597,9 @@ class AppLocalizationsEnGb extends AppLocalizationsEn {
|
|||
class AppLocalizationsEnUs extends AppLocalizationsEn {
|
||||
AppLocalizationsEnUs() : super('en_US');
|
||||
|
||||
@override
|
||||
String get projectInheritColor => 'Same color as its parent';
|
||||
|
||||
@override
|
||||
String get projectFavorite => 'Favorite';
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue