Bericht: Welle 7 — Vorrat wird ein Kreislauf (07.06.2026 spätnachts)
Executive Summary
Alle 7 Funde aus Dennis' Welle-6-Gerätetest sind behoben (ADR-49). Der rote Faden: Der Vorrat war bisher eine Einbahnstraße — Abzüge kannten ihren Anlass nicht, also konnte nichts zurückgebucht werden, Plan-Essen zog gar nichts ab, und hinein kam nur, was ein Bon lieferte. Jetzt ist es ein Kreislauf: Jeder Abzug hängt per inv_log.ref am Tagebuch-Eintrag, Löschen/Zurücknehmen bucht zurück (Undo zieht wieder ab, zyklenfest), Plan-Essen zieht Zutaten ab, und Artikel lassen sich per Suche oder Barcode-Scan einlagern. Dazu: Gerichte direkt im Essen-loggen-Sheet, grammgenaues Verbrauchen, neuer Einkaufslisten-Kopf. Parallel hat ein Sub-Agent das Testplan-Feedback-Konzept erarbeitet (Defects direkt am Testplan + Continuity-Paste für Screenshots).
In einfachen Worten
Bisher galt: Was der Vorrat einmal hergegeben hat, war weg — auch wenn man den Tagebuch-Eintrag gleich wieder löschte. Und wer nach Wochenplan aß, dessen Vorrat bekam davon gar nichts mit. Jetzt merkt sich jeder Abzug, zu welchem Essen er gehört: Eintrag weg → Zutaten wieder da; Eintrag per Undo zurück → Zutaten wieder weg. Außerdem kann man endlich Sachen in den Vorrat legen (suchen oder Barcode scannen), beim Verbrauchen in Gramm denken statt in ganzen Packungen, und Gerichte direkt beim Essen-Loggen auswählen.
Die 7 Funde und ihre Fixes
| # | Fund | Fix |
|---|---|---|
| 1 | Tagebuch-Löschen gibt 🪸-Abzug nicht zurück | Abzüge tragen ref="diary:{id}"; DELETE bucht die Netto-Summe je Food zurück (storniert), Restore zieht frisch wieder ab — Zyklus löschen↔undo beliebig oft, per API verifiziert (2,0 → 1,5 → 2,0 → 1,5 → 2,0) |
| 2 | Balken „immer grün" bei 50 g/400 g | Diagnose: bei 0,125 × WAR er bernstein — Dennis' Fall war „50 g offen + 1 voll" (Gesamt-Regel). Neu: Bernstein folgt dem, was der Balken zeigt — die offene Packung < ¼ |
| 3 | Keine neuen Artikel in den Vorrat | „+ Artikel" im Vorrat: Katalogsuche oder 📷 EAN-Scan (bekannte EAN → Mengen-Schritt, unbekannte → OFF-Vorschau → Artikel wird angelegt), Menge + Stück/kg, Journal-reason eingelagert |
| 4 | Verbrauchen nimmt nur GANZE Stücke | Verbrauchen-Sheet ist bei Packungs-Artikeln grammgesteuert: „🪸 −200 g vom Vorrat (0,5 von 1,13 Pck à 400 g)" — Abzug = Gramm/Packungsgewicht, gedeckelt am Bestand |
| 5 | Einkaufslisten-Kopf „schlecht" | EIN Hero-Panel statt Chip-Zeile + Karte: Wochen-Navigation, „X offen" groß, ~€-Schätzung, Fortschrittsbalken (grün + 🎉 bei komplett), Aktionen — Look wie der Heute-Hero |
| 6 | Nur Artikel loggbar, keine Gerichte | Essen-loggen-Suche findet Gerichte (Sektion 🍲, ⭐-Favoriten ohne Suchtext), Portionen-Stepper, „🪸 Zutaten vom Vorrat abziehen (N von M im Vorrat)" — läuft über das bestehende POST /api/dishes/{id}/log |
| 7 | Plan-Essen zieht Zutaten nicht ab | plan_eat ruft jetzt mit deplete_stock=True (Gericht UND Einzel-Artikel); „↩︎ gegessen" bucht zurück. Per API mit dem echten Sriracha-Sandwich verifiziert (0,971 → 0,916 → 0,971) |
Beifang
- Heute-Ring-Regression aus Welle 6:
.ringwrap { line-height: 0 }erbte in die foreignObject-Texte → „kcal übrig" lag über der Zahl. Jetztdisplay: grid. - Toasts machen die neue Mechanik sichtbar: „Eintrag gelöscht · 🪸 zurückgelegt", „… 🪸 2 Zutaten", „↩︎ … · 🪸 zurückgelegt".
- Journal-Gründe als Klartext, neu:
eingelagert,zurückgelegt(storniert),entnommen.
Testplan-Feedback-Konzept (Sub-Agent, parallel)
Recherche im Archiv. Kurzfassung: Continuity-Paste funktioniert (iPhone-Screenshot → Universal Clipboard → Cmd+V im Mac-Browser), aber über clipboardData.items + getAsFile() mit gezieltem image/png-Griff (Safari-TIFF-Falle). Architektur: Testpläne hinter der App-Auth (silverscale.dennisfisch.de/testplan/welle-N) + same-origin Feedback-Endpoint — kein CORS, kein Token im öffentlichen HTML; Ablage app/data/testplan-feedback/welle-N/ (findings.json + findings.md + img/), direkt von Claude lesbar. Inzwischen GEBAUT (ADR-50, Nachtrag §9 in der Recherche): nur noch App-Domain (Archiv-Kategorie entfernt), findings.md bleibt lokal, Bilder unskaliert.
Verifikation
- API-Roundtrips: Rückbuchungs-Zyklus Einzelartikel + Gericht ✓ (Bestände centgenau zurück), Testdaten zurückgedreht, Dennis' echte Tagebuch-Einträge unangetastet
- Playwright-Screenshots (mobil): Bernstein bei „offen+voll" ✓ · +-Artikel-Sheet · grammgesteuertes Verbrauchen · Einkaufslisten-Hero · 🍲-Gerichte-Suche · Gericht-Panel mit Vorrats-Checkbox · Ring-Fix
- Gerätetest steht aus → Testplan Welle 7 (hinter Login, mit 🐞-Defect-Feedback) (17 Punkte)
Bezug: Welle-6-Feedback (7 Funde) · ADR-49 in app/ARCHITEKTUR.md · Welle-6-Bericht