# Entwicklungstagebuch Neuester Eintrag oben. Die Dauer je Sitzung stammt aus `devlog/zeiten.csv`, die Übersicht aus `scripts/zeit.sh summe`. ## Zeit je Meilenstein | Meilenstein | Art | Minuten | Stunden | | ----------- | ------ | ------- | -------- | | M1 | claude | 161 | 2,68 | | M2 | claude | 44 | 0,73 | | **Gesamt** | | **205** | **3,42** | --- ## 2026-09-10 – M2: Aufgaben und Projekte **Dauer:** 44 Minuten (15:57–16:41), Art `claude`. **Ziel der Sitzung:** Erfassen und Wiederfinden — Aufgaben, Inbox, Ideen und Projekte. Noch ohne Kalender. ### Erledigt - Datenmodell `Aufgabe` und `Projekt` samt Migration - Schnellerfassung, Inbox mit Einsortieren, Aufgabenliste mit Filtern - Ideen als eigene Ansicht, mit Übernahme in eine Aufgabe - Projekte mit Arbeitspaketen, Meilensteinen und Fortschritt - Startseite zeigt jetzt, was überfällig oder demnächst fällig ist - 53 neue Unit-Tests, 11 neue Integrationsprüfungen, 4 neue E2E-Tests - Handbuchseiten zu Aufgaben, Ideen und Projekten; Bilder neu aufgenommen ### Entscheidungen mit Begründung **Die Inbox ist kein eigener Zustand.** Eine Aufgabe liegt genau dann in der Inbox, wenn sie keinen Bereich hat. Ein zusätzliches Feld „einsortiert" hätte mit der Zuordnung auseinanderlaufen können; so ist der Zustand nicht darstellbar. **Projekt als eigenes Modell, nicht als Aufgabentyp.** Ein Projekt hat selbst weder Aufwand noch Fälligkeit — beides ergibt sich aus dem Inhalt. `ARBEITSPAKET` und `MEILENSTEIN` bleiben Typen der Aufgaben _innerhalb_ eines Projekts. **Verworfene Aufgaben zählen gar nicht in den Fortschritt.** Weder als erledigt noch als offen. Sonst sähe ein Projekt fertig aus, weil die Hälfte gestrichen wurde — eine Zahl, die lügt, ist schlechter als keine. **Sortiert wird in der Anwendung, nicht in SQL.** Die Reihenfolge ist mehrstufig (offen vor abgeschlossen, dann Termin, dann Priorität, dann Titel mit deutscher Sortierung). Als geprüfte reine Funktion steht sie an einer Stelle; eine zweite Fassung in SQL wäre eine Fehlerquelle. Bei den erwarteten Mengen ist das unkritisch — sollte es einmal eng werden, ist der Ort für die Änderung klar. **Filter stehen in der Adresse.** Eine gefilterte Liste lässt sich als Lesezeichen ablegen, und der Zurück-Knopf tut, was er soll. **Statuswechsel folgen festen Übergängen.** Aus `ERLEDIGT` und `VERWORFEN` geht es nur zurück nach `OFFEN`. Wer per Formular etwas anderes einreicht, bekommt eine Meldung — nicht einen stillen Zustandssprung. **Fälligkeit in Kalendertagen, nicht in Stunden.** Was heute um 23:00 fällig ist, ist heute fällig. Alles andere fühlt sich beim Benutzen falsch an. **Natives `