strichfrei/Release Notes

Release Notes

Alle Neuerungen, Verbesserungen und Bugfixes — von Anfang an.

Legende:NeuVerbessertBehobenEntfernt

v0.56.0

Aktuell

Diese Woche stand im Zeichen der Zuverlässigkeit: Ein tieferliegender Fehler sorgte zeitweise dafür, dass neue Bestellungen, Rundenbeanspruchungen und Ranking-Änderungen bei niemandem mehr live ankamen, weder bei anderen Geräten noch im eigenen — jetzt behoben, ebenso ein Fehler, durch den offline erfasste Kiosk-Bestellungen nach der Wiederverbindung nie übertragen wurden. Dazu spürbare Ladezeit-Verbesserungen (insbesondere auf dem Handy und in der Admin-Statistik) sowie mehrere kleinere Fixes rund um Sitzungsverwaltung, Berichte und Barrierefreiheit.

VerbessertLadezeit auf dem Handy deutlich verbessert — die App zeigte vorher teils lange eine leere Seite, bevor überhaupt der Lade-Bildschirm sichtbar wurde
VerbessertAdmin-Statistiken laden jetzt spürbar schneller (Berechnung läuft direkt in der Datenbank statt im Browser)
VerbessertAllgemeine Ladezeit-Verbesserungen an mehreren Stellen (Anmeldung, erste Produktbilder, Kontowechsel im Kiosk/Tresen)
VerbessertSicherheit: mehrere interne Berechtigungsprüfungen weiter verschärft (u. a. rund um Kontoeinstellungen und Zugriffsrechte)
BehobenNeue Bestellungen, Rundenbeanspruchungen und Ranking-Änderungen kamen zeitweise bei niemandem mehr live an — weder bei anderen Nutzern noch im eigenen Gerät, nur noch über den 30-Sekunden-Fallback
BehobenKiosk: Offline erfasste Bestellungen wurden nach der Wiederverbindung nie übertragen (blieben dauerhaft als „wartend" in der Warteschlange)
BehobenKiosk/Tresen: Der Konto-Tab eines Mitglieds aktualisierte Saldo und Verlauf nicht, wenn die auslösende Aktion von einem anderen Gerät kam
BehobenKiosk/Tresen: Eine bereits über eine andere Oberfläche beanspruchte Runde wurde dort weiterhin als verfügbar angezeigt
BehobenNach einem automatischen Sitzungs-Refresh konnte man unerwartet ausgeloggt wirken bzw. eine Fehlermeldung sehen, insbesondere direkt nach einer Weiterleitung (z. B. Login → Dashboard)
BehobenMonatsberichte zeigten für vergangene Zeiträume gelegentlich einen falschen Endsaldo, wenn danach weitere Buchungen erfolgt waren
BehobenAutomatisch generierte Monatsberichte konnten bei einem seltenen Server-Timeout für einen ganzen Monat komplett ausbleiben, ohne dass das auffiel
BehobenTastaturbedienung: Fokus blieb beim Öffnen eines Dialogs (z. B. Zahlungsanfrage) nicht zuverlässig darin und sprang beim Schließen nicht zum auslösenden Element zurück
BehobenRegistrierung: Kiosk-PIN-Felder wurden vom Browser fälschlich als Passwortfelder erkannt — Risiko, dass dabei versehentlich das eigentliche Kontopasswort überschrieben wird
BehobenTresen: Mitgliederliste zeigte im Offline-Modus keine Erklärung, warum Bestellen gerade gesperrt ist
BehobenVerlauf zeigte bei einer selbst beanspruchten eigenen gesponserten Runde zwei Einträge statt einem
BehobenAdmin-Exporte ohne ausreichende Berechtigung zeigten eine leere weiße Seite statt einer klaren Weiterleitung

v0.55.0

Umfangreiche Sicherheits-Härtung nach einem internen Audit: zahlreiche interne Berechtigungsprüfungen rund um Kiosk, Tresen und Bestellungen verschärft, sensible Datenfelder weiter eingeschränkt, und mehrere Stellen mit gleichzeitigen Buchungen robuster gemacht. Dazu zwei sichtbare Bugfixes: Die Admin-Einstellungsseite leitete fälschlich zur Übersicht zurück, und der Kiosk zeigte nach der PIN-Eingabe kurzzeitig „Wird bestellt…", obwohl noch nichts bestellt wurde.

NeuTresen zeigt jetzt wie der Kiosk einen Live/Verbinde/Offline-Status-Indikator, wenn Echtzeit-Updates gerade ausbleiben
VerbessertSicherheit: zahlreiche interne Berechtigungsprüfungen rund um Kiosk-, Tresen- und Bestell-Funktionen verschärft — u. a. konsequente Prüfung, ob eine Organisation pausiert ist, bevor eine Buchung durchgeführt wird
VerbessertSicherheit: Zugriff auf sensible interne Datenfelder (u. a. PIN-Prüfsummen) weiter eingeschränkt
VerbessertJugendschutz-Einstellungen (FSK16/18) werden jetzt zusätzlich serverseitig durchgesetzt, nicht mehr nur in der Bestell-Oberfläche selbst
VerbessertMehrere Stellen mit potenziell gleichzeitigen Buchungen (Zahlungsbestätigung, Einladungslinks, Inventur, automatisierte Mahnmails/Berichte) sind jetzt robuster gegen sehr knapp aufeinanderfolgende Aktionen
BehobenKiosk/Tresen: Eine aktive Runde ließ sich weiterhin über das normale Mitglieder-Profil beanspruchen, obwohl Bestellungen für die Organisation auf Kiosk/Tresen beschränkt waren
BehobenAdmin-Einstellungen: Die Seite leitete unter bestimmten Umständen sofort zur Admin-Übersicht zurück, statt sich zu öffnen
BehobenKiosk: Nach erfolgreicher PIN-Eingabe zeigte der Bestellen-Button kurzzeitig „Wird bestellt…" und Produkte wirkten nicht anklickbar, obwohl noch keine Bestellung lief
BehobenStornierungsfenster „heute" konnte je nach Server-Zeitzone bis zu 2h von der tatsächlichen Berliner Tagesgrenze abweichen

v0.54.0

Kiosk und Tresen ziehen weiter mit dem neuen Usermodal gleich: Beide bekommen einen eigenen Verlauf (mit PIN-Absicherung) sowie ein einheitliches Ranking-Banner mit Bestenlisten-Ansicht. Der größte Teil dieses Updates sind jedoch Echtzeit- und Zuverlässigkeits-Verbesserungen — neue Runden, Ranking-Änderungen und Org-Ankündigungen kommen jetzt deutlich zügiger und zuverlässiger an, insbesondere auf Geräten, die tagelang ohne Neustart laufen. Dazu über ein Dutzend kleinerer Fehlerbehebungen an Kiosk, Tresen und Usermodal.

NeuVerlauf (Bestellhistorie) ist jetzt auch am Kiosk und Tresen verfügbar — abgesichert über PIN bzw. Tresen-Zugang, wie im Usermodal
NeuEinheitliches Ranking-Banner mit Bestenlisten-Ansicht in Usermodal, Kiosk und Tresen
NeuManueller Refresh-Button jetzt auch in der Bestell-/Kontoansicht von Kiosk und Tresen verfügbar
VerbessertEchtzeit-Updates (neue Runden, Ranking, Org-Ankündigungen) kommen an Kiosk und Tresen jetzt deutlich zuverlässiger an — der Verbindungskanal baut sich automatisch alle 5 Minuten neu auf und gleicht beim (Wieder-)Verbinden verpasste Änderungen nach
VerbessertSaldo aktualisiert sich nach einer Bestellung oder einem Rückgängig-Tap sofort, statt erst nach einigen Sekunden
VerbessertKiosk/Tresen: Konto-Tab nutzt jetzt exakt dieselben Bausteine wie das Usermodal (u. a. Kreditlimit-Vorschau)
VerbessertDiverse visuelle Feinabstimmung an Kiosk, Tresen und Usermodal (Abstände, Footer-Verhalten, Umbruch der Kategorie-Filter, Bestellen-Button-Farbe, Position des Ranking-Banners)
VerbessertFormular zum Passwort-Zurücksetzen erscheint jetzt sofort, statt auf eine Session-Prüfung zu warten
BehobenSicherheit: place_order-Berechtigungsprüfung für Kiosk-/Tresen-Bestellungen wiederhergestellt, die durch eine ältere Migration versehentlich verloren gegangen war
BehobenSicherheit: Einzahlungen via Kiosk/Tresen wurden nicht gegen das Guthaben-Limit der Organisation geprüft
BehobenSicherheit: Race-Condition beim schnellen Mitgliederwechsel am Kiosk/Tresen konnte kurzzeitig zu einer falschen Zuordnung führen
BehobenKiosk/Tresen: Konto-Tab setzte sich gelegentlich alle paar Sekunden von selbst zurück
BehobenZahlungseinstellungen: Aktiviert-Schalter berücksichtigte einen reinen Hinweistext ohne hinterlegte Bankverbindung nicht korrekt; doppelte Fehlermeldung entfernt
BehobenBestenliste: Ein Rundenspender verschwand aus dem Ranking, wenn die eigene Runde vorzeitig geschlossen wurde
BehobenVerlauf: abgelehnte Zahlungsanfragen und Runden-Beanspruchungen wurden bei der Seitennummerierung teils übersprungen
BehobenEigene Runde beanspruchen (Self-Claim) aktualisierte den Kontostand nicht sofort
BehobenZahlungsanfrage-Bestätigung prüft das Guthaben-Limit jetzt zuverlässig erneut
BehobenKiosk/Tresen: Nach einem Deployment konnte der Service-Worker-Cache eine veraltete Version ausliefern, obwohl neu geladen wurde
BehobenPlattform-Super-Admins konnten Kiosk-/Tresen-PIN zwischenzeitlich nicht mehr verifizieren

Ältere Versionen

Juli 20264 Releases · 0.53.00.50.0

v0.53.0

Das Usermodal wurde neu strukturiert: Bestellen ist jetzt direkt nach dem Anmelden sichtbar, statt erst über einen zusätzlichen Klick auf „Bestellung aufgeben" geöffnet werden zu müssen. Kiosk, Tresen und Usermodal teilen sich jetzt denselben Bestell- und Kontobereich — Änderungen wirken dadurch überall gleich. Dazu zwei neue Org-Einstellungen: Bestellungen können auf Kiosk/Tresen beschränkt werden, und „Saldo ausgleichen" funktioniert jetzt auch ohne hinterlegte Bankverbindung.

NeuUsermodal: Bestellen ist jetzt die direkte Standardansicht nach dem Anmelden, mit einer Tab-Leiste „Bestellen"/„Konto" — vorher musste erst „Bestellung aufgeben" angeklickt werden
NeuMonatsranking als Teaser direkt im Bestellbereich von Kiosk und Tresen sichtbar (vorher nur im Usermodal)
NeuNeue Org-Einstellung: Bestellungen können auf Kiosk/Tresen beschränkt werden (z. B. für Vereine ohne Selbstbedienung) — Kontostand, Saldo ausgleichen und Verlauf bleiben für Mitglieder weiterhin sichtbar
Neu„Saldo ausgleichen" lässt sich jetzt auch ohne hinterlegte Bankverbindung aktivieren — ein Hinweistext (z. B. „Bitte bar am Tresen abgeben") genügt
VerbessertBestell-Oberfläche (Suche, Kategorien, Produktkacheln, Kisten-Kauf) ist jetzt in Kiosk, Tresen und Usermodal dieselbe Komponente — Änderungen wirken künftig überall gleich
BehobenSicherheit: verify_kiosk_pin erlaubte jedem Org-Mitglied, die PIN anderer Mitglieder zu prüfen — jetzt wie am Tresen auf den Kiosk-Account/Admins beschränkt
BehobenSicherheit: Offline-Synchronisation von Bestellungen vertraute dem vom Gerät gemeldeten Preis statt dem aktuellen Serverpreis

v0.52.0

Technische Wartung nach einem internen Code-Review: einheitliche Rollen-Bezeichnungen, serverseitige Passwort-Mindestlänge bei der Registrierung, strengeres Login-Limit für Kiosk-/Tresen-Geräte, deutlich besserer Textkontrast und sichtbarer Fokus-Ring für die Tastaturbedienung im hellen Modus. Dazu ein Fix, damit Kiosk und Tresen nach einem Deployment zuverlässiger erkennen, dass eine neue Version vorliegt — auch auf Geräten, die dauerhaft geöffnet bleiben.

VerbessertRollen-Bezeichnungen (z. B. „Kassierer", „Lagerwart") sind jetzt in der gesamten App einheitlich — vorher unterschieden sie sich leicht je nach Ansicht (Mitgliederliste, Dashboard, Profil, Superadmin)
VerbessertRegistrierung: Passwort-Mindestlänge (8 Zeichen) wird jetzt auch serverseitig geprüft, nicht mehr nur im Formular
VerbessertKiosk-/Tresen-Geräte-Login: nach 5 Fehlversuchen 15 Minuten gesperrt — dasselbe Schutzniveau wie beim PIN-Login
VerbessertHeller Modus: grauer Sekundärtext (Beschriftungen, Hinweise, Tabellenwerte) ist jetzt deutlich kontrastreicher und leichter lesbar
VerbessertTastaturbedienung: sichtbarer Fokus-Ring auf allen Buttons, Links und Eingabefeldern beim Navigieren mit der Tab-Taste
VerbessertBenachrichtigungs-Glocke zeigt beim ersten Öffnen kurz „Lädt…" statt fälschlich „Keine Benachrichtigungen", solange die Liste noch nicht geladen ist
VerbessertProdukte- und Statistik-Seiten zeigen beim Laden jetzt ein Skeleton statt eines kurzen Aufblitzens der leeren Seite
BehobenKiosk & Tresen: Nach einem Deployment konnte ein dauerhaft geöffnetes Gerät nicht mehr zuverlässig erkennen, dass eine neue Version vorliegt, und Aktionen (Bestellen, Runde einlösen etc.) schlugen dann mit einer Fehlermeldung fehl. Die Erkennung prüft jetzt auch ohne Neuladen regelmäßig auf ein neues Deployment und lädt das Gerät bei Bedarf automatisch neu
BehobenProduktformular: Bei mehreren Einheiten pro Produkt (z. B. Stück + Kiste) fehlte für Screenreader-Nutzer:innen die Feldbeschriftung ab der zweiten Zeile — jetzt für jede Zeile vorhanden

