feat(todo): a project's editor as Todoist's Add project, with sub-projects and favourites

Adding or editing a project was a dialog of a name and a colour. It is
now a screen of its own on a phone (a dialog where sheets are dialogs),
as Todoist's Add project: the name counted to 120, a description, the
colour, the parent project, a Favourite switch and the layout, Display's
pictures. All of it lives in the project's sealed payload, the schema
still 1, no server model or migration; the payload now keeps fields it
doesn't know, as a task's does.

A new project starts with the layout picked, and Display's Reset all
returns to that default rather than to List. Browse lists sub-projects
indented and folding under their parents, and the favourites in a group
above; a project is never offered as its own ancestor, and a parent's
deletion takes its sub-projects, naming them first, as Todoist's. ADR
0033, D28.

Whats-New: Add project and Edit project are a screen of their own, with a description, a parent project, Favourite and the layout.
Whats-New: Browse lists sub-projects under their parents and your favourite projects at the top.
Whats-New: Reset all in Display returns to the layout the project was made with.
Whats-New-De: „Projekt hinzufügen“ und „Projekt bearbeiten“ sind eine eigene Seite, mit Beschreibung, übergeordnetem Projekt, Favorit und Layout.
Whats-New-De: „Übersicht“ zeigt Unterprojekte unter ihren Projekten und deine Favoriten oben.
Whats-New-De: „Alles zurücksetzen“ in der Anzeige kehrt zum Layout zurück, mit dem das Projekt angelegt wurde.

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 20:56:34 +01:00
commit d0e72cf095
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -409,7 +409,7 @@ abstract class AppLocalizations {
/// No description provided for @projectAdd.
///
/// In en, this message translates to:
/// **'New project'**
/// **'Add project'**
String get projectAdd;
/// No description provided for @projectEdit.
@ -436,6 +436,48 @@ abstract class AppLocalizations {
/// **'\"{name}\" is deleted with its sections and tasks, on all your devices.'**
String projectDeleteMessage(String name);
/// A project's editor (ADR 0033, D28), as Todoist's Add project.
///
/// In en, this message translates to:
/// **'Parent project'**
String get projectParent;
/// No description provided for @projectNoParent.
///
/// In en, this message translates to:
/// **'No parent'**
String get projectNoParent;
/// No description provided for @projectFavorite.
///
/// In en, this message translates to:
/// **'Favourite'**
String get projectFavorite;
/// No description provided for @favoritesTitle.
///
/// In en, this message translates to:
/// **'Favourites'**
String get favoritesTitle;
/// No description provided for @projectSubProjectsHide.
///
/// In en, this message translates to:
/// **'Hide sub-projects'**
String get projectSubProjectsHide;
/// No description provided for @projectSubProjectsShow.
///
/// In en, this message translates to:
/// **'Show sub-projects'**
String get projectSubProjectsShow;
/// Deleting a project with sub-projects (ADR 0033, D28): subProjects their names, separated by commas.
///
/// In en, this message translates to:
/// **'\"{name}\" is deleted with its sub-projects {subProjects}, and their sections and tasks, on all your devices.'**
String projectDeleteWithSubProjects(String name, String subProjects);
/// No description provided for @projectEmptyTitle.
///
/// In en, this message translates to: