CSV-Import/-Export (Gerichte, Allergene, Zusatzstoffe): neue Export-/
Import-Routen unter app/api/*/export und */import, hand-geschriebener
CSV-Parser/-Serializer (lib/csv.ts, keine neue Abhängigkeit), Upsert
über Kürzel (Allergene/Zusatzstoffe) bzw. exakten Namen (Gerichte,
mit Ambiguitäts-Check bei Namensdopplung). UI-Buttons in DishManager
und CodeListManager.
RSS-Feed: <content:encoded> zusätzlich zu <description> ausgeben,
da mehrere Feed-Reader description als kürzbare Vorschau behandeln
und dadurch bei mehreren Essenszeiten pro Tag nur die erste zeigten.
Version 1.7.0.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Ohne die Variable weicht lib/branding.ts auf ${cwd}/data/branding
(= /app/data/branding) aus statt das im Dockerfile vorbereitete und
gemountete /data/branding zu nutzen. /app gehört root, der App-Prozess
läuft aber als nicht-root – das Anlegen des Fallback-Verzeichnisses
schlägt mit EACCES fehl.
Version 1.6.3.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Vollständig verifiziert: natives npm run dev auf frisch geleerter
lokaler Postgres-DB (Migration + Admin-Bootstrap + ZUGANGSDATEN.md,
Login, Essenszeiten/Gerichte/Wochenplan/Kennzeichnung/Vorschläge-CRUD,
Konto-Verwaltung inkl. serverseitiger Passkey-Absicherung,
Branding-Upload/-Löschung, Admin-Benutzerverwaltung mit
rollenbasierter Zugriffskontrolle, Neustart-Idempotenz) sowie über
docker compose --build auf eigenem Volume (Migration/Bootstrap im
Container-Entrypoint, Bind-Mount für ZUGANGSDATEN.md, Login).
Der Kopfbereich der öffentlichen Speisekarte zeigte seinen eigenen
LanguageSwitcher auch auf schmalen Bildschirmen an, obwohl
PublicMobileMenu dort bereits einen eigenen rendert. Der Header-Switcher
ist jetzt wie der Rest des Desktop-Layouts erst ab dem sm-Breakpoint
sichtbar.
Betrifft UI-Texte (DE/EN/PL), Route (/intern/bereiche ->
/intern/essenszeiten), Code-Kommentare, Changelog und README.
Fachlich unverändert (weiterhin die Tabelle/Komponente "sections"/
SectionManager im Code), da "Essenszeiten" den Zeitbezug des Features
klarer ausdrückt als der bisherige Sammelbegriff.