v0.51.0

Neu: In-App-Benachrichtigungen — die Glocke im Header meldet ab sofort Zahlungsanfragen, gesponserte Runden, Ankündigungen und mehr in Echtzeit. Admins können jetzt auch Plattform-weite Ankündigungen an ausgewählte Organisationen versenden. Dazu einige Politur-Fixes rund um Verlauf, Automationen und Mahnmails.

NeuIn-App-Benachrichtigungen: Glocke im Header zeigt neue Ereignisse in Echtzeit — Zahlungsanfrage genehmigt/abgelehnt, neue Zahlungsanfrage (für Admins/Kassierer), gesponserte Runde/Kiste/Getränke-Pool erhalten, sowie Admin-Ankündigungen
NeuAutomationen (Mahnmails, Monatsbericht) und manuelle Exporte: zusätzlicher Versandweg "In-App" wählbar, ergänzt E-Mail (Push folgt in einer späteren Version)
NeuHeader: Rollen-Wechsel-Buttons zu einem einzigen "Ansicht wechseln"-Menü zusammengefasst
NeuSuperadmin-Dashboard: Plattformweite Ankündigung an alle oder ausgewählte Organisationen, optional nach Rolle gefiltert (Admin/Kassierer/Bestandsmanager/Mitglied), mit Live-Vorschau der Empfängerzahl vor dem Versand
VerbessertVerlauf: abgelehnte Zahlungsanfragen zeigen jetzt denselben Detailgrad wie bestätigte (inkl. bearbeitendem Admin)
VerbessertAdmin-Ansicht: Schnellzugriffe neu sortiert (Produkte, Umlage, Statistiken, Exporte, Automationen, Ankündigung, Einstellungen)
BehobenMahnmail-Versand mit aktiviertem In-App-Kanal konnte mit einem Laufzeitfehler abbrechen — behoben
BehobenAutomatisierte Mahnmails/Berichte liefen für pausierte Organisationen unbeabsichtigt weiter — werden jetzt korrekt übersprungen

v0.50.0

Ein seltener iOS-Absturz beim App-Öffnen ist behoben, dazu mehr Zuverlässigkeit beim E-Mail-Versand und Zeitzone-Korrekturen bei mehreren Datumsanzeigen. Neu: eine wiederverwendbare Bildergalerie für Produktbilder. Außerdem einige Politur-Runden bei Automationen (Mahnmails) und den Verlauf-Filtern auf dem Handy.

