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

@ -461,6 +461,32 @@ The developer's review of 4 Nov 2026, again beside Todoist's screens.
- **D27 Listed in F-Droid as *Task* and *Calendar & Agenda*** (the developer's, both,
over *Time*, which F-Droid's categories give to clocks and timers): no other app of
the repository used *Time*, so the repository no longer lists it.
- **D28 A project's editor as Todoist's Add project, with sub-projects and
favourites** (the developer's, over the dialog of a name and a colour): a screen of its
own on a phone (*Add project*, *Edit project*, ← and ✓ in its app bar), the same in a
dialog where sheets are dialogs; the name counted to 120, a description, then rounded
rows: the colour (its palette name, opening the picker), the parent project (*No
parent* or a project, from a sheet listing them indented; never the project itself
nor any project below it, `parentChoices`, so none becomes its own ancestor), a
Favourite switch; then the Layout, Display's pictures (`LayoutPicker`). All of it is
**in the project's sealed payload** (`description`, `parentId`, `favorite`,
`defaultView`), no server model changed, no migration, the schema still 1; the payload
now keeps the fields it doesn't know, as a task's (D18), so a later version's survive
an edit here (a 0.2.0 device editing a project still drops these). **The default
Display**: a new project starts with the layout picked, and Display's *Reset all*
returns to it (`defaultView`, the dot on Display marking a Display that differs from
it); the editor sets its layout, and a layout picked anew there shows at once.
Projects made before keep List as their default. **Browse** lists each project's
sub-projects indented under it, folding under its chevron (the fold not kept, agent's
choice: a choice of the device, and quick to make again), and the favourite projects
in a *Favourites* group above the projects. A project whose parent is gone or doesn't
open here, or projects whose parents run in a circle (two devices each moving one
under the other), stand as projects of their own, none lost (`projectTree`). **Deleting
a project deletes its sub-projects**, with their sections and tasks, as Todoist does,
the confirmation naming them first (`TodoPerson.deleteProject`). *Alternatives:* the
sub-projects moved up a level (kept, but surprising after a confirmation that named
only the parent); a depth limit as Todoist's (four levels), left until deep trees turn
out to be a problem.
## Steps