Files
Speisekarte/CHANGELOG.md
T
2026-07-18 02:08:04 +02:00

4.2 KiB
Raw Blame History

Changelog

Alle nennenswerten Änderungen an diesem Projekt werden hier dokumentiert. Format angelehnt an Keep a Changelog, Versionierung nach Semantic Versioning.

[1.3.0] – 2026-07-18

Hinzugefügt

  • Mehrsprachigkeit für die komplette Anwendung (Deutsch, Englisch, Polnisch): Sprachumschalter (Cookie-basiert, kein Neuladen der Seite nötig), sämtliche Oberflächentexte übersetzt
  • Gerichte, Bereiche, Allergene und Zusatzstoffe zusätzlich mit englischem/polnischem Namen; öffentliche Speisekarte zeigt je nach gewählter Sprache automatisch den passenden Namen (Fallback: Deutsch, falls keine Übersetzung hinterlegt ist)
  • Automatische Übersetzung per DeepL: Button „Automatisch übersetzen“ beim Anlegen/Bearbeiten von Gerichten, Allergenen und Zusatzstoffen; Ergebnis bleibt danach manuell korrigierbar. Aktivierung über die neue Docker-Variable DEEPL_API_KEY – ohne Key bleibt der Button inaktiv, die Felder lassen sich weiterhin von Hand ausfüllen
  • Rezeptvorschläge im öffentlichen Bereich: nicht angemeldete Besucher können über „Rezept vorschlagen“ ein fehlendes Gericht vorschlagen (Name + optionale Beschreibung), inkl. Dublettenprüfung gegen bestehende Gerichte und einfachem Honeypot-Spamschutz
  • Neue Seite „Vorschläge“ im Kantinen-Bereich: eingereichte Vorschläge sichten, als Gericht übernehmen oder ablehnen

Behoben

  • Passwort-wiederholen-Feld beim Bearbeiten eines Benutzers erschien erst, nachdem im ersten Passwortfeld schon getippt wurde – wirkte wie ein einzelnes Pflichtfeld
  • Anmelden-Button überlappte auf Mobilgeräten mit breiten Logos (Banner-Format) das Logo, da er absolut in der oberen Ecke positioniert war

[1.2.0] – 2026-07-18

Hinzugefügt

  • „Heute"-Button in der Wochennavigation (öffentliche Speisekarte und Wochenplan-Editor)
  • Mobile Ansicht der öffentlichen Speisekarte: umschaltbar zwischen Tag (Standard) und Woche, unabhängig von der Desktop-Tabelle
  • Allergene und Zusatzstoffe wieder pro Gericht auswählbar (Chip-Auswahl im Formular) und als kleine Kürzel neben dem Gerichtnamen sichtbar – in Speisekarte, mobiler Ansicht und Wochenplan-Editor
  • Passwort-Wiederholung beim Anlegen neuer Benutzer und beim optionalen Passwort-Reset
  • Passwort-Anmeldung pro Konto deaktivierbar (nur wenn mindestens ein Passkey registriert ist), Durchsetzung im Login-Flow
  • SITE_TITLE-Umgebungsvariable für Browser-Tab-Titel und Überschrift ohne Logo
  • Austauschbares Favicon über den Admin-Design-Bereich

Geändert

  • Gemeinsame Navigation für Kantinen- und Admin-Bereich statt zwei getrennter Menüs
  • Live-Suche bei den Gerichten
  • Mehrfachauswahl zum Batch-Löschen von Gerichten
  • App erreichbar auf 0.0.0.0 statt nur localhost (Docker und nativer Betrieb)
  • Projekt umbenannt von „Speisekarte“ zu „canteen-menu“ (Docker-, npm- und Supabase-Namen; deutsche In-App-Texte unverändert)
  • Öffentliche URL über APP_URL konfigurierbar (CSRF-Origin-Check hinter Reverse-Proxy, Passkey-Domain)

Behoben

  • Next.js band app/favicon.ico zusätzlich zu einem dynamisch gesetzten Favicon ein – Favicon wird jetzt immer explizit gesetzt
  • Weiterleitungen (Logout, Zugriffsschutz) übernahmen nach der 0.0.0.0-Bindung fälschlich die Server-Adresse statt des aufgerufenen Hosts

[1.1.0] – 2026-07-17

Hinzugefügt

  • Versionsnummer im Fußbereich jeder Seite

[1.0.0] – 2026-07-17

Erste vollständige Version.

Hinzugefügt

  • Öffentliche Speisekarte ohne Login: Wochenansicht Mo–Fr mit den Bereichen Brotzeit, Mittagessen, Mittagessen vegetarisch und Suppe; Wochen-Navigation; Logo zentriert; Allergene & Zusatzstoffe unterhalb der Karte
  • Anmeldung mit E-Mail/Passwort oder Passkey
  • Kantinen-Bereich: Gerichte anlegen/bearbeiten/löschen, Wochenplan pflegen, globale Allergen-/Zusatzstofflisten verwalten
  • Admin-Bereich: Benutzerverwaltung, Farbgebung, Logo-Upload
  • Eigenes Konto verwalten: Name, E-Mail, Passwort, Passkeys
  • Row-Level-Security, HTTP-Security-Header, CSRF-Origin-Check
  • Docker-Setup (App-Image, lokale PostgreSQL-Kopie, Dev-Profil ohne lokales Node.js)
  • Lokale PostgreSQL-Kopie mit Sync-Skript