NeuProduktbilder: Neue Bildergalerie pro Organisation — bereits hochgeladene Bilder lassen sich bei anderen Produkten wiederverwenden oder aus der Galerie löschen
NeuBestell-Verlauf: Zahlungen erscheinen jetzt als eigene Kachel im Verlauf, Admins sehen so Zahlungen und Bestellungen chronologisch nachvollziehbar an einem Ort
NeuSelbstbestellung (Self-Order): Gesamtpreis wird direkt im Erfolgs-Screen angezeigt
VerbessertE-Mail-Versand (Mahnmails, Berichte) ist jetzt gedrosselt und wiederholt fehlgeschlagene Sendungen automatisch — verhindert stille Fehlschläge, wenn viele Mails gleichzeitig verschickt werden
VerbessertAutomationen — Mahnmails: Empfänger-Vorschau zeigt jetzt Name und offenen Betrag jedes betroffenen Mitglieds statt nur der Gesamtzahl; externe E-Mail-Adressen (dort ohnehin ungenutzt) sind ausgeblendet; Schwellenwert akzeptiert nur noch ganze Euro-Beträge
BehobeniOS-Apps stürzten teils direkt beim Öffnen ab („Diese Seite konnte nicht geladen werden"): Die PWA leitete Mitglieder mit nur einer Organisation serverseitig weiter, was mitten in den Seitenaufbau der iOS-App fallen konnte. Die Weiterleitung passiert jetzt clientseitig nach vollständigem Laden der Seite
BehobenVerlauf, Einladungen und Zahlungsanfragen zeigten teils ein falsches Datum, weil Server und Gerät unterschiedliche Zeitzonen nutzten — Datumsanzeigen sind jetzt konsistent auf Europe/Berlin gepinnt
BehobenKiosk & Verkaufstresen: Nach einem neuen Deployment konnten Aktionen (z. B. Bestellen) mit einem Fehler fehlschlagen, weil im Hintergrund noch eine veraltete Version der Seite zwischengespeichert war — wird jetzt erkannt, der Gerätespeicher automatisch geleert und die Seite neu geladen
BehobenProduktbilder-Galerie: Vorschaubilder wirkten verzerrt (jetzt unverzerrt dargestellt) und zeigte nach dem erneuten Öffnen teils veraltete Bilder
BehobenAutomationen: Ausführungs-Zeitpunkt im Job-Protokoll wurde in UTC statt Berlin-Zeit angezeigt (bis zu 2h Abweichung im Sommer) — behoben. Dazu ein Info-Hinweis (ⓘ) neben der konfigurierten Uhrzeit: der tägliche Ausführungs-Job selbst läuft technisch bedingt zu einer festen Uhrzeit, die im Sommer (Sommerzeit) rund 1h später liegt als im Winter
BehobenVerlauf-Filter (Von/Bis) auf dem Handy: liefen teils über den Kartenrand hinaus und waren im Dark Mode schlecht lesbar (helle Kalender-Symbole, unsichtbarer Platzhaltertext) — jetzt einheitlich und mobile-tauglich
BehobenLandingpage: Anker-Links (z. B. „Kontakt") landeten teils leicht daneben statt direkt auf der Ziel-Sektion
Juni 202638 Releases · 0.49.00.13.0

v0.49.0

Drei Bugfixes: Das strichfrei-Logo im Lade-Screen ist jetzt auf allen Geräten korrekt horizontal zentriert. Social-Media-Vorschaubilder (Open Graph / Twitter) warfen bei jedem neuen Deployment einen 500-Fehler — behoben. Einzahlungsanfragen werden jetzt client- und serverseitig gegen das Guthaben-Limit der Organisation geprüft — bisher ließ sich ein beliebig hoher Betrag eingeben.

BehobenLade-Screen: Logo jetzt auf allen Geräten korrekt horizontal zentriert — vorher war das strichfrei-Logo in Browser und PWA zu weit links. Ursache war überschüssiger Whitespace im SVG-Viewport; behoben durch eine Flex-Zeile aus Icon-SVG und HTML-Text statt einem einzelnen SVG-Element
BehobenMiddleware: /opengraph-image- und /twitter-image-Routen scheiterten bei jedem neuen Deployment mit HTTP 500, weil die Middleware versuchte einen Supabase-Client zu erstellen. Die Routen werden jetzt frühzeitig durchgeleitet, bevor die Session-Prüfung greift
VerbessertEinzahlungsanfrage: Das Guthaben-Limit der Organisation (allow_credit / max_credit_cents) wird jetzt client- und serverseitig geprüft. Bisher konnten Mitglieder beliebige Beträge eingeben. Jetzt gilt: Maximalbetrag = offener Saldo + erlaubtes Guthaben; bei unbegrenztem Guthaben bleibt der Betrag frei wählbar

v0.48.0

Performance & Ladeerlebnis: Kiosk und Verkaufstresen öffnen beim Wiederaufruf praktisch sofort (Oberfläche aus dem lokalen Cache, Aktualisierung im Hintergrund). Der Lade-Screen mit Logo ist jetzt in allen Geräte-Apps verfügbar und sauber zentriert. Dazu ein schnellerer Seitenaufbau im eingeloggten Bereich.

VerbessertKiosk & Verkaufstresen öffnen beim Wiederaufruf praktisch sofort: Die Oberfläche kommt aus dem lokalen Gerätespeicher und wird im Hintergrund aktualisiert. Die Daten (Saldo, Bestellungen, Runden) sind dabei wie gewohnt immer live
VerbessertLade-Screen mit strichfrei-Logo jetzt in allen Geräte-Apps (Mitglieder, Kiosk, Verkaufstresen) — und korrekt in der Bildschirmmitte zentriert (vorher im Kiosk nach oben verschoben)
VerbessertSchnellerer Seitenaufbau im eingeloggten Bereich (Dashboard und Org-Seiten): eine blockierende Server-Abfrage für die Theme-Einstellung wurde entfernt — das Theme wird jetzt im Hintergrund abgeglichen
VerbessertVerkaufstresen: interner Datenabruf verschlankt (zusammengeführte Datenbankabfragen)

v0.47.0

Datenschutz im Fokus: Mitglieder können ihre gespeicherten Daten als PDF exportieren (DSGVO-Datenauskunft) und ihr Konto selbst löschen; Admins können Mitgliedsdaten anonymisieren. Dazu automatische Bildverkleinerung beim Upload, der Hinweis „in Anspruch genommen von" bei gesponserten Runden, Tarif-Ablauf-Warnungen, Org-Lebenszyklus-Verwaltung im Superadmin sowie ein deutlich schnellerer Kiosk-Ladevorgang mit Lade-Screen.

NeuDatenauskunft (DSGVO Art. 15): Unter Profil → „Meine Daten exportieren" gibt es alle zu deinem Konto gespeicherten Daten als strukturiertes PDF — Profil, Mitgliedschaften, Bestellungen, Zahlungen und ausgegebene Runden
NeuKonto löschen (Selbst-Service) im Profil: personenbezogene Daten werden entfernt und der Zugang dauerhaft gesperrt. Bereits erfasste Buchungen bleiben aus buchhalterischen Gründen anonymisiert in der jeweiligen Vereinskasse erhalten. Voraussetzung: kein offener Saldo und nicht alleiniger Admin einer Org. Die E-Mail-Adresse kann danach für ein neues Konto wiederverwendet werden
NeuMitglied-Daten anonymisieren (Admin → Mitglied verwalten): Name, E-Mail, Geburtsdatum und PIN werden dauerhaft entfernt — Bestellhistorie und Saldo bleiben anonymisiert für die Vereinskasse erhalten
NeuBilder werden vor dem Upload automatisch verkleinert (Profilbilder und Produktbilder, als WebP) — große Handyfotos lassen sich jetzt zuverlässig hochladen; der gelegentliche Fehler „unerwartete Server-Antwort" beim Profilbild-Upload ist damit behoben
NeuAdmin → Transaktionen: Bei gesponserten Runden wird jetzt angezeigt, wer die Runde in Anspruch genommen hat („🍻 In Anspruch genommen von: …") — die Buchung beim Sponsor ist damit eindeutig zuordenbar
NeuTarif-Ablauf-Hinweis: Läuft das Abo einer Organisation ab, sehen Admins und Kassierer einen Hinweis mit Ablauf- und Sperrdatum, solange noch nicht pausiert wurde
NeuSuperadmin: Org-Lebenszyklus — Organisationen pausieren (Daten bleiben vollständig erhalten, Mitglieder sehen nur eine Sperrseite, Admins können weiter exportieren), jederzeit wieder reaktivieren sowie archivierte Organisationen reaktivieren oder endgültig löschen (mit Slug-Bestätigung)
NeuKiosk-Ladescreen: Beim Öffnen erscheint sofort ein Wartescreen mit strichfrei-Logo und „Lädt…" statt einer leeren Seite — die wahrgenommene Ladezeit verbessert sich spürbar, besonders beim ersten Start
VerbessertKiosk lädt spürbar schneller: Der serverseitige Datenabruf wurde verschlankt (zusammengeführte und parallelisierte Datenbankabfragen). Zusätzlich wurde die rein dekorative „Bierkönig"-Krone samt teurer Monatsauswertung aus dem Kiosk entfernt — der Bierkönig bleibt in der Rangliste erhalten
VerbessertSchnellere monatliche Auswertungen (Rangliste, Statistiken) durch zusätzliche Datenbank-Indizes
VerbessertMitglieder-Limit berücksichtigt jetzt auch offene Direkteinladungen — es lassen sich nicht mehr Einladungen verschicken als freie Plätze im Tarif vorhanden sind (keine Absage mehr erst beim Beitritt)
BehobenDialoge, die in bestimmten Bereichen (z. B. Superadmin-Org-Liste) halbtransparent oder abgeschnitten erschienen und den Hintergrund mitscrollen ließen, werden jetzt korrekt und vollflächig dargestellt

v0.46.0

Automatische Echtzeit-Aktualisierung überall: Saldo, Rangliste und Verlauf werden jetzt aktualisiert, wenn jemand anderes bestellt oder ein Admin Mitgliedsdaten ändert — ohne manuellen Reload. Neue ↻-Schaltfläche in UserApp und Rangliste, Pull-to-Refresh auf Mobile. Kiosk und Tresen haben ebenfalls einen Aktualisierungsbutton. Dazu Finanz-Chart auf Nettoumsatz, mehrere Bugfixes an Gastkonto, Statistiken und Security-Härtung.

NeuAutomatische Echtzeit-Aktualisierung für Saldo, Rangliste und Verlauf: Neue Bestellungen anderer Mitglieder (Kiosk, Tresen, Self-Order) und Mitgliedsänderungen (Bans, Namen, PINs) propagieren sofort auf alle aktiven Tabs — kein manueller Reload mehr nötig
Neu↻-Schaltfläche in UserApp-Nav und Rangliste: Klick aktualisiert die Seite sofort (Desktop und Mobile). Auf Mobile zusätzlich als Pull-to-Refresh-Geste: Seite nach unten ziehen wenn ganz oben → Spinner → Refresh
Neu↻-Button im Kiosk: Kleines Icon neben dem Realtime-Statusindikator lädt Mitglieder, Produkte und Runden parallel neu
Neu↻-Button im Tresen: Icon links im Header (Mitglieder-Screen) mit demselben Verhalten
VerbessertFinanz-Chart (Admin → Statistiken → Finanzen): Amber-Balken zeigt jetzt den Nettoumsatz (Bruttoumsatz abzgl. Gastkonto-Ausbuchungen) statt Bruttoumsatz — Chart-Titel und Legende aktualisiert
BehobenEinzahlungsquote in der Finanztabelle rechnete pro Zeile auf Bruttoumsatz, die Kopf-KPI aber auf Netto — bei voll ausgebuchten Zeiträumen zeigte die Zeile 0 %, die KPI aber „—". Jetzt konsistent Netto in beiden Ansichten
BehobenKiosk: 8 Stellen mit try/finally ohne catch führten bei Netzwerkunterbrechung zu unhandled rejections (Sentry-Fehler). Alle Realtime-Callbacks und Poller fangen Netzwerkfehler jetzt sauber ab
BehobenTresen: Gleicher Bug wie Kiosk — 8 Stellen try/finally ohne catch in Realtime-Callbacks und Pollern gefixt
BehobenGastkonto reaktivieren: Saldo-Ausgleich und Reaktivierung laufen jetzt atomar — schlägt die Reaktivierung fehl, wird die Ausgleichs-Zahlung automatisch rückgängig gemacht (kein verwaister Saldo-Ausgleich mehr möglich)
BehobenGastkonto reaktivieren: Gültigkeitsdatum wird serverseitig auf Zukunft geprüft — ein sofort ablaufendes Gastkonto durch Umgehung des Client-Mindestdatums ist nicht mehr möglich
BehobenGastkonto-Modal auf iOS: das Datum-Eingabefeld ragte in schmalen Modals aus dem sichtbaren Bereich — wird jetzt auf Containerbreite begrenzt
VerbessertSecurity: anon-EXECUTE-Härtung in der Datenbank — REVOKE EXECUTE direkt von der anon-Rolle für alle SECURITY DEFINER RPCs und Avatar-Bucket-Listing-Policy. Schließt alle verbleibenden Supabase-Linter-Warnings
BehobenSuperadmin: Einladungslink-URL lief auf Mobile aus dem Karten-Rahmen heraus — wird jetzt korrekt abgeschnitten (truncate) und bleibt innerhalb der Karte

v0.45.0

Superadmin-Erweiterungen: Tarif-Management mit MRR/ARR-Kennzahlen und Benutzersuche direkt im Plattform-Dashboard. Org-Admins sehen ihren aktuellen Tarif in den Einstellungen. Dazu mehrere Bugfixes: Org-Reset wieder funktionsfähig, Beta-Vorteil korrekt eingeschränkt und mobile Eingabefelder verbessert.

NeuSuperadmin: Tarif-Management pro Organisation — effektiver Tarif (Free/Basis/Premium/Pro), maximale Mitgliederzahl (auto-befüllt, überschreibbar), Gültigkeitsdatum und interne Notiz in einem Modal direkt aus der Org-Liste
NeuSuperadmin: Abrechnung-Tracking — welchen Tarif zahlt die Org wirklich? Getrennte Erfassung von effektivem Tarif (was sie bekommen) und Abrechnungsplan (was sie zahlen) mit monatlich/jährlich-Auswahl und Individualbetrag
NeuSuperadmin: MRR/ARR-Kacheln — Monthly Recurring Revenue und Annual Run Rate werden live aus den gespeicherten Abrechnungsdaten berechnet (ARR direkt aus Jahresbeträgen, keine Rundungsdifferenzen durch MRR×12)
NeuSuperadmin: Benutzersuche — Name oder E-Mail eingeben, Org-Mitgliedschaften als Chips, platform_role (Super Admin) per Klick umstellen mit Zwei-Schritt-Bestätigung
NeuSuperadmin: Tab-Navigation Orgs | Benutzer — beide Bereiche in einem Dashboard, kein Seitenreload
NeuTarif-Infokarte in Org-Einstellungen: Admins sehen ihren aktuellen Tarif, Mitgliederzahl/-limit und Gültigkeitsdatum auf einen Blick — Ablaufwarnung bei < 30 Tagen, roter Hinweis bei Ablauf
VerbessertSuperadmin: Info-Tooltips (ⓘ) auf den Stats-Kacheln öffnen jetzt per Klick statt Hover — auch auf dem Handy bedienbar
VerbessertSecurity: Eingabelängenbeschränkungen in allen Formularen ergänzt (Namen, Notizen, Pins, Betragsfelder) — überlange Eingaben werden server- und clientseitig blockiert
BehobenOrg-Daten-Reset im Superadmin war komplett kaputt: reset_org_data referenzierte drei Tabellen (notifications, kiosk_devices, audit_log), die seit v0.34.0 nicht mehr existieren — Referenzen entfernt, Reset funktioniert wieder
BehobenBeta-Vorteil-Anzeige im Tarif-Modal erschien fälschlicherweise auch wenn effektiver Tarif und Abrechnungstarif identisch sind — jetzt nur noch sichtbar wenn der Org ein höherer Tarif gewährt wird als sie zahlt
BehobenIcon-Editor: borderRadius aus dem Icon-Canvas entfernt — Balken wurden irrtümlich abgerundet dargestellt
BehobenTarif-Modal: Pfeiltasten (▲▼) aus Zahlen-Inputs entfernt und negative Werte blockiert — mobile Eingabe der Mitglieder-Anzahl damit deutlich besser bedienbar

v0.44.0

Technische Wartung: Alle ESLint-Warnungen behoben — ungenutzte Variablen entfernt, React-Hooks-Abhängigkeiten vervollständigt, Code-Qualität verbessert. Keine nutzbaren Änderungen, aber eine stabilere Codebasis für kommende Features.

VerbessertCode-Qualität: 37 ESLint-Warnungen auf 0 reduziert — ungenutzte Imports und Variablen entfernt, ternäre Ausdrücke als Statements durch if/else-Blöcke ersetzt
VerbessertReact-Hooks: Fehlende Abhängigkeiten im Snapshot-Effekt des Tresen-Modus ergänzt (activePinHash, counterToken) — der Snapshot wird nun korrekt bei allen relevanten State-Änderungen aktualisiert
VerbessertStornieren-Dialog: State-Reset beim Öffnen direkt im Click-Handler statt in einem separaten useEffect — weniger überflüssige Re-Renders

v0.43.0

Drei Bugfixes und einheitliche Betragseingabe: Mail-Großschreibung korrigiert, Transaktionsverlauf entzerrt mit Bestellinhalt-Anzeige, iOS-sicherer Scroll-Lock für alle Modals sowie Vorzeichen-Umschalter (Einzahlung/Auszahlung, Lastschrift/Gutschrift) statt getipptem Minus — damit sind Auszahlung und Lastschrift jetzt auch auf der Handy-Zahlentastatur erreichbar.

NeuBestellinhalt in Admin → Transaktionen: Bestellte Produkte werden jetzt direkt im Eintrag angezeigt (z. B. „2× Pils (0,5 l), 1× Wasser") — eine Bestellung über mehrere Positionen ist jetzt lückenlos nachvollziehbar
NeuKontostand verwalten: Umschalter Einzahlung/Auszahlung statt getipptem Minus — Auszahlung ist jetzt auch auf der Handy-Zahlentastatur ohne Minus-Taste erreichbar
NeuUmlage: Umschalter Lastschrift/Gutschrift statt getipptem Minus — Lastschrift ist jetzt auch auf der Handy-Zahlentastatur erreichbar
VerbessertEinheitliche Betragseingabe: gemeinsamer Sanitizer in allen Payment-Feldern (Kontostand, Umlage, Zahlungsanfrage, Kiosk, Tresen) — keine Buchstaben oder Sonderzeichen möglich, max. 2 Nachkommastellen, Punkt und Komma gleichwertig
BehobenZahlungsanfrage-Mail: Typ wurde klein geschrieben („einzahlungsanfrage" / „auszahlungsanfrage") — toLowerCase() entfernt, korrekte Großschreibung wiederhergestellt
BehobenTransaktionsverlauf (Admin): Auf Mobile lagen zu viele Elemente in einer Flex-Zeile und überlappten sich. Neu: zwei Spalten — links Badges, Name, Bestellinhalt und Datum; rechts Betrag und Stornieren-Button gestapelt
BehobenModal-Scroll-Lock: iOS Safari ignorierte overflow:hidden am Body beim Touch-Scrollen. Alle Modals nutzen jetzt position:fixed mit gespeichertem Scroll-Offset — Hintergrund scrollt nicht mehr mit

v0.42.0

Verkaufstresen-Modus: Eine neue eigenständige App-Ansicht für den Tresen ermöglicht Bestellungen, Runden und Kontoverwaltung für beliebige Mitglieder — mit vollständigem Offline-Betrieb, HMAC-gesichertem PIN-Schutz und Brute-Force-Härtung.

NeuVerkaufstresen-Modus (/counter): Eigene PWA für das Tresen-Gerät — Bestellungen für beliebige Mitglieder aufgeben, Runden erstellen/annehmen/schließen und Mitgliederkonten einsehen (Saldo, QR-Code, PayPal, Zahlungsanfrage)
NeuTresen-Login (/counter-login): Eigene Anmeldeseite mit Kiosk-Passwort — Session ist 30 Minuten gültig und unabhängig vom Kiosk-Login
NeuTresen-PIN-Schutz: Admins legen unter Admin → Einstellungen → Tresen einen PIN fest — 5 Fehlversuche sperren den PIN für 1 Minute, Sperrdaten sind HMAC-signiert und können nicht clientseitig manipuliert werden
NeuOffline-Betrieb am Tresen: Bestellungen werden bei fehlender Verbindung lokal in IndexedDB zwischengespeichert und beim Reconnect automatisch synchronisiert — identisches Verhalten wie der Kiosk-Offline-Modus
NeuTresen-Konto-Tab: Mitglied am Tresen auswählen → Saldo, SEPA-QR-Code, PayPal-Link und Zahlungsanfrage stellen — identisch zum Kiosk-Konto-Tab
NeuUndo am Tresen: Jede Tresen-Buchung kann innerhalb von 10 Sekunden rückgängig gemacht werden
VerbessertTresen-Einrichtung für Admins: Kiosk-Account-Panel in Admin → Einstellungen um Tresen-PIN-Verwaltung erweitert
BehobenSecurity: Saldo-IDOR geschlossen — Saldoabfragen sind jetzt auf das eigene Mitglied beschränkt und nicht mehr für beliebige Membership-IDs abrufbar
BehobenSecurity: Cron-Auth gehärtet — interne Cronjob-Routen prüfen jetzt einen signierten Token statt nur einer einfachen Passwortprüfung
BehobenSecurity: Kiosk-Token prüft zusätzlich die Org-Zugehörigkeit des Aufrufers — Cross-Org-Zugriff über fremde Kiosk-Tokens ist nicht mehr möglich
BehobenKiosk: Netzwerkfehler in Server-Action-Transitions führen nicht mehr zu unhandled rejections — Fehler werden sauber abgefangen
BehobenProdukte: Bildgröße wird jetzt clientseitig vor dem Upload geprüft (max. 4 MB) — kein unnötiger Upload-Versuch bei zu großen Dateien mehr

v0.41.1

Begriffsschärfung und Sicherheits-Härtung: Der „Kassenbericht" heißt jetzt korrekt „Monatsbericht" — er zeigt Saldobewegungen der Mitglieder und ist kein buchhalterisch konformer Kassenbericht. Der Export-Bereich „Inventar" wurde in „Bestandsverwaltung" umbenannt. Im Hintergrund: ein Content-Security-Policy-Header, eine gehärtete Excel-Bibliothek und automatische Qualitätsprüfungen bei jedem Commit.

Verbessert„Kassenbericht" in „Monatsbericht" umbenannt: Der Bericht zeigt Saldobewegungen der Mitglieder, ist aber kein buchhalterisch konformer Kassenbericht — die neue Bezeichnung greift überall (Export-Seite, Automationen, Statistiken, PDF-Titel, Mail-Betreff und Dateinamen)
VerbessertExport-Bereich „Inventar" in „Bestandsverwaltung" umbenannt — konsistent zur Bezeichnung an anderen Stellen der App
VerbessertSicherheit: Content-Security-Policy-Header ergänzt — begrenzt erlaubte Verbindungsziele und schützt zusätzlich gegen Clickjacking und Formular-Hijacking
VerbessertSicherheit: Excel-Export-Bibliothek auf eine gepatchte Version aktualisiert (bekannte Schwachstelle der alten Version beseitigt)
VerbessertQualitätssicherung: Typprüfung, Linting und Build laufen jetzt automatisch bei jedem Commit — Fehler werden früher erkannt, bevor sie live gehen

v0.41.0

Statistiken V2: Die Admin-Statistiken-Seite wurde komplett neu aufgebaut. Ein dynamischer Zeitraum-Selector (Diese Woche / Dieser Monat / Letzter Monat / Dieses Jahr / Alle / Benutzerdefiniert) filtert alle KPIs server-seitig. Vier neue Detailseiten bieten Drill-Down für Finanzen, Produkte, Mitglieder und Runden. Ein täglicher Cron-Job bereinigt automatisch abgelaufene Runden. Eine „Wissenswert"-Sektion zeigt Gesamtstatistiken aller Zeiten.

NeuZeitraum-Selector auf der Statistiken-Übersicht: 6 Chips (Diese Woche, Dieser Monat, Letzter Monat, Dieses Jahr, Alle, Benutzerdefiniert) — alle KPIs und Charts passen sich dynamisch an; Von/Bis-Eingabe für individuelle Zeiträume mit hellem Kalender und ohne Spinner-Pfeile
NeuNeue KPI-Reihen auf der Übersicht: 8 Kacheln in zwei Gruppen — zeitraum-sensitiv (Umsatz, Bestellungen, Ø Bestellwert, Einzahlungsquote) und Stand-jetzt (Offene Schulden, Ø Schulden/Mitglied, Mitglieder, Neue Mitglieder)
NeuDetailseite Finanzen (/admin/stats/finanzen): 5 KPIs, Doppel-Balkendiagramm (Umsatz und Einzahlungen im gleichen Slot), Breakdown-Tabelle mit Zeitraum-Zeilen und Gesamt-Footer
NeuDetailseite Produkte (/admin/stats/produkte): Top-20 nach Menge oder Umsatz (Tab-Switcher), Kategorie-Chips zum Filtern, Kategorien-Breakdown — Tab/Filter wechseln client-seitig ohne Seiten-Reload
NeuDetailseite Mitglieder (/admin/stats/mitglieder): Aktivste Mitglieder im Zeitraum, Höchste Schulden mit approximierter Schuldendauer, Inaktive Mitglieder (>90 Tage keine Bestellung), Mitglieder ohne Bestellungen als Chips
NeuDetailseite Runden (/admin/stats/runden): KPIs nach Modus getrennt (Drinks-Runden mit Sentinel-Erkennung, Kiste/Pool mit echten Einheiten), Status-Verteilung mit effektivem Status (abgelaufene Runden gelten als Abgeschlossen), Top-Rundenspender mit Einlösungen
NeuInventar-Kachel auf der Übersicht: Zeigt Anzahl getrackte Produkte und Anzahl unter Mindestbestand — nur sichtbar wenn Bestandsverwaltung für die Organisation aktiviert ist
NeuWissenswert-Sektion: Gesamtumsatz aller Zeiten, Gesamtanzahl Bestellungen, Runden gesamt mit Einlösungen, Lieblings-Produkt (meistbestelltes nach Stückzahl), Datum der ersten Bestellung
NeuCron-Job close-expired-rounds (täglich 01:00 UTC): Bereinigt automatisch alle aktiven Runden, deren Gültigkeit abgelaufen ist — Status wird von „active" auf „closed" gesetzt
VerbessertZurück-Button in allen Statistik-Unterseiten führt sauber zur Übersicht, von der Übersicht ins Admin-Dashboard — kein History-Stack durch Zeitraum-Chip-Klicks dank router.replace()
VerbessertDetails-Links auf der Übersicht: Umsatz-Trend → Finanzen, Top Produkte → Produkte, Höchste Schulden → Mitglieder, Runden → Runden
BehobenRundenstatistik zeigte falsche Einheitenzahlen: Drinks-Runden nutzen intern qty_total=9999 als Platzhalter — dieser Sentinel-Wert wird nun herausgefiltert; nur tatsächliche Claims werden als „Getränke eingelöst" gezählt
BehobenStatus-Label „closed" wurde roh angezeigt statt „Abgeschlossen"

v0.40.0

Export-Zentrale, E-Mail-Versand und automatische Jobs: Eine neue Export-Seite bündelt 6 Exportfunktionen (PDF/CSV/XLSX), Mahnmails, Kassenbericht und Getränkebestellung können direkt per Klick versendet werden, und unter Automationen lassen sich alle drei Versandtypen als monatliche Cronjobs einrichten — mit Empfänger-Konfiguration, Zeitplanung und Ausführungsprotokoll.

NeuExport-Seite (/admin/exporte): Alle Exportfunktionen an einem Ort — Mitgliederliste, Anwesenheitsliste, Kontoauszug, Kassenbericht, Mahnliste und Getränkebestellung jeweils als PDF und CSV herunterladbar
NeuKassenbericht als XLSX: Monatlicher Finanzbericht mit allen Kontobewegungen und Kontoständen aller Mitglieder — als Excel-Tabelle mit separaten Reitern
NeuGetränkebestellung-Export: Vorschlagsliste der nachzubestellenden Produkte auf Basis von Mindestbestand und Zielbestand — als PDF und CSV
NeuMahnmails direkt versenden: Empfänger-Vorschau zeigt Name und Saldo aller betroffenen Mitglieder vorab; „Jetzt mahnen"-Button ist deaktiviert wenn keine Mitglieder mit E-Mail-Adresse vorhanden sind
NeuKassenbericht per Mail: Monatsbericht als XLSX-Anhang direkt aus der Export-Seite an ausgewählte Rollen versenden
NeuGetränkebestellung per Mail: Bestellvorschlag als PDF-Anhang direkt aus der Export-Seite versenden (nur wenn Bestandsverwaltung aktiv)
NeuAutomationen (/admin/automationen): Neuer Admin-Bereich für monatliche Cronjobs — Mahnmail, Kassenbericht und Getränkebestellung können als geplante Aufgabe eingerichtet werden mit Tag des Monats, Uhrzeit (Europe/Berlin, DST-sicher) und Empfänger-Rollenwahl
NeuEmpfänger-Vorschau in Automationen: Jede Job-Konfigurationskarte zeigt live, welche Mitglieder bei Ausführung eine Mail erhalten würden
NeuJob-Ausführungsprotokoll: Tabelle aller bisherigen Ausführungen mit Status (Erfolg / Übersprungen / Fehler), Anzahl Empfänger und Detailinfo
NeuAutomationen-Kachel im Admin-Dashboard: Schnellzugriff auf die neue Automationen-Seite direkt aus dem Dashboard
VerbessertGetränkebestellung-Job deaktiviert wenn Bestandsverwaltung ausgeschaltet ist — keine sinnlosen Leerbestellungen mehr
BehobenZurück-Button Navigation: Aus Export-Seite und Automationen gelangt man korrekt ins Admin-Dashboard, von dort immer in die Usersicht — keine History-Loop mehr

v0.39.0

Offline-Modus für den Kiosk: Die Kiosk-PWA funktioniert jetzt auch ohne Internetverbindung. Mitglieder werden lokal per bcrypt-PIN authentifiziert, Bestellungen landen in einer lokalen Queue und werden beim Reconnect automatisch übertragen. Admins sehen offline erfasste Transaktionen transparent im Admin-Dashboard.

NeuKiosk-PWA offline nutzbar: Die Kiosk-Seite wird nach dem ersten Online-Start lokal gecacht (Service Worker, network-first) — bei Verbindungsunterbrechung bleibt die App vollständig bedienbar
NeuOffline-Bestellungen mit lokaler Queue: Bestellungen während einer Offline-Phase landen in einer lokalen Warteschlange (IndexedDB) mit Client-UUID — beim Reconnect werden sie automatisch und idempotent (ohne Doppelbuchung) übertragen
NeuLokaler PIN-Check ohne Server: PINs werden offline gegen den gecachten bcrypt-Hash geprüft — identisch sicher wie der serverseitige Check; 5 Fehlversuche sperren den PIN für 1 Minute
NeuSnapshot-TTL mit Datenstand-Anzeige: Amber-Banner zeigt den Zeitpunkt des letzten Online-Stands; nach 24 h erscheint der Hinweis „älter als 24 h", nach 7 Tagen ist das Bestellen gesperrt und der Banner wechselt auf Rot
NeuGastkonto offline prüfbar: guest_valid_until aus dem Snapshot wird gegen den Bestellzeitpunkt geprüft — abgelaufene Gastkonten werden direkt offline erkannt und blockiert
NeuReconnect-Flush: Bei Wiederverbindung überträgt der Kiosk automatisch alle wartenden Bestellungen — grüner Toast „Wieder online — X Bestellungen übertragen ✓" oder roter Hinweis bei Fehler
NeuAdmin-Transparenz: Offline erfasste Bestellungen sind in Admin → Transaktionen mit ⚡-Badge sowie Info-Block (Bestellzeitpunkt, Sync-Zeitpunkt, Limit-Hinweis) gekennzeichnet — Admins sehen jederzeit ob und warum ein Saldolimit offline überschritten wurde
VerbessertKonto-Tab wird offline automatisch gesperrt (🔒): Saldo, SEPA-QR-Code und Zahlungsanfragen benötigen aktuelle Serverdaten und sind offline bewusst deaktiviert
VerbessertOnline-Detection zuverlässiger: Kombiniert navigator.onLine-Events mit einem echten HEAD-Ping auf /api/health (15 s Recovery, 45 s Heartbeat) — kein falsches „online" bei gefangenem WLAN mehr
VerbessertLagerbestand beim Sync: Bestand wird ohne Gate abgebucht (min. 0) — akzeptierter Inventur-Drift wird im Buchungskommentar dokumentiert

v0.38.0

Kiosk Konto-Tab: Mitglieder sehen direkt am Kiosk ihren aktuellen Saldo, können per SEPA-QR-Code überweisen und eine Einzahlungsanfrage stellen — mit Echtzeit-Sync zwischen Kiosk und User-Modal. Dazu Kiosk-Seite als org-spezifische PWA speicherbar, Gastkonto-Fixes und Korrekturen an Stornofenster und Rundenlogik.

NeuKiosk Konto-Tab: Nach PIN-Eingabe erscheint neben „Bestellen" ein Tab „Konto" — zeigt den aktuellen Saldo (farbcodiert: rot = Schulden, grün = Guthaben), einen SEPA-EPC-QR-Code zum Scannen mit der Banking-App, IBAN/BIC/Kontoinhaber sowie ein vorausgefülltes Betrag-Feld und ein optionales Hinweis-Feld
NeuEinzahlungsanfrage direkt am Kiosk stellen: „Anfrage senden"-Button übermittelt die Anfrage an Admins — identische Logik wie im User-Modal (nur eine offene Anfrage möglich, bei offener Anfrage wird das Formular komplett ausgeblendet und nur ein amber Hinweis-Banner angezeigt)
NeuKiosk als org-spezifische PWA speicherbar: „Zum Homebildschirm hinzufügen" speichert jetzt die korrekte org-spezifische Kiosk-URL — jede Organisation hat ihr eigenes App-Icon und ihren eigenen Start-Link
VerbessertEchtzeit-Sync für Zahlungsanfragen: User-Modal aktualisiert sich sofort wenn am Kiosk eine Anfrage gestellt wird (neues INSERT-Abonnement); Kiosk Konto-Tab nutzt Supabase Realtime statt Polling — möglich durch erweiterte RLS-Policy, die Kiosk-Accounts das Lesen org-eigener Anfragen erlaubt
BehobenStornofenster „heute": Die Grenze für dasselbe Bestelldatum berechnete sich in UTC statt Europe/Berlin — Bestellungen kurz vor Mitternacht konnten am nächsten Morgen fälschlicherweise nicht mehr storniert werden
BehobenStornierung öffnet abgelaufene Runden nicht mehr: Wurde eine bereits automatisch geschlossene Runde (valid_until abgelaufen) durch eine Stornierung wieder rückabgewickelt, erschien sie irrtümlich als „aktiv" — Runden werden jetzt nur zurückgeöffnet wenn valid_until noch nicht abgelaufen ist
BehobenGastkonto erscheint nach Aktivierung automatisch in der Kiosk-Mitgliederliste — ein 15s-Poller sorgt dafür, dass kein manueller Browser-Reload mehr nötig ist
BehobenGastkonto kann bestellen: Server-seitige PIN-Prüfung lehnte Gastkonten ab, weil kein PIN hinterlegt ist — Gastkonten erhalten jetzt automatisch ein signiertes Token ohne PIN-Eingabe

v0.37.0

Transparenz bei Stornierungen: Jede Stornierung verlangt jetzt einen Pflichtgrund und protokolliert wer storniert hat — sichtbar im User-Verlauf und im Admin-Dashboard. Admins können Bestellungen direkt aus der Transaktionen-Ansicht stornieren. Dazu Zeitraum-Filter in der Bestandshistorie und mehrere Korrekturen.

NeuStornierungsgrund als Pflichtfeld: beim Stornieren einer Bestellung (User, Kiosk, Admin) öffnet sich ein Modal mit Pflichtfeld — der Grund wird gespeichert und ist im Verlauf für alle Beteiligten einsehbar
Neu„Storniert durch" Protokollierung: jede Stornierung speichert wer sie durchgeführt hat — Name und Grund erscheinen im User-Verlauf und in Admin → Transaktionen
NeuAdmin-Stornierung in Transaktionen: Admins und Kassierer können aktive Bestellungen direkt aus der Transaktionen-Ansicht heraus stornieren (mit Pflichtgrund, kein Zeitfenster)
NeuZeitraum-Filter in Bestandshistorie: Von/Bis-Datumseingaben filtern die Buchungshistorie auf einen beliebigen Zeitraum — Einstellung bleibt beim Blättern erhalten
VerbessertAktive Runden erscheinen auf der Startseite jetzt zwischen Monatsranking und den Buttons „Bestellung aufgeben" / „Runde ausgeben" — logischere Positionierung
BehobenKisten-Sortierung in Bestellung und Kiosk folgt jetzt der Kategorie- und Produktreihenfolge (wie Einzelprodukte) — keine zufällige Vermischung mehr
BehobenKiosk QR-Code und generierte Links zeigten fälschlicherweise strichfrei.app statt strichfrei.de — Domain ist jetzt zentral hinterlegt
BehobenRückgängig-Aktion (10-Sekunden-Fenster) protokolliert automatisch „Fehlbuchung/Rückgängig" als Stornierungsgrund

v0.36.0

Runde ausgeben im Kiosk: Mitglieder können nach PIN-Eingabe direkt am Kiosk eine Runde ausgeben — mit demselben 3-Modus-Modal wie in der App (Getränke / Kiste / Pool). Karten zeigen jetzt vollständige Details, eigene Runden sind claimbar und Echtzeit-Synchronisation sorgt dafür, dass Kiosk und App immer denselben Stand zeigen.

NeuRunde ausgeben im Kiosk: nach PIN-Eingabe erscheint links neben „Bestellen" ein kompakter „Runde ausgeben"-Button — öffnet das vollständige Runden-Modal mit allen 3 Modi
Neu3-Modus Runden-Modal überarbeitet: Getränke-Runde (Kontingent pro Person), Kisten-Runde (Gesamtmenge), Getränke-Pool (freies Kontingent für beliebige Getränke) als drei klare Tabs
NeuKiosk-Rundenkarten mit vollständigen Details wie in der App: Modus-Badge, Status-Zeile mit verbleibender Menge und Gültigkeit, Mengen-Input für Kisten, Schließen-Button für eigene Runden, Gesamtbeanspruchungen
VerbessertEigene Runden im Kiosk claimbar: Sponsoren können ihre eigene Runde jetzt auch am Kiosk selbst annehmen — identisches Verhalten wie in der App
BehobenRunde erscheint sofort nach dem Erstellen in der Kiosk-Liste — kein Warten auf Realtime-Verzögerung mehr
BehobenBereits beanspruchte Runden werden beim Kiosk-Login vorbelegt — kein erneutes „Annehmen" nach erneuter PIN-Eingabe möglich
BehobenMengen-Input für Kisten-Runden im Kiosk: Eingabefeld neben „Annehmen" für die gewünschte Stückanzahl (Standard 1, max. qty_remaining)
BehobenKisten-Runde aktualisiert sich nach dem Claim sofort: 2 Sekunden „✓ Prost!" dann zurück zum Annehmen-Button mit aktualisierten Zahlen — bei weiterer Restmenge weiterhin claimbar
BehobenKiosk-Runden bleiben für alle Mitglieder zuverlässig aktuell: round_claims-Realtime-Subscription, 30-Sekunden-Polling und Tab-Visibility-Refresh als dreischichtiger Fallback
BehobenUsersicht aktualisiert sich sofort wenn jemand im Kiosk eine Runde annimmt — fehlender revalidatePath-Aufruf in claimRoundViaKiosk ergänzt
BehobenPreise aus aktiven Runden entfernt: Kiosk-Karten und Einheiten-Dropdown in der Usersicht zeigen keine Preise mehr — für Annehmende ist der Preis nicht relevant

v0.35.0

Kisten, Suche & Realtime: Kistenpreis in Runden, Produkt- und Kategorie-Suche im Kiosk und SelfOrder, sortierbare Kisten-Reihenfolge und durchgängige Echtzeit-Updates in Verlauf, Kontostand und aktiven Runden.

NeuAnteiliger Kistenpreis bei Kisten-Runden: wird beim Annehmen anteilig pro beanspruchter Einheit berechnet und korrekt abgebucht
NeuKistenpreis direkt bei Einsorten-Vollkisten in Kiosk und SelfOrder: Gesamtpreis pro Kiste erscheint automatisch wenn eine Kiste nur ein Produkt enthält
NeuSuche + Kategorie-Filter in Kiosk und SelfOrder: Produktsuche und Kategorie-Tabs sind kombinierbar; Kisten erscheinen inline in der Produktliste und haben einen eigenen Tab
NeuKisten-Reihenfolge sortierbar: Admin kann Kisten-Produkte im Reihenfolge-Manager per Drag & Drop und ▲▼-Buttons anordnen
NeuAktive Runden in der App aktualisieren sich live: neuer RoundsRefresher hört auf rounds- und round_claims-Änderungen — neue Runden erscheinen sofort, Mengen nach Claims werden sofort aktualisiert
VerbessertKiste bestellen überarbeitet: Counter-Flow statt Modal, Produktbilder sichtbar, gesamte Kisten-Zeile ist klickbar (+1)
VerbessertKisten-Sektion folgt aktivem Kategorie-Filter — nur Kisten der gewählten Kategorie erscheinen, kein Mischen mehr
VerbessertSession-TTLs explizit gesetzt: reguläre Session = 1 Tag, „Angemeldet bleiben" = 30 Tage, Superadmin = 1 Jahr
BehobenBestellverlauf und Kontostand aktualisieren sich nach Kiosk-Buchungen sofort via Realtime — kein manueller Seitenrefresh mehr nötig
BehobenBestandshistorie zeigte Uhrzeiten in UTC statt Europe/Berlin — Zeitstempel sind jetzt korrekt lokalisiert
BehobenRealtime-Refresher stabiler: automatischer Reconnect bei Channel-Fehler, visibilitychange-Refresh wenn Tab wieder aktiv wird

v0.34.0

Kiosk-Accounts ohne E-Mail-Adresse: Admins legen ein gemeinsames Tablet-Konto direkt in den Org-Einstellungen an — nur ein Passwort, kein echtes E-Mail-Konto nötig. Dazu QR-Code für schnelles Einrichten, dedizierte Login-Seite und mehrere Sicherheits-Fixes.

NeuKiosk-Account pro Organisation: Admin vergibt in den Org-Einstellungen ein Passwort — ein gemeinsames Tablet-Konto ohne echte E-Mail-Adresse, das direkt in den Kiosk der Org einloggt
NeuQR-Code & Login-Link: Nach dem Anlegen zeigt das Panel einen kopierbaren Link sowie einen QR-Code zum Scannen mit dem Tablet
NeuDedizierte Kiosk-Login-Seite (/kiosk-login?org=…): nur Org-Slug und Passwort — keine sichtbare E-Mail-Adresse
NeuAdmin-Exit-Button im Kiosk: Admins die versehentlich im Kiosk landen sehen oben rechts „← Admin-Dashboard" und kommen sofort wieder raus, ohne in einer Redirect-Schleife zu landen
VerbessertKiosk-Verwaltung aus der Mitgliederliste herausgelöst: Kiosk-Accounts erscheinen nicht mehr in der Mitgliederliste und werden nicht über die Rollenzuweisung verwaltet, sondern über einen eigenen Bereich in den Einstellungen
BehobenKiosk-Route war für alle eingeloggten Mitglieder zugänglich — Zugriff ist jetzt auf Admins und den dedizierten Kiosk-Account beschränkt
BehobenKiosk-Login überschreibt jetzt keine bestehende Admin-Session mehr — verhindert die Redirect-Schleife bei der ein Admin im Kiosk gefangen war
EntferntTote Datenbanktabellen entfernt: kiosk_devices, audit_log, notifications, notification_preferences, price_history sowie nie befüllte Spalten payments.period_start / period_end

v0.33.0

Alle Geldbuchungen laufen jetzt über atomare PostgreSQL-Funktionen — kein inkonsistenter Zustand bei Fehlern mehr. Dazu Sofort-Rückgängig nach jeder Bestellung, überarbeitetes Undo-UI und umfangreiche Code-Qualitätsverbesserungen.

NeuAtomare Geldbuchungen: place_order, claim_round, cancel_order und undo_order als PostgreSQL SECURITY DEFINER Funktionen — alle Schreibvorgänge (Bestellung, Bestand, Runden-Kontingent, Storno-Rückbuchung) laufen in einer einzigen Transaktion; kein inkonsistenter Zustand bei Fehlern mehr möglich
NeuSofort-Rückgängig: Direkt nach jeder Buchung (Kiosk + Self-Order) erscheint ~10 Sekunden lang eine „Rückgängig"-Kachel — ein Tap macht die Buchung vollständig rückgängig, unabhängig von der Org-Storno-Einstellung (Fehlklick-Korrektur durch dieselbe Person)
Neuorders.source: Jede Buchung merkt sich die Herkunft (self / kiosk / counter) — Basis für künftigen Verkaufstresen-Modus
NeuProd-Asserts: Beim Start in Produktion werden fehlende Pflicht-Umgebungsvariablen sofort gemeldet statt still zu scheitern
VerbessertRückgängig-UI überarbeitet: „Weiter/Fertig" ist jetzt der große primäre Button, Rückgängig eine kleinere rote Kachel darunter — verhindert versehentliche Taps auf Mobile und Tablet
VerbessertOrg-Checks zentralisiert: requireOrgAdmin-Helper und userId direkt aus requireOrgAccess — redundante Auth-Aufrufe in payments.ts, payment-requests.ts und inviteMember entfernt
BehobenEigene Runde beanspruchen war nach dem RPC-Refactoring fälschlicherweise gesperrt — Sponsoren können ihre eigene Runde jetzt wieder selbst beanspruchen
Entferntinventory-utils.ts entfernt: Komplette Inventar-Logik läuft jetzt in den Postgres-RPCs — der doppelte clientseitige Code war toter Ballast

v0.32.0

Personalisierte Mitgliedereinladungen via E-Mail, überarbeitetes Einladungs-Dashboard mit Statusfiltern und neue Admin-Rankings mit Zeitraumfilter.

NeuMitglied direkt per E-Mail einladen: personalisierter Einladungslink (einmalig verwendbar, 7 Tage gültig) wird automatisch per E-Mail von noreply@strichfrei.de verschickt — kein Supabase-Umweg mehr, vollständige Kontrolle über Absender und Inhalt
NeuAdmin-Rankings mit Zeitraumfilter: Von/Bis frei wählbar, Award-Tabellen (Bierkönig, Spender des Monats) zeigen die Rangliste für den gewählten Zeitraum
NeuEinladungs-Dashboard neu gestaltet: eine Kachel, zwei Rubriken — allgemeiner Einladungslink und direkte personalisierte Einladungen mit Statusfilter (Ausstehend / Angenommen / Widerrufen / Abgelaufen). Kachel und Direkteinladungen-Bereich sind je separat ein-/ausklappbar
VerbessertBenachrichtigungseinstellungen im Profil: alle Orgs sind einzeln ein-/ausklappbar — übersichtlicher bei mehreren Organisationen, standardmäßig alles zugeklappt
BehobenDatumsfilter in den Rankings: Zukunftsdaten waren fälschlicherweise gesperrt; Dark-Mode-Kalender (nativer Datepicker-Popup) war kaum lesbar — beides behoben
BehobenNavigation: Zurück-Button landete nach einer Mitglieder-Einladung auf der Erfolgsseite (?invited=1) — Erfolgsanzeige ist jetzt reiner UI-State ohne URL-Manipulation, Browser-Verlauf bleibt sauber
BehobeniOS PWA: stummer „Connection closed"-Fehler nach dem Login verhinderte die Weiterleitung ins Dashboard — Fehler wird jetzt abgefangen
BehobeniOS WKWebView: Doppelter Trigger beim Registrierungs-Bestätigungslink verhindert — Bestätigung läuft jetzt über eine eigene, einmalig ausführbare Route
BehobenReihenfolge-Panel öffnete sich leer wenn eine Org nur 1 Produkt in 1 Kategorie hat — erklärender Hinweis zeigt jetzt, ab wann Sortieroptionen erscheinen
BehobenEinladungslink in der E-Mail zeigte fälschlicherweise app.strichfrei.de statt strichfrei.de als Domain

v0.31.0

Bestandsverwaltung live: Produkte mit leerem Lager sperren sich automatisch und zeigen sofort „Nicht vorrätig" — Bestandsänderungen wirken in Echtzeit ohne Seitenreload. Dazu dreifache Absicherung gegen doppelte Einheitstypen und ein verbessertes Superadmin-Dashboard.

NeuNicht-vorrätig-Anzeige: Produkte mit leerem Lagerbestand werden im Kiosk und Self-Order automatisch gesperrt — rot markiert mit „Nicht vorrätig"-Badge, Bestellung nicht mehr möglich
NeuEchtzeit-Bestandsänderungen: Zu- und Abgänge (Lieferung, Inventur, Bestellung) wirken sofort auf Kiosk und App — ohne Seitenreload dank Supabase Realtime
VerbessertBestandssemantik: Bestand nie eingepflegt (NULL) wird wie Bestand = 0 behandelt — ein Produkt ist nicht bestellbar, bis ein realer Bestand erfasst wurde
BehobenEinheitstyp-Duplikate pro Produkt verhindert: DB-Unique-Constraint, Server-seitige Prüfung vor dem INSERT und UI-Filterung (bereits verwendete Typen sind nicht mehr auswählbar) sichern gemeinsam ab, dass kein Typ doppelt zugewiesen werden kann
VerbessertSuperadmin-Dashboard: Volltextsuche über alle Organisationen (Name, Slug, Eigentümer-E-Mail) und einklappbare Archiv-Rubrik für inaktive Organisationen

v0.30.0

Stabilität und Datenkonsistenz: atomare Produktanlage, einheitliche Produktreihenfolge, Echtzeit-Saldo-Anzeige und mehrere Superadmin-Bugfixes.

NeuEchtzeit-Saldo: Bestellungen aus dem Kiosk aktualisieren den Kontostand des Mitglieds unmittelbar — kein Seitenreload mehr nötig, um den aktuellen Saldo zu sehen
BehobenSuperadmin-Dashboard: Einheitentypen und Produktpreise waren im Superadmin-Modus unsichtbar — RLS-Policies der Tabellen org_unit_types und product_units nutzten rohe Subqueries ohne Superadmin-Bypass und wurden auf die bewährten is_org_member() / is_org_admin()-Hilfsfunktionen umgestellt
BehobenQR-Code Verwendungszweck enthielt bisher auch den Hinweistext aus den Zahlungseinstellungen — im Verwendungszweck steht jetzt ausschließlich Vor- und Nachname des Mitglieds
BehobenNeues Produkt konnte ohne Einheiten in der Datenbank landen, wenn der Insert der Einheiten scheiterte und der anschließende Cleanup-Delete ebenfalls fehlschlug — Produktanlage ist jetzt atomar: eine PostgreSQL-Funktion legt Produkt und Einheiten in einer einzigen Transaktion an, bei Fehler rollt alles automatisch zurück
BehobenProduktreihenfolge war in Admin-Dashboard, Kiosk und SelfOrder-Ansicht unterschiedlich, weil alle neuen Produkte denselben sort_order (0) erhielten und die drei Ansichten den Gleichstand unterschiedlich auflösten — alle Ansichten nutzen jetzt einheitlich sort_order → Name als Tiebreaker
VerbessertNeue Produkte werden automatisch ans Ende ihrer Kategorie einsortiert (sort_order = max + 10) statt alle auf 0 zu landen — die manuell eingestellte Reihenfolge bleibt dadurch stabil
VerbessertOrganisation anlegen (Superadmin): scheitert das Anlegen der Standard-Einheitentypen, wird die Organisation sofort wieder gelöscht (Rollback) statt einen inkonsistenten Zustand zu hinterlassen
VerbessertBestehende Organisationen ohne Einheitentypen erhalten automatisch „Stück" und „Kiste" nachträglich — Nachrüstmigration stellt sicher, dass Produkte in allen Orgs sofort bearbeitbar sind
Entfernt„Stornierungen bei Guthaben" wurde als Admin-Option entfernt — die Einstellung hatte in der Praxis keinen Nutzen und erzeugte Verwirrung

v0.29.0

Bestandsmanagement grundlegend erweitert: lückenlose Bestandshistorie (inkl. Bestellungen), Schwellwerte für Mindest- und Zielbestand je Produkt sowie eine komplett überarbeitete Tab-Navigation.

NeuBestandshistorie: vollständige, paginierte Bewegungsliste — Zugänge (Lieferung, Inventur, Korrekturen), Abgänge aus Bestellungen und Stornierungen sind lückenlos mit Zeitstempel, Buchungsgrund und ausführendem Mitglied dokumentiert
NeuBestandshistorie je Produkt: Produkt in der Bestandspflege aufklappen → direkt gefilterte Historie nur für diesen Artikel
NeuSchwellwerte je Produkt: Mindestbestand (ab wann bestellen) und Zielbestand (wie viel auffüllen) — Grundlage für die spätere automatische Bestellmail an den Getränkehändler
NeuErklär-Icons (ⓘ) bei Mindestbestand und Zielbestand: Hover (Desktop) oder Antippen (Mobile) zeigt eine kompakte Erklärung was der jeweilige Wert bedeutet und wie er bei Bestellungen wirkt
NeuBestandsstatus-Badges: visueller Ampelstatus direkt auf der Produktkachel — „⚠ Mindestbestand" (rot) wenn der Bestand den Schwellwert erreicht oder unterschreitet
VerbessertInventar-Navigation: Bestandspflege und Bestandshistorie sind jetzt als klare Tabreiter oben getrennt — kein endloses Scrollen mehr an 86+ Produkten vorbei, um zur Historie zu kommen
VerbessertBestandshistorie: Filter (Produkt, Buchungsgrund, Zeitraum) und Paginierung nutzen URL-Parameter — alle Links verwenden „replace" statt „push", d. h. der Browser-Zurück-Button führt immer zurück ins Admin-Dashboard, nicht durch einzelne Filterzustände
BehobenBestellungen reduzierten den Lagerbestand, tauchten aber nie in der Bestandshistorie auf — alle drei Abzugspfade (Kiosk-Bestellung, Self-Order, Runden-Claim) schreiben jetzt einen Eintrag mit Grund „Bestellung" und Referenz auf das Mitglied
BehobenStornierungen wurden ebenfalls nicht protokolliert — auch Stornobuchungen erscheinen jetzt mit eigenem Eintrag (Grund „Stornierung") in der Historie
BehobenMobile UX: Spinner-Pfeile (▲▼) aus Mengen-Inputs in der Bestandspflege entfernt — Eingabefelder verwenden jetzt type="text" + inputMode="numeric" statt type="number"

v0.28.0

Dark- und Light-Mode wählbar: Die App startet standardmäßig im dunklen Design, kann aber im Profil dauerhaft auf Hell oder System umgestellt werden.

NeuDark-/Light-Mode-Umschalter im Profil: Dunkel (Standard), Hell oder Systemeinstellung — Auswahl wird lokal gespeichert und sofort ohne Seitenreload übernommen
VerbessertAlle Seiten und Komponenten (Admin, Kiosk, Profil, Marketing) sind vollständig auf beide Modi ausgelegt — kein Flackern beim ersten Laden dank SSR-sicherem Script-Inject

v0.27.0

Umfangreiche Security-Härtung nach internem Audit: Tenant-Isolation für alle Geldbuchungen, serverseitige Kiosk-PIN-Prüfung, CSV-Injection-Schutz und weitere Schließungen.

BehobenSecurity: Geldbuchungen (Einzahlung, Auszahlung, Umlage) werden jetzt immer gegen die verifizierte Organisation des aufrufenden Nutzers geprüft — ein Admin konnte theoretisch Mitglieder einer fremden Organisation buchen (Tenant-Isolation)
BehobenSecurity: Kiosk-PIN-Validierung erfolgt vollständig serverseitig und ist an das Org-Token gebunden — clientseitige Umgehung ist nicht mehr möglich
BehobenSecurity: verify_kiosk_pin ist jetzt an die Organisation des Aufrufers gebunden — ein Kiosk-Token einer anderen Org konnte PINs gegen eine fremde Org prüfen
BehobenSecurity: CSV-Exporte (Mitglieder, Inventur) sind gegen Formula- und Quote-Injection gehärtet — Felder mit =, +, -, @ oder Anführungszeichen werden korrekt escaped
BehobenSecurity: Open-Redirect in Auth-Callbacks und Zahlungsanfragen-Weiterleitungen geschlossen — only-relative-path-Prüfung verhindert Weiterleitungen auf externe Domains
BehobenSecurity: Org-Scoping in mehreren weiteren Server Actions lückenhaft — alle betroffenen Endpunkte prüfen jetzt membership.organization_id gegen die angefragte Org
VerbessertCode-Qualität: ESLint-Warnungen von 58 auf 13 reduziert, React-Rules-of-Hooks-Fehler behoben, Sentry-Demo-Seite entfernt

v0.26.0

Produkteinheiten abgesichert, abgelehnte Zahlungsanfragen im Verlauf sichtbar und zahlreiche UX-Verbesserungen für Mobile.

NeuAbgelehnte Ein- und Auszahlungsanfragen erscheinen jetzt im Transaktionsverlauf des Mitglieds — mit „Abgelehnt"-Badge und durchgestrichenem Betrag
NeuAbgelehnte Zahlungsanfragen sind auch in der Admin-Transaktionssuche (Zahlungen-Filter) sichtbar
NeuZahlungs- und Auszahlungs-Modal öffnet auf Mobile jetzt als Bottom-Sheet von unten — ergonomischer auf dem Smartphone
NeuBeim Anlegen einer neuen Organisation werden automatisch die Einheitentypen „Stück" und „Kiste" erstellt — Produkte können sofort angelegt werden
VerbessertEinheitentyp löschen: Wird ein Typ noch von Produkten verwendet, erscheint eine verständliche Fehlermeldung statt eines rohen Datenbankfehlers
VerbessertLetzte aktive Einheit eines Produkts kann nicht mehr deaktiviert werden — ein Produkt hat immer mindestens eine aktive Einheit
VerbessertIBAN-Feld in den Zahlungseinstellungen ist auf Mobile jetzt volles Feld (kein Zwei-Spalten-Layout mehr auf kleinen Screens)
VerbessertBestätigen/Ablehnen-Buttons bei offenen Zahlungsanfragen (Admin) haben jetzt iOS-konforme Touch-Target-Größe (min. 44 px)
VerbessertZahlungsdetails im Einzahlungs-Modal: QR-Code und IBAN-Angaben stapeln sich auf Mobile übereinander statt abgeschnitten nebeneinander
BehobenEinheitentyp-Fremdschlüssel auf RESTRICT geändert — Löschen eines Typs, der noch von Produkten genutzt wird, ist jetzt sicher blockiert
BehobenIrrtümlicher Hinweis „Reihenfolge bestimmt Darstellung im Kiosk" bei Einheitentypen entfernt

v0.25.0

Zahlungsintegration: Mitglieder können ihren Saldo direkt über die App ausgleichen oder eine Auszahlung anfragen — mit SEPA-QR-Code, Admin-Bestätigungsflow und E-Mail-Benachrichtigungen.

NeuZahlungsanfragen: Mitglieder mit offenem Saldo sehen direkt in der Saldo-Kachel einen „Saldo ausgleichen"-Button — inkl. IBAN, BIC, Kontoinhaber und scannem SEPA-QR-Code für Banking-Apps
NeuAuszahlungsanfragen: Mitglieder mit Guthaben können eine Rückzahlung anfragen — der beantragte Betrag wird sofort als gesperrt angezeigt und vom verfügbaren Guthaben abgezogen
NeuAdmin-Dashboard: Offene Zahlungsanfragen erscheinen als einklappbares Panel — Admins und Kassierer können Anfragen mit einem Klick bestätigen oder ablehnen
NeuE-Mail-Benachrichtigungen: Admins und Kassierer erhalten eine E-Mail bei neuen Zahlungsanfragen (von noreply@strichfrei.de, im gleichen Design wie die Auth-Mails)
NeuBenachrichtigungseinstellungen im Profil: Admins, Kassierer und Bestandsmanager können E-Mail-Benachrichtigungen pro Org individuell aktivieren oder deaktivieren
NeuZahlungseinstellungen (Admin): IBAN, BIC, Kontoinhaber, optionaler PayPal.me-Link und Hinweistext für Mitglieder — mit IBAN Mod-97 und BIC ISO-9362-Validierung
NeuSEPA-QR-Code im Einzahlungs-Modal: Betrag passt sich live an, QR-Code ist als PNG speicherbar oder per Web Share (iOS/Android) teilbar
VerbessertSaldo-Anzeige berücksichtigt ausstehende Auszahlungsanfragen — angezeigter Saldo entspricht dem tatsächlich verfügbaren Betrag
VerbessertRangliste und Leaderboard werden nach Profilbild- und Namensänderungen sofort aktualisiert
BehobenAuszahlungsanfrage kann nicht mehr über das verfügbare Guthaben hinausgehen — sowohl client- als auch serverseitig geprüft

v0.24.0

Superadmins können jetzt direkt in das Admin-Dashboard jeder Organisation springen — ohne Mitgliedschaft.

NeuSuperadmin-Dashboard: „Als Admin öffnen"-Button pro Organisation — direkte Weiterleitung ins Org-Admin-Dashboard mit vollen Admin-Rechten, ohne der Org beizutreten
VerbessertSuperadmin-Zugriff auf Org-Seiten wird in der Navigation kenntlich gemacht — kein Verwechslungsrisiko mit echten Mitgliedsrechten

v0.23.0

Superadmins können Organisationen jetzt vollständig per Einladungslink bootstrappen — der erste Beitretende wird automatisch Admin.

NeuSuperadmin-Dashboard: Einladungslink pro Organisation generieren — Link erscheint direkt im Dashboard und kann per Klick kopiert werden
VerbessertErster User einer neu angelegten Organisation tritt automatisch als Admin bei, nicht als einfaches Mitglied — kein manueller DB-Eingriff mehr nötig
VerbessertOrg-Anlegen: Slug wird automatisch aus dem Namen abgeleitet (Umlaute korrekt umgeschrieben), Name und Slug bleiben nach einem Validierungsfehler erhalten
BehobenDoppelter Org-Slug zeigt jetzt eine verständliche deutsche Fehlermeldung statt einem rohen Datenbankfehler
BehobenFehlgeschlagene Beitrittsversuche über Einladungslinks werden jetzt mit dem genauen Fehlergrund geloggt (erleichtert Fehlersuche)

v0.22.0

Deutlich schnellere App, überarbeitete PDF-Exporte mit Logo, AGB-Zustimmung bei der Registrierung und eine Rangliste, die sich sofort und konsistent aktualisiert.

NeuAGB-Zustimmung bei der Registrierung: neue Nutzer akzeptieren die AGB und bestätigen die Kenntnisnahme der Datenschutzerklärung aktiv per Pflicht-Checkbox — rechtlich sauber dokumentiert
VerbessertSpürbar schnellere App: Server nach Frankfurt verlagert (direkt neben der Datenbank), Anmelde-Prüfung läuft jetzt lokal statt über einen Server-Umweg, und die App-Hülle wird zwischengespeichert — Dashboard, Org-Wechsel und Rangliste öffnen deutlich flotter, besonders als Home-Screen-App
VerbessertPDF-Exporte überarbeitet: strichfrei-Logo in Kopf- und Fußzeile, Mitgliederliste reduziert auf Name + Saldo (nur aktive Mitglieder, sortiert wie im Kiosk: Nachname zuerst), gepunktete Leitlinien gegen Verrutschen in der Zeile
VerbessertInventurliste als Zähl-Vordruck: eine Zeile je Produkt mit eigener Spalte je Mengeneinheit (z. B. Stück und Kiste nebeneinander zum Eintragen), Produkte in der im Admin festgelegten Reihenfolge
VerbessertDatenschutz & Impressum aktualisiert: Sentry und Vercel Analytics als Auftragsverarbeiter ergänzt, Hinweis zur EU-Streitschlichtung im Impressum
BehobenRangliste & Monats-Awards aktualisieren sich jetzt sofort nach jeder Buchung — und Dashboard und Ranglisten-Seite zeigen garantiert dieselben Zahlen (vorher konnten sie veralten und auseinanderlaufen)

v0.21.0

SEO-Update: Favicon erscheint jetzt zuverlässig in Google-Suchergebnissen, strukturierte Daten für bessere Markenerkennung.

BehobenFavicon in Google-Suchergebnissen: strichfrei-Logo wird jetzt stabil indexiert — bisher änderte sich die Favicon-URL bei jedem Deployment, was Google daran hinderte das Logo zu cachen
VerbessertStrukturierte Daten (JSON-LD): Organisation mit Logo, E-Mail und Instagram-Link angereichert — verbessert die Markenerkennung in Google

v0.20.0

Qualitäts-Update: Absturz der Rangliste behoben, „Angemeldet bleiben" funktioniert jetzt zuverlässig, gelöschte Profilbilder werden wirklich entfernt und der Kiosk zeigt Avatar-Änderungen sofort.

BehobenRangliste: Absturz behoben, wenn nur Gast-Konten diesen Monat aktiv waren — Gast- und Kiosk-Konten werden jetzt vollständig aus allen Ranglisten-Berechnungen ausgeschlossen
Behoben„Angemeldet bleiben" deaktiviert: Session endet jetzt auch nach mehr als einer Stunde zuverlässig beim Schließen des Browsers (Token-Refresh hat die Einstellung zuvor überschrieben)
BehobenProfilbild löschen entfernt das Bild jetzt wirklich aus dem Speicher — bisher blieb die Datei öffentlich erreichbar. Gleiches gilt beim Bildtausch: die alte Datei wird aufgeräumt
VerbessertKiosk: Avatar-Änderungen werden jetzt per Echtzeit-Update sofort in der Mitgliederliste angezeigt, ohne manuellen Reload
VerbessertRangliste: Daten werden 5 Minuten gecacht — deutlich schnellere Ladezeit beim Aufruf der Detailseite

v0.19.0

Profilbilder, polierter Login, Kiosk-Redesign mit Foto & Sortierfixes, neue Ranglisten-Detailseite mit Bierkönig und Spender des Monats.

NeuProfilbild: Jeder Nutzer kann ein Foto in seinem Profil hinterlegen — erscheint dann direkt in der Kiosk-Mitgliederliste
NeuRangliste: neue Detail-Seite mit Bierkönig (meiste Getränke) und Spender des Monats (meiste Runden) als Award-Karten, darunter die vollständige Monats-Tabelle
NeuLogin: Eingabefelder mit Icons (Briefumschlag / Schloss), Passwort-Sichtbarkeits-Toggle und „Angemeldet bleiben"-Checkbox — nicht angemeldet bleiben löscht die Session beim Schließen des Browsers
NeuPWA: Home-Screen-App öffnet jetzt direkt das Dashboard statt die Marketing-Seite — bei fehlender Session automatisch zum Login
VerbessertKiosk-Mitgliederliste: Kacheldesign mit Profilfoto / Initialen-Avatar und Chevron-Pfeil, sortiert nach Nachname (Gäste immer oben), Anzeige als „Nachname Vorname"
VerbessertMonatsranking-Teaser auf der Startseite ist jetzt anklickbar und führt zur neuen Detailseite
BehobenKiosk: Produkt-Dropdown bei Runden folgt jetzt der Admin-Sortierreihenfolge (Kategorie → Produkt → Einheit)
BehobenRangliste: Gast- und Kiosk-Konten erscheinen nicht mehr in den Ranglisten-Tabellen

v0.18.0

Runden verbessert: Sponsor kann eigene Runde selbst beanspruchen, Kisten-Mengenauswahl per Eingabefeld, Verlauf aktualisiert sich sofort nach jeder Buchung und die Produktliste folgt der Admin-Reihenfolge.

NeuEigene Runde beanspruchen: Wer eine Runde ausgibt, kann sie jetzt auch selbst annehmen — mit denselben Regeln wie andere Mitglieder (qty_per_person-Limit bei Getränke-Runden)
NeuKisten-Mengenauswahl: Eingabefeld neben „Annehmen" — Standard 1, editierbar bis zur Restmenge. Auf Mobile öffnet automatisch die Zifferntastatur, kein Scrollen nötig
BehobenVerlauf aktualisiert sich nach jeder Buchung (Runde annehmen, Self-Order) sofort — kein manueller Seitenrefresh mehr nötig
BehobenProdukt-Dropdown bei Runden folgt jetzt der im Admin eingestellten Reihenfolge (Kategorie → Produkt → Einheit) statt zufälliger Datenbank-Reihenfolge

v0.17.0

Kontakt-Sektion auf der Startseite, professionelle Transaktions-E-Mails über Resend, einheitliches schwarzgrünes E-Mail-Design und automatisiertes Fehler-Monitoring über Sentry.

NeuKontakt-Sektion auf der Startseite: schnell erreichbar über die Navigation — E-Mail (hallo@strichfrei.de) und Instagram direkt verlinkt
NeuFehler-Monitoring via Sentry: unerwartete Fehler werden automatisch gemeldet — Nutzer sehen eine klare Fehlermeldung mit „Nochmal versuchen"-Button statt einem leeren Bildschirm
VerbessertE-Mail-Versand: Supabase-Auth-Mails (Registrierung, Passwort zurücksetzen, Magic Link, Einladung) werden jetzt über Resend verschickt — zuverlässigere Zustellung, weniger Spam-Ordner
VerbessertE-Mail-Templates: alle 5 Transaktions-E-Mails im einheitlichen strichfrei-Design (schwarz/grün, SVG-Logo, BETA-Badge) — mit Hinweis, dass Antworten auf noreply@ nicht gelesen werden
VerbessertTechnisch: 168 automatisierte Tests + GitHub Actions CI — alle Kernfunktionen (Zahlungen, Umlage, Jugendschutz, Icons, Stornofenster, Inventar) werden bei jedem Push geprüft

v0.16.0

Produkt-Icons mit automatischer Erkennung und manuellem Picker, vollflächig klickbare Kiosk-Kacheln und Instagram-Präsenz.

NeuProdukt-Icons: Automatische Emoji-Erkennung aus dem Produktnamen — Pils → 🍺, Cola → 🥤, Mineralwasser → 💧, Wein → 🍷 und weitere (30+ Regeln)
NeuIcon-Picker im Produkt-Formular: Emoji aus 5 Gruppen (Bier & Wein, Cocktails, Alkoholfrei, Essen, Sonstiges) manuell wählbar — oder auf automatische Erkennung zurücksetzen
BehobenKiosk: Produktkachel ist jetzt vollflächig klickbar (+1) — vorher musste man genau den + Button treffen. Identisches Verhalten wie im Self-Order-Modal
VerbessertKiosk: Leichtes Tap-Feedback (scale-Animation) beim Antippen einer Produktkachel
NeuInstagram-Link im Footer der Startseite (@strichfrei)

v0.15.0

Technische Bereinigung: ESLint-Fehler behoben, veraltete Datenbankfunktionen entfernt, mobile Navigation stabilisiert und SEO-Verifikation ergänzt.

BehobenMobil: Langer Organisationsname in der Admin-Kopfzeile wird jetzt abgeschnitten (…) statt umzubrechen — Rolle (Admin/Kassierer) bleibt immer sichtbar
BehobenInternes Qualitätswerkzeug (ESLint) wieder funktionsfähig — Monorepo-Konfiguration korrigiert, alle Fehler behoben
EntferntVeraltete Datenbankfunktion place_kiosk_order entfernt — wurde durch das aktuelle Bestellsystem mit Produkteinheiten ersetzt und war nirgends mehr im Einsatz
EntferntAutomatischen RLS-Event-Trigger (rls_auto_enable) entfernt — alle Tabellen haben RLS explizit gesetzt, der Trigger war redundant
VerbessertSEO: Google Search Console Verifikation hinterlegt — Suchergebnisse können jetzt überwacht werden
VerbessertFehlende Datenbankfunktionen (create_organization, set_member_pin, reset_member_pin, verify_kiosk_pin) in die Versionsverwaltung aufgenommen — Staging und Produktion sind jetzt schema-identisch

v0.14.0

Code-Review-Runde: bessere Nutzung großer Bildschirme, bereinigter Routenbaum und interne Verbesserungen an Wartbarkeit und Struktur.

VerbessertDesktop & Tablet: Admin-Dashboard, Produktverwaltung und Mitglieder-Ansicht nutzen jetzt mehr Bildschirmbreite (max-w-5xl statt max-w-4xl) — weniger ungenutzter Weißraum auf großen Monitoren
VerbessertAdmin-Dashboard: Statistik-Kacheln zeigen auf breiten Screens bis zu 4 Spalten nebeneinander
VerbessertAdmin-Produkte: Produktkacheln nutzen auf sehr breiten Screens eine vierte Spalte (xl:)
VerbessertKiosk-Produktgrid: stufenweise Spaltenanzahl — 2 (Handy) → 3 (Handy quer) → 4 (Tablet) → 5 (Desktop) für optimale Bildschirmauslastung
BehobenVeraltete Weiterleitungs-Routen /changelog und /handbuch entfernt — die URLs waren nie öffentlich erreichbar und sind jetzt vollständig aus dem Routenbaum bereinigt
VerbessertTechnisch: gemeinsamer Auth-Helper requireOrgMember zentral in lib/org statt in jeder Datei einzeln — weniger Duplikatcode, einfachere Pflege
VerbessertTechnisch: KioskProductCard als eigene Komponente extrahiert — Kiosk-Hauptdatei um ~115 Zeilen Duplikatcode reduziert

v0.13.0

Produkt- und Kategorien-Reihenfolge per Drag & Drop, vollständige Kategorienverwaltung direkt in der Liste, kategorielose Produkte klar gekennzeichnet und SEO-Verbesserungen auf der Startseite.

NeuReihenfolge anpassen: Kategorien und Produkte per Drag & Drop oder ▲▼-Buttons sortieren — Reihenfolge gilt im Kiosk, Self-Order und der Produktliste
NeuKategorie löschen: rotes X direkt in der Kategorieliste — mit Doppelklick-Bestätigung (kein Browser-Dialog), Produkte werden vor dem Löschen abgefragt
NeuFSK je Kategorie: direkt in der Kategorieliste auswählen und sofort ohne Bestätigung gespeichert
NeuKategoriename inline umbenennen: Bleistift-Icon in der Kategorieliste — Enter zum Speichern, Escape zum Abbrechen
NeuKategorielose Produkte: amber Badge „⚠ Kategorie fehlt" auf der Produktkarte im Admin-Bereich als visueller Hinweis
NeuKiosk & Self-Order: Produkte ohne Kategorie erscheinen jetzt unter der Gruppe „Sonstige" statt unsichtbar zu sein
NeuReihenfolge-Modul: „Sonstige (keiner Kategorie zugeordnet)" zeigt kategorielose Produkte auch im Sortier-Manager, sortierbar ab 2 Produkten
NeuStartseite: App-Teaser-Leiste für iOS & Android (in Kürze verfügbar)
VerbessertStartseite: kurzer Erklärungstext ergänzt — beschreibt den eigenen Account und den gemeinsamen Kiosk-Tablet-Zugang
VerbessertReihenfolge-Modul: Refresh-Button (⟳) aktualisiert die Liste ohne kompletten Seiten-Reload
BehobenFavicon: Größe von 32 px auf 64 px erhöht — Google benötigt mindestens 48 px für die Darstellung des Logos in Suchergebnissen
Mai 202611 Releases · 0.12.00.2.0

v0.12.0

Registrierung per E-Mail-Bestätigung funktioniert jetzt vollständig, mobile Darstellung weiter überarbeitet und ein Zeitzonen-Fehler im Datumsfilter behoben.

BehobenRegistrierung: Nach Klick auf den Bestätigungslink wird man jetzt automatisch eingeloggt und weitergeleitet — vorher blieb die Warteseite hängen
BehobenRegistrierung: Eine bereits vergebene E-Mail-Adresse wird sofort erkannt — mit Hinweis „bereits registriert", Button zur Anmeldung und Link zum Passwort-Zurücksetzen, statt erneut eine (wirkungslose) Bestätigungsmail anzubieten
BehobenVerlauf & Transaktionen: Ein Zeitzonen-Fehler zeigte Einträge nahe Mitternacht am falschen Tag (z. B. erschien „28.05., 01:29 Uhr" beim Filter „bis 27.05.") — Tagesgrenzen werden jetzt korrekt in lokaler Zeit berechnet
BehobenMobil: Kein horizontales Verschieben der Seite mehr — die Ansicht bleibt auf die Gerätebreite begrenzt und scrollt nur noch nach oben/unten
BehobenMobil: Eingabefelder zoomen auf dem iPhone nicht mehr automatisch hinein (z. B. beim Kontostand verwalten)
BehobenMobil: Produkt anlegen und bearbeiten — Felder (Einheitentyp, Preis, Faktor) überlappten sich; jetzt sauber gestapeltes Layout
BehobenMobil: Kopfzeile der Mitglieder-Ansicht — der „Abmelden"-Button lief aus dem Bildschirm; bricht jetzt sauber um
VerbessertAuth-Bestätigungslinks (Registrierung) laufen jetzt über eine eigene, abgesicherte Weiterleitungs-Route

v0.11.0

Server-seitige Verlauf- und Transaktionssuche, durchgängig einheitliche Navigation, überarbeitete mobile Darstellung und ein nutzerfreundlicher Registrierungs-/Login-Flow.

NeuVerlauf (Mitglieder): Der Zeitraum-Filter durchsucht jetzt die gesamte Historie auf dem Server — auch lange zurückliegende Einträge (z.B. „Mai vor zwei Jahren") sind direkt über das Datum auffindbar, ohne alles nachladen zu müssen
NeuAdmin → Transaktionen: neues Selektionsbild — erst Filter setzen (Mitglied, Art, Zeitraum), dann „Suchen". Es werden nur noch die Treffer geladen statt aller Transaktionen beim Öffnen
NeuRegistrierung & Login: Bei noch nicht bestätigter E-Mail erscheint jetzt ein klarer deutscher Hinweis mit Button „Bestätigungsmail erneut senden" und Support-Kontakt (hallo@strichfrei.de)
VerbessertEinheitlicher „Zurück"-Button in der ganzen App: größeres Touch-Ziel (≥ 44 px), echtes Pfeil-Icon und Rücksprung dorthin, woher man kam
VerbessertBestell- und Kiosk-Ansicht: „Zurück"-Buttons im gleichen einheitlichen Stil
VerbessertDialoge: Der Seiten-Hintergrund scrollt nicht mehr mit, wenn ein Dialog offen ist; Schließen zusätzlich per Escape und Klick außerhalb
VerbessertBereits angemeldet und „Zur App" von der Startseite geöffnet → man landet direkt im Dashboard statt auf der Login-Seite
VerbessertMobile Darstellung überarbeitet: Mitgliederliste, Einladungslink-Panel, Rollen-Auswahl und Dashboard-Karten brechen jetzt sauber um
VerbessertFehlermeldungen bei Anmeldung und Registrierung durchgängig auf Deutsch
VerbessertApp-Icon zentriert und mit glatten Kanten (Browser-Tab, iOS-Homescreen, Android)
BehobenSicherheit: Der Verlauf eines anderen Mitglieds derselben Organisation ließ sich über einen direkten Aufruf auslesen — Eigentümer-Prüfung ergänzt
BehobenMitgliederliste auf dem Handy: Namen fehlten teilweise und Elemente überlagerten sich
Behoben„Zurück" im Profil sprang immer aufs Dashboard statt zur vorherigen Seite

v0.10.0

Produktkachel-Redesign, Performance-Verbesserungen, Verlauf-Fixes und Bugfixes im Statistik-Dashboard.

NeuProduktkacheln: neues kompaktes Layout — Produktbild 64×64 oben rechts, Name und Preis linksbündig, Mengen-Badge direkt auf dem Bild
NeuKiosk (Bestellung + Kiste füllen): identisches neues Kachel-Layout wie Self-Order
VerbessertProduktkacheln: Schriftgröße Name und Preis auf text-sm vergrößert — besser lesbar auf Mobile
VerbessertMitglieder-Seite: Saldo und Bestellbuttons erscheinen sofort — Runden und Verlauf werden gestreamt (Suspense-Streaming)
VerbessertStatistik-Seite: Browser rendert Sektionen nur wenn sie in den Viewport scrollen (contentVisibility: auto) — schnellerer erster Paint
VerbessertVerlauf: „Ausgeführt durch [Name]" erscheint jetzt bei allen Buchungstypen (Einzahlung, Auszahlung, Umlage)
VerbessertVerlauf: Umlage-Gutschrift jetzt grün wie reguläre Einzahlungen — Farbe signalisiert einheitlich Geldeingang
BehobenStatistik: „Gespendete Einheiten" zeigte die angebotene statt die tatsächlich beanspruchte Menge — jetzt korrekt (qty_total − qty_remaining)
BehobenProduktkacheln: Mengen-Badge wurde vom Bild-Container abgeschnitten — Badge liegt jetzt außerhalb von overflow-hidden
BehobenDashboard: Logo wurde auf iOS im Light-Mode weiß auf weißem Hintergrund dargestellt

v0.9.0

Umlage-Funktion für Admins und Kassierer, Auszahlungen im Payment-Modal, überarbeiteter Verlauf mit 4 Buchungstypen und Security-Fixes.

NeuUmlage: Bulk-Buchung für beliebig viele Mitglieder — positiver Betrag = Lastschrift (z.B. Abendessen), negativer Betrag = Gutschrift (z.B. Brandwache-Vergütung)
NeuUmlage: Toggle „Pro Person" (Standard) oder „Gesamt aufteilen" — zeigt Betrag ÷ Anzahl Mitglieder als Vorschau
NeuUmlage: Mitglieder-Auswahl mit Suche, Checkboxen und „Alle auswählen"-Toggle
NeuAuszahlung: negativer Betrag im Kontostand-Modal erfassen — Modal, Hinweis und Button wechseln dynamisch auf Rot
NeuVerlauf: 4 klar unterscheidbare Buchungstypen — Einzahlung (grün), Auszahlung (rot), Umlage Lastschrift (rot), Umlage Gutschrift (amber)
NeuVerlauf: „Ausgeführt durch [Name]" wird bei Umlagen angezeigt
Verbessert„✏ Kontostand"-Button ersetzt die bisherigen kontextabhängigen Einzahlungs-/Guthaben-Buttons — immer sichtbar und einheitlich
BehobenSecurity: Cross-Org-Validierung in createUmlage — verhindert, dass ein Admin einer Organisation Mitglieder einer fremden Organisation belasten kann
BehobenSecurity: Server-seitige Längenprüfung für Umlage-Notizen (max. 200 Zeichen)
BehobenMobile: Navigation zu Funktionen, Preise und FAQ aus Unterseiten (z.B. Release Notes) springt jetzt korrekt zur jeweiligen Sektion

v0.8.0

Automatischer Jugendschutz über Geburtsdatum, überarbeitete Verlaufshistorie mit Pagination und Filterung.

NeuGeburtsdatum am Nutzerprofil — optional, kann jederzeit im Profil gesetzt oder gelöscht werden
NeuAutomatischer Jugendschutz: Alter wird aus dem Geburtsdatum berechnet und FSK-Produkte automatisch geblockt
NeuAdmin kann Geburtsdatum einsehen und Jugendschutz manuell überschreiben (FSK 16 / FSK 18 / Auto)
NeuGeburtsdatum-Feld bei der Registrierung (optional)
NeuVerlaufshistorie auf der Mitglieder-Seite: Bestellungen, Einzahlungen und gesponserte Runden in einer Timeline
NeuPagination im Verlauf: automatisch nachladen — skaliert auch bei mehreren hundert Einträgen
NeuFilterung im Verlauf: Freitextsuche nach Produkt und Datumsbereich
VerbessertFSK-Filterung serverseitig: gesperrte Produkte erreichen den Client gar nicht erst
VerbessertKiosk-Modus berücksichtigt jetzt automatisch das Geburtsdatum des Mitglieds
VerbessertDatenschutzerklärung um Geburtsdatum-Verarbeitung ergänzt

v0.7.0

Komplette UX-Überarbeitung des Self-Order Modals, neue Saldo-Karte und überarbeitete Admin-Mitgliederliste.

NeuSelf-Order Modal: Kategorie-Tabs mit horizontalem Scroll über der Suchleiste
NeuSelf-Order Modal: „Zuletzt bestellt"-Bereich mit Chip-Schnellauswahl (wird lokal gespeichert)
NeuSelf-Order Modal: gesamte Produktkachel ist anklickbar (+1) — Minus-Button bleibt isoliert
NeuSelf-Order Modal: grüner Rahmen und Mengen-Badge auf aktiven Kacheln
VerbessertSelf-Order Modal: Suche und Kategorie-Filter kombinierbar
VerbessertSelf-Order Modal: haptisches Feedback (50ms) bei erfolgreicher Bestellung
VerbessertSelf-Order Modal: Erfolgs-Flash dauert 800ms statt 2s — schnelleres Weitermachen
VerbessertSaldo-Karte: größere Zahl, farbige Hintergrundtönung (rot = Schulden, grün = Guthaben)
VerbessertAdmin-Mitgliederliste: Einzelkarten statt flacher Liste, Farbkodierung der Salden
VerbessertAdmin-Page: orgSettings wird jetzt parallel zur restlichen Seite geladen

v0.6.0

Sicherheits-Audit mit 6 behobenen Lücken, Performance-Verbesserungen und technische Modernisierung.

BehobenSecurity: 6 Server Actions prüften Org-Mitgliedschaft und Admin-Rolle nicht ausreichend — alle geschlossen
BehobenOOM-Crash bei großen Organisationen durch fehlende Paginierung behoben
NeuSEO: Apple Touch Icon, Open Graph Image, sitemap.xml, robots.txt und JSON-LD strukturierte Daten
NeuDashboard-Redirect: Nutzer mit nur einer Organisation landen direkt im Vereins-Dashboard
VerbessertServer-Caching mit unstable_cache — Seiten laden deutlich schneller
VerbessertSuspense-Streaming: Awards-Sektion lädt nicht-blockierend
VerbessertDatenbankabfragen parallelisiert (Promise.all) auf mehreren Seiten
VerbessertMigration von middleware.ts → proxy.ts (Next.js-Konvention)

v0.5.0

Neue Kassierer-Rolle sowie Umbenennung von Handbuch → HowTo und Changelog → Release Notes.

NeuNeue Rolle „Kassierer": Zugriff auf Mitgliederliste, Salden, Zahlungen erfassen, Mitgliederliste exportieren und Statistiken
NeuKassierer-Badge (violett) im Admin-Dashboard sichtbar
NeuKassierer sehen nur die für sie relevanten Schnellzugriffe (kein Produkt-/Inventar-/Einstellungsbereich)
VerbessertMemberManageModal: Kassierer-Rolle als wählbare Option in der Rollenzuweisung
VerbessertExport: Kassierer dürfen nur Mitgliederliste exportieren (Inventur bleibt Admin-only)
VerbessertStatistiken und Transaktionen (Ledger) jetzt auch für Kassierer zugänglich
VerbessertUmbenennung: Handbuch → HowTo, Changelog → Release Notes

v0.4.0

Export-Funktionen und Bugfixes an Runden.

NeuMitgliederliste als CSV und PDF exportieren
NeuInventurliste als CSV und PDF exportieren (Zählliste mit leeren Feldern)
NeuExport-Panel im Admin-Dashboard (klappbar)
BehobenEigene Runden zeigten immer „0 Beanspruchungen" — jetzt korrekte Gesamtzahl
VerbessertTab-Icon: weiße Balken auf dunklem Hintergrund (passend zum Anmeldescreen)

v0.3.0

Gastkonto, Invite-Links und Code-Qualität.

NeuGastkonto pro Organisation — geteilter Zugang ohne persönlichen Account
NeuInvite-Links mit optionalem Ablaufdatum und maximaler Nutzungszahl
NeuSchnellzugriff-Schaltflächen im Admin-Dashboard
VerbessertGeteilte Utility-Funktionen (member-utils, product-utils) zur Vermeidung von Doppelcode
VerbessertServer-seitige Datenbankabfragen parallelisiert — schnelleres Laden der Seiten
BehobenStale-Closure-Bug beim Kisten-Runden-Zähler im Kiosk-Modus

v0.2.0

Bestandsmanagement und Statistiken.

NeuVollständiges Bestandsmanagement mit Lagerbestand je Produkteinheit
NeuBestandsmanager-Rolle: darf nur Inventar verwalten, kein Mitglieder-Zugriff
NeuStatistikseite mit Ranglisten (Monat / Jahr / Gesamt)
NeuAutomatische Awards (Bierkönig, Stammgast, etc.)
NeuTransaktionshistorie im Admin (Ledger-Ansicht)
VerbessertKiosk-UI komplett überarbeitet — schnellere Produktauswahl
VerbessertDunkelmodus-Unterstützung in allen Bereichen der App
April 20261 Release · 0.1.00.1.0

v0.1.0

Erstes öffentliches Beta-Release.

NeuOrganisationen erstellen und verwalten
NeuMitglieder einladen mit Rollen (Admin / Mitglied)
NeuProdukte und Einheiten anlegen (inkl. Gebinde-Umrechnung)
NeuKiosk-Modus mit PIN-Authentifizierung
NeuSelbstbestellung über die Web-App
NeuRunden ausgeben (Getränke- und Kastenrunden)
NeuSaldenübersicht und manuelle Zahlungserfassung
NeuJugendschutz-Markierung für alkoholische Produkte
NeuAdmin-Dashboard mit Schnellübersicht

strichfrei ist in aktiver Entwicklung. Neue Releases erscheinen regelmäßig.

Feedback und Feature-Wünsche: hallo@strichfrei.de