- Wunschliste (Spalte travel_cities.wish): eigene Punktform auf der Karte,
zählt nicht als besucht, für andere Konten unsichtbar; "War ich da ✓"
- Besuche je Stadt (Tabellen travel_visits, travel_visit_photos): Zeitraum,
Begleitung, Notizen, Fotos (Upload ohne Metadaten); nur für das eigene
Konto; ein Besuch macht aus einem Wunsch einen Besuch
- Fotos von Besuchen zählen beim Aufräumen verwaister Bilder als benutzt;
beim Entfernen eines Fotos, Besuchs oder einer Stadt werden die Dateien
gelöscht
- Zeitleiste "Wann war ich wo?" nach Jahren, Fotos mit Lightbox
- Statistik: Länder (Welt, je Kontinent), Landfläche, äußerste Orte,
Kilometer entlang der Besuche
- Ansichten unter der Karte als Tabs: Besuchte Orte, Zeitleiste,
Statistik, Wunschliste
- Migration Schritt 4, Tests für Wunschliste, Besuche, Fotos und Aufräumen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Mindestbestand pro Liste/Produkt/Einheit (Tabelle stock_minimums): fällt
der Vorrat darunter, füllt der Server die Einkaufsliste genau bis zur
fehlenden Menge auf (nach Ändern, Aufgebraucht, Löschen, Setzen)
- Laden-Kategorien (kategorien.py): automatische Zuordnung über Stichwörter
(längstes Stichwort gewinnt), änderbar in der Zeile und im
Vorschläge-Dialog; Einkaufsliste "A–Z" oder "Nach Laden" gruppiert;
Reihenfolge der Abteilungen pro Liste
- Rezeptsammlung (Tabelle recipes): "☆ Merken" beim Abgleich, "Was kann ich
kochen?" sortiert gemerkte Rezepte nach vorhandenen Zutaten (Salz & Co.
zählen nicht, nur sichtbare Produkte), vollständiger Abgleich per Klick
- Migration Schritt 3 (Kategorien für bestehende Produkte); _add_column für
Tabellen, die SCHEMA in alten Datenbanken schon neu angelegt hat
- Tests in test_vorrat_extras.py
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Checkliste je Aufgabe (Tabelle kanban_checklist): im Dialog anlegen,
abhaken, entfernen; Karte zeigt den Fortschritt
- "Setzt voraus" (Tabelle kanban_dependencies): Aufgabe ist gesperrt und
bleibt in "Offen", bis alle Voraussetzungen erledigt sind; nur innerhalb
eines Projekts, Kreise und Selbstbezug werden abgelehnt; gelöschte
Voraussetzungen entsperren, archivierte zählen als erledigt
- Ziehen einer gesperrten Karte aus "Offen" zeigt, worauf sie wartet
- Migrationen: Tabellen-Neuaufbau über Zwischennamen, damit Fremdschlüssel
anderer Tabellen nicht auf die gelöschte Alt-Tabelle umgebogen werden
(Test für ganz alte Datenbanken)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Migration Schritt 2: Lese-/Schreibfehler (z. B. Dateirechte) und kaputte
Bilder werden protokolliert und übersprungen, statt den Serverstart
abzubrechen
- bilder.py: alle Pillow-Fehler werden zu einer Eingabe-Fehlermeldung bzw.
"keine Metadaten" statt zu Fehler 500
- Test mit schreibgeschütztem und kaputtem Bild
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Uploads: Server entfernt EXIF/XMP/Text (GPS-Standort, Kamera, Uhrzeit)
per Pillow; Drehung von Hochkant-Fotos wird vorher angewendet, Farbprofil
bleibt; GIFs unverändert (neue Abhängigkeit pillow)
- Produktvorschläge pro Liste (Tabelle list_products): Einträge privater
Listen tauchen bei anderen weder in Vorschlägen noch beim Rezeptabgleich
auf; "Vorschläge verwalten" löscht nur aus eigenen sichtbaren Listen
- Artikel: Bilder nur noch aus den eigenen Uploads (kein Tracking-Pixel
fremder Server); Bereinigung in htmlclean.py
- /api/docs und /api/openapi.json nur noch im Entwicklungsmodus
(RELOAD=1 oder P42_API_DOCS=1)
- Migration Schritt 2: bestehende Vorschläge den Listen zuordnen, Artikel
neu bereinigen, gespeicherte Bilder mit Metadaten säubern
- Tests in test_datenschutz.py (u. a. Rezept-Zuordnung, Umstellung)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Eine ValidationError-Klasse statt zwei (links.py, projects.py), ein
Fehler-Handler in main.py
- clean_text() ersetzt vier fast gleiche Text-Prüfungen (Kanban, Haushalt,
Reisen, Artikel); Fehlermeldungen nennen jetzt überall die Höchstlänge
- Zeitstempel (now_iso, iso_ago, iso_after) und Kontenliste (user_list)
an einer Stelle; ungenutzte Importe entfernt
- Tests für die Helfer und für einheitliche 400-Fehler aus allen Bereichen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- db.py enthält nur noch Schema (neuester Stand), Verbindungen und Start
- Neue Datenbank: direkt im neuesten Schema, erste Liste "Zuhause",
Version = Anzahl der Schritte
- Bestehende Datenbank: nur fehlende Schritte, jeder genau einmal
- Bisherige Einzel-Umstellungen als Schritt 1 "Altbestand" (prüfen weiter
selbst, was nötig ist); künftige Schritte werden einfach angehängt
- Tests für Versionsnummer und "Schritt läuft nur einmal"
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- backend/tests: jede Test-Funktion bekommt eine frische Datenbank;
test_migrationen.py baut ältere Datenbank-Stände nach und prüft die
verlustfreie Umstellung (auch zweiter Start ohne Änderung)
- requirements-dev.txt mit pytest
- Fix (von den Tests gefunden): Eine neue, leere Datenbank bekam keine
erste Liste "Zuhause"; jetzt einmalig beim ersten Start
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Kanban:
- Erledigte Aufgaben wandern 2 Tage nach "Erledigt" ins Archiv (Button
"Archiv (n)" im Board, dort "Zurückholen") und werden nach 14 Tagen
automatisch gelöscht (stündlich im Hintergrund und beim Öffnen)
- Neue Spalte done_at; schon erledigte Aufgaben zählen ab dem Update
Reisen:
- "Karte herunterladen": eigene Städte und besuchte Länder als PNG
(4000/8000 px, nur besuchte Hauptstädte beschriftet) oder SVG (kleine
Punkte, alle Städte beschriftet, beliebig zoombar); Ausschnitt "Meine
Orte" oder ganze Welt; Beschriftungen weichen einander aus
- Hauptstadt-Kennzeichen (GeoNames PPLC) wird beim Hinzufügen gespeichert
und für ältere Städte im Hintergrund bei Open-Meteo nachgetragen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Abgehakte Produkte bleiben auf der Einkaufsliste, rutschen durchgestrichen
nach unten ("Im Wagen") und lassen sich zurücknehmen
- Button "Einkauf beenden (n)" verschiebt alle abgehakten Produkte auf einmal
in den Vorrat derselben Liste (Mengen werden zusammengeführt)
- Haken wird gespeichert (Spalte checked, Migration ergänzt sie) und ist für
alle sichtbar, die die Liste sehen; erneut hinzugefügte Produkte verlieren
den Haken
- Einträge gleiten per View Transition an ihren neuen Platz (aus bei
"Animation: aus")
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Vorrat & Einkauf:
- Mehrere Listen (z. B. "Zuhause", "Urlaub"), jede mit eigenem Vorrat und
eigener Einkaufsliste; Auswahl oben auf der Seite, gemerkt pro Browser
- Beim Anlegen festlegen, wer die Liste sieht: alle Konten oder nur
ausgewählte (Ersteller sieht sie immer); ändern/löschen nur Ersteller
und Administratoren
- Gekauft, aufgebraucht, Nachkaufen und Rezeptabgleich wirken innerhalb
der gewählten Liste
- Migration: bisheriger Vorrat und Einkauf werden zur Liste "Zuhause"
(für alle sichtbar)
Reisen:
- Schalter "Städte anderer zeigen": Städte der übrigen Konten in je einer
eigenen Farbe, einzelne Personen ein-/ausblendbar, nur lesend
- Info-Karte zeigt, wer noch in einer Stadt bzw. einem Land war
Design "Fabrik" (Industrie-Inventar à la Satisfactory):
- Stahlplatten mit Schrauben, Titelleisten mit Fenstersymbol, gelb
leuchtende Hauptbuttons, orange Mengen-Zähler, Warnstreifen,
Riffelblech und drehende Zahnräder im Hintergrund
- Schriften Roboto / Roboto Condensed (OFL), lokal eingebunden
Doku: README verlinkt das zugehörige Repository P42-S.M.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Neue Prüfart "Server-Auslastung (P42-S.M.)": Adresse + Token (Token bleibt
im Backend, wird nie an den Browser gegeben)
- Karte zeigt CPU, RAM, vollste Platte, Load, Temperatur, Uptime
- Klick öffnet große Ansicht: Kacheln, Platten, Threads, Temperaturen,
Netzwerk, Verlaufsdiagramme (6 h / 24 h / 2 Tage) mit Tooltip und Tabelle
- Hintergrund-Task speichert jede Minute einen Mittelwert (monitor_samples,
2 Tage), unabhängig davon, ob die Seite offen ist
- Docker: zusätzlich im Netz p42, update-docker.sh legt es bei Bedarf an
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
FastAPI-Backend und React-Frontend mit Konten, Sendungsverfolgung,
Projekt-Artikeln, Vorrat & Einkauf mit Rezeptabgleich, Reise-Weltkarte,
Kanban-Projekten mit Priorität, Server-Monitoring und den Designs
Matrix und Blackwall. Betrieb per Docker hinter nginx (siehe DEPLOY.md).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>