← zurück zu MCC

# WHATSNEW – Änderungen je Version

## v345 (04.09.2026)

Torstens Wunsch: *"jetzt wird es Zeit auf den dafür gemieteten VPS Server
umzuziehen"* – Vorbereitung des Umzugs von Torstens bisherigem
Proxmox-Server auf einen gemieteten VPS, mit den bestehenden Daten
(Datenbank + alle hochgeladenen Dateien).

- **Komplett-Backup enthielt bisher keine Jahreskarten-Fotos:** beim
  Zusammenstellen der sichersten Methode, die bestehenden Daten auf den
  neuen Server zu übertragen, ist aufgefallen, dass der Ordner mit den
  im Eltern-Bereich hochgeladenen Fotos der Freibad-Jahreskarten
  (`eintrittsnachweis_belege`) seit Einführung des Komplett-Backups
  (v221) nicht in dessen Datei-Liste stand. Das Komplett-Backup-ZIP
  ("⚙️ Verwaltung" → "Datensicherung") ließ diese Fotos dadurch
  stillschweigend weg, obwohl sie unverändert und vollständig auf dem
  Server selbst liegen – kein Datenverlust in der laufenden
  Installation, aber jedes bisher gezogene Komplett-Backup-ZIP war
  unvollständig, falls je Jahreskarten-Fotos hochgeladen wurden. Der
  Ordner ist jetzt Teil des Komplett-Backups.
- **Neues Backup-Skript `backup_mcc.sh`:** liegt jetzt im Projektordner
  und lässt sich direkt per Cronjob einrichten (siehe README, Abschnitt
  "Deployment auf einem gemieteten VPS", Schritt 10) – sichert
  Datenbank (über dieselbe SQLite-Online-Backup-API wie das
  Komplett-Backup) und alle Upload-Ordner täglich in ein Archiv, mit
  automatischem Aufräumen nach 30 Tagen.
- **README grundlegend um einen VPS-Umzugsleitfaden erweitert:**
  neuer Hauptabschnitt "Deployment auf einem gemieteten VPS" mit allen
  Schritten von der Server-Vorbereitung über die Datenübernahme bis zur
  DNS-Umschaltung; das bisherige Proxmox-Setup bleibt als "Alternative"
  vollständig erhalten. `docker-compose.yml` bindet den App-Port jetzt
  auf `127.0.0.1` (statt auf allen Interfaces) und verbindet sich mit
  Nginx Proxy Manager über ein gemeinsames Docker-Netzwerk
  (`proxy-net`) statt über eine LXC-Container-IP – Details siehe README.
  Der eigentliche Server-Umzug selbst (VPS einrichten, Daten
  übertragen, DNS umstellen) ist eine reine Server-Aktion, die nur
  Torsten bzw. der VPS-Zugang selbst ausführen kann; dieses Release
  liefert dafür nur die vorbereiteten Werkzeuge und die Anleitung.

## v344 (04.09.2026)

Torsten: *"können wir es einrichten das ich die Reihenfolge in der Eltern
Ansicht selber ändern kann"* und *"und in der Eltern Ansicht darf ein
Klick auf unser Logo nicht auf die mcc Startseite führen"*.

- **Reihenfolge der Bereiche in der Eltern-Ansicht jetzt selbst
  einstellbar:** neuer Tab "📱 Eltern-Ansicht" unter "⚙️ Verwaltung" –
  dort lässt sich die Reihenfolge der acht großen Karten (Erklärung,
  Eintrittsgeld, Umfragen, Mitgliedschaft, Guthaben, Nachrichten,
  Nächstes Kurs-Event, Offene Events) per ▲/▼ frei festlegen. Die
  Eltern-Seite übernimmt diese Reihenfolge automatisch. Die bisherigen
  "dringend nach vorne holen"-Automatismen für eine noch fehlende
  Erklärung bzw. einen noch fehlenden Eintrittsnachweis bleiben
  unverändert bestehen und haben weiterhin Vorrang vor der eingestellten
  Reihenfolge.
- **Logo in der Eltern-Ansicht ist kein Link mehr:** ein Klick auf das
  Vereinslogo oben in der Eltern-Ansicht führt nicht mehr zur
  MCC-Startseite – es ist jetzt nur noch ein Bild.

## v343 (04.09.2026)

Torstens Wunsch: *"bei den Umfragen benötigen wir noch einen Absenden
Button mit dem Hinweis das durch das absenden die Daten an uns übermittelt
werden, auch wenn der technisch nicht notwendig ist. Im Anschluss eine
kurze Erfolgsmeldung. Die eingegeben Daten sollen sowohl an uns als auch
den Teilnehmer per Mail gesendet werden."*

- **Expliziter "Absenden"-Klick für jede Umfrage-Antwort:** bisher wurde
  eine Umfrage, die mit einem reinen Hinweistext endete ("endtext"),
  automatisch gespeichert, sobald Eltern diesen letzten Punkt erreicht
  hatten – ganz ohne eigenen Klick. Jetzt erscheint dort, genau wie beim
  bereits vorhandenen Eingabefeld-Ende, zuerst ein Hinweistext ("Mit
  „Absenden" werden deine Angaben an uns übermittelt. Du bekommst danach
  zusätzlich eine Bestätigung per E-Mail.") und direkt darunter ein
  größerer "Absenden"-Button. Erst dieser Klick löst das Speichern aus.
- **Kurze Erfolgsmeldung:** direkt nach dem Absenden zeigt die
  Zusammenfassung kurz "✅ Danke, deine Antwort wurde gespeichert und dir
  per E-Mail bestätigt!" zusätzlich zum gewohnten "Antwort gespeichert
  am …"-Text. Bei einem späteren erneuten Ansehen derselben Umfrage
  (z.B. nach einem Seiten-Reload) erscheint nur noch der normale Text ohne
  die Erfolgsmeldung.
- **Bestätigungsmail an Eltern/Teilnehmer:** die abgegebenen bzw.
  geänderten Umfrage-Antworten werden ab sofort nicht mehr nur (wie schon
  seit v331) an den Verein gemailt, sondern zusätzlich – best-effort, wie
  jede andere Mail im System – an die hinterlegte Eltern-/Teilnehmer-Adresse
  (dieselbe Adress-Ermittlung wie bei der Vereins-Benachrichtigung: zuerst
  Erziehungsberechtigte, sonst die eigene Mailadresse des Teilnehmers). Ist
  keine Adresse hinterlegt oder kein Mailversand eingerichtet, bleibt die
  Antwortabgabe selbst davon unberührt – es fehlt dann nur die Mail.
- **Nachbesserung noch am selben Tag** (Torstens Rückmeldung: *"die Mail
  sieht etwas merkwürdig aus und der Hinweis dass das absenden technisch
  nicht nötig wäre interessiert die Teilnehmer denke ich nicht und den
  absenden Button bitte unter dem Satz und etwas größer"*): der
  Hinweistext-Nebensatz zum technisch nicht nötigen Klick wurde wieder
  entfernt; der Absenden-Button steht jetzt unter statt über dem
  Hinweistext und ist deutlich größer; und die Bestätigungsmail (an
  Verein wie Teilnehmer) zeigt die von der Umfrage-Verwaltung eingegebene
  Formatierungs-Mini-Syntax (`[gross]…[/gross]`, `**fett**`) nicht mehr
  wörtlich, sondern nur noch den reinen, ohne die Markierungen
  zusammengesetzten Text.
- **Zweite Nachbesserung, mit konkretem Wunsch-Beispiel:** die
  Teilnehmer-Bestätigungsmail listet die angeklickten Antworten jetzt als
  eigene Aufzählung unter "Deine Antworten:" auf, statt sie in einer
  Zeile mit "→" aneinanderzureihen – der abschließende Hinweistext der
  Umfrage (z.B. "Bitte in folgendem Kurs anmelden: <Link>") folgt darunter
  durch eine Leerzeile getrennt, genau wie in Torstens Beispiel.

## v342 (04.09.2026)

Torstens Wunsch: *"eine Ansicht in der ich sehen kann wie viele Teilnehmer
und Benutzer das System nutzen und wie viele sich bereits aktiv angemeldet
haben und wann, also ein last login dazu"* – neuer Tab "📶
Nutzungsübersicht" im Bereich "⚙️ Verwaltung" (standardmäßig für alle
Admins sichtbar, wie die meisten Verwaltungs-Karten).

Der Tab zeigt zwei getrennte Blöcke, weil Benutzer-Konten (Trainer/Admins,
Login mit Benutzername/Passwort) und Teilnehmer (Eltern-Zugang über Code +
Passwort) zwei technisch unabhängige Zugänge sind:

- **Benutzer-Konten:** Gesamtzahl, wie viele sich schon mindestens einmal
  angemeldet haben, und eine Tabelle mit Benutzername/Rolle/letztem Login.
- **Teilnehmer (Eltern-Zugang):** Gesamtzahl (aktuelle, nicht archivierte
  Teilnehmer, jede Person nur einmal gezählt), wie viele bereits ein
  Eltern-Passwort eingerichtet haben, und eine Tabelle mit Name/letztem
  Eltern-Login.

Testkurse und Testkonten (🧪, seit v341) zählen hier nie mit – genau wie in
Statistik/Pünktlichkeit/Export.

**Wichtiger Hinweis zum Start:** Der "letzte Login"-Zeitpunkt wird erst ab
jetzt mitgeschrieben – frühere Logins wurden nirgends mit Zeitstempel
protokolliert. Direkt nach dem Update zeigen deshalb auch längst aktive
Konten/Teilnehmer zunächst "noch nie angemeldet", bis sie sich das nächste
Mal anmelden. Bei Teilnehmern zählt "schon angemeldet" trotzdem korrekt
rückwirkend mit (darüber wird geprüft, ob überhaupt schon ein
Eltern-Passwort eingerichtet wurde) – nur der genaue Zeitpunkt fehlt für
länger zurückliegende Logins.

## v341 (04.09.2026)

Torstens Wunsch: *"wie kann ich am besten Test Kurse und Testbenutzer
anlegen ohne das die in die Statistik und Auswertung fallen und ohne das
die für jeden sichtbar sind?"* – neue, eigene Möglichkeit, Testkurse und
Testkonten anzulegen, die sich von echten Daten klar unterscheiden lassen.

**Testkurse** lassen sich jetzt gezielt anlegen: im Tab "Kurse" gibt es für
Super-Admins den neuen Button "🧪 Testkurs anlegen" (Name eingeben, fertig
– keine Excel-Datei nötig). Ein bestehender Kurs lässt sich über eine neue
Checkbox in derselben Ansicht ebenfalls nachträglich als Testkurs markieren
oder wieder zurückstufen.

**Testkonten** lassen sich beim Anlegen eines neuen Logins (Personenstamm →
Profil einer Person → "Login anlegen") über eine neue Checkbox "🧪
Testkonto" markieren – ebenfalls nur für Super-Admins sichtbar.

Beide Markierungen wirken zusammen in zwei Richtungen:

- **Unsichtbar für alle außer Super-Admins.** Ein Testkurs taucht in
  keinem Dropdown, keiner Kursliste und keiner Teilnehmerübersicht auf,
  solange man nicht als Super-Admin angemeldet ist. Ein Testkonto
  verschwindet ebenso aus der Liste "Logins ohne Person-Zuordnung" und aus
  dem Login-Bereich der verknüpften Person – für alle anderen sieht es so
  aus, als gäbe es diesen Kurs/dieses Konto gar nicht. Nur alle
  Super-Admin-Accounts sehen Testkurse/-konten weiterhin ganz normal (mit
  🧪-Kennzeichnung) und können mit ihnen wie gewohnt arbeiten (Check-in,
  Teilnehmer anlegen usw.).
- **Nie Teil einer echten Auswertung.** Anders als bei einem archivierten
  Kurs (der auf Wunsch bewusst in die Statistik einbezogen werden kann) ist
  dieser Ausschluss unbedingt und gilt für JEDEN, auch für Super-Admins:
  Testkurse fließen nie in "Statistik", "Statistik: Pünktlichkeit" oder
  einen der Exporte (Anwesenheit, Eintrittsgelder, Gemeinde-Export) ein –
  auch nicht, wenn man versucht, sie händisch mit auszuwählen.

So lässt sich beliebig mit Testdaten ausprobieren, ohne echte Statistiken
zu verfälschen oder Testkurse versehentlich für Teilnehmer/Trainer
sichtbar zu machen.

## v340 (04.09.2026)

Torstens Wunsch: *"für die Umfragen brauche ich eine möglichkeit
einzubinden ob ein Kind ein Seepferdchen hat oder nicht und die Fragen
sollen weiterhin zuklappbar sein das ist verschwunden bei der
modernisierung"* – zwei unabhängige Änderungen an den "Wie geht es
weiter?"-Umfragen.

**1) Automatische Verzweigung anhand einer Qualifikation (z.B.
Seepferdchen)**

Eine Antwort-Option in der Umfrage-Verwaltung kann jetzt statt eines von
Eltern anzuklickenden Buttons als **automatisch** markiert werden: "wähle
diese Antwort automatisch, wenn das Kind eine bestimmte Qualifikationsstufe
bereits erreicht hat (oder eben NICHT erreicht hat)". Trifft das zu, wird
die zugehörige Frage für die Eltern komplett übersprungen – sie sehen sie
im Eltern-Bereich gar nicht erst, die Umfrage läuft im Hintergrund sofort
zum passenden nächsten Schritt weiter. Üblich ist, an einer Frage zwei
automatische Antworten anzulegen ("mit Seepferdchen" / "ohne Seepferdchen"
derselben Stufe), sodass die Frage für jedes Kind automatisch aufgelöst
wird, ohne dass die Eltern je einen Klick machen müssen.

Technisch nach demselben, bereits bestehenden Muster gebaut wie der
Qualifikations-Filter bei Event-Stufen ("Anfänger mit/ohne Seepferdchen"):
generisch für jede in der Verwaltung angelegte Qualifikationsstufe nutzbar,
nicht hart auf "Seepferdchen" verdrahtet. Der automatisch durchlaufene
Schritt wird trotzdem, als solcher gekennzeichnet, mit in der gespeicherten
Antwort abgelegt (🤖-Kennzeichen im Tab "Teilnehmer"), damit der Verlauf
für Admins nachvollziehbar bleibt.

Einrichtung: an einer Frage über "🤖 Automatik" bei der jeweiligen Antwort
die gewünschte Qualifikationsstufe und "mit"/"ohne" auswählen, statt (oder
zusätzlich zu) dem normalen Antwort-Text.

**2) Fragen sind wieder zuklappbar**

Mit der "Fluss-Baum"-Modernisierung der Umfrage-Verwaltung (v335) war das
Zuklappen einer Frage nur noch für ihre Bearbeiten-Felder wirksam – die
Antworten und der komplette daran hängende Folge-Ast blieben immer
vollständig sichtbar, egal ob die Karte auf- oder zugeklappt war. Das
Zuklappen wirkt jetzt wieder auf die GESAMTE Karte inklusive ihrer
Antworten und des kompletten daran hängenden Astes (wie vor v335), sodass
sich eine lange, verschachtelte Umfrage in der Verwaltung wieder
übersichtlich auf die interessierenden Fragen reduzieren lässt. Im
zugeklappten Zustand zeigt die Karte weiterhin den Frageanfang sowie die
Anzahl der Antworten als Orientierung.

## v339 (04.09.2026)

Zweite Version aus dem Nacht-Audit vom 03.09.2026 ("ja mache das" →
"Beides zusammen" auf Nachfrage) – kombiniert die beiden noch offenen
Empfehlungen 3 und 4 aus dem Audit-Bericht in einer Version. Wieder keine
Änderung an Optik oder Bedienung, ausschließlich Korrekturen unter der
Haube.

**Teil 1: "Neustart respektiert Verschieben" (Audit-Abschnitt B)**

Sechs strukturelle Migrationen prüften bisher bei JEDEM Serverstart
erneut, ob ein bestimmter Navigationsknoten an seiner "Standard"-Stelle im
Baum hängt, und verschoben ihn notfalls dorthin zurück – das machte einen
über die Struktur-Seite bewusst vorgenommenen manuellen Verschieben-Vorgang
beim nächsten Neustart (z.B. jedem Deployment) kommentarlos wieder
rückgängig. Betroffen waren die Knoten "Passwort-Safe", "Orga-Team",
"Zugriffsrechte", "Export", "Mitteilungen/Nachrichten" und "Einsatz-ToDo".
Jede dieser sechs Migrationen bekommt jetzt ein Setting-Flag nach dem
bereits bestehenden Muster von `_migrate_master_id_zu_person()`: die
Positions-Korrektur läuft noch genau einmal (beim Umstieg auf v339 selbst),
danach nie wieder automatisch – eine spätere manuelle Verschiebung bleibt
dauerhaft bestehen. (Bewusst NICHT mit behoben: die "Einsatz"/"PSA"-Ordner
werden weiterhin über ihren Anzeigenamen statt eine feste Kennung gesucht –
ein separates, tiefer liegendes Problem, siehe Kommentar in
`_migrate_zu_einsatz_todo_knoten()`.)

Zwei verwandte "setzt bei jedem Start etwas zurück"-Fehler aus demselben
Abschnitt wurden nach demselben Muster entschärft:

- **Allergien-Feld wurde bei jedem Neustart wiederhergestellt**: ein
  bewusst im Tab "Teilnehmer" gelöschter Allergie-Eintrag kam nach dem
  nächsten Neustart automatisch aus der alten Elternerklärung zurück.
  Der einmalige Rücksicherungs-Abgleich läuft jetzt nur noch beim
  allerersten Durchlauf, danach nie wieder.
- **Startseiten-Kacheln + Hundeschwimmen-Titel wurden bei jedem Neustart
  neu gesetzt, sobald die Kachel-Tabelle leer war**: löschte Torsten
  irgendwann bewusst alle sechs Kacheln, füllte der nächste Neustart sie
  wieder auf UND setzte dabei den Titel des Hundeschwimmen-Events zwangs-
  weise auf "Hundeschwimmen 2026" zurück, selbst wenn er inzwischen anders
  hieß. Die Erstbefüllung läuft jetzt ebenfalls nur noch einmal.

**Teil 2: Fremdschlüssel-Aufräum-Lücken (Audit-Abschnitt D)**

Fortsetzung der v220-Aufräumarbeiten für alle seither neu dazugekommenen
Tabellen – fast überall reiner, unsichtbarer Datenmüll, eine Ausnahme mit
echter Design-Entscheidung:

- **`personen_zusammenfuehren` hängt jetzt um statt zu löschen** (die
  gewichtigste Lücke): beim Zusammenführen zweier Personen-Datensätze
  wurden bisher nur die Kurs-Teilnahmen umgehängt, alles andere an der
  Quell-Person (Kontaktdaten, Gruppen-Mitgliedschaften,
  Pflichtübungen-Nachweise, Führerschein-Dateien, ein verknüpfter
  Login-Account, Push-Abo, Eltern-Chat-Zuordnung, Nachrichten/Reaktionen)
  ging beim anschließenden Löschen der Quell-Person unwiederbringlich
  verloren – sichtbare Folgen waren möglich (Eltern-Chat zeigte
  "Unbekannt", ein Login verlor seine Person, keine Push-Nachrichten
  mehr). Jetzt wird alles auf die Ziel-Person umgehängt, Dubletten
  (z.B. wenn beide unabhängig schon Mitglied derselben Gruppe waren)
  werden dabei sauber zusammengeführt statt verdoppelt.
- **Benutzer-Löschen** (`delete_user`) räumt jetzt zusätzlich
  ToDo-Zuweisungen/-Berechtigungsausnahmen auf, nullt die "wer hat's
  angelegt/erledigt/geändert"-Verweise bei ToDo-Einträgen,
  ToDo-Hauptkategorien, Passwort-Safe-Einträgen und abgehakten
  Prüfungskarte-Punkten, und löscht den automatisch angelegten
  System-Benachrichtigungs-Chat des Accounts komplett (statt ihn verwaist
  stehen zu lassen).
- **Teilnehmer-/Kurs-Löschen** (`delete_participant`/`delete_course`)
  räumt jetzt zusätzlich Umfrage-Antworten, abgehakte
  Prüfungskarte-Punkte und die Guthaben-Buchungshistorie auf;
  `delete_course` zusätzlich verwaiste Orga-Team-Einsätze der gelöschten
  Kurstage.
- **Kurstag-Löschen** (`delete_kurstag`) räumt jetzt zusätzlich
  Orga-Team-Einsätze auf (exakt dieselbe Lücke, die v220 bei
  Trainer-Einsätzen schon geschlossen hatte – Orga-Team gab es damals
  noch nicht).
- **Gruppen-Löschen** (`delete_gruppe`) nullt jetzt zusätzlich
  `ToDoHauptkategorie.standard_gruppe_id`.
- Kleinigkeiten: ein per 404/410 automatisch entferntes Push-Abonnement
  räumt jetzt auch seine Personen-/Benutzer-Verknüpfungszeilen mit auf;
  das Löschen einer einzelnen Nachricht nullt jetzt eine eventuell auf
  sie zeigende Lesemarkierung.
- Eine neue, einmalige Aufräum-Migration entfernt die 5 konkreten
  verwaisten Zeilen, die `diagnose_mcc_v2.py` bereits in den echten
  Produktivdaten gefunden hatte (2× Trainer-Einsatz, 3× Push-Abo-
  Verknüpfung) – die geschlossenen Lücken oben verhindern nur neue
  Fälle, diese Migration räumt den bereits bestehenden Datenmüll einmalig
  weg.

## v338 (04.09.2026)

Sicherheits-Paket aus dem Nacht-Audit vom 03.09. ("du kannst gerne über
Nacht noch mal nach Datenbankfehlern suchen oder wenn anderswo Probleme
bestehen" → "dann baue das bitte"). Drei kleine, gezielte Korrekturen –
keine Änderung an Optik oder Bedienung:

- **Benutzerverwaltung respektiert jetzt den Lesend-Modus** (Audit-Befund
  A1): Benutzer anlegen, ändern (inkl. Passwort setzen) und löschen
  verlangt jetzt Schreibzugriff auf die Personenverwaltung
  (`require_view_write` statt `require_view` an POST/PUT/DELETE
  /api/users). Vorher konnte ein Account, dem jemand die Stufe „lesend"
  auf die Personenverwaltung gegeben hatte, trotzdem Benutzer anlegen,
  fremde Passwörter überschreiben und Benutzer löschen. Accounts ohne
  jede Personenverwaltungs-Berechtigung waren nie betroffen (weiterhin
  403 wie bisher).
- **Inhalts-Bilder nicht mehr ohne Login abrufbar** (Befund A2):
  `GET /api/navigation/{id}/inhalt/bild` prüft jetzt – wie im eigenen
  Docstring immer schon behauptet – tatsächlich `ist_oeffentlich` bzw.
  Login und Stufe, identisch zum Inhalts-Text. Die MCC-Oberfläche lädt
  die Bilder deshalb jetzt per fetch mit Anmelde-Headern (gleiches
  Muster wie die Profilbild-Avatare); für Eltern sichtbare öffentliche
  Inhalte und „Aktuelles" bleiben wie gehabt ohne Login erreichbar.
- **Erklärungs-Archiv wird beim Teilnehmer-Löschen mitgeräumt** (Befund
  A3, DSGVO): beim Löschen eines Teilnehmers (einzeln oder über die
  Kurs-Löschung) werden jetzt auch die seit v224 archivierten
  PDF-Versionen seiner Elternerklärung gelöscht – Datenbank-Zeilen UND
  Dateien auf der Platte. Vorher blieben diese PDFs mit
  Gesundheitsdaten dauerhaft zurück, obwohl die Erklärung selbst (seit
  v220) korrekt mitgelöscht wurde. Ob aus der Zeit davor Altlasten in
  den echten Daten liegen, zeigt das beiliegende `diagnose_mcc_v2.py`
  (Abschnitt 5 des Skript-Ergebnisses).

Neu im Paket außerdem: `diagnose_mcc_v2.py` (rein lesendes
Diagnose-Skript für die Produktivdaten, prüft automatisch alle
Fremdschlüssel-Beziehungen aus dem Schema plus verwaiste
Erklärungs-Archiv-Ordner – Nachfolger des Skripts vom 31.08.).

## v337 (03.09.2026)

- Personenverwaltung im modernen Stil ("kannst du die Mitglieder
  Verwaltung ähnlich schön gestalten wie die Nachrichten Sektion?"): alle
  Personen-Listen (Suche und Gruppen-Mitglieder) zeigen jetzt wie die
  Chat-Liste runde Avatare (Profilbild, sonst farbige Initialen), den
  Namen als Link zum Profil und darunter eine Info-Zeile mit Gruppen und
  Login – rechts aufgeräumte Aktions-Knöpfe.
- Berechtigungen mit einem Tipp statt Dropdown ("das Handling der
  Berechtigungsverwaltung ist immer noch etwas altbacken"): überall, wo
  bisher ein vierstufiges Auswahlmenü pro Zeile saß, steht jetzt ein
  Stufen-Schalter [Standard | ✅ | 👁️ | 🚫] – die gewünschte Stufe einfach
  antippen, die aktive ist farbig markiert (grau/grün/blau/rot), und bei
  "Standard" steht die aufgelöste Vorgabe direkt daneben. Gilt einheitlich
  in der 👥 Rechte-Übersicht, bei "🔐 Wer ist berechtigt?" in der
  Struktur-Verwaltung (dort jetzt zusätzlich mit Initialen-Avatar je
  Account), im 🔐-Berechtigungen-Panel der Login-Liste und auf der
  Personen-Profilseite.
- Die Rollen-Sicht der Rechte-Übersicht nutzt statt Häkchen-Kästchen
  moderne Ein/Aus-Schieberegler (grün = sichtbar).
- Alles rein Optik und Bedienung – Rechte-Logik, Endpunkte und
  gespeicherte Berechtigungen sind unverändert.

## v336 (03.09.2026)

- Der Nachrichten-Bereich sieht jetzt aus und bedient sich wie ein
  moderner Messenger ("der Nachrichten Block soll deutlich schöner
  werden, angelehnt an das Design und Handling vom WhatsApp ... sehr
  modern und sehr intuitiv") – im Tab "💬 Nachrichten" UND im
  Eltern-Bereich, mit identischem Design:
- Sprechblasen neu: eigene Nachrichten rechts in zartem Grün, fremde
  links in Weiß, mit Schwänzchen, ohne Rahmen, Uhrzeit klein unten rechts
  in der Blase. Aufeinanderfolgende Nachrichten derselben Person rücken
  als Gruppe zusammen; zwischen den Tagen stehen "Heute"/"Gestern"/
  Datums-Chips. In Gruppen-/Eltern-Chats bekommt jeder Absender seine
  feste Namensfarbe. Der Verlauf hat einen eigenen, dezenten Hintergrund
  und scrollt intern wie in einem Messenger.
- Chat-Liste neu: große runde Avatare (Profilbild, sonst farbige
  Initialen), Name + Zeit ("heute nur Uhrzeit, sonst Gestern/Datum") in
  der ersten Zeile, Nachrichten-Vorschau + grüner Ungelesen-Zähler in der
  zweiten. Der geöffnete Chat zeigt oben Avatar + Namen in einer eigenen
  Kopfzeile.
- Schreiben neu: rundes Pill-Eingabefeld, das beim Tippen mitwächst,
  daneben 📎/📷 als schlichte Icons und ein runder grüner Senden-Knopf.
  Am Desktop sendet Enter (Shift+Enter = neue Zeile); am Handy bleibt
  Enter eine neue Zeile.
- Aufgeräumte Blasen: der 🗑️-Löschen-Knopf und der 🙂-Reaktions-Picker
  erscheinen erst beim Darüberfahren (Desktop) bzw. Antippen der
  Nachricht (Handy) – bereits vergebene Reaktionen bleiben als kleine
  Chips immer sichtbar. Alle Funktionen (Anhänge, Reaktionen, Löschen,
  Chats löschen, Push) unverändert – nur Optik und Bedienung sind neu.

## v335 (03.09.2026)

- Umfrage-Einrichtung deutlich visueller ("überdenke die Einrichtung
  unserer verschachtelten 'Wie geht es weiter' Umfragen, das ist für
  unsere 'Hilfs Admins' deutlich zu kompliziert eventuell muss das etwas
  visueller zu konfigurieren sein"): die Karte "Umfrage: Fragen &
  Antworten" zeigt den Ablauf jetzt als verschachtelten Fluss-Baum, genau
  wie ihn die Eltern durchlaufen – unter jeder Frage ihre Antworten
  (🔘), unter jeder Antwort eingerückt die jeweilige Folgefrage, farbig
  nach Typ (❓ Frage / 💬 Hinweistext / ✏️ Eingabefeld), Einstiegs-Fragen
  mit 🚩-Markierung ihrer Kursstufen-Zeile.
- Anlegen und Verknüpfen in EINEM Schritt: an jeder Antwort ohne Ziel
  stehen direkt die Knöpfe "+ Folgefrage / + Hinweistext / + Eingabefeld"
  – der neue Punkt wird sofort an genau dieser Antwort eingehängt und zum
  Ausfüllen geöffnet. Die bisherigen drei getrennten Schritte (Knoten
  anlegen, Antwort wiederfinden, Ziel-Dropdown setzen) entfallen.
- Zeigen mehrere Antworten auf dasselbe Ziel, steht dort "↪ springt
  zu…" – ein Klick springt zur voll angezeigten Stelle und hebt sie kurz
  hervor. Die technischen Ziel-Dropdowns erscheinen nur noch im
  ✏️-Bearbeiten-Modus einer Frage (zum Umhängen auf ein bestehendes
  Ziel).
- Neue 👁️-Vorschau: die Umfrage direkt in der Verwaltung so durchklicken,
  wie sie die Eltern sehen (inkl. Titel, Beschreibung, Formatierung,
  Antwort-Buttons, Eingabefeld) – mit Einstiegs-Auswahl, "Schritt
  zurück", "Neu starten" und der Anzeige, was am Ende als Antwort
  gespeichert würde. Es wird dabei nichts gespeichert.
- Alles rein eine neue Oberfläche: Datenmodell, Endpunkte, bestehende
  Umfragen und bereits abgegebene Antworten sind unverändert.

## v334 (03.09.2026)

- Neue zentrale "👥 Rechte-Übersicht" im Bereich "🔐 Zugriffsrechte"
  ("wir brauchen eine User und Gruppenverwaltung, für unerfahrene Admins
  ist das sonst am Ende zu kompliziert"): statt pro Punkt im Struktur-Baum
  auf "🔐 Wer ist berechtigt?" zu klicken, wählst du hier EINEN Benutzer
  und siehst ALLE seine Rechte als aufklappbaren Baum auf einen Blick –
  jede Zeile mit dem bekannten vierstufigen Schalter (Standard / immer
  voll / immer nur lesen / immer gesperrt), Änderungen wirken sofort.
  Zugeklappte Bereiche zeigen an, wie viele Ausnahmen darin stecken.
- Oder du wählst eine ROLLE (z.B. nutzer, admin oder eine eigene wie
  Kassenwart) und hakst einfach an, welche Bereiche diese Rolle
  standardmäßig sehen darf – dieselbe Einstellung wie die
  Rollen-Häkchen in der Struktur-Verwaltung, nur von der Rollen-Seite aus
  und für alle Bereiche auf einer Seite. An eine Gruppe gebundene
  Bereiche werden angezeigt, aber bewusst nicht hier umgeschaltet
  (Hinweis auf die Struktur-Verwaltung). Zugeklappte Bereiche zeigen
  "x von y sichtbar".
- Anders als das bisherige Berechtigungs-Panel hat hier JEDE Ebene ihre
  eigene Schalt-Zeile – auch Ordner und Tabs mit Unterpunkten (z.B.
  "Admin-Einstellungen" selbst), passend zur v333-Aufsplittung.
- Standardmäßig sehen nur Super-Admins den neuen Tab (wie bisher schon
  die Benutzer-Rechte-Endpunkte); über die Struktur-Verwaltung frei
  änderbar – die Rollen-Sicht funktioniert dann auch für freigeschaltete
  Nicht-Super-Admins, die Benutzer-Sicht bleibt Super-Admins vorbehalten.

## v333 (03.09.2026)

- Berechtigungen jetzt bis auf jede Unterseite ("lass uns weiter an dem
  Berechtigungssystem arbeiten, ich würde gerne bis auf jeder unterseite
  die Berechtigungen verwalten können"): die bisherigen Sammel-Seiten sind
  in einzeln berechtigbare Unterseiten aufgeteilt. Aus dem einen Tab
  "Verwaltung" wurde "🔧 Admin-Einstellungen" mit vier eigenen Unter-Tabs
  (📧 SMTP, 🔔 Benachrichtigungen, 📋 Pflichtnachweise, 💾 Datensicherung);
  Eltern-Chat und Startseite sind eigene Bereiche daneben, jeweils mit zwei
  Unter-Tabs (Gruppen-Auswahl/Chat-Aufbewahrung bzw. Begrüßung/Kacheln);
  aus "Struktur & Rollen" wurden drei eigene Tabs (🌳 Struktur-Verwaltung,
  🧱 Basisstufen-Verwaltung, 🔑 Rollen-Verwaltung) im Bereich
  "🔐 Zugriffsrechte". Jeder dieser Punkte lässt sich jetzt über
  "🔐 Wer ist berechtigt?" einzeln pro Rolle/Account freigeben oder
  sperren. Direkt nach dem Update ändert sich für niemanden etwas – alle
  neuen Unterseiten haben dieselben Standard-Rechte wie ihre bisherige
  Sammel-Seite, bestehende Konto-Ausnahmen bleiben erhalten.
- Eltern-Chat- und Startseiten-Einstellungen können dabei erstmals auch
  mit Konto-Ausnahmen und "Nur Lesen" vergeben werden (die hingen bisher
  starr an der Admin-Basisstufe).
- Struktur-Seite: jeder Punkt ist jetzt auf allen Ebenen verschiebbar
  ("zusätzlich würde ich gerne jeden Punkt auf der Strukturseite, egal ob
  Tab oder was auch immer in allen Ebenen verschieben können"). Auch Tabs/
  Funktionsseiten können jetzt Unterpunkte bekommen – ein Knoten mit
  Kindern zeigt dann seinen eigenen Inhalt UND eine zusätzliche Tab-Leiste
  für die Kinder (auch am Handy). Der "➕"-Knopf erscheint dafür an jedem
  Knoten, und das Verschieben-Dropdown im Bearbeiten-Formular bietet jetzt
  jeden Knoten als Ziel an, nicht mehr nur Ordner.
- Schnelles Verschieben über Ebenen hinweg direkt im Struktur-Baum ("was
  noch fehlt bislang ist das verschieben nur auf einer Ebene möglich, das
  soll auch über Ebenen hinweg möglich sein"): zwei neue Knöpfe neben
  ⬆️/⬇️ – "⬅️" schiebt einen Punkt eine Ebene raus (er wird Nachbar seines
  bisherigen Elternbereichs), "➡️" schiebt ihn unter den vorherigen
  Nachbarn (als dessen letzter Unterpunkt), ohne dafür das
  Bearbeiten-Formular öffnen zu müssen.
- Sicherheits-Härtung dabei: geschützte Knoten (🔒, z.B.
  Admin-Einstellungen und Struktur-Verwaltung) sind jetzt auch gegen
  Verschieben gesperrt, nicht mehr nur gegen Löschen – vorher hätte man
  sie theoretisch per API verschieben können.

## v332 (03.09.2026)

- Das ganze Umfrage-Thema hat jetzt einen eigenen Tab: "📋 Umfragen" auf
  der Startseite, mit zwei Unter-Tabs. "Verwaltung" enthält die bisherigen
  drei Karten (Umfragen, Fragen & Antworten, Kursstufen-Zuordnung) – 1:1
  umgezogen aus "🏊 Schwimmkurse" → "Verwaltung", keine inhaltliche
  Änderung. NEU ist "Antworten": eine Tabelle mit ALLEN bisher von Eltern
  abgegebenen Umfrage-Antworten auf einen Blick (Teilnehmer, Kurs, Umfrage,
  Antwort, Datum) – Spaltenköpfe anklicken zum Sortieren (Standard: neuste
  zuerst), Dropdown zum Einschränken auf eine einzelne Umfrage. Bisher
  waren Antworten nur einzeln als Chip im Tab "Teilnehmer" sichtbar.

## v331 (03.09.2026)

- Neue interne Benachrichtigungs-Mail (Verwaltung → "🔔 Benachrichtigungen"):
  beim Absenden oder Ändern einer Umfrage-Antwort im Eltern-Bereich kann ab
  jetzt (wie schon bei An-/Abmeldung, Event-Anmeldung, Erklärung und
  Eintrittsnachweis) eine interne Info-Mail an eine eigene oder die
  allgemeine Ziel-Adresse geschickt werden, wahlweise mit "Antworten geht
  direkt an die Eltern" (Reply-To). Ein Schalter für beides (Absenden UND
  Ändern) – die Mail nennt Teilnehmer, Kurs, Umfrage-Titel und die
  abgegebene Antwort.

## v330 (03.09.2026)

- Kleine optische Korrektur zur "Eure Antwort"-Zusammenfassung im
  Eltern-Bereich (siehe v329): der bisherige Antwortpfad (z.B. "mein Kind
  hat kein Interesse mehr") und der abschließende, teils mehrsätzige
  Hinweistext ("Bitte Mail an ...") verschmolzen bisher direkt hinter dem
  letzten Pfeil "→" zu einem Textblock. Der Hinweistext beginnt jetzt auf
  einer eigenen Zeile.

## v329 (03.09.2026)

- Korrektur zu v328: "Links anklickbar machen" und "Fett/Schriftgröße"
  waren als Wunsch eigentlich auf die Umfrage-Hinweistexte gemünzt (die
  Fragen-/Hinweistexte und den Beschreibungstext, die Eltern beim
  Beantworten der "Wie geht es weiter?"-Umfragen sehen), waren in v328
  aber nur bei den allgemeinen, admin-internen "✏️ Stift"-Hinweistexten
  gelandet. Jetzt korrekt an der richtigen Stelle: beim Bearbeiten einer
  Umfrage-Frage bzw. des Beschreibungstexts einer Umfrage gibt es die
  Werkzeugleiste für **Fett**/Schriftgröße, und die Anzeige für Eltern
  erkennt automatisch Links UND E-Mail-Adressen (z.B. "Bitte Mail an
  ausbildung@moensheim.dlrg.de" wird jetzt zu einem klickbaren
  Mail-Link).
- Die Karte "„Wie geht es weiter?"-Umfragen" in der Verwaltung heißt jetzt
  schlicht "Umfragen" (der alte Name war ein Überbleibsel aus der Zeit vor
  v325, als es nur genau eine feste Umfrage gab).
- Beim Beantworten der Umfrage-Fragen im Eltern-Bereich sind der bisherige
  Antwortpfad, die aktuelle Frage bzw. der Hinweistext und die
  Antwort-Buttons jetzt klarer optisch voneinander abgesetzt (vorher
  konnten diese direkt ineinander übergehen).

## v328 (03.09.2026)

- Das in v327 für die Umfrage-Verwaltung eingeführte "sofort speichern bei
  Enter/Tab" gilt jetzt in praktisch der gesamten Verwaltung: Personen
  (Kontaktdaten, Alter, TeilnehmerID, Qualifikationen, Master-ID,
  Eintrittsnachweis), Kurse (Umbenennen, Eintritts-Betrag,
  Guthaben-Toleranzgrenze, Kurstage), Struktur-Verwaltung, Gruppen-/
  Basisstufen-/Rollen-Verwaltung, Prüfungskarte-Inhalte,
  Erklärung-Formular-Zusatzfelder, Qualifikationsstufen, Schwimmcamp/
  Events (Leistungsstufen, Event-Einstellungen), Medizinprodukteverzeichnis,
  Anleitungssammlung, Startseite-Kacheln, "Aktuelles"-Hinweis sowie die
  eigenen Profilseiten (Personenprofil, Mein Profil) und den
  Eltern-Bereich (Kontaktdaten, Umfrage-Antworten). Ein Klick auf einen
  separaten Speichern-Knopf ist an diesen Stellen nicht mehr nötig – Tab
  ins nächste Feld oder Enter reicht. Bewusst NICHT angefasst: reine
  Review-und-Absenden-Formulare (z.B. Registrierungen, die
  Gesundheits-/Einverständniserklärung, Jahreskarten-Einreichung) sowie
  sicherheitsrelevante Felder wie Passwörter – die behalten ihren
  bewussten "erst prüfen, dann absenden"-Ablauf.
- Bei vielen der oben genannten Stellen wurde zusätzlich verhindert, dass
  ein Speichervorgang die komplette Liste neu lädt und dabei den gerade per
  Tab angesprungenen nächsten Eingabefokus wegreißt – stattdessen wird nur
  noch der betroffene Eintrag lokal aktualisiert.
- NEU in den admin-editierbaren Hinweistexten (✏️-Stift-Symbol,
  app-weit): Links (http(s)/www) werden automatisch erkannt und klickbar
  dargestellt, und beim Bearbeiten steht jetzt eine kleine Werkzeugleiste
  für **Fett** und Schriftgröße (Klein/Normal/Groß/Sehr groß) zur
  Verfügung.

## v327 (03.09.2026)

- Die eigentliche Ursache des in v326 diagnostizierten Fehlers bei „+ Zeile
  anlegen" ist jetzt behoben: eine sehr alte, längst nicht mehr verwendete
  Spalte aus einer frühen Vorversion der Umfrage-Funktion war in der
  Datenbank tatsächlicher Installationen stehen geblieben und stand dem
  Anlegen neuer Zeilen im Weg. Diese und eventuelle ähnliche
  Alt-Spalten werden ab jetzt beim Programmstart automatisch aus allen
  Umfrage-Tabellen entfernt – ohne Datenverlust, bestehende Umfragen,
  Fragen und bereits abgegebene Antworten bleiben unverändert erhalten.
- Der bereits vor v326 bestehende Fehler, dass „+ Zeile anlegen"/„+
  Frage/Hinweistext/Eingabefeld anlegen" ganz ohne Rückmeldung nichts tut,
  wenn oben in der Karte „Umfragen" noch keine Umfrage ausgewählt ist, ist
  ebenfalls behoben – es erscheint jetzt ein klarer Warnhinweis.
- Die einzelnen Fragen/Hinweistexte/Eingabefelder in der Karte „Umfrage:
  Fragen & Antworten" lassen sich jetzt einzeln auf- und zuklappen
  (standardmäßig zugeklappt), damit Umfragen mit vielen Fragen übersichtlich
  bleiben. Eine neu angelegte Frage klappt sich automatisch auf.
- Fragen/Hinweistexte/Eingabefelder bekommen ein neues, rein
  verwaltungsinternes „Name"-Feld, damit man sie in Dropdowns (z.B.
  „Folgefrage" oder „Start-Frage") wiedererkennt, statt nur am (oft langen)
  Fragetext. Eltern bekommen diesen Namen nie zu sehen.
- In der gesamten Umfrage-Verwaltung speichert jetzt jedes Eingabefeld
  sofort beim Verlassen (Tab-Taste oder Klick woanders hin) bzw. beim
  Drücken der Enter-Taste – ein eigener Klick auf „Speichern" ist dafür
  nicht mehr nötig (bei mehrzeiligen Textfeldern speichert weiterhin nur
  das Verlassen des Feldes, damit die Enter-Taste dort normale Zeilenumbrüche
  erlaubt).

## v326 (03.09.2026)

- Direkt nach der v325-Auslieferung gemeldeter Fehler behoben: „+ Zeile
  anlegen" unter „Umfrage: Kursstufen-Zuordnung" zeigte für die migrierte
  Standard-Umfrage „Wie geht es weiter?" nur die allgemeine Meldung
  „Unerwarteter Serverfehler..." statt die neue Zeile anzulegen.
- Die genaue Ursache ließ sich mit nachgebauten Testdaten (auch über die
  echte v325-Migration) nicht reproduzieren – deshalb geben die betroffenen
  Umfrage-Verwaltungs-Endpunkte (Umfragen, Fragen/Antworten,
  Kursstufen-Zuordnung anlegen/bearbeiten) jetzt beim nächsten Auftreten
  den TATSÄCHLICHEN Fehlertext direkt in der Fehlermeldung aus, statt in
  der nichtssagenden allgemeinen Meldung unterzugehen – damit sich die
  echte Ursache beim nächsten Versuch sofort erkennen und beheben lässt.
  Betrifft ausschließlich die Verwaltung (angemeldete Admins/Nutzer), keine
  Eltern-Ansicht.

## v325 (03.09.2026)

- Die Umfrage „Wie geht es weiter?" ist jetzt keine einzelne, fest im
  Programm hinterlegte Umfrage mehr, sondern es lassen sich beliebig viele
  eigenständige Umfragen anlegen – jede mit eigenem, selbst eingegebenem
  Titel und Beschreibungstext (bisher hartcodiert „🔜 Wie geht es weiter?"
  bzw. „Euer Kind war zuletzt im: ...").
- Jede Umfrage hat ihren komplett eigenen, unabhängigen Frage-Graphen
  (eigene Fragen, Antwort-Optionen und Kursstufen-Zuordnungen) – zwei
  Umfragen teilen sich keine Fragen.
- Im Tab „⚙️ Verwaltung" gibt es dafür jetzt eine neue Karte „Umfragen"
  (anlegen/umbenennen/Beschreibungstext bearbeiten/löschen/Reihenfolge),
  über die auch ausgewählt wird, welche Umfrage die beiden bestehenden
  Karten „Fragen & Antworten" und „Kursstufen-Zuordnung" gerade zeigen.
- Ein Kind kann jetzt gleichzeitig auf mehrere Umfragen zutreffen – im
  Eltern-Bereich erscheint dann für jede zutreffende Umfrage eine eigene
  Karte, jede unabhängig beantwortbar. Im Tab „Teilnehmer" zeigt der
  Status-Chip entsprechend für jede zutreffende Umfrage einen eigenen
  Chip.
- Beim Löschen einer Umfrage werden ihr Frage-Graph, ihre
  Kursstufen-Zuordnungen und alle bereits dazu abgegebenen Antworten mit
  gelöscht (mit deutlicher Sicherheitsabfrage vorher).
- Bestehende, vor v325 bereits konfigurierte Fragen/Kursstufen-Zuordnungen
  bleiben beim Update unverändert erhalten – sie werden automatisch einer
  neu angelegten Umfrage mit dem bisherigen Titel „Wie geht es weiter?"
  zugeordnet.

## v324 (03.09.2026)

- Die Umfrage „Wie geht es weiter?" (seit v321) ist jetzt eine echte
  VERSCHACHTELTE Umfrage statt nur drei fester Antwortmöglichkeiten:
  wird z.B. „Ja, weitermachen" gewählt, öffnet sich direkt ein
  Hinweistext; wird „Noch unsicher" gewählt, erscheint eine weitere Frage
  – und so beliebig tief verzweigt weiter, bis am Ende entweder ein
  Hinweistext oder ein echtes Eingabefeld steht (z.B. für eine
  Mail-Adresse), in das Eltern selbst etwas eintragen.
- Im Tab „⚙️ Verwaltung" gibt es dafür jetzt zwei Karten: „Fragen &
  Antworten" (der wiederverwendbare Frage-Graph – jede Frage kann
  beliebig viele Antwort-Buttons haben, jeder verweist per Dropdown auf
  die nächste Frage/den nächsten Hinweistext/das nächste Eingabefeld) und
  „Kursstufen-Zuordnung" (welche Kursstufe mit welcher Frage startet –
  unverändert automatisch über die Qualifikationsstufe des zuletzt
  besuchten Kurses ermittelt).
- Im Eltern-Bereich klickt man sich jetzt Frage für Frage durch die
  Verzweigung, mit „← zurück" zum letzten Schritt und „Antwort ändern",
  um noch einmal ganz von vorne zu beginnen; eine bereits abgegebene
  Antwort zeigt den kompletten gewählten Pfad als Zusammenfassung.
- Im Tab „Teilnehmer" zeigt der Status-Chip jetzt den kompletten
  gewählten Antwortpfad (z.B. „Noch unsicher → Preis ist unklar, bitte
  meldet euch → „eltern.mia@example.com"") statt nur einer von drei
  festen Antworten.
- Bereits abgegebene Antworten bleiben unverändert lesbar, selbst wenn
  Fragen im Graph später umformuliert oder gelöscht werden (Text wird
  zum Zeitpunkt der Antwort gespeichert, nicht erst beim Anzeigen
  nachgeschlagen).

## v323 (03.09.2026)

- In der Trainer-Übersicht (Events/Schwimmcamp) wird ein rot markiertes
  „kein Trainer"-Feld jetzt sofort weiß, sobald ein Trainer ausgewählt
  wird – bisher blieb das Feld bis zum nächsten Neuladen der Ansicht rot,
  obwohl schon ein Trainer eingetragen war.

## v322 (03.09.2026)

- Die Checkbox „🔁 Kiosk-Scans hier automatisch öffnen (Saisonstart-Check)"
  steckte bisher direkt im Tab „Einlass scannen" und war damit für jeden
  erreichbar, der dort scannt. Sie ist jetzt in den Tab „⚙️ Verwaltung"
  umgezogen – Funktion unverändert, nur besser vor versehentlichem oder
  mutwilligem Umschalten geschützt.

## v321 (03.09.2026)

- Neu im Teilnehmer-Bereich: die Umfrage „Wie geht es weiter?" (bisher nur
  als Papier-Handzettel) gibt es jetzt digital. Eltern sehen dort passend
  zur letzten Kursstufe ihres Kindes drei Antwortmöglichkeiten
  („Weitermachen" / „Noch unentschlossen" / „Kein Interesse mehr"), jede
  mit einem passenden Infotext (z.B. Seminar-Nummer zum Eintragen oder eine
  Mail-Adresse zum Abmelden). Welche Zeile bei welchem Kind erscheint,
  ermittelt sich automatisch über die Qualifikationsstufe des zuletzt
  besuchten Kurses – ohne dass Eltern selbst einen Kurs auswählen müssen.
- Die Umfrage-Zeilen (Kursstufe, zugeordnete Qualifikationsstufe, die drei
  Antworttexte) sind im Tab „⚙️ Verwaltung" → „„Wie geht es weiter?"-Umfrage"
  frei pflegbar, da sich Seminarnummern und Fristen jede Saison ändern.
- Im Tab „Teilnehmer" zeigt ein neuer Chip in der Detailansicht, ob und wie
  ein Teilnehmer bereits geantwortet hat („🔜 möchte weitermachen" bzw.
  „🔜 „Wie geht es weiter?" noch offen") – so behält das Orga-Team den
  Überblick, ohne jedes Kind einzeln nachfragen zu müssen.

## v320 (03.09.2026)

- Trainer-Statistik grundlegend überarbeitet: Trainer können jetzt im Tab
  „🧑‍🏫 Trainer" einem oder mehreren Kursen zugeordnet werden (eigene
  Mehrfachauswahl je Trainer, unabhängig vom Cheftrainer – der bleibt
  weiterhin rein für die Anzeige auf dem Kiosk-Display zuständig). Die
  Statistik zeigt je Trainer „an X von Y Kurstagen da, das sind Z%",
  berechnet über genau diese zugeordneten Kurse.
- War ein Trainer an einem Tag für mehrere seiner zugeordneten Kurse
  eingeteilt (z.B. zwei parallele Kurse am selben Termin), zählt das jetzt
  korrekt nur noch als EIN Kurstag statt versehentlich doppelt.
- Neu: eine gleichartige Anwesenheits-Auswertung fürs Orga-Team unter
  „📈 Statistik" → „Orga-Team" – da das Orga-Team keinem einzelnen Kurs
  zugeordnet ist, zählen hier alle Kurstage der ausgewählten Kurse
  zusammen als Soll-Basis, je Mitglied wird die eigene Anwesenheit
  dagegengesetzt.

## v319 (03.09.2026)

- Qualifikationsstufen (Tab „⚙️ Verwaltung" → „Qualifikationsstufen") können
  jetzt ein Mindestalter bekommen. Ist es gesetzt, zeigt ein kleiner
  Farbpunkt bei „Prüfungskarten abhaken" pro Teilnehmer, ob das
  Mindestalter (anhand des Geburtsdatums im Personenstamm) schon erreicht
  ist (grün) oder nicht (rot bzw. grau, wenn kein Geburtsdatum bekannt
  ist). Ist das Mindestalter noch nicht erreicht, wird die Stufe auch bei
  vollständig abgehakter Prüfungskarte NICHT automatisch als erreicht
  markiert – das muss dann nach dem Geburtstag manuell in der
  Personen-Detailseite nachgetragen werden.
- Im „🏅 Qualifikationen"-Popup im Tab „Teilnehmer" steht wieder nur noch
  Name/Datum/Registriernummer, ohne Details zu wer/wann/was abgehakt hat.

## v318 (03.09.2026)

- Ein Benutzer-Account (egal ob über die Rolle "Einlass", eine
  Struktur-Gruppe oder eine individuelle Freigabe), der nach dem Login nur
  auf genau EINEN Bereich Zugriff hat (z.B. "Schwimmkurse"), landet jetzt
  direkt darin – der Bereiche-Auswahlbildschirm mit dann ohnehin nur einer
  einzigen Kachel wird übersprungen. Auf dem Desktop springt es dabei
  automatisch zum ersten erreichbaren Tab, auf Handy/Tablet erscheint
  direkt die Kacheln-Auswahl dieses einen Bereichs.

## v317 (03.09.2026)

- Fehler behoben: Wurde einer Rolle unterhalb von "Nutzer" (z.B. "Einlass")
  in der Struktur-Verwaltung gezielt Zugriff auf "Schwimmcamp" gegeben, war
  der Tab zwar sichtbar, zeigte aber keine Inhalte (leere Liste, leeres
  Event). Betroffen waren auch die entsprechenden Ansichten im Bereich
  "Events" sowie die zugehörige Teilnehmerliste. Die Trainer-Auswahl in der
  Schwimmcamp-/Events-Übersicht braucht jetzt außerdem keinen zusätzlichen
  Zugriff auf den Tab "Trainer" mehr.

## v316 (03.09.2026)

- Im „🏅 Qualifikationen"-Popup und im Qualifikationen-Tab der
  Personenansicht kann man jetzt je erreichter Qualifikationsstufe über
  „▼ Details" die einzelnen Prüfungskarte-Punkte aufklappen – dort steht
  bei jedem abgehakten Punkt, wer ihn wann abgehakt hat.

## v315 (03.09.2026)

- In der Trainer-Übersicht des Schwimmcamps (Tab „Events" → Event öffnen)
  wird das Trainer-Auswahlfeld jetzt rot markiert, wenn für den Termin
  bereits mindestens ein Kind angemeldet ist, aber noch kein Trainer
  eingetragen wurde.

## v314 (03.09.2026)

- Prüfungskarte-Punkte haben jetzt zusätzlich zum Kurztext (Standard-
  Ansicht) einen optionalen Langtext, der beim Antippen des Kurztexts im
  Abhak-Popup ein-/ausgeblendet wird (nur bei Punkten, für die ein
  Langtext hinterlegt wurde, erkennbar am ▼/▲-Pfeil).
- Das Abhaken eines Punkts geht jetzt nur noch über die Checkbox selbst –
  ein Antippen des Kurztexts hakt nicht mehr versehentlich mit ab, sondern
  klappt stattdessen den Langtext auf.
- Die Verwaltung der Prüfungskarte-Punkte (Tab „Verwaltung" →
  Qualifikationsstufen → 📋) hat dafür ein zweites Eingabefeld pro Punkt
  für den optionalen Langtext bekommen.

## v313 (03.09.2026)

- Die Karte „Bereiche" mit dem Hinweistext „Bereich wählen, um
  hineinzuspringen." über den Bereichs-Kacheln auf der Startseite entfernt.
- Auf Handy & Tablet (bis 1024px Bildschirmbreite) bleibt die rote
  Kopfzeile jetzt beim Scrollen oben am Bildschirmrand verankert, statt mit
  dem Seiteninhalt wegzuscrollen. Auf dem Desktop bleibt sie unverändert
  im normalen Textfluss.

## v312 (03.09.2026)

- Trainer-Anwesenheit beim Einlass scannen zeigt jetzt IMMER alle Trainer
  zum Abhaken an, unabhängig davon, welcher Kurs gerade geöffnet ist –
  vorher nur die diesem Kurs fest zugeordneten (plus spontan
  hinzugefügte). Die frühere „+ weiteren Trainer für heute hinzufügen"-
  Auswahl entfällt damit, weil sie nicht mehr nötig ist.
- Einem Kurs lässt sich jetzt nur noch EIN Cheftrainer zuordnen, direkt im
  Tab „Kurse" am jeweiligen Kurs (Auswahl aus allen Trainern) – die
  frühere Mehrfachzuordnung mehrerer Trainer zu einem Kurs im Tab
  „Trainer" entfällt. Der Tab „Trainer" zeigt die Cheftrainer-Zuordnung(en)
  je Trainer nur noch informativ an.
- Die „Kursleiter heute"-Auswahl (Tagesvertretung bei Krankheit/Urlaub)
  bleibt bestehen und ist jetzt ebenfalls aus allen Trainern wählbar, statt
  nur aus den bisher zugeordneten.

## v311 (03.09.2026)

- Die für „Prüfungskarten abhaken" eingeführte Kompakt-Navigation
  (Tab-Leiste versteckt, ein „← Zurück"-Knopf rechts unten in der roten
  Titelleiste) gilt jetzt für die GESAMTE Navigation auf Handy & Tablet
  (bis 1024px Bildschirmbreite). Ein Tipp auf einen Bereich mit mehreren
  Unterpunkten (z.B. „Einsatz") zeigt dessen Inhalte jetzt als eigene
  Kacheln-Seite statt automatisch in den ersten Punkt zu springen – „← Zurück"
  geht dabei immer genau eine Ebene nach oben, bis zur Startseite.
- Auf dem Desktop (ab 1024px) bleibt die bisherige Tab-Leiste mit
  automatischem Sprung in den ersten Unterpunkt unverändert bestehen.
  „Prüfungskarten abhaken" behält seinen eigenen Zweischritt-Ablauf mit
  Kopfzeilen-Zurück-Knopf dabei bewusst auf jeder Bildschirmbreite, auch am
  Desktop.
- Kleinere Layout-Korrektur: auf breiten Bildschirmen schafft die Kopfzeile
  jetzt zusätzlichen Platz unter „angemeldet als/Mein Profil/abmelden",
  damit sich der Zurück-Knopf nicht mehr mit diesen Elementen drängt.

## v310 (03.09.2026)

- Der „← Zurück"-Knopf beim „Prüfungskarten abhaken" sitzt jetzt fest an
  der rechten unteren Ecke der roten Titelleiste, statt (wie in v309) am
  oberen Rand des rechten Kopfzeilen-Bereichs.

## v309 (03.09.2026)

- Korrektur zu v308: die rote Titelleiste bleibt beim „Prüfungskarten
  abhaken" jetzt durchgehend sichtbar (wird nicht mehr ausgeblendet). Nur
  die Bereichs-Tab-Leiste darunter verschwindet weiterhin für mehr
  Arbeitsbereich.
- Der „← Zurück"-Knopf sitzt jetzt rechts in der Titelleiste statt einzeln
  in den Karten – ein Klick führt aus der Teilnehmerliste zurück zur
  Kurswahl, und aus der Kurswahl ganz zurück zur normalen Ansicht mit
  Tab-Leiste.
- Die Titelleiste zeigt jetzt zusätzlich an, wo man sich gerade befindet:
  nach Kurswahl steht dort „Prüfungskarten abhaken – <Kursname>".

## v308 (03.09.2026)

- Tab „Prüfungskarten abhaken" jetzt als klarer Zweischritt-Ablauf für die
  Nutzung auf dem Handy: Schritt 1 zeigt nur die Kurswahl, Schritt 2 (nach
  Auswahl eines Kurses) nur die Teilnehmerliste dieses Kurses. Jeder
  Schritt hat einen eigenen „← Zurück"-Knopf.
- Solange dieser Tab geöffnet ist, werden der rote Kopfbereich (Logo,
  Nutzername, Versionsnummer) und die Tab-Navigation ausgeblendet, damit
  auf dem Handy möglichst viel Platz für die eigentliche Arbeit bleibt.
  Der „← Zurück"-Knopf in Schritt 1 verlässt diese kompakte Ansicht und
  blendet Kopfbereich und Navigation wieder ein.
- Das Popup zum Abhaken der Übungspunkte eines Teilnehmers (seit v307)
  funktioniert unverändert, jetzt auch innerhalb dieser kompakten Ansicht.

## v307 (03.09.2026)

- Im Tab „Prüfungskarten abhaken": ein Antippen eines Teilnehmers klappt
  dessen Punkte-Checkliste nicht mehr inline in der Liste auf, sondern
  öffnet sie in einem eigenen Popup – mit „← Zurück"-Knopf, um wieder zur
  Teilnehmerliste des Kurses zu kommen. Die Liste selbst bleibt dadurch
  immer kompakt und übersichtlich, unabhängig davon, wie viele Punkte eine
  Stufe hat. Der Ablauf beim Abhaken selbst (Checkbox antippen, bei
  vollständigem Abhaken automatischer Eintrag der Stufe) ist unverändert.

## v306 (03.09.2026)

- Kleinere Layout-Korrektur bei den Qualifikationsstufen (Tab
  "Verwaltung"): die Felder "Gliederung" und "Prüfungsnummer" sind jetzt
  schmal an ihre kurzen Werte angepasst, statt unnötig breit zu sein. Der
  dadurch gewonnene Platz kommt dem Namensfeld und den Knöpfen daneben
  zugute.

## v305 (03.09.2026)

- Begriffskorrektur: die in v304 neu eingeführte Ebene der frei
  definierbaren Übungspunkte je Qualifikationsstufe hieß dort noch
  "Riegenkarte" – das war fachlich nicht korrekt. Richtig ist: die
  Riegenkarte ist das Sammelblatt für alle Teilnehmer eines Kurses, die
  Karte eines einzelnen Teilnehmers heißt Prüfungskarte. Betroffen sind
  ausschließlich Begriffe (Menü, Beschriftungen, interne Bezeichner) –
  am Verhalten ändert sich nichts.
- Der 📋-Knopf bei den Qualifikationsstufen heißt jetzt "Prüfungskarte
  bearbeiten" (vorher "Riegenkarte bearbeiten"), das Popup selbst
  "📋 Prüfungskarte".
- Der Beckenrand-Tab (unter „🏊 Schwimmkurse", direkt neben „Einlass
  scannen") heißt jetzt "Prüfungskarten abhaken" (vorher "Riegenkarte
  abhaken"). Der Ablauf selbst ist unverändert: Kurs wählen, Teilnehmer
  antippen, Punkte abhaken.
- Bereits vorhandene Punkte-Definitionen und Abhak-Stände aus v304 werden
  beim ersten Start automatisch und ohne Datenverlust übernommen.

## v304 (03.09.2026)

- Neu: "Riegenkarte" zu jeder Qualifikationsstufe. Im Tab „Verwaltung" bei
  den Qualifikationsstufen lässt sich über den neuen 📋-Knopf pro Stufe
  eine frei definierbare Liste einzelner Übungs-/Fertigkeitspunkte anlegen
  (z.B. beim Seepferdchen: "Sprung vom Beckenrand", "25m Schwimmen",
  "Tauchen nach einem Ring").
- Neuer Tab „Riegenkarte abhaken" (unter „🏊 Schwimmkurse", direkt neben
  „Einlass scannen") speziell für den Beckenrand: Kurs wählen, Teilnehmer
  antippen, dann die erreichten Punkte einzeln abhaken – große,
  handy-taugliche Ankreuzfelder. Angezeigt werden nur die Punkte der
  Qualifikationsstufe(n), die dem gewählten Kurs als Kursziel zugeordnet
  sind.
- Sind für einen Teilnehmer alle Punkte einer Riegenkarte abgehakt, wird
  die Qualifikationsstufe automatisch mit dem heutigen Datum als erreicht
  eingetragen (genau wie bisher beim manuellen Eintragen im Tab
  „Teilnehmer") – ein 🎉-Hinweis erscheint direkt am Beckenrand.

## v303 (02.09.2026)

- Die Einverständnis-/Gesundheitserklärung (Formulare unter /erklaerung
  und /erklaerung-neu) lässt sich jetzt selbst bearbeiten, im Tab
  "Verwaltung" unter der neuen Karte "Erklärung-Formular bearbeiten":
  - Der erklärende Einleitungstext über den Feldern ist jetzt frei
    editierbar (bisher fest im Formular verdrahtet).
  - Jedes der sechs bestehenden festen Felder (Telefon der Eltern,
    Notfallkontakt Name/Telefon, Abholberechtigte Personen,
    Krankheiten/Allergien, Sonstige Bemerkungen) lässt sich einzeln als
    Pflichtfeld markieren – ein Absenden ohne die markierten Angaben wird
    abgelehnt, mit einer klaren Meldung, was noch fehlt.
  - Zusätzlich lassen sich jetzt beliebig viele eigene Zusatzfragen
    anlegen, umbenennen, umsortieren und löschen – wahlweise als
    einzeiliges Textfeld, mehrzeiliges Textfeld, Ja/Nein-Zustimmung
    (Checkbox) oder Datum, ebenfalls jeweils einzeln als Pflichtfeld
    markierbar. Sie erscheinen im Formular direkt nach den bestehenden
    Feldern und werden im Tab "Teilnehmer" bei der jeweiligen Erklärung
    mit angezeigt.
  - Die archivierten PDF-Schnappschüsse jeder eingereichten Erklärung
    enthalten die beantworteten Zusatzfragen ebenfalls, mit der zum
    Einreichungszeitpunkt gültigen Beschriftung.

## v302 (02.09.2026)

- Tab "Export": bei der Kursauswahl für beide Exporte ("Abrechnung
  kassiertes Eintrittsgeld" und "Anwesenheit für die Gemeinde") gibt es
  jetzt zwei kleine Knöpfe "Alle auswählen"/"Alle abwählen" über der
  Kurs-Liste, statt jeden Kurs einzeln anklicken zu müssen.

## v301 (02.09.2026)

- Weitere Nachbesserung am neuen PDF-Export der Schwimmcamp-
  Teilnehmerliste: die Rahmenlinien der Tabelle waren zu hell/dünn und
  kaum zu erkennen, besonders auf den farbig markierten Zellen. Sie sind
  jetzt kräftiger und deutlich sichtbar.

## v300 (02.09.2026)

- Bugfix am neuen PDF-Export der Schwimmcamp-Teilnehmerliste (v299): bei
  langen Stufennamen oder langen Beschreibungstexten in der Legende lief
  der Text über die Spaltengrenze hinweg in die Nachbarspalte statt
  umzubrechen. Die betroffenen Texte werden jetzt korrekt innerhalb ihrer
  Zelle/Spannweite umgebrochen, genau wie es im Excel-Export schon immer
  funktioniert hat.

## v299 (02.09.2026)

- Schwimmcamp-Teilnehmerliste (Trainer-Ansicht, Tab "Events"/Schwimmcamp):
  der Excel-Export markiert Teilnehmer jetzt genau wie die
  Trainer-Übersicht am Bildschirm (seit v296) gelb ("schwimmt") bzw. grün
  (Kursziel erreicht, hat Vorrang).
- Neu: dieselbe Teilnehmerliste lässt sich jetzt zusätzlich als PDF
  exportieren (zweiter Knopf "⬇️ Teilnehmerliste als PDF" neben dem
  bisherigen Excel-Export) – im Querformat, mit denselben Zeit-/
  Stufen-/Platz-Spalten, denselben Farbmarkierungen sowie Pausen- und
  Legenden-Zeile wie im Excel-Export.

## v298 (02.09.2026)

- Wichtiger Bugfix: Die Zeitslots von Events (insbesondere die
  Schwimmcamp-Zeitfenster) wurden überall, wo eine Uhrzeit angezeigt wird
  – Trainer-Übersicht, Admin-Ansicht, Eltern-Bereich UND die öffentliche
  Anmeldeseite – konsequent 2 Stunden zu spät angezeigt (im Winter wäre es
  1 Stunde gewesen). Betraf ausschließlich die BILDSCHIRM-Anzeige, nicht
  die gespeicherten Daten selbst und nicht die Bestätigungs-/Abmelde-
  E-Mails (die zeigten schon immer die korrekte Uhrzeit) – nach dem Update
  stimmen alle Anzeigen wieder mit der tatsächlich eingetragenen Uhrzeit
  überein, ohne dass an den Zeitslots selbst irgendetwas geändert werden
  musste.

## v297 (02.09.2026)

- Bugfix: In der Übersicht (Matrix) sprang die Ansicht nach rechts
  gescrollter Kurstage nach einem Klick auf Anwesend/Entschuldigt/
  Unentschuldigt immer wieder zu den frühesten Kurstagen zurück, weil beim
  Neuaufbau der Tabelle jedes Mal eine ganz neue, wieder ganz nach links
  gescrollte Tabelle entsteht. Die horizontale Scrollposition jedes Kurses
  bleibt jetzt über einen Status-Klick hinweg erhalten.

## v296 (02.09.2026)

- Schwimmcamp: die Trainer-Übersicht ("📊 Trainer-Übersicht" im Tab
  "Events"/Schwimmcamp) markiert Teilnehmer jetzt genau wie die übrigen
  Übersichten farblich: gelb = "schwimmt", grün = Kursziel erreicht (grün
  hat Vorrang, falls beides zutrifft). Das funktioniert für Kinder, deren
  Kurskarte bei der Anmeldung gescannt wurde – bei von Hand eingetippten
  Anmeldungen ohne bekanntes Kurskind bleibt der Platz unmarkiert, da dort
  kein schwimmt-/Kursziel-Stand vorliegt.

## v295 (02.09.2026)

- Export "Anwesenheit für die Gemeinde" (Tab "⚙️ Verwaltung" → "Export")
  hat jetzt einen Umschalter zwischen zwei Darstellungen: "Mit
  Kurs-Aufschlüsselung" (bisheriges Verhalten seit v293, eine Zeile je
  Kurstag pro Kurs) und neu "Nur Tagessummen" – dort wird pro Tag die
  Anzahl anwesender Teilnehmer über alle ausgewählten Kurse zusammengezählt
  und als eine einzige Zeile ausgegeben, darunter wie gewohnt die
  Gesamtsumme. Gleiche Kurs-Auswahl und gleicher Zeitraum, beide Ansichten
  als Excel und PDF exportierbar.

## v294 (02.09.2026)

- Bugfix: Im Tab "QR-Code scannen" öffnete sich am Handy nach einem
  erkannten Code nie der versprochene neue Tab mit dem Datensatz (am
  Desktop klappte es meist) – mobile Browser blockieren ein automatisch
  per Skript geöffnetes Fenster, wenn dazwischen erst noch eine
  Server-Antwort abgewartet wurde. Statt automatisch zu öffnen, erscheint
  jetzt ein antippbarer Link ("… öffnen (neuer Tab)"), der zuverlässig auf
  jedem Gerät funktioniert.

## v293 (02.09.2026)

- Neuer Export im Tab "⚙️ Verwaltung" → "Export": "Anwesenheit für die
  Gemeinde". Zeigt je ausgewähltem Kurs und frei wählbarem Zeitraum die
  Anzahl anwesender Teilnehmer pro Kurstag, dazu die Summe je Kurs und die
  Gesamtsumme über alle ausgewählten Kurse ("Teilnehmertage") – als Excel-
  oder PDF-Datei.

## v292 (02.09.2026)

- Bugfix: Scannen einer Orga-Team- oder Trainer-QR-Code-Karte am
  Kiosk-Bildschirm führte immer zu einem roten Fehl-Bildschirm ("Bitte
  zuerst oben den/die Kurs(e) für heute auswählen"), obwohl dieser
  Bildschirm gar keine Kurs-Auswahl anbietet. Der Kiosk schickt jetzt
  automatisch alle heutigen Kurstage mit, sodass der Check-in klappt.

## v291 (02.09.2026)

- Der Begriff "Freibad-Nachweis" heißt in der gesamten Oberfläche (Admin-/
  Trainer-Bereich und Eltern-Bereich) jetzt "Eintritt-Nachweis" – er deckte
  schon immer nicht nur die Freibad-Jahreskarte, sondern gleichwertig auch
  die Barzahlung ab. Es ändert sich nur die Bezeichnung, keine Funktion:
  bereits erfasste Jahreskarten-Nummern, Bar-Bestätigungen und die
  Jahr-für-Jahr-Historie bleiben unverändert erhalten.

## v290 (02.09.2026)

- Auf der Personen-Detailseite (Reiter "Hauptdaten") gibt es jetzt auch eine
  Karte "Mitgliedschaft" mit einer ankreuzbaren Checkbox "Mitglied der
  Ortsgruppe". Diese Angabe war dort bisher nicht vorhanden, obwohl sie auf
  der allgemeinen Personenprofilseite und im Tab "Teilnehmer" schon
  gepflegt werden konnte – jetzt ist es an allen drei Stellen einheitlich
  möglich.

## v289 (02.09.2026)

- Übersicht: die Spalte "Markierung" zeigt jetzt pro Teilnehmer nur noch
  das zum aktuell angezeigten Kurs passende Abzeichen (Qualifikationsstufe)
  statt aller jemals erreichten Abzeichen aus der gesamten Kurs-Historie.
  Im Tab "Teilnehmer" bzw. auf der Personen-Detailseite wird weiterhin die
  volle Historie angezeigt.

## v288 (02.09.2026)

- Im Admin-Bereich hieß es an einigen vereinzelten Stellen noch "Kind"
  statt "Teilnehmer" (z.B. Kontaktfeld-Labels im Personenprofil, Texte bei
  den Event-Zeitslots, ein Bestätigungsdialog). Jetzt heißt es überall im
  Admin-Bereich einheitlich "Teilnehmer". Der Eltern-Bereich spricht
  weiterhin bewusst von "Ihrem Kind", da Eltern dort direkt angesprochen
  werden.

## v287 (02.09.2026)

- Freibadnachweis (Jahreskarte/15€ bar): der Status zeigt schon automatisch
  ab dem 1. Januar "veraltet" an – dafür war nie ein Reset nötig. Neu ist:
  wird beim Saisonstart der neu kontrollierte Jahresaufkleber mit neuer
  Kartennummer eingetragen, geht der bisherige Stand jetzt nicht mehr
  verloren, sondern wird automatisch gesichert.
- Neuer Knopf "🕒 Verlauf" beim Freibadnachweis im Tab "Teilnehmer" zeigt
  die komplette Jahr-für-Jahr-Historie eines Teilnehmers (alte und neue
  Kartennummern/Daten).

## v286 (02.09.2026)

- Personenverwaltung → "Neue Person anlegen": statt einem gemeinsamen
  Namensfeld gibt es jetzt getrennte Felder für Vorname und Nachname
  (genau wie schon beim Bearbeiten einer bestehenden Person). Das
  vermeidet falsch geratene Trennungen bei zusammengesetzten Vor- oder
  Nachnamen – wichtig u.a. für den Dateinamen des Master-ID-QR-Codes.

## v285 (02.09.2026)

- Neu im Tab "Einlass scannen": Schalter "🔁 Kiosk-Scans hier automatisch
  öffnen (Saisonstart-Check)". Ist er auf diesem Rechner eingeschaltet,
  öffnet jeder erfolgreiche Kartenscan – egal an welchem Gerät gescannt
  wurde – hier automatisch den Tab "Teilnehmer" mit aufgeklappter Zeile
  dieses Teilnehmers, damit die Voraussetzungen (Mitgliedschaft/Erklärung)
  direkt geprüft und abgehakt werden können. Gedacht für den
  Saisonstart-Check: die Karten werden am Kiosk-Rechner gescannt, der
  Datensatz erscheint automatisch auf dem separaten Einlass-Rechner.
- Der Schalter gilt nur für diesen einen Rechner/Browser (nicht für den
  Account) und bleibt auch nach einem Neuladen der Seite erhalten, bis er
  hier wieder ausgeschaltet wird.

## v284 (02.09.2026)

- Tab "QR-Code scannen": lässt sich jetzt auch über "📷 Handy-Kamera"
  bedienen (bisher nur über einen angeschlossenen USB-/Handscanner), genau
  wie im Tab "Einlass scannen".
- Ein gescannter Kurs-Teilnehmer öffnet dort jetzt direkt den Tab
  "Teilnehmer" mit aufgeklappter Zeile (Master-ID, Voraussetzungen wie
  Mitgliedschaft/Erklärung direkt zum Abhaken) statt der separaten
  Personen-Detailseite. Eine gescannte Master-ID ohne Kurs-Teilnahme öffnet
  weiterhin wie bisher den Personenstamm.

## v283 (02.09.2026)

- Der heruntergeladene QR-Code der Master-ID heißt jetzt immer
  "QR-Vorname-Nachname-MasterID.png" (z.B.
  "QR-Torsten-Frommer-0112011700013.png") statt "master-id-123.png".

## v282 (02.09.2026)

- Fehler behoben: in der Personenverwaltung ("Alle Personen") konnte der
  schwebende rote "nach oben"-Knopf beim Herunterscrollen einer langen
  Liste genau über den Zeilen-Buttons "+ Kurs"/"🗑️ löschen" liegen – ein
  Klick dorthin traf dann nur den Scroll-Knopf statt den eigentlichen
  Button, was sich wie "reagiert nicht" oder "erst beim zweiten Klick"
  anfühlte. Der Knopf bleibt in der Personenverwaltung jetzt ausgeblendet.

## v281 (02.09.2026)

- Die neue Trainer-Übersicht bei "Events"/"Schwimmcamp" lässt sich jetzt
  über "⛶ Groß anzeigen" zusätzlich als großes Popup öffnen, das die ganze
  Bildschirmgröße nutzt – praktisch bei vielen Leistungsstufen
  nebeneinander.

## v280 (02.09.2026)

- Neue Trainer-Übersicht bei "Events"/"Schwimmcamp": im geöffneten Event
  erscheint jetzt zusätzlich eine Zeit×Stufe-Tabelle, exakt wie im
  Excel-Export "Teilnehmerliste als Excel" – auf einen Blick alle
  Zeitslots und Plätze aller Leistungsstufen nebeneinander.
- Die Trainer-Zuordnung passiert jetzt direkt in dieser Tabelle (Auswahl
  je Zelle, wirkt sofort) statt verstreut in den einzelnen
  Zeitslot-Karten – die bisherigen Trainer-Felder dort sind entfallen.

## v279 (02.09.2026)

- Kopfzeile aufgeräumt: die rechts stehenden Links "← Übersicht",
  "Teilnehmer →", "Live-Anzeige →" und "Kiosk-Ansicht →" sind entfernt –
  dieselben Ziele stehen bereits vollständig (mit Beschreibung) im Tab
  "Verwaltung" → "🔗 Links".

## v278 (02.09.2026)

- Fehler behoben: neu über den Excel-Direktimport angelegte Teilnehmer
  wurden zwar korrekt in der Kurs-Teilnehmerzahl mitgezählt, erschienen
  aber weder in der Übersicht noch beim Einlass-Scannen (leere
  Teilnehmerliste trotz "X Teilnehmer" in der Kursauswahl). Betroffene,
  bereits importierte Kurse werden beim ersten Neustart nach diesem Update
  automatisch repariert – keine manuelle Nacharbeit nötig.

## v277 (02.09.2026)

- Personenprofil: der Reiter "🗓️ Pflichtübungen" erscheint jetzt nur noch,
  wenn für mindestens eine Gruppe dieser Person tatsächlich Pflichtübungen
  definiert sind – ist das für keine ihrer Gruppen der Fall, bleibt der
  Reiter komplett ausgeblendet statt einen leeren Hinweistext zu zeigen.

## v276 (02.09.2026)

- Excel-Import (Tab "Kurse"): fehlt in der hochgeladenen Datei die
  Kursnummer (keine "Nr."-Metadatenzeile), schlägt das danach
  erscheinende Eintragefeld jetzt automatisch eine Kursnummer vor, wenn
  eine wie "2026-0037" bereits im Dateinamen steht – muss nur noch
  bestätigt statt komplett von Hand abgetippt werden.

## v275 (02.09.2026)

- Die Kurzbeschreibung unter jeder Kachel auf der Bereiche-Startseite (z.B.
  unter "Schwimmkurse" oder "Events") lässt sich jetzt über ein eigenes
  Stift-Symbol individuell einstellen – genau wie bei den anderen
  editierbaren Hinweistexten. Ohne eigenen Text erscheint weiterhin
  automatisch die Liste der enthaltenen Unterpunkte wie bisher.

## v274 (02.09.2026)

- Neuer Bereich "Orga-Team" für das Team, das die Schwimmkurse koordiniert
  (bisher gab es dafür keine eigene Erfassung).
- Personen werden über die neue Gruppe "Orga-Team" im Personenstamm zu
  Orga-Team-Mitgliedern gemacht – genau wie bei Trainer/Einsatzkraft.
  Anders als beim Trainer gibt es dabei keine Zuordnung zu einzelnen
  Kursen: das Orga-Team koordiniert alles, deshalb erscheint im neuen Tab
  "Orga-Team" immer die komplette Liste.
- Beim Einlass-Scannen erscheint jetzt neben "Trainer-Anwesenheit" eine
  eigene Karte "Orga-Team-Anwesenheit": ein Häkchen genügt pro Person und
  Kurstag, auch wenn mehrere Kurse gleichzeitig ausgewählt sind.
- Auch Orga-Team-Mitglieder bekommen einen eigenen QR-Code (Tab
  "Orga-Team" → "🪪 QR-Code") und können sich damit selbst am normalen
  Einlass-Scanner einchecken, genau wie Trainer seit v273. Ist eine Person
  sowohl Trainer als auch im Orga-Team, bucht ein einziger Scan beide
  Anwesenheiten gleichzeitig.
- Die Pünktlichkeits-Auswertung (Tab "Statistik") zeigt jetzt zusätzlich
  Check-in-Zeitpunkt und Verspätung für das Orga-Team, inklusive eigenem
  Excel-Export-Tabellenblatt.

## v273 (02.09.2026)

- Trainer können sich jetzt selbst per persönlichem QR-Code am ganz
  normalen "Einlass scannen"-Feld einchecken, statt dass jemand anderes
  das Häkchen für sie setzen muss.
- Neuer Knopf "🪪 QR-Code" bei jedem Trainer im Tab "Trainer": führt in
  den Personenstamm, wo sich eine Master-ID vergeben und als QR-Code
  herunterladen/ausdrucken lässt (dieselbe Master-ID-Funktion, die es für
  Teilnehmer schon länger gibt).
- Ein Scan des Trainer-QR-Codes bucht automatisch die Anwesenheit (inkl.
  Check-in-Zeitpunkt für die Pünktlichkeits-Auswertung) für alle am
  Scanner gerade ausgewählten Kurse des Tages – genau wie beim manuellen
  Haupt-Häkchen aus v272.
- Ist am Scanner noch kein Kurs für heute ausgewählt, erscheint eine
  klare Meldung statt eines stillen Fehlers.

## v272 (02.09.2026)

- Trainer-Anwesenheit beim Einlass-Scannen: pro Kurstag genügt jetzt EIN
  Häkchen pro Trainer, auch wenn mehrere Kurse gleichzeitig ausgewählt sind
  (bisher stand bei jedem Kurs ein eigenes Check-in, obwohl nur einmal pro
  Kurstag nötig).
- Bei mehreren gleichzeitig ausgewählten Kursen lässt sich unter dem
  Haupt-Häkchen zusätzlich per Kurs-Kästchen festlegen, bei welchem/welchen
  Kurs(en) der Trainer konkret dabei war.
- Neu: "+ weiteren Trainer für heute hinzufügen" – damit lässt sich eine
  spontane Vertretung erfassen, die diesem Kurs sonst nicht fest zugeordnet
  ist, ohne dass dafür im Tab "Trainer" eine dauerhafte Zuordnung angelegt
  werden muss.
- Der "🕐 Jetzt einchecken"-Knopf für die Pünktlichkeits-Erfassung
  funktioniert unverändert, jetzt eben einmal pro Trainer und Kurstag statt
  einmal pro Kurs.

## v271 (02.09.2026)

- Tab "Archiv": die archivierten Kurse sind jetzt nach Jahren getrennt
  auf-/zuklappbar (Klick auf die Jahreszahl) statt einer einzigen langen
  Liste – standardmäßig ist nur das jüngste Jahr aufgeklappt.
- Neuer Knopf "👁 Ansehen" bei jedem archivierten Kurs: zeigt die Teilnehmer
  dieses Kurses zum Nachschauen an, ohne den Kurs dafür erst reaktivieren
  zu müssen.
- In dieser Ansicht erscheinen Teilnehmer, die inzwischen in einen anderen
  Kurs verschoben wurden, zusätzlich mit dem Hinweis "↪ verschoben nach
  ...", statt einfach zu verschwinden.
- Export "Abrechnung kassiertes Eintrittsgeld": bereits archivierte Kurse
  aus dem laufenden Jahr stehen jetzt ebenfalls zur Auswahl, nicht mehr nur
  aktive Kurse.

## v270 (02.09.2026)

- Freibad-Nachweis (Tab "Teilnehmer" und Schnell-Popup) kann jetzt auch
  rückwirkend nachgetragen werden: zwei neue Felder "Für Kurs" und "Datum"
  stehen direkt über der bisherigen Auswahl "kein Nachweis"/"Jahreskarte"/
  "bar". Standardmäßig ist der aktuelle Kurs und das heutige Datum
  vorausgewählt (bisheriges Verhalten bleibt also unverändert), bei Bedarf
  kann aber ein früherer Kurs aus der eigenen Kurs-Historie (🕒
  Kursverlauf, siehe v269) sowie ein zurückliegendes Datum gewählt werden –
  z.B. wenn erst später auffällt, dass eine im alten Kurs kassierte
  Zahlung nie eingetragen wurde.

## v269 (02.09.2026)

- Neu im Tab "Teilnehmer": Knopf "🕒 Kursverlauf" bei "Kurse dieses
  Teilnehmers" zeigt, wann ein Teilnehmer von welchem in welchen Kurs
  verschoben wurde.
- Die in v268 eingeführte Korrektur für den Export "Abrechnung kassiertes
  Eintrittsgeld" wurde für bereits VOR diesem Update verschobene Teilnehmer
  nachgebessert: anhand des bereits vorhandenen Verschiebe-Protokolls wird
  jetzt einmalig rekonstruiert, in welchem Kurs ein schon bestehender
  Nachweis ursprünglich erfasst wurde, statt pauschal den aktuellen Kurs
  anzunehmen. Das funktioniert zuverlässig, sofern Nachweis und
  Verschiebung nicht ausgerechnet am selben Tag stattfanden – für diesen
  seltenen Grenzfall bleibt die Zuordnung wie bisher.

## v268 (02.09.2026)

- Fehler behoben: wurde ein Teilnehmer, der sein Eintrittsgeld (Jahreskarte
  oder bar) bereits in seinem bisherigen Kurs entrichtet hatte, in einen
  anderen Kurs verschoben, tauchte er in der Abrechnung "Export für die
  Gemeinde" plötzlich im NEUEN Kurs auf, obwohl das Geld im ALTEN Kurs
  kassiert wurde. Ein Nachweis bleibt jetzt in diesem Export dauerhaft dem
  Kurs zugeordnet, in dem er tatsächlich entgegengenommen wurde – auch nach
  einem späteren Verschieben. Am eigentlichen Freibad-Nachweis im Tab
  "Teilnehmer" (gilt weiterhin fürs ganze Kalenderjahr, kursübergreifend)
  ändert sich nichts: niemand muss nach einem Kurswechsel ein zweites Mal
  bezahlen.

## v267 (02.09.2026)

- Tab "Teilnehmer": die Voraussetzungen für die Kursteilnahme (Mitgliedschaft
  Ortsgruppe, Gesundheitserklärung, Freibad-Nachweis) stehen jetzt sichtbar
  in einem eigenen umrandeten Kasten "Voraussetzungen" zusammen, statt
  optisch kaum von den Kontaktdaten darüber unterscheidbar zu sein.
- Die Mitgliedschafts-Zeile ("Mitglied der Ortsgruppe") ist jetzt genau wie
  Erklärung und Freibad-Nachweis rot/grün markiert, wenn die Mitgliedschaft
  für den jeweiligen Kurs Pflicht ist.
- Freibad-Nachweis "Jahreskarte vorgelegt": der Cursor springt jetzt direkt
  ins Nummernfeld, und die Eingabe lässt sich zusätzlich zum 💾-Knopf auch
  mit der Enter-Taste bestätigen.

## v266 (02.09.2026)

- Hinweistexte in der MCC-Oberfläche (die kurzen erklärenden Absätze unter den
  Karten-Überschriften) sind jetzt für Admins direkt in der App bearbeitbar: ein
  Stift-Symbol neben dem Text öffnet ein Textfeld zum Ändern, "Speichern" übernimmt
  den neuen Text sofort für alle Nutzer, "↺ Auf Standardtext zurücksetzen" macht eine
  Änderung wieder rückgängig. Betrifft 37 Hinweistexte über die ganze MCC-Ansicht
  verteilt (Teilnehmer, Personen, Export, Statistik, Kurse, u.a.).
- Dieser Punkt gilt für die MCC-Ansicht (mcc.html), da dort das Admin-Login existiert.
  Für Eltern-Ansicht, Kiosk, Anzeige und Startseite gibt es kein Admin-Login und damit
  keine Bearbeiten-Möglichkeit an Ort und Stelle.

## v265 (02.09.2026)

- Kopfzeile auf schmalen Handy-Bildschirmen (z.B. iPhone Pro Max) repariert: Titel und
  Logo wurden bei einer Admin-Anmeldung teils bis zur Unlesbarkeit zusammengequetscht –
  die Kopfzeile ordnet sich jetzt bei schmalen Bildschirmen sauber untereinander an.
- Tab "Teilnehmer" und Personenverwaltung: neue Sortierung wahlweise nach Nachname oder
  Vorname (Dropdown "Sortierung"), Standard weiterhin Nachname. Die A-Z-Sprungleiste im
  Tab "Teilnehmer" folgt dabei automatisch dem gewählten Sortierfeld.

## v264 (02.09.2026)

- Tab "Teilnehmer": Suchfeld, neues Kurs-Filter-Dropdown und die A-Z-Sprungleiste bleiben
  jetzt beim Scrollen durch die Namensliste oben im Fenster sichtbar (sticky), statt mit
  wegzuscrollen.
- Der rote "Nach oben"-Knopf steht in diesem Tab jetzt direkt neben der A-Z-Sprungleiste statt
  frei schwebend unten rechts.
- Neues Dropdown "Alle Kurse" über der Teilnehmerliste: schränkt die Liste optional auf einen
  einzelnen Kurs ein (Standard weiterhin: alle Teilnehmer aller Kurse).

## v263 (02.09.2026)

- Neuer Tab "⬇️ Export" innerhalb von "⚙️ Verwaltung", neben Verwaltung/Links/Passwort-Safe/Zugriffsrechte.
- Erster Export darin: "Abrechnung kassiertes Eintrittsgeld" – Liste je ausgewähltem Kurs
  (Nachname, Vorname, Jahreskarten-Nr. bzw. bar bezahlter Betrag), mit Summe je Kurs und
  Gesamtsumme, als Excel oder PDF. Nur Kurse mit Eintrittsmodus "Jährliches Eintrittsgeld"
  auswählbar, nur Teilnehmer mit für dieses Jahr bestätigtem Nachweis.
- Vorname und Nachname sind jetzt eigene, getrennte Felder bei Teilnehmern und Personen (bisher
  ein gemeinsames Namensfeld) – Grundlage für die Sortierung nach Nachname in Teilnehmer-Liste
  und Personenverwaltung sowie für den neuen Export.
- Bestehende Teilnehmer/Personen wurden dabei automatisch anhand einer Bestwert-Schätzung
  getrennt (bei zusammengesetzten Vor- oder Nachnamen im Einzelfall ungenau) – im
  Kontaktformular (Tab "Teilnehmer") bzw. in der Personenverwaltung von Hand korrigierbar.
  Ein erneuter Excel-Import liefert für den jeweiligen Teilnehmer wieder die exakte Trennung.

## v262 (02.09.2026)

- Tab "Teilnehmer": Feld "Mitglied der Ortsgruppe" ist jetzt direkt in der
  Schnell-Detailansicht sichtbar und bearbeitbar, zwischen "💾 Speichern"
  und "Erklärung" – unabhängig davon, ob der aktuelle Kurs eine
  Mitgliedschaft voraussetzt.
- Der Hinweis "(Voraussetzung für diesen Kurs)" erscheint dabei nur noch,
  wenn die Mitgliedschaft für den gerade angezeigten Kurs tatsächlich
  Pflicht ist.

## v261 (02.09.2026)

- **Neuer Tab "🔐 Zugriffsrechte"** innerhalb von "⚙️ Verwaltung", neben
  "Verwaltung"/"Links"/"Passwort-Safe": Struktur-, Basisstufen- und
  Rollen-Verwaltung sind zu einem gemeinsamen Zugriffspunkt "Struktur &
  Rollen" zusammengefasst, Anzeige-Passwort zu einem eigenen zweiten Punkt
  – beide vorher direkt auf der "⚙️ Verwaltung"-Seite.
- Zugriff auf "Struktur & Rollen" und "Anzeige-Passwort" lässt sich jetzt
  unabhängig voneinander pro Benutzer-Account vergeben (über "🔐
  Berechtigungen" im Profil oder "🔐 Wer ist berechtigt?" am Baum) statt
  wie bisher fest auf Super-Admin (bzw. bei Anzeige-Passwort auf alle
  Admins) beschränkt zu sein.
- Bestehende Admin-Accounts behalten automatisch Zugriff auf
  "Anzeige-Passwort"; "Struktur & Rollen" bleibt standardmäßig
  Super-Admin-only.
- Ein Super-Admin kann sich über keine Einstellung selbst aus "Struktur &
  Rollen" aussperren (gleicher Schutz wie bei "Verwaltung"/
  "Personenverwaltung").

## v260 (01.09.2026)

- **Neu: "Wer ist berechtigt?" in der Struktur-Verwaltung.** Wunsch: "hier
  hätte ich gerne für alle Einträge die Möglichkeit zu sehen wer alles
  dafür berechtigt ist und das zu bearbeiten". Jeder Eintrag im Baum der
  Struktur-Verwaltung (⚙️ Verwaltung → 🌳 Struktur-Verwaltung) hat jetzt
  einen Knopf "🔐 Wer ist berechtigt?", der für genau diesen Bereich alle
  Accounts mit ihrer jeweils wirksamen Berechtigung auflistet (Standard
  über Rolle/Gruppe oder eine individuelle Ausnahme) – und direkt dort
  auch bearbeitbar macht, ohne erst zum jeweiligen Benutzer-Profil
  wechseln zu müssen.
- **Passwort-Safe: einzelne Benutzer unabhängig von ihrer Rolle
  berechtigen.** Wunsch: "und für den Passwort Safe muss man einzelne
  Benutzer berechtigen können unabhängig ob admin oder Benutzer". Der
  Zugriff auf den Passwort-Safe war bisher fest an die Rolle Super-Admin
  gekoppelt. Jetzt lässt sich – genau wie bei jedem anderen Bereich der
  App – über "🔐 Wer ist berechtigt?" (oder das bestehende
  "🔐 Berechtigungen"-Panel im Benutzerprofil) einzelnen Accounts Zugriff
  auf den Passwort-Safe geben, unabhängig von deren Rolle. Das zusätzliche
  persönliche Safe-Passwort (siehe v259) bleibt davon unberührt weiterhin
  Pflicht.

## v259 (01.09.2026)

- **Neu: Passwort-Safe für Vereins-Zugänge.** Wunsch: "neben der ToDo Liste
  benötigen wir noch einen Passwort Safe, dieser muss natürlich neben der
  Berechtigung noch ein Passwort benötigen. In diesem Safe sollen die
  Zugänge des Vereins gesichert werden". Neuer Menüpunkt "🔐 Passwort-Safe"
  im Bereich "⚙️ Verwaltung" zum Ablegen von Vereins-Zugängen (Homepage,
  Cloud-Speicher, Social Media, ...) mit Bezeichnung, Benutzername,
  Passwort, URL und Notiz. Nur Super-Admins sehen den Menüpunkt überhaupt,
  UND jeder Super-Admin richtet zusätzlich ein eigenes, persönliches
  Safe-Passwort ein, das mit dem normalen Login-Passwort nichts zu tun hat
  – erst beide zusammen (Rolle UND Safe-Passwort) öffnen den Safe. Ein
  vergessenes/zurückgesetztes Safe-Passwort zerstört keine gespeicherten
  Zugänge (unabhängige, serverseitige Verschlüsselung). Passwörter werden
  in der Liste standardmäßig verdeckt angezeigt und erst per Klick auf "👁
  anzeigen" bzw. "📋 kopieren" offengelegt.

## v258 (01.09.2026)

- **Neu: Geschwister-Ansicht "Kind wechseln" in der Eltern-App.** Wunsch:
  "ja eine Geschwister Ansicht wäre gut da wir viele Familien haben in der
  Eltern (Teilnehmer) App könnte es ein Dropdown Feld geben mit 'Kind
  wechseln' oder ähnlich". Meldet sich ein Elternteil mit einer E-Mail-
  Adresse an, die bei mehreren Kindern hinterlegt ist, erscheint jetzt
  direkt im angemeldeten Bereich ein Dropdown "👨‍👩‍👧‍👦 Kind wechseln" –
  damit lässt sich zwischen den Kindern derselben Familie umschalten, ohne
  sich ab- und mit einem anderen Code/Passwort neu anzumelden. Familien mit
  nur einem Kind sehen wie bisher kein Dropdown. Aus Sicherheitsgründen
  wird beim Wechsel weiterhin automatisch im Hintergrund das Passwort des
  Kindes geprüft, mit dem man sich ursprünglich angemeldet hat, und nur ein
  nachweislich per E-Mail-Adresse verknüpftes Geschwisterkind akzeptiert –
  der 2026 eingeführte Passwortschutz für die vollen Eltern-Daten bleibt
  dadurch unangetastet. Ein Browser-/App-Neustart merkt sich das zuletzt
  angezeigte Kind.

## v257 (01.09.2026)

- **Korrektur: Mitgliedschaft (Ortsgruppe) im Personenstamm nicht
  auffindbar.** Rückmeldung: "ich finde den Punkt nicht wo ich Benutzern
  und Teilnehmern die Mitgliedschaft zuteile". Bisher ließ sich die
  Mitgliedschaft nur im Tab „Teilnehmer" pflegen, und auch dort nur bei
  Kursen mit aktivierter Mitgliedschafts-Pflicht – für reine
  Benutzer-Accounts (Trainer, Einsatzkräfte, ...) ohne Kurs-Teilnahme gab
  es überhaupt keine Stelle dafür. Der Personenstamm (Reiter „Hauptdaten")
  zeigt jetzt für JEDE Person eine eigene Karte „Mitgliedschaft" mit einer
  einfachen Checkbox „Mitglied der Ortsgruppe" – unabhängig von einer
  eventuellen Kurs-Teilnahme oder deren Mitgliedschafts-Pflicht.

## v256 (01.09.2026)

- **Neu: Benachrichtigungsfunktion für die ToDo-Liste.** Wunsch: "eine
  Benachrichtigungsfunktion an unser Nachrichtensystem sollte auch noch in
  die ToDo Liste eingebaut werden". Betroffene Accounts bekommen jetzt
  automatisch eine System-Nachricht (samt Push, sofern aktiviert) im
  gewohnten "💬 Nachrichten"-Bereich, gesammelt in einem eigenen Thread "🔔
  System-Benachrichtigungen": bei Zuweisung einer Aufgabe, bei nahender
  (heute/morgen fällig) oder überschrittener Fälligkeit sowie sobald eine
  Aufgabe als erledigt markiert wird (dann bekommt der Ersteller Bescheid).
  Jede dieser drei Situationen benachrichtigt nur einmalig – erneutes
  Speichern einer unveränderten Zuweisung oder ein wiederholter
  Fälligkeits-Check lösen keine doppelten Nachrichten aus.
- **Korrektur: Eltern-Chat-Gruppe erschien in der Nachrichten-Gruppen-
  Auswahl.** Rückmeldung: "in den Nachrichten an eine Gruppe muss die
  Eltern Nachrichten auch noch weg". Die Gruppe, die unter "👪 Eltern-Chat"
  festlegt, wer Eltern-Chats sehen darf, ist eine reine Rechte-Markierung
  und taucht deshalb jetzt nicht mehr als Ziel in "Nachricht an eine
  Gruppe" auf.

## v255 (01.09.2026)

- **ToDo-Liste: Unterkategorien jetzt als Buttons.** Wunsch: "die
  unterkategorien hätte ich gerne auch als buttons, wenn ich auf eine
  hauptkategorie klicke gehen die unterkategorien auf". Die bisherige
  Dropdown-Auswahl der Unterkategorie ist einer Buttonreihe gewichen, die
  automatisch aufklappt, sobald man auf eine Hauptkategorie klickt – exakt
  dieselbe Optik wie die Hauptkategorien-Tabs darüber, nur eine Stufe
  kleiner. Hat eine Hauptkategorie keine Unterkategorien, bleibt die
  Buttonreihe ganz ausgeblendet.

## v254 (01.09.2026)

- **Korrektur: Profilbild im Personenstamm nicht sichtbar.** Rückmeldung:
  "wenn ich auf mein Profil gehe sehe ich mein Profilbild, gehe ich aber in
  meinen Personenstamm ist es nicht sichtbar". Die Profil-Antwort für die
  Personenstamm-Seite hatte das Feld, das dem Frontend mitteilt, ob
  überhaupt ein Profilbild hinterlegt ist, schlicht vergessen mitzugeben –
  die Vorschau erschien deshalb nie, unabhängig davon, ob ein Bild
  hochgeladen war. Jetzt behoben, Bilder erscheinen im Personenstamm wieder
  wie gewohnt.

## v253 (01.09.2026)

- **Neu: "Nach oben"-Button.** Wunsch: "Die Teilnehmerlisten brauchen einen
  'nach oben' Button sonst scrollt man sich wund ;-)". Ein schwebender
  Pfeil-Knopf unten rechts erscheint jetzt beim Herunterscrollen auf jeder
  langen Liste (Teilnehmer, Übersicht, Archiv, Trainer, ToDo-Liste, ...)
  und scrollt per Klick sanft zurück nach oben.
- **Nachrichten: "An alle" entfernt, "Schwimmkursteilnehmer"/"Besucher"
  aus der Gruppen-Auswahl entfernt.** Rückmeldung: "bei den Nachrichten,
  'an alle' weg, bei den Schwimmkursteilnehmern als Gruppe ist das Problem
  dass die Teilnehmer ja evtl. nächstes Jahr nicht mehr dabei sind, dann
  schreibe ich an Leute die nicht mehr teilnehmen, bei der Gruppe Besucher
  ist es das gleiche". Beide betroffenen Ziele erfassten auch längst nicht
  mehr aktive Familien, da die Gruppenzugehörigkeit aus JEDER jemals
  bestehenden Kursteilnahme berechnet wurde, unabhängig davon, ob der Kurs
  noch läuft. "An alle" ist komplett entfallen, "Schwimmkursteilnehmer" und
  "Besucher" stehen bei Nachrichten nicht mehr zur Auswahl. "An alle mit
  aktivem Kurs" bleibt wie gewohnt verfügbar und deckt den eigentlich
  gemeinten Anwendungsfall ab, ohne ehemalige Teilnehmer anzuschreiben.
- **Korrektur: ToDo-Liste (v252) landete bei individuell umstrukturierten
  Installationen an der falschen Stelle.** Rückmeldung samt Screenshot:
  "die ToDo Liste ist unter den Medizinprodukten gelandet, die gehört eine
  Ebene Höher quasi neben Medizin und PSA". Die neue Version korrigiert die
  Platzierung automatisch beim nächsten Start – die ToDo-Liste erscheint
  danach direkt neben "Medizinprodukte" und "PSA" im Bereich "Einsatz",
  kein manueller Eingriff nötig.

## v252 (01.09.2026)

- **Neu: ToDo-Liste im Bereich "🚑 Einsatz".** Wunsch: "jetzt hätte ich
  gerne noch eine ToDo Liste im Einsatzbereich, hier sollen die
  Hauptkategorien wieder mit Rechten versehen werden, das ganze voll
  konfigurierbar, neue Hauptkategorien anlegen unterkategorien anlegen"
  plus "und man muss Aufgaben an Benutzer zuweisen können". Der neue
  Unterpunkt "ToDo-Liste" erscheint automatisch im Bereich "Einsatz"
  (Standard: Gruppe "Einsatzkraft", wie die anderen Einsatz-Unterpunkte).
  Super-Admins können darin unter "⚙️ Hauptkategorien verwalten" beliebig
  viele Hauptkategorien (z.B. "Fahrzeuge", "Material") anlegen, umbenennen,
  sortieren und löschen – jede Hauptkategorie bekommt dabei ihre eigene
  Standard-Zugriffsregel (Rollen ODER eine Gruppe), exakt wie bei den
  bestehenden Bereichen/Unterbereichen. Individuelle Ausnahmen pro Account
  werden wie gewohnt in der Personenverwaltung unter "🔐 Berechtigungen"
  des jeweiligen Accounts gepflegt (dort erscheinen die Hauptkategorien
  jetzt als eigener Abschnitt neben dem bisherigen Bereichs-Baum). Innerhalb
  einer Hauptkategorie lassen sich optional Unterkategorien anlegen (z.B.
  "MTW"/"RTW" unter "Fahrzeuge") – eine Aufgabe kann, muss aber nicht einer
  Unterkategorie zugeordnet werden. Jede Aufgabe hat einen Titel, optional
  eine Beschreibung, eine Priorität (niedrig/normal/hoch), ein
  Fälligkeitsdatum und lässt sich gleichzeitig mehreren Benutzer-Accounts
  zuweisen. Wer für eine Hauptkategorie nur "lesend" freigeschaltet ist,
  sieht ihre Aufgaben, kann sie aber nicht anlegen/bearbeiten/erledigen.

## v251 (01.09.2026)

- **Korrektur: Im "Eintrittsgeld"-Schnell-Popup beim Einlass scannen
  konnte man nicht tippen.** Rückmeldung: "ich kann hier kein Guthaben
  einbuchen immer wenn ich etwas tippen will springt es in das Scannfeld
  und schreibt dort". Der Mechanismus, der beim Scannen den Cursor
  automatisch im Scanner-Eingabefeld hält, hat auch Klicks in ein offenes
  Popup (z.B. das "Eintrittsgeld"-Popup mit dem Guthaben-Einbuchen-
  Formular) mit erfasst und den Fokus sofort wieder zurückgerissen. Ein
  offenes Popup wird jetzt von diesem Mechanismus ausgenommen.
- **Korrektur: Untertitel im Teilnehmer-Bereich entfernt.** Der Untertitel
  "Abwesenheit für den Schwimmkurs melden" unter der Überschrift ist
  entfallen – der Bereich deckt längst mehr ab als nur die
  Abwesenheitsmeldung.
- **Neu: Link zum Online-Mitgliedsantrag im Teilnehmer-Bereich.** Ist für
  den Kurs eine Mitgliedschaft in der Ortsgruppe erforderlich und der
  Teilnehmer laut unseren Daten noch kein Mitglied, erscheint jetzt eine
  Karte "Mitgliedschaft" mit einem Link "Mitgliedschaft für diesen Kurs
  verpflichtend – jetzt Mitglied werden" zum Online-Mitgliedsantrag. Die
  Karte verschwindet automatisch, sobald ein Trainer/Admin die
  Mitgliedschaft in MCC bestätigt hat.

## v250 (01.09.2026)

- **Korrektur: Layout auf dem Handy war teils abgeschnitten/zu breit.**
  Rückmeldung: "Auf dem Handy ist alles etwas außerhalb und zu groß". Auf
  schmalen Bildschirmen drückten einzelne, sehr lange Wörter ohne
  Umbruchstelle (z.B. "Gesundheitserklärung") die Kopfzeile bzw. einzelne
  Karten-Überschriften über den rechten Bildschirmrand hinaus, wodurch die
  ganze Seite horizontal verschoben/abgeschnitten wirkte – betraf u.a. die
  Einverständnis-/Gesundheitserklärung-Seite und die "Guthaben"/
  "Eintrittsgeld"-Karten im Eltern-Bereich. Jetzt bricht auch ein einzelnes
  langes Wort korrekt innerhalb der Zeile um, die Kopfzeile schrumpft
  außerdem sauber statt sich zu verweigern. Betrifft alle Seiten mit
  diesem Layout (MCC, Eltern-Bereich, Erklärung, Kiosk, Live-Anzeige
  usw.).
- **Korrektur: Knopf-Beschriftung in der Einverständniserklärung.** Der
  Knopf "Anderes Kind / Abmelden" unten auf der
  Einverständnis-/Gesundheitserklärung-Seite heißt jetzt "Abbrechen".

## v249 (01.09.2026)

- **Neu: Guthaben-Konto jetzt auch für Eltern sichtbar.** Rückmeldung: "in
  der Elternansicht muss bei Teilnahme an einem solchen Kurs das Guthaben
  und der Verlauf sichtbar sein". Eltern, deren Kind in einem Kurs mit
  Eintritt pro Kurstag (z.B. Winterschwimmen) angemeldet ist, sehen jetzt
  im Eltern-Bereich eine neue "Guthaben"-Karte mit dem aktuellen
  Kontostand (inkl. Warnhinweis bei aufgebrauchtem Guthaben) sowie einen
  "🕒 Verlauf"-Knopf mit allen bisherigen Ein-/Abbuchungen. Rein
  informativ – das Einbuchen selbst bleibt weiterhin Trainern/Admins
  vorbehalten.
- **Geprüft: Guthaben-Anzeige ("Pille") nur bei "pro Kursteilnahme".**
  Rückmeldung: "die Anzeige der Pille und des Guthabens soll überall nur
  sichtbar sein wenn bei dem Kurs 'pro Kursteilnahme' ausgewählt ist".
  Alle bestehenden Guthaben-Anzeigen (Tab "Teilnehmer", Einlass-Roster,
  Übersicht-Matrix, Kurs-Verwaltung) wurden überprüft und sind bereits
  korrekt an den Eintritts-Modus "pro Kursteilnahme" gekoppelt – hier war
  keine Korrektur nötig.

## v248 (01.09.2026)

- **Neu: Anleitungssammlung (Medizinprodukte UND PSA) jetzt bearbeitbar.**
  Rückmeldung: "in beiden Anleitungssammlungen muss bei passender
  Berechtigung die Bearbeitung möglich sein". Bisher ließ sich ein
  Tippfehler in Hersteller/Modell nur durch Löschen und komplett neu
  Hochladen der PDF-Datei korrigieren – jetzt gibt es in beiden Bereichen
  einen "✏️ bearbeiten"-Knopf (sichtbar mit demselben Schreibrecht wie
  "🗑 entfernen"), der Hersteller und Modell direkt in der Liste ändert,
  ohne die Datei erneut hochladen zu müssen.
- **Neu: Suchfunktion in beiden Anleitungssammlungen.** Rückmeldung:
  "benötigen wir auch in beiden eine Suchfunktion die nach Titel Model
  und auch im Dateinamen sucht". Ein Suchfeld über der jeweiligen Liste
  filtert sofort nach Hersteller, Modell oder Dateiname.
- **Korrektur: fehlendes Leerzeichen in "Mönsheim Control Center".** In
  der Titelzeile stand bisher überall "Mönsheim ControlCenter" ohne
  Leerzeichen – jetzt durchgängig "Mönsheim Control Center" (Titelleisten,
  PWA-Name, Passwort-Zurücksetzen-Mail).
- **Umbenennung: "Enthaftungserklärung" heißt jetzt "Einverständnis-
  erklärung".** Betrifft alle Titel/Überschriften/Meldungen rund um die
  Eltern-Erklärung (Seite, Eltern-Bereich-Karte, Tab "Teilnehmer",
  Mail-Benachrichtigung, Startseiten-Kachel) – die Startseiten-Kachel wird
  dabei nur umbenannt, wenn sie noch beim alten Standardtitel steht; eine
  von Torsten selbst umbenannte Kachel bleibt unangetastet.

## v247 (01.09.2026)

- **Neu: Guthaben-Konto für die Winterschwimmkurse (Eintritt pro Kurstag).**
  Rückmeldung: "die Kinder zum Winterschwimmen zahlen am Start der
  Wintersaison ein Guthaben ein, das müssen wir noch einbuchen und davon
  geht dann der Beitrag pro Kursteilnahme ab, wenn das Guthaben nicht mehr
  reicht brauchen wir einen Hinweis, dann muss nach gebucht werden auch
  wenn ein Minus von 20€ auf dem Konto geduldet wird aber den 'Kontostand'
  müssen wir sehen können". Für Kurse mit Eintritt pro Kurstag gibt es
  jetzt ein echtes Guthaben-Konto pro Teilnehmer:
  - Im Tab "Teilnehmer"/Schnell-Popup lässt sich jederzeit ein Betrag
    einbuchen (Saisonstart-Einzahlung oder spätere Nachbuchung), mit
    optionalem Grund.
  - Sobald ein Trainer einen Kurstag auf "anwesend" setzt (egal ob per
    Einlass-Scan oder manuell im Tab Teilnehmer/Übersicht), wird der
    Kursbeitrag automatisch vom Guthaben abgebucht – kein separates
    Abhaken mehr nötig. Wird der Status später wieder von "anwesend"
    wegkorrigiert, wird die Abbuchung automatisch storniert.
  - Der aktuelle Kontostand ist überall sichtbar, wo bisher schon der
    Eintrittsgeld-/Mitgliedschafts-Status stand (Tab Teilnehmer, Übersicht,
    Einlass-Scannen) – reicht das Guthaben nicht mehr, erscheint ein
    Warnhinweis, der bei Überschreiten einer pro Kurs einstellbaren
    Toleranzgrenze (Standard 20€ Minus) zusätzlich eskaliert; am Einlass
    leuchtet der Monitor dann wie bei einem fehlenden Nachweis rot.
  - Über "🕒 Verlauf" lässt sich die vollständige Buchungshistorie eines
    Teilnehmers einsehen – jede Einzahlung, jede automatische Abbuchung
    und jede Stornierung einzeln mit Datum, Betrag und Grund, statt nur
    des reinen Kontostands.
  - Die Toleranzgrenze ist wie der Eintrittsbetrag pro Kurs einstellbar
    (Tab "Kurse").
  - Die alte, seit v245 anklickbare "💶 bezahlt"-Pille am Kurstag ist damit
    entfallen – die Bezahlung läuft jetzt automatisch über das Guthaben.
- **Kleine Korrektur nebenbei entdeckt:** eine seit v245 bestehende
  Startup-Routine, die verwaiste Teilnehmer (ohne Personen-Verknüpfung)
  automatisch mit einer neuen Person verknüpft, hätte den kompletten
  Serverstart mit einem Datenbankfehler abbrechen können, sobald so ein
  Fall auftritt – behoben.

## v246 (01.09.2026)

- **Korrektur: "Mitgliedschaft Ortsgruppe erforderlich" ist jetzt ein
  eigener, unabhängiger Schalter statt eines eigenen Eintritts-Modus.**
  Rückmeldung direkt nach Auslieferung von v245: "das Feld 'Mitgliedschaft
  erforderlich' muss separat sein, es gibt Kurse da muss Eintritt gezahlt
  werden und die TN müssen Mitglied sein". Im Tab "Kurse" gibt es jetzt
  zwei getrennte Einstellungen pro Kurs: die Eintritts-Auswahl (kein
  Eintrittsgeld / jährliches Eintrittsgeld / Eintritt pro Kurstag) UND
  einen separaten Haken "Mitgliedschaft in der Ortsgruppe erforderlich" –
  ein Kurs kann jetzt beides gleichzeitig verlangen (z.B. jährliches
  Eintrittsgeld UND Mitgliedschaft). Ein bereits auf die alte,
  kurzlebige Einstellung "Mitgliedschaft Ortsgruppe erforderlich" (als
  Eintritts-Modus) gestellter Kurs wird beim Update automatisch auf "kein
  Eintrittsgeld" + den neuen Mitgliedschafts-Haken umgestellt, ohne
  Datenverlust. Am Einlass wird jetzt zusätzlich unabhängig geprüft, ob die
  Mitgliedschaft fehlt (eigene Meldung "Mitgliedschaft Ortsgruppe fehlt"),
  parallel zu einem eventuell zusätzlich fehlenden Eintrittsgeld-Nachweis.

## v245 (01.09.2026)

- **Neu: Eintritts-Modus pro Kurs einstellbar – nicht mehr für jeden Kurs
  dasselbe "15€ bzw. Jahreskarte".** Rückmeldung: "es müssen nicht für alle
  Kurse die 15€ bzw. die Jahreskarte vorgelegt werden, dafür brauchen wir
  einen Schalter, es gibt andere Kurse dafür müssen die Teilnehmer Mitglied
  in der Ortsgruppe sein und es gibt unsere Winterschwimmkurse für diese
  muss pro Termin Eintritt bezahlt werden". Im Tab "Kurse" lässt sich jetzt
  pro Kurs einer von vier Modi wählen:
  - **Kein Eintrittsgeld nötig** – für diesen Kurs gibt es gar keine
    Eintrittsgeld-/Mitgliedschafts-Karte mehr, weder im MCC noch im
    Eltern-Bereich.
  - **Jährliches Eintrittsgeld** (bisheriges Standardverhalten, jeder
    bestehende Kurs bleibt automatisch dabei) – 15€ bar oder
    Freibad-Jahreskarte, jetzt mit **einstellbarem Betrag statt fest
    "15€"**.
  - **Mitgliedschaft Ortsgruppe erforderlich** – neues Mitgliedschafts-Feld
    pro Person (Tab "Teilnehmer", von Trainer/Admin gepflegt), ersetzt dort
    die Eintrittsgeld-Karte durch einen einfachen Mitglied-Ja/Nein-Haken;
    in der Übersicht erscheint ein reiner Info-Chip.
  - **Eintritt pro Kurstag** (für die Winterschwimmkurse) – eine neue,
    von "Anwesend"/"Entschuldigt" unabhängige 💶-Markierung direkt am
    Kurstag (Roster wie Übersicht-Matrix), die der Trainer pro Termin
    abhakt; ebenfalls mit einstellbarem Betrag pro Kurstag.
  Der Preis ist dabei **pro Kurs einzeln** einstellbar, nicht global. Im
  Eltern-Bereich wird die "Eintrittsgeld"-Karte bei allem außer "Jährliches
  Eintrittsgeld" automatisch komplett ausgeblendet.
  **Bekannte Grenze:** die gedruckten Factsheet-/Kurzanleitung-PDFs
  erwähnen "15€ bar" weiterhin als festen Text – das sind eigenständige
  Dokumente außerhalb der App und ziehen einen geänderten Betrag nicht
  automatisch nach.

## v244 (01.09.2026)

- **Neu: Verlauf einer einzelnen Anwesenheit einsehbar (🕓-Symbol).** Zur
  Klärung, warum eine früher gesetzte Entschuldigung an einem Kurstag jetzt
  wieder als "unbekannt" erscheint: in der Übersicht/Kurstag-Matrix und
  beim Einlass scannen zeigt ein neues 🕓-Symbol direkt neben "Anw"/"Ent"
  den kompletten protokollierten Verlauf dieser einen Zeile – wer wann was
  gesetzt (oder zurückgesetzt) hat. So lässt sich direkt in der
  Oberfläche nachvollziehen, ob eine Markierung überhaupt je gespeichert
  wurde, statt raten zu müssen.

## v243 (01.09.2026)

- **"Urlaub"-Rückmeldung erneut geprüft: Migration existiert bereits und
  läuft automatisch – Diagnose-Ergänzung für den Nachweis.** Rückmeldung:
  "die bisher auf 'Urlaub' entschuldigten Personen sollte auf 'Entschuldigt'
  geändert werden, so sind die quasi alle unentschuldigt". Diese Umstellung
  gibt es bereits seit v222 (automatische, einmalige Migration bei jedem
  Serverstart) und wurde jetzt erneut isoliert nachgestellt: sie funktioniert
  zuverlässig, ein Fehler im Code war nicht zu finden. Vermutlich hat der
  Live-Server bisher schlicht noch keine Version ab v222 durchlaufen – ein
  Deployment dieser Version reicht dann aus, die Umstellung läuft beim
  Hochfahren automatisch mit, ohne dass etwas manuell angestoßen werden
  muss. Damit sich das nach dem nächsten Update direkt nachvollziehen
  lässt, protokolliert der Server jetzt zusätzlich in den Container-Logs,
  wie viele Zeilen dabei tatsächlich umgestellt wurden. Sollte danach
  wirklich noch jemand fälschlich als unentschuldigt auftauchen, bitte mit
  Name/Kurs melden, damit das gezielt in den echten Daten geprüft werden
  kann.

## v242 (01.09.2026)

- **Eltern-Chat-Korrektur: Trainer-Antworten stehen wieder rechts.** Nach
  der v241-Änderung standen im Eltern-Chat versehentlich ALLE Nachrichten
  links, auch die eigenen Antworten. Jetzt gilt: jede Nachricht vom Verein
  (egal welcher Trainer/Admin) steht rechts, jede Nachricht der Familie
  links – welcher Trainer genau geantwortet hat, steht wie seit v241 im
  Namen über der Nachricht.

## v241 (01.09.2026)

- **Wer hat das geschrieben? Name steht jetzt wieder in der Sprechblase.**
  In Team-Gruppenchats und im Eltern-Chat schreiben oft mehrere Personen
  (mehrere Kollegen, bzw. beide Elternteile und mehrere verschiedene
  Trainer/Admins) – dort steht der Name des Absenders jetzt wieder direkt
  in jeder Sprechblase. Bei einem normalen Chat zwischen genau zwei
  Personen bleibt es wie gewohnt ohne Namenszeile, weil dort im Titel
  bereits klar steht, mit wem man schreibt.
- **Eltern-Chat: alle Nachrichten stehen jetzt links.** Da im Eltern-Chat
  verschiedene Trainer/Admins antworten können, hätte dieselbe
  Kollegen-Nachricht je nachdem, wer gerade zuschaut, mal rechts und mal
  links gestanden – verwirrend und kaum von einer echten Eltern-Nachricht
  zu unterscheiden. Jetzt stehen im Eltern-Chat grundsätzlich alle
  Nachrichten links, erkennbar bleibt "wer war das" über den Namen in der
  Sprechblase. Team-Gruppenchats behalten die gewohnte Aufteilung (eigene
  Nachrichten rechts).

## v240 (01.09.2026)

- **Freibad-Nachweis-Chip in der Übersicht ist jetzt anklickbar.** Wer in
  der Übersicht auf "Freibad-Nachweis fehlt noch" (oder "veraltet" oder
  eine offene, rot blinkende Eltern-Meldung) klickt, bekommt sofort ein
  kleines Popup mit genau denselben Bearbeiten-Möglichkeiten wie im Tab
  "Teilnehmer" – Art auswählen, Kartennummer eintragen, offene Meldung
  bestätigen/ablehnen, Foto ansehen – ganz ohne den Tab wechseln zu müssen.
  Nach dem Speichern aktualisiert sich sowohl das Popup als auch die
  Übersicht-Tabelle dahinter automatisch.

## v239 (01.09.2026)

- **Einverständnis-/Gesundheitserklärung und Eintrittsgeld-Karte im
  Eltern-Bereich springen jetzt an die passende Stelle.** Solange die
  Erklärung bzw. das Eintrittsgeld fürs laufende Jahr noch nicht erledigt
  ist, stehen die beiden Karten jetzt ganz oben – noch vor "Abwesenheit
  eintragen", damit sie nicht übersehen werden. Sobald erledigt (Erklärung
  eingereicht/als Papier vorgelegt; Eintrittsgeld bestätigt oder zumindest
  schon gemeldet), wandert die jeweilige Karte automatisch nach unten,
  direkt unter das Nachrichten-Feld.

## v238 (01.09.2026)

- **Eintrittsgeld/Freibad-Jahreskarte: neue Meldewege für Eltern.** Auf der
  neuen Karte "Eintrittsgeld / Freibad-Jahreskarte" im Bereich Teilnehmer
  können Eltern jetzt selbst tätig werden: entweder ankündigen "Wir zahlen
  15€ bar" (die Anzeige im Tab "Teilnehmer" blinkt danach so lange rot, bis
  ein Trainer/Admin den tatsächlichen Bargeld-Eingang bestätigt), oder die
  Jahreskarten-Nummer zusammen mit einem Foto der Karte einreichen (löst
  eine interne Mail mit dem Foto als Anhang aus, damit ein Trainer/Admin
  das prüfen und dann im Tab "Teilnehmer" bestätigen oder ablehnen kann).
  Der bisherige dritte Weg – die Jahreskarte wird persönlich am Einlass
  vorgezeigt – bleibt unverändert: ein Trainer/Admin hakt das weiterhin
  direkt ab. Die neue Mail lässt sich wie die anderen internen
  Benachrichtigungen unter "⚙️ Verwaltung" → "Benachrichtigungen"
  ein-/ausschalten und mit eigener Empfänger-Adresse versehen.

## v237 (01.09.2026)

- **"Zu viele Versuche"-Meldung kommt nicht mehr so schnell.** Das
  gemeinsame Limit für den Eltern-/Erklärung-/Event-Zugang (ohne
  klassisches Login) lag bei 20 Aufrufen pro Minute je Besucher – davon
  gingen allein durchs Nachrichten-Hintergrund-Polling im Eltern-Bereich
  schon rund 7 drauf, sodass ein paar normale Klicks (Kurstag
  entschuldigen, eine Nachricht schicken) das Limit schnell erreicht
  haben. Jetzt sind es 60 pro Minute.

## v236 (01.09.2026)

- **Anmeldung im Eltern-Bereich jetzt auch per E-Mail-Adresse.** Bisher
  ging das nur mit TeilnehmerID, Master-ID oder dem QR-Code der Karte.
  Jetzt reicht im selben Eingabefeld auch eine der für das Kind
  hinterlegten E-Mail-Adressen (Kind selbst oder Erziehungsberechtigte/r 1
  oder 2) – analog zum bestehenden E-Mail-Login im MCC-Bereich für
  Trainer/Admins. Gibt es mehrere Kinder mit derselben Eltern-E-Mail
  (Geschwister), erscheint wie gewohnt eine Auswahl.

## v235 (01.09.2026)

- **Qualifikationen im Eltern-Bereich jetzt als Popup.** Die in v233 neu
  eingeführte, immer sichtbare Karte "🏅 Qualifikationen" ist jetzt ein
  Knopf oben neben "Angemeldet als" (neben "✏️ Meine Kontaktdaten"), der
  die Liste als Popup öffnet – schlanker im Seitenfluss.
- **Erklärung-Pflicht im Eltern-Bereich nach Geburtsdatum-Änderung
  korrigiert.** Derselbe Fehler wie in v233 (dort für die admin-seitige
  Personen-Detailseite behoben) steckte auch im Eltern-Bereich: wurde das
  Geburtsdatum eines Kindes in der Personenverwaltung geändert, zeigte der
  Eltern-Bereich bei der Erklärung weiterhin den alten Stand. Ist jetzt
  ebenfalls korrigiert.

## v234 (01.09.2026)

- **Personen aus der Personenverwaltung können jetzt einem Kurs
  hinzugefügt werden.** Eine Person ohne Kurs-Teilnahme (z.B. gerade erst
  in der Personenverwaltung neu angelegt, oder ein reiner Trainer/eine
  reine Einsatzkraft) hat in ihrer Zeile jetzt einen neuen "+ Kurs"-Knopf:
  Kurs auswählen, optional eine TeilnehmerID eintragen, fertig – Name und
  Geburtsdatum werden dabei automatisch von der Person übernommen. Sobald
  eine Person eine Kurs-Teilnahme hat, läuft das Hinzufügen weiterer Kurse
  weiterhin wie gewohnt direkt beim Teilnehmer im Tab "Teilnehmer".

## v233 (01.09.2026)

- **Erklärung-Pflicht nach Geburtsdatum-Änderung korrigiert.** Wurde das
  Geburtsdatum einer Person in der Personenverwaltung (Reiter "Hauptdaten")
  nachträglich geändert, zeigte der Reiter "Dokumente" bei der
  Erklärungs-Pflicht weiterhin den ALTEN Stand (z.B. "Erklärung nicht
  nötig (soweit bekannt volljährig)", obwohl das Kind laut neuem
  Geburtsdatum längst minderjährig war) – das Geburtsdatum wird dort auf
  der Person gespeichert, die Erklärungs-Pflicht wurde aber noch vom alten,
  separaten Teilnehmer-Geburtsdatum berechnet. Ist jetzt behoben, beide
  Anzeigen nutzen dieselbe aktuelle Grundlage.
- **Qualifikationen jetzt auch im Eltern-Bereich sichtbar.** Neue Karte
  "🏅 Qualifikationen" zeigt Eltern/Kindern dieselben erreichten
  Qualifikationsstufen mit Datum, die bisher nur admin-seitig (Reiter
  "Qualifikationen" in der Personenverwaltung bzw. Popup im
  Teilnehmer-Tab) einsehbar waren.

## v232 (01.09.2026)

- **PSA-Bereich-Korrektur nachgebessert.** Die letzte Änderung hatte die
  Anleitungssammlung fälschlich in einen komplett neuen, eigenständigen
  Bereich "PSA" gepackt, statt in euren bereits bestehenden Unterordner
  "PSA" innerhalb von "🚑 Einsatz". Das ist jetzt korrigiert – die
  Anleitungssammlung hängt jetzt direkt unter eurem "PSA"-Ordner, neben
  "PSA gegen Absturz" und "PSA gegen ertrinken", der fälschlich angelegte
  Ersatz-Bereich wird beim Update automatisch wieder entfernt.
- **Hinweis zum "als Super-Admin kann ich nichts hinzufügen"-Problem:**
  Rechte werden bei euch beim Login einmal geladen und im Browser
  gemerkt – wer schon eingeloggt war, bevor ein Update mit einer neuen
  Funktion läuft, muss sich einmal ab- und wieder anmelden, damit die neue
  Berechtigung ankommt. Ein frisch eingeloggter Super-Admin hat nach
  diesem Update wieder vollen Zugriff auf die PSA-Anleitungssammlung.

## v231 (01.09.2026)

- **Anleitungssammlung (PSA) zieht in den Bereich "PSA" um.** Auf
  Rückmeldung: sie stand bisher innerhalb von "🚑 Einsatz", steht jetzt in
  eurem eigenen, bereits vorhandenen Bereich "PSA". Funktioniert
  unverändert, nur an der richtigen Stelle in der Navigation.
- **Elternchats sind jetzt eindeutig gekennzeichnet.** In der
  Nachrichten-Ansicht steht hinter dem Namen einer Familie im Chat jetzt
  "(Elternchat)", damit sofort erkennbar ist, dass es sich um den Chat mit
  dieser Familie handelt und nicht z.B. um einen Team-Gruppenchat mit
  einem gleichnamigen Kollegen.
- **Neuer Button "🏅 Qualifikationen" im Tab "Teilnehmer".** Im
  aufklappbaren Teilnehmer-Panel öffnet der neue Knopf ein Popup mit allen
  bisher abgelegten Qualifikationen dieses Teilnehmers samt
  Erreichungsdatum (und Registriernummer, falls hinterlegt) – ein schneller
  Blick, ohne extra auf die volle Personen-Detailseite wechseln zu müssen.
  Bearbeiten bleibt weiterhin dem Reiter "Qualifikationen" dort vorbehalten.

## v230 (01.09.2026)

- **Anleitungssammlung jetzt auch für PSA.** Im Bereich "Einsatz" gibt es
  neben der bisherigen Anleitungssammlung (für Medizinprodukte) jetzt eine
  eigene, unabhängige Anleitungssammlung für Persönliche Schutzausrüstung
  (PSA) – z.B. Rettungswesten, Helme, Neoprenanzüge. Je Hersteller+Modell
  kann eine PDF-Anleitung hinterlegt, angesehen und ersetzt werden, genau
  wie bei den Medizinprodukten. Die Berechtigung dafür ist eigenständig
  vergebbar (unabhängig vom Recht für die Medizinprodukte-Anleitungen).
- **Zeitangabe bei abgelegten Erklärungen korrigiert.** Beim Öffnen einer
  archivierten Version der Einverständnis-/Gesundheitserklärung ("Frühere
  Versionen anzeigen") stand im PDF selbst sowie im heruntergeladenen
  Dateinamen bisher die Uhrzeit in UTC statt in unserer Ortszeit (1-2
  Stunden Differenz). Das ist jetzt korrigiert.

## v229 (01.09.2026)

- **Admins können jetzt auch das Eltern-Passwort zurücksetzen.** Bisher
  gab es dafür nur zwei Wege für die Eltern selbst: "Passwort ändern"
  (braucht das alte Passwort) oder "Passwort vergessen" (schickt ein
  neues an die hinterlegte E-Mail-Adresse). Steckte eine Familie fest –
  z.B. weil keine E-Mail-Adresse hinterlegt war – kam bisher niemand mehr
  rein. Auf der Teilnehmer-Detailseite, Reiter "Kontakt", steht jetzt
  unter "Zugang zum Eltern-Bereich", ob ein Passwort gesetzt ist, und ein
  Knopf "🔄 Eltern-Passwort zurücksetzen". Danach erscheint beim nächsten
  Öffnen des Eltern-Bereichs für dieses Kind automatisch wieder das
  Einrichten-Fenster – die Familie vergibt sich direkt selbst ein neues
  Passwort, ganz ohne E-Mail-Versand.

## v228 (01.09.2026)

- **"Passwort vergessen?" jetzt auch für den Benutzer-/Admin-Login.** Wer
  sein MCC-Passwort vergessen hat, muss dafür nicht mehr zwingend einen
  Admin bitten: Auf der Login-Seite gibt es jetzt einen
  "Passwort vergessen?"-Link. Benutzername oder E-Mail eingeben, und ein
  neues Passwort wird an die hinterlegte E-Mail-Adresse geschickt. Die
  bisherige Möglichkeit, dass ein Admin über "⚙️ Verwaltung" →
  Benutzerverwaltung das Passwort eines Kontos manuell setzt, bleibt
  natürlich weiterhin bestehen.

## v227 (01.09.2026)

- **Benutzer-Login jetzt auch mit E-Mail-Adresse möglich.** Wer sich im
  MCC-Bereich anmeldet, kann statt des Benutzernamens auch die hinterlegte
  E-Mail-Adresse eingeben – egal ob es die eigene E-Mail des Kindes oder
  die eines Erziehungsberechtigten ist. Der Benutzername funktioniert wie
  gewohnt weiterhin.
- **"Meine Kontaktdaten" ist jetzt ein Popup.** Die in v226 eingeführte
  Karte zum Bearbeiten der eigenen Kontaktdaten im Eltern-Bereich stand
  bisher fest auf der Seite und hat sie unübersichtlich gemacht. Jetzt gibt
  es dafür einen kleinen Knopf direkt neben "Angemeldet als [Name]" oben,
  der die Kontaktdaten in einem Fenster öffnet – die Seite bleibt dadurch
  deutlich aufgeräumter.

## v226 (01.09.2026)

- **Eltern können jetzt ihre Kontaktdaten selbst pflegen.** Im Eltern-Bereich
  gibt es eine neue Karte "Meine Kontaktdaten" – dort lassen sich Adresse,
  Telefonnummern und E-Mail (Kind), die Angaben zu beiden
  Erziehungsberechtigten, der Notfallkontakt sowie das Allergien-Feld direkt
  bearbeiten und speichern. Änderungen gelten sofort, ohne Freigabe durch
  einen Trainer – wie schon beim Entschuldigen eines Kurstags oder beim
  Absenden der Erklärung. Name, Geschlecht und Geburtsdatum bleiben bewusst
  außen vor und lassen sich weiterhin nur von der Vereinsverwaltung ändern.

## v225 (01.09.2026)

- **Eltern-Passwort ist jetzt verpflichtend.** Nachdem in v224 auch
  personenbezogene Daten (Gesundheitsangaben aus der Erklärung) in den
  Eltern-Bereich gewandert sind, reicht die bloße TeilnehmerID/Master-ID
  zum Schutz nicht mehr aus. Hat eine Familie noch kein Passwort, erscheint
  jetzt direkt nach der Anmeldung ein Pflicht-Fenster zum Einrichten – ohne
  Überspringen-Möglichkeit. Erst danach sind Kurstermine, Erklärungsstatus
  & Co. überhaupt sichtbar; der Server liefert sie ab sofort grundsätzlich
  nicht mehr allein aufgrund der TeilnehmerID heraus. Das Gerät merkt sich
  das eingerichtete Passwort wie schon in v224 automatisch, ein erneutes
  Eintippen bei jedem Aufruf ist weiterhin nicht nötig.

## v224 (01.09.2026)

- **Einverständnis-/Gesundheitserklärung direkt im Eltern-Bereich.** Eltern
  müssen die Erklärung nicht mehr über einen separaten Link/QR-Code
  aufrufen – im Eltern-Bereich zeigt eine neue Karte den aktuellen Stand
  ("eingereicht", "Papierform vorgelegt", "veraltet" oder "noch nicht
  eingereicht") und führt mit einem Klick direkt zum vorausgefüllten
  Formular. Aktualisiert eine Familie ihre Angaben z.B. am 1.1.2027, gilt
  das automatisch für das ganze Jahr 2027 als erledigt – das war schon
  bisher so eingebaut und musste für diesen Wunsch nicht extra geändert
  werden.
- **Jede eingereichte Erklärung wird jetzt zusätzlich als PDF archiviert.**
  Bisher wurde beim erneuten Absenden der bisherige Stand überschrieben –
  seit v224 legt jede Einreichung zusätzlich einen unveränderlichen
  PDF-Schnappschuss an. Im Profil eines Teilnehmers (Reiter "Dokumente")
  lässt sich über "🗂️ Frühere Versionen anzeigen" die komplette Historie
  einsehen und jede einzelne Version als PDF öffnen. Wird eine Erklärung
  gelöscht, werden auch ihre archivierten Versionen mit gelöscht.
- **Echtes Passwort für den Eltern-Bereich (optional).** Bisher reichte
  allein die TeilnehmerID/Master-ID der Karte, um den Eltern-Bereich eines
  Kindes zu öffnen. Jetzt kann pro Kind zusätzlich ein Passwort eingerichtet
  werden (Hinweis-Banner im Eltern-Bereich, oder jederzeit über "🔑 Passwort
  ändern"). Ist ein Passwort gesetzt, verlangt der Login danach; das Gerät
  merkt sich das Passwort aber automatisch, sodass ein erneutes Eintippen
  bei jedem Aufruf nicht nötig ist. Ein "Passwort vergessen?"-Link schickt
  ein neues Passwort an die für das Kind hinterlegte E-Mail-Adresse (der
  erste Erziehungsberechtigte, sonst der zweite, sonst die E-Mail des
  Kindes selbst) – ist gar keine E-Mail-Adresse hinterlegt, erscheint
  stattdessen der Hinweis, einen Trainer zu kontaktieren. Das Passwort
  bleibt komplett freiwillig: ohne eingerichtetes Passwort funktioniert der
  Zugang unverändert wie bisher allein über den Code.

## v223 (01.09.2026)

- **Einlass-Scannen: "Abw"-Button ebenfalls entfernt.** Direkt im Anschluss
  an v222 (Übersicht/Kurstag-Matrix) gilt die Vereinfachung jetzt auch beim
  Einlass-Scannen: dort gibt es pro Teilnehmer nur noch "Anw" und "Ent" zum
  Anklicken. Unentschuldigtes Fehlen ergibt sich weiterhin automatisch,
  sobald der Kurstag vorbei ist und nichts angehakt wurde – kein
  zusätzlicher Klick nötig.

## v222 (01.09.2026)

- **"Nachrichten vom Verein" in der Eltern-Ansicht entfernt.** Die separate,
  einseitige Liste der über "🔔 Mitteilungen" gesendeten Rundschreiben ist
  weggefallen, da jede solche Nachricht seit v210 ohnehin zusätzlich im
  zweiseitigen Eltern-Chat ankommt – die doppelte Anzeige war überflüssig.
  Der Versand über "🔔 Mitteilungen" selbst funktioniert unverändert.
- **Übersicht/Kurstag-Matrix: nur noch Anwesend und Entschuldigt, der Rest
  ist automatisch unentschuldigt.** In der Trainer/Admin-Übersicht gibt es
  pro Kurstag jetzt nur noch zwei anklickbare Status statt bisher vier.
  Ist ein Kurstag bereits vorbei und weder "Anwesend" noch "Entschuldigt"
  gesetzt, zählt er automatisch als unentschuldigt – ganz ohne
  zusätzlichen Klick. Ein Kurstag, der noch in der Zukunft liegt, bleibt
  weiterhin unberücksichtigt, damit er die Anwesenheits-Quote nicht
  verfälscht. Die frühere eigene Kategorie "Urlaub" ist komplett entfallen
  (auch in der Eltern-Ansicht, wo Eltern für ihr Kind vorab einen Kurstag
  entschuldigen können) – bereits vorhandene "Urlaub"-Einträge wurden
  automatisch zu "Entschuldigt" umgewandelt, damit sie nicht fälschlich
  als unentschuldigtes Fehlen in Serie auffallen. Die Einlass-Scan-Ansicht
  (Abhaken am Beckenrand) ist von dieser Änderung nicht betroffen und
  zeigt weiterhin Anwesend/Entschuldigt/Abwesend zum aktiven Anklicken.

## v221 (01.09.2026)

- **Datensicherung vereinfacht: nur noch ein Button für alles.** Die
  bisherige "Datensicherung"-Karte in der Verwaltung verlangte eine
  Kurs-Auswahl und lieferte nur eine Excel-Tabelle mit den Kurs-Rohdaten.
  Jetzt genügt ein Klick auf "⬇️ Komplett-Backup herunterladen" – damit
  wird ein ZIP-Archiv mit der kompletten Datenbank UND allen hochgeladenen
  Dateien (Profilbilder, Führerschein-Dokumente, Nachrichten-Anhänge,
  Event-Uploads, Anleitungssammlung, Aktuelles-Bilder, Navigation-Inhalte)
  heruntergeladen – alles, was für eine vollständige Sicherung gebraucht
  wird, in einer Datei, ohne Auswahl treffen zu müssen.

## v220 (01.09.2026)

- **Weitere Punkte aus dem Datenbank-Audit umgesetzt: verwaiste
  Datensätze beim Löschen verhindert.** Beim Löschen eines Benutzer-
  Accounts, einer Person, einer Gruppe, eines Kurses, eines Kurstags,
  einer Qualifikationsstufe oder eines Events räumt die App jetzt
  gründlicher auf – vorher konnten dabei an mehreren Stellen Datenreste
  zurückbleiben, die auf etwas bereits Gelöschtes zeigten (harmlos für den
  Alltag, aber unnötiger Datenmüll). Reine Hintergrund-Reparatur, nichts
  an der Bedienung ändert sich.
- **Zwei riskante Stellen in den automatischen Datenbank-Migrationen
  entschärft**, die beim Server-Start laufen: eine fehlende Nachbearbeitung
  bei neu hinzugefügten Datenfeldern und zwei Stellen, an denen ein
  Absturz mitten im Update-Vorgang (sehr unwahrscheinlich, aber möglich)
  zu einem dauerhaft unvollständigen Zustand hätte führen können.
- **Absicherung des Servers verbessert**: Docker prüft jetzt selbständig,
  ob die App noch richtig antwortet (Healthcheck), und der Container kann
  nicht mehr unbegrenzt Arbeitsspeicher/Rechenleistung des Servers
  verbrauchen (feste Obergrenze).
- **Backup-Skript beigelegt** (`backup_mcc.py` + Anleitung, separat von
  diesem Update ausgeliefert): sichert die Datenbank sicher auch während
  die App läuft, plus alle hochgeladenen Dateien, in ein Archiv pro Lauf,
  mit automatischer Aufräumung alter Sicherungen – zur Einrichtung als
  täglicher Cronjob auf dem Server.

## v219 (01.09.2026)

- **Datenbank-Reparatur: Fehler bei gleichzeitigen Zugriffen behoben.**
  Nach dem Nacht-Audit vom 31.08. ("es gab gestern Probleme mit der
  Datenbank") wurde die Ursache gefunden und behoben: wenn viele Personen
  gleichzeitig etwas tun (z.B. eine ganze Kursgruppe checkt gleichzeitig
  am Einlass ein), konnte die Datenbank bisher echte Fehlermeldungen
  ausliefern, weil nur eine begrenzte Anzahl gleichzeitiger
  Datenbankverbindungen erlaubt war. Per Lasttest nachgestellt (60
  gleichzeitige Check-Ins: vorher 37% Fehler) und behoben (danach 0
  Fehler, auch bei deutlich mehr gleichzeitigen Anfragen als realistisch
  zu erwarten). Reine Hintergrund-Änderung, nichts an der Bedienung
  ändert sich. Der vollständige Audit-Bericht mit allen weiteren
  (noch nicht umgesetzten) Befunden und Empfehlungen wurde separat
  geliefert.

## v218 (31.08.2026)

- **Sicherheitslücke geschlossen: fremde Personenprofile waren einsehbar.**
  Bei der Arbeit an "Mein Profil" (v217) aufgefallen und Torsten gemeldet:
  jeder Account mit der Rolle "Nutzer" konnte bisher durch bloßes Ändern
  der Zahl in der Adresse (`/personen-profil/<id>`) das volle Profil
  (Kontaktdaten, Führerschein-Dokumente, Trainingsverlauf) JEDER anderen
  Person einsehen – unabhängig davon, ob er/sie damit überhaupt etwas zu
  tun hatte. Torstens Entscheidung dazu: "Ja, nur Admins". Das
  Personenprofil ist jetzt wie die restliche Personenverwaltung
  Admins/Super-Admins vorbehalten.

## v217 (31.08.2026)

- **Neue Seite "👤 Mein Profil" – jeder Login-Account kann jetzt sein
  eigenes Profilbild, Passwort und seine Kontaktdaten selbst pflegen.**
  Wunsch: "wir sollten es noch ermöglichen das die Benutzer ihr eigenes
  Profil bearbeiten können (nur die mit Login)", per Rückfrage präzisiert
  auf "zusätzlich Kontaktdaten (Telefon/E-Mail)". Über den neuen Button
  "👤 Mein Profil" im Header (neben "abmelden") kann jeder eingeloggte
  Account sein eigenes Profilbild hochladen/ändern/entfernen, sein
  Passwort ändern und – sofern die verknüpfte Person keine Kurs-Teilnahme
  hat – Telefon und E-Mail selbst pflegen. Name, Rolle, Gruppen und Login-
  Verwaltung bleiben bewusst weiterhin nur Admins vorbehalten.
- **Profilbild-Fehler behoben: eigenes Bild nach dem Hochladen jetzt
  sofort sichtbar, plus Erfolgsmeldung.** Fehlerbericht: "beim Upload
  meines eigenen Profilbild ist mir aufgefallen das ich das nicht sehen
  kann und auch keine Rückmeldung bekomme, aber ... eine Kameradin ...
  hat gesehen das sie das sehen kann." Ursache war ein Browser-Cache-
  Effekt auf der Bild-Adresse – behoben, zusätzlich erscheint jetzt nach
  einem erfolgreichen Upload eine kurze Bestätigung ("✅ Profilbild
  aktualisiert").
- **Zeit-Offset-Fehler behoben: Nachrichten-, Anmelde- und Check-In-Zeiten
  stimmen jetzt mit der echten Uhrzeit überein.** Fehlerbericht: "es gibt
  scheinbar immer noch ein großes Zeit Offset Problem, Nachrichten,
  Anmelde bzw. Check In Zeiten stimmen nicht mit unserer Zeit überein."
  Ursache waren zwei getrennte Stellen: zum einen fehlte einigen intern
  gespeicherten Zeitstempeln (u.a. Nachrichten, Mitteilungen,
  Gesundheitserklärungen, Event-Anmeldungen) beim Versand an den Browser
  ein Zeitzonen-Marker, wodurch dieser sie fälschlich als eigene Ortszeit
  statt als Weltzeit interpretierte; zum anderen wurden in der Super-
  Admin-Auswertung "🕐 Pünktlichkeit" Check-in-Zeitpunkt und geplante
  Startzeit direkt gegeneinander verrechnet, ohne dass eine Seite davon
  in echte Ortszeit umgerechnet wurde. Beides ist jetzt korrigiert.
- **Wer Mitteilungen (an alle/Kursteilnehmer/Gruppen/einen Kurs) senden
  darf, lässt sich schon heute einschränken – ohne Programmieränderung.**
  Wunsch: "wir müssen noch einschränken können wer eine Nachricht an
  alle, Kursteilnehmer, Gruppen und an einen Kurs schicken darf das gibt
  sonst Chaos", bestätigt auf "per Standard dürfen das nur Admins, alles
  andere muss freigegeben werden" – das ist bereits der Ist-Zustand (das
  Recht "Mitteilungen" ist standardmäßig auf die Rollen "Admin"/"Super-
  Admin" begrenzt). Über "⚙️ Verwaltung" → "🔐 Berechtigungen" kann ein
  Admin dieses Recht gezielt einzelnen weiteren Accounts erteilen oder
  entziehen; über "🌳 Struktur-Verwaltung" lässt sich die Standardregel
  selbst anpassen.

## v216 (31.08.2026)

- **"An eine Gruppe" und die Team-Gruppenchat-Auswahl zu einer einzigen
  Option verschmolzen.** Wunsch: "bekommen wir den unteren Gruppen Block
  nicht eventuell doch in den oberen Gruppen Block integriert?", per
  Rückfrage konkretisiert auf "zu einer einzigen Auswahl verschmelzen".
  Bei "✏️ Neue Nachricht" gibt es jetzt nur noch EINE Option "An eine
  Gruppe", die immer sichtbar ist (nicht mehr an das Recht "Mitteilungen"
  gekoppelt). Wer dieses Recht hat, löst damit wie bisher ein
  Rundschreiben an ALLE Personen der Gruppe aus (auch Familien ohne
  Login); wer es nicht hat, startet stattdessen einen privaten
  Team-Gruppenchat nur mit den Gruppenmitgliedern, die einen Login haben –
  die Entscheidung fällt automatisch, ohne dass am Formular etwas anders
  aussieht. Die frühere separate "…und/oder eine Benutzer-Gruppe"-Auswahl
  unter "An eine Person" ist damit entfallen.
- **Kein Titel-Feld mehr im Chat-System.** Wunsch: "einen Titel benötigen
  wir auch hier nicht", zusammengefasst zu "Titel benötigen wir nirgends
  im Chat System". Das Feld "Titel (optional)" bei "✏️ Neue Nachricht" ist
  komplett entfernt – ein Rundschreiben verwendet seither immer den
  Standardtitel „DLRG Mönsheim".
- **Smiley statt "➕" bei den Nachrichten-Reaktionen.** Wunsch: "jetzt
  hätte ich gerne ein Smiley anstatt des + für die Reaktionen". Der Button,
  der die Reaktions-Auswahl (👍 ❤️ 😂 😮 😢 🙏) unter einer Nachricht öffnet,
  zeigt jetzt ein Smiley-Icon (🙂) statt eines Plus-Zeichens – sowohl im
  internen Nachrichtensystem als auch im Eltern-Chat.
- **Chats und einzelne Nachrichten lassen sich jetzt löschen.** Wunsch: "es
  muss eine Möglichkeit geben Chats und einzelne Nachrichten zu löschen".
  Unter jeder eigenen Nachricht erscheint jetzt ein 🗑️-Button zum
  endgültigen Löschen (nur die eigenen, wie schon beim Eltern-Chat); oben
  im geöffneten Chat gibt es zusätzlich einen 🗑️-Button, der den gesamten
  Chat inklusive aller Nachrichten, Anhänge und Reaktionen unwiderruflich
  löscht – das gilt für jeden Chat, den man öffnen kann, also auch für
  einen Eltern-Chat mit einer Familie.

## v215 (31.08.2026)

- **"Postfächer" komplett entfernt – Team-Gruppenchats laufen jetzt über
  Gruppen, kein Extra-Feature mehr nötig.** Wunsch: "bekommen wir das mit
  dem Postfach noch weg das gefällt mir nicht", konkretisiert auf "über die
  Rechte- und Gruppenstruktur abgebildet" und schließlich: "eigentlich ist
  doch schon alles abgebildet, an Gruppen gibt es bereits, ich muss nur
  z.B. noch eine Orga Gruppe in der Rechtestruktur und nicht in der
  Nachrichten App anlegen". Die Karte "📥 Postfächer" in "⚙️ Verwaltung"
  sowie die Option "In ein Postfach" bei "✏️ Neue Nachricht" sind ersatzlos
  entfallen. Ein Team-Gruppenchat (z.B. mit dem Vorstand) läuft seither
  über den längst bestehenden Weg: Gruppe (z.B. "Orga") über die Karte
  "Gruppen" in der Personenverwaltung anlegen, dann bei "✏️ Neue Nachricht"
  → "An eine Person" die Gruppe im Feld "…und/oder eine Benutzer-Gruppe"
  auswählen. Bereits bestehende Postfächer bleiben in der Datenbank
  erhalten und für ihre damaligen Mitglieder weiterhin lesbar – es können
  nur keine neuen mehr angelegt werden.
- **Eltern-Chat-Zugriff jetzt über eine frei wählbare Gruppe statt
  Postfach-Mitgliedschaft.** Auf die Rückfrage, wie der Zugriff auf die
  Familien-Chats stattdessen geregelt werden soll: "Über eine Gruppe, wie
  bei 'Einsatzkraft'". Genau wie beim Tab "🚑 Einsatz" (dort fest die
  Gruppe "Einsatzkraft") entscheidet jetzt eine Gruppen-Mitgliedschaft, wer
  die Chats mit den Familien sehen und beantworten darf – einstellbar unter
  "⚙️ Verwaltung" → "👪 Eltern-Chat" (ersetzt die entfernte
  Postfächer-Karte, inklusive der unverändert mit umgezogenen Einstellung
  "Aufbewahrung der Eltern-Chats"). Ohne Auswahl (Standardzustand direkt
  nach diesem Update) bleibt es wie gehabt offen: jeder mit Zugriff auf
  "Nachrichten" sieht die Eltern-Chats.
- **Hinweis statt Codeänderung:** der dritte Wunsch – "die Eltern
  Nachrichten an mehrere Leute (eine Gruppe) gehen und diese alle auch die
  Antworten der Teammitglieder sehen, damit alle auf einem Stand sind",
  konkretisiert auf "Team-Updates an alle, Familien bleiben privat" –
  funktioniert bereits heute ohne jede Änderung: ein Update per "✏️ Neue
  Nachricht" → "An eine Gruppe" an dieselbe Gruppe erreicht automatisch
  wieder jede Familie dieser Gruppe im jeweils eigenen, privaten
  Eltern-Chat (unverändert seit v210) – Familien sehen sich dabei
  weiterhin nicht gegenseitig.

## v214 (31.08.2026)

- **Nur noch EIN "Neue Nachricht"-Button für alles.** Wunsch: "ich hätte
  gerne nur ein 'Neue Nachrichten Button' dahinter soll alles erreichbar
  sein, das muss über die Kurse Gruppen und so realisiert werden". Der
  bisherige zweite Button "📢 Mitteilung an Teilnehmer" mit eigenem
  Formular ist entfallen – "✏️ Neue Nachricht" öffnet jetzt EIN Formular
  mit einer Ziel-Auswahl: An eine Person (Benutzer oder Teilnehmer, wie
  bisher), In ein Postfach, sowie neu direkt hier auswählbar An einen
  Kurs, An eine Gruppe, An alle mit aktivem Kurs oder An alle. Die vier
  zuletzt genannten Rundschreiben-Ziele bleiben wie bisher nur mit dem
  Recht "darf Mitteilungen senden" sichtbar. Technisch/inhaltlich ändert
  sich dabei nichts – dieselben Nachrichten kommen genauso bei den
  Empfängern an wie bisher, nur der Einstieg ist jetzt an einer Stelle.

## v213 (31.08.2026)

- **Root-Cause-Fix: Kurse ohne eigene Startzeit für den Kurstag
  verschwanden nie von der Anzeige.** Live-Meldung: "es wird noch einer
  der 18 Uhr Kurse angezeigt". Tatsächliche Ursache gefunden: die
  meisten Kurstage tragen gar keine eigene Startzeit ein, sondern
  übernehmen einfach die feste wöchentliche Kurszeit – genau diese Fälle
  hat die 10-Minuten-Ausblendung bisher übersehen (sie prüfte nur die
  Startzeit des einzelnen Kurstags, nicht die angezeigte, vom Kurs geerbte
  Zeit). Dadurch verschwand so ein Kurs praktisch nie automatisch aus der
  Anzeige, obwohl ganz normal eine Uhrzeit zu sehen war. Jetzt wird für
  die Ausblendung dieselbe Zeit verwendet, die auch angezeigt wird.

## v212 (31.08.2026)

- **Kiosk-Monitor: Kurse ohne Startzeit blockieren nicht mehr dauerhaft
  einen Platz.** Meldung: "jetzt bleiben die Kurse stehen und ich sehe
  die nächsten nicht obwohl schon 18:20 ist". Ursache: ein Kurstag ohne
  hinterlegte Startzeit verschwindet nie automatisch aus der Anzeige –
  bei nur noch 3 gleichzeitig sichtbaren Plätzen (seit v209) konnte so ein
  einzelner Kurs ohne Zeitangabe dauerhaft einen der 3 Plätze belegen und
  echte, gerade anstehende Kurse verdrängen. Kurse mit bekannter Startzeit
  bekommen die Plätze jetzt zuerst; ein Kurs ohne Zeitangabe erscheint nur
  noch, wenn danach noch Platz frei ist.

## v211 (31.08.2026)

- **Kiosk-Monitor: kein Umblättern mehr, einfach nur die nächsten 3
  Kurse.** Die automatische Seiten-Umblätterung aus v209 hat sich in der
  Praxis als verwirrend erwiesen: "jetzt wechseln die Kurse in der Anzeige
  hin und her, das geht nicht". Ersetzt durch das eigentlich gewünschte
  Verhalten: es werden immer nur die als nächstes anstehenden (max. 3)
  Kurse gezeigt, ganz ohne Wechsel-Timer – ein Kurs verschwindet automatisch
  10 Minuten nach seiner Startzeit aus der Anzeige, danach rutscht der
  jeweils nächste Kurs von selbst nach.

## v210 (31.08.2026)

- **"Nachrichten vom Verein" landen jetzt zusätzlich im Chat.** Wunsch:
  "die Nachrichten vom Verein sollen im gleichen Feld landen". Ab sofort
  (nicht rückwirkend für ältere, bereits gesendete Mitteilungen) erscheint
  eine im Bereich "🔔 Mitteilungen" gesendete Nachricht zusätzlich direkt im
  zweiseitigen Nachrichten-Chat der jeweiligen Familie – dort, wo man mit
  dem Verein ohnehin schon schreibt. Die bisherige "🔔 Mitteilungen"-Liste
  im Teilnehmer-Bereich bleibt unverändert bestehen (Versandstatistik,
  Anzeigedauer usw. funktionieren weiter genau wie bisher).
- **Kein Unterschied mehr zwischen "an einen Benutzer" und "an einen
  Teilnehmer" schreiben.** Wunsch: "es sollte auf unsere Seite keinen
  Unterschied geben ob wir einem Benutzer oder einem Teilnehmer eine
  Nachricht senden ... sollte auch da eine neue Nachricht genügen". Die
  Empfänger-Suche bei "💬 Nachrichten" → "Neue Nachricht" findet jetzt
  neben Benutzer-Accounts auch Teilnehmer/Familien ohne eigenen Login –
  eine Nachricht an einen Teilnehmer landet automatisch im gemeinsamen
  Chat mit dieser Familie, genau wie eine ganz normale Antwort dort auch.

## v209 (31.08.2026)

- **Kiosk-Monitor: maximal 3 Kurse gleichzeitig sichtbar.** Dringende
  Meldung: "der Kiosk Monitor zeigt gerade alle neun Kurse von heute auf
  einmal an, dadurch kann man da gar nichts lesen oder erkennen ... bitte
  maximal drei Kurse gleichzeitig anzeigen". Sind an einem Tag mehr als 3
  Kurse gleichzeitig auf dem Einlass-Kiosk sichtbar, werden sie jetzt nicht
  mehr alle auf einmal reingequetscht, sondern seitenweise gezeigt (3 pro
  Seite) und automatisch alle 10 Sekunden weitergeblättert, mit
  Seitenanzeige ("Seite 1 / 3 – wechselt automatisch") am unteren Rand.
  Betrifft nur den Einlass-Kiosk (`/kiosk`); bei 3 oder weniger
  gleichzeitigen Kursen ändert sich optisch nichts.

## v208 (31.08.2026)

- **"Nachricht an den Verein" heißt jetzt nur noch "Nachrichten".** Wunsch:
  "da das Feld ja nun in beide Richtungen Nachrichten erlaubt, sollte es
  nicht 'Nachrichten an den Verein' heißen sondern einfach nur
  'Nachrichten'". Betrifft die Überschrift über dem Chat mit dem Verein im
  Teilnehmer-Bereich.

## v207 (31.08.2026)

- **Root-Cause-Fix: "Fehler beim Senden" jetzt wirklich gefunden und
  behoben.** Dank des Server-Logs aus v206 konnte die tatsächliche Ursache
  endlich identifiziert werden: eine seit sehr langer Zeit in der
  Datenbank bestehende, zu strenge technische Vorgabe ließ es nicht zu,
  dass eine komplett NEUE Familie ihre allererste Nachricht an den Verein
  schickt – bereits bekannte Familien, die schon einmal geschrieben hatten,
  waren nicht betroffen, was die Fehlersuche bisher so schwierig gemacht
  hat. Beim nächsten Start wird das automatisch und ohne Datenverlust
  einmalig repariert. Bereits gefunden und mehrfach nachgestellt: eine
  brandneue Familie kann jetzt zum ersten Mal erfolgreich schreiben.

## v206 (31.08.2026)

- **Root-Cause-Fix: "Fehler beim Senden" im Teilnehmer-Bereich, diesmal
  tatsächlich gefunden und behoben.** Rückmeldung: "ganz aktuell mit 205
  getestet" – der Fehler trat also auch nach den beiden früheren Fixes
  (v198, v202) und der erneuten Prüfung in v205 weiterhin auf. Root Cause
  diesmal gefunden: der Live-Server läuft hinter einem Reverse-Proxy, der
  aber bisher nicht korrekt berücksichtigt wurde – dadurch hat die
  eingebaute Bremse gegen zu viele Anfragen ("Rate-Limit") faktisch ALLE
  Familien gemeinsam gebremst statt jede einzeln, und konnte bei etwas
  gleichzeitigem Betrieb (z.B. mehrere offene Teilnehmer-Tabs im
  Hintergrund) irgendeine unbeteiligte Familie zufällig ausbremsen –
  behoben. Zusätzlich fängt die App ab sofort JEDE sonst unerwartete
  technische Störung sauber ab: bisher konnte an unbekannter Stelle ein
  unerwarteter Fehler zur nichtssagenden Meldung "Fehler beim Senden."
  führen, obwohl serverseitig oft schon alles gespeichert war – jetzt gibt
  es in einem solchen Fall immer eine aussagekräftigere Meldung, UND der
  Fehler wird vollständig im Server-Log festgehalten, damit er sich – falls
  er doch nochmal auftritt – sofort genau nachvollziehen lässt.

## v205 (31.08.2026)

- **Nachrichten aus dem Teilnehmer-Bereich: erneut geprüft.** Rückmeldung
  mit Screenshot: "Prio 1: Nachrichtenfunktion in Teilnehmer-Ansicht nach
  wie vor nicht funktionsfähig". Diese Fehlermeldung wurde bereits zweimal
  root-cause-behoben (v198 und v202 – Push-Benachrichtigungen liefen
  seitdem asynchron im Hintergrund mit Zeitlimit, damit ein Problem beim
  Zustellen einer Push-Nachricht niemals mehr das eigentliche Senden einer
  Chat-Nachricht zum Scheitern bringen kann). Erneut gezielt nachgestellt
  (u.a. mit einer absichtlich kaputten Push-Verbindung): das Senden klappt
  im aktuellen Stand zuverlässig und sofort. Der Verdacht ist daher, dass
  der Live-Server noch eine ältere Version vor diesen beiden Fixes
  ausführt – ein Update auf diese Version sollte das Problem beheben,
  falls es sich um denselben, bereits bekannten Fehler handelt.
- **"Teilnehmer-Ansicht" heißt jetzt überall nur noch "Teilnehmer".**
  Wunsch: "an allen Stellen wo in der App oder auf der Webseite
  'Teilnehmer-Ansicht' steht, dieses durch 'Teilnehmer' ersetzen" – betrifft
  den Seitentitel, die Überschrift im Teilnehmer-Bereich selbst, den Link
  dorthin oben im MCC sowie mehrere Beschriftungen in den
  Admin-Einstellungen.
- **Pflichtnachweis-Prüfung am Einlass ein-/ausschaltbar.** Wunsch: "Die
  Funktion zur Überprüfung der Erklärung und Freibad Nachweise muss ein
  bzw. ausschaltbar sein". Seit v161 leuchtet der Monitor beim Scannen rot
  und zeigt an, wenn Elternerklärung und/oder Freibad-Nachweis fehlen oder
  veraltet sind – das lässt sich jetzt im Tab "⚙️ Verwaltung" unter der
  neuen Karte "Pflichtnachweise am Einlass" komplett aus- und wieder
  einschalten. Der Check-in selbst funktioniert dabei immer normal weiter,
  unabhängig vom Schalter – betroffen ist ausschließlich die zusätzliche
  Warnanzeige auf dem Monitor. Standardmäßig weiterhin eingeschaltet
  (bisheriges Verhalten bleibt für alle unverändert).

## v204 (31.08.2026)

- **Badges für ungelesene Nachrichten.** Wunsch: "können wir dann auch
  Badges für ungelesene Nachrichten erscheinen lassen?" – auf Rückfrage
  an allen vier möglichen Stellen umgesetzt: (1) die Kachel bzw. der
  Tab "💬 Nachrichten" im MCC zeigt jetzt direkt eine kleine rote Zahl mit
  der Anzahl ungelesener Nachrichten, sichtbar bevor man überhaupt
  hineinklickt – funktioniert unabhängig davon, wo "Nachrichten" gerade
  in der Struktur einsortiert ist. (2) die Chat-Liste zeigt statt der
  bisherigen Zahl in Klammern "(3)" jetzt denselben runden roten Badge.
  (3) Derselbe Badge erscheint auch im Teilnehmer-Bereich, sowohl oben
  bei "Angemeldet als" als auch direkt an der Chat-Karte "Nachricht an
  den Verein", sobald der Verein geantwortet hat. (4) Ist die Seite als
  App auf dem Startbildschirm gespeichert (siehe v203), erscheint die
  Zahl zusätzlich direkt auf dem App-Symbol, auch wenn die App gerade
  gar nicht geöffnet ist (nur auf Geräten/Browsern, die das unterstützen,
  z.B. Chrome/Android).
- **Zwei Karten im Teilnehmer-Bereich neu einsortiert.** Wunsch: "wenn in
  der Teilnehmer App die Benachrichtigungen aktiviert wurde, soll dieser
  Bereich nach ganz unten wandern" sowie "und angemeldet als: nach ganz
  oben". "Angemeldet als" (Name, Abmelden-Button, App-Installieren-Button)
  steht jetzt ganz oben. Die Karte "Benachrichtigungen" wandert
  automatisch ganz ans Ende der Seite, sobald Push-Benachrichtigungen auf
  dem Gerät aktiviert sind – solange sie noch nicht aktiviert wurden,
  bleibt sie weiterhin weit oben, damit sie nicht übersehen wird.

## v203 (31.08.2026)

- **Anhänge und Kamera-Fotos im Nachrichtensystem.** Wunsch: "im
  Nachrichtensystem soll es möglich sein Anhänge zu senden und auch direkt
  Fotos von der Handy Kamera zu senden". Gilt für BEIDE Chat-Systeme –
  den internen "💬 Nachrichten"-Bereich im MCC und den Chat mit dem Verein
  im Teilnehmer-Bereich. Beim Schreiben einer Antwort gibt es jetzt zwei
  Buttons: "📎 Datei" (Foto/PDF aus der Galerie/Dateiauswahl) und "📷 Foto"
  (öffnet auf dem Handy direkt die Kamera). Bilder werden als kleine
  Vorschau in der Sprechblase angezeigt, andere Dateien (z.B. PDF) als
  Download-Link. Erlaubt sind Fotos (JPG/PNG/GIF/WebP/HEIC) und PDF bis
  15 MB je Anhang.
- **Reaktionen mit Icons.** Wunsch: "reakation mit Icons wären auch sehr
  schön". Unter jeder Nachricht (ebenfalls in beiden Chat-Systemen) gibt
  es jetzt einen "➕"-Button mit einer kleinen Auswahl an Reaktions-Icons
  (👍 ❤️ 😂 😮 😢 🙏). Ein Klick fügt die Reaktion hinzu, ein erneuter Klick
  auf dasselbe Icon nimmt sie wieder zurück.
- **Profilbilder im Personenstamm.** Wunsch: "im Personenstamm sollen die
  Leute ein Profilbild hinterlegen können, welches dann auch in den
  Nachrichten links vom Namen angezeigt wird". Auf der Personen-Detailseite
  (Reiter "Hauptdaten") kann jetzt oben ein Foto hochgeladen, ausgetauscht
  oder wieder entfernt werden – wird beim Hochladen automatisch quadratisch
  zugeschnitten und verkleinert. Auf Rückfrage präzisiert: das Bild
  erscheint in der Chat-Liste des internen Nachrichtensystems links neben
  dem Namen des jeweiligen Gesprächspartners (nicht in jeder einzelnen
  Sprechblase) – bei Team-Postfächern oder Gruppen-Chats mit mehreren
  Personen bleibt es beim bisherigen Platzhalter-Symbol, da dort kein
  einzelner eindeutiger Gesprächspartner existiert.
- **Neuer Button "📱 Als App speichern" nach dem Login.** Wunsch: "wir
  brauchen auf dem Handy dringend noch den Button 'als App speichern' nach
  dem login sowohl für den Teilnehmer Bereich als auch nach dem MCC Login
  und kann man den ausblenden wenn es als solche gestartet wurde". Der
  Button erscheint jetzt direkt nach dem Anmelden oben rechts (MCC) bzw.
  neben "Abmelden" (Teilnehmer-Bereich) und stößt die Installation als App
  auf dem Startbildschirm an. Auf dem iPhone (dort bietet der Browser
  keinen echten Installations-Dialog an) zeigt er stattdessen eine kurze
  Bedienungsanleitung ("Teilen → Zum Home-Bildschirm"). Läuft die Seite
  bereits als installierte App, bleibt der Button automatisch verborgen.

## v202 (31.08.2026)

- **Wichtiger Bugfix: "Entschuldigt"/"Urlaub" im Teilnehmer-Bereich war
  spürbar langsam, Nachrichten schlugen weiterhin manchmal fehl.**
  Rückmeldung: "ein klick auf entschuldigt im Moment ca. 5 Sekunden auf
  dem Handy bis er angezeigt wird da werden die Teilnehmer ungeduldig und
  drücken mit sicherheit mehrfach zudem klappt das mit den Nachrichten
  weiterhin nicht". Ursache gefunden: der interne E-Mail- UND
  Push-Benachrichtigungs-Versand lief bisher SYNCHRON mitten im Request –
  wer auf "Entschuldigt" tippte oder eine Chat-Nachricht schickte, musste
  auf den kompletten Mail-/Push-Versand warten, BEVOR die Antwort ankam,
  obwohl die eigentliche Aktion (Kurstag-Änderung, Nachricht) da schon
  längst gespeichert war. War der Mailserver etwas langsam oder der
  Push-Dienst kurzzeitig schlecht erreichbar, hat sich das direkt als
  spürbare Verzögerung bzw. (bei einer hängenden Verbindung zum
  Push-Dienst, für die bisher gar kein Zeitlimit galt) sogar als
  "Fehler beim Senden" bemerkbar gemacht. Beides läuft jetzt im
  Hintergrund – die App antwortet sofort, der eigentliche Versand passiert
  unabhängig davon weiter. Reine "Testmail senden"- und "Mitteilung an
  Teilnehmer senden"-Funktionen (dort will man ja bewusst ein sofortiges
  Ergebnis sehen) warten weiterhin ganz normal auf ein echtes Ergebnis.

## v201 (31.08.2026)

- **"💬 Nachrichten": auf dem Smartphone jetzt zweiseitig (Liste → Chat,
  mit "← Zurück").** Rückmeldung zu v200: "das ganze sollte zweiseitig
  aufgebaut werden ... zumindest auf dem Smartphone auf dem Desktop /
  Laptop passt es auch so wie bisher". Auf schmalen Bildschirmen zeigt der
  Tab jetzt erst die Chat-Liste, nach Auswahl eines Chats (oder "Neue
  Nachricht"/"Mitteilung an Teilnehmer") wechselt die Ansicht auf den
  Inhalt mit einem "← Zurück"-Button oben. Auf Desktop/Laptop bleibt es
  unverändert bei der bisherigen Zweispalten-Ansicht (Liste und Chat
  nebeneinander).
- **"💬 Nachrichten": Namen in den Sprechblasen entfernt.** Wunsch: "rechts
  im Chat sind die Namen in jeder Sprechblase nicht nötig steht ja im
  Titel mit wem ich schreibe". Jede Nachricht zeigt jetzt nur noch die
  Uhrzeit, wer mit wem schreibt steht wie bisher in der Überschrift des
  Chats.
- **"Mitteilung an Eltern" heißt jetzt "Mitteilung an Teilnehmer".**
  Reiner Namens-/Beschriftungswechsel, Funktion unverändert.

## v200 (31.08.2026)

- **"💬 Nachrichten": eigene Nachrichten jetzt rechts, empfangene links.**
  Wunsch: "im rechten Fenster hätte ich gerne das die empfangenen
  Nachrichten links und die gesendeten rechts stehen". Im geöffneten Chat
  erscheinen deine eigenen Nachrichten jetzt als blaue Sprechblase rechts,
  Nachrichten von anderen als graue Sprechblase links – wie man es aus
  Chat-Apps kennt, und genau wie es im Eltern-Chat schon funktioniert.

## v199 (31.08.2026)

- **"🌳 Struktur-Verwaltung": Bereiche jetzt einzeln auf-/zuklappbar.**
  Wunsch: "innerhalb der Strukturverwaltung würde ich die Einzelbereiche
  gerne auf und zuklappen (default=geschlossen)". Jeder Bereich mit
  Unterbereichen zeigt jetzt einen Pfeil (▶/▼) zum Auf-/Zuklappen, standardmäßig
  sind alle zugeklappt (zeigt bei einem zugeklappten Bereich zusätzlich in
  Klammern, wie viele Unterbereiche darin stecken). Legst du einen neuen
  Unterbereich an oder verschiebst einen bestehenden in einen zugeklappten
  Bereich, klappt sich dieser automatisch auf, damit das Ergebnis sofort
  sichtbar ist.

## v198 (31.08.2026)

- **Wichtiger Bugfix: Senden im Eltern-Chat konnte fehlschlagen.**
  Rückmeldung: "beim senden aus der Teilnehmer app kommt ein Fehler
  'Fehler beim Senden'". Ursache gefunden und behoben: löste eine neue
  Eltern-Chat-Nachricht eine Push-Benachrichtigung an einen Trainer/eine
  Trainerin aus und konnte diese Benachrichtigung aus irgendeinem Grund
  nicht zugestellt werden (z.B. ein Netzwerkproblem beim Push-Dienst),
  schlug bisher das komplette Senden der Nachricht fehl – obwohl sie zu
  diesem Zeitpunkt eigentlich schon gespeichert war. Push-Versand ist
  jetzt, wie der E-Mail-Versand auch, "best effort": ein Problem dabei
  wird nur noch vermerkt, verhindert aber nie mehr, dass eine Nachricht
  tatsächlich ankommt. Das war vermutlich auch der Grund, warum keine
  Möglichkeit zum Löschen einer Nachricht sichtbar war – dafür muss die
  Nachricht ja erst einmal sichtbar ankommen.
- **Teilnehmer-Bereich: "Abwesenheit eintragen" steht jetzt ganz oben.**
  Wunsch: "der Block 'Abwesenheiten eintragen' muss ganz nach oben".

## v197 (31.08.2026)

- **"💬 Nachrichten": Funktion "Titel"/"Betreff" entfernt.** Rückmeldung
  anhand eines Screenshots: "in dem gesamten Nachrichtensystem benötige
  ich die Funktion 'Titel' nicht ... auf der rechten Seite soll nur als
  Überschrift stehen mit wem ich chatte". Das Feld "Betreff (optional)"
  beim Anlegen einer neuen Nachricht ist entfallen. Die Überschrift eines
  geöffneten Chats zeigt jetzt immer automatisch, mit wem geschrieben wird
  – bei einem persönlichen Chat der/die Gesprächspartner, bei einem
  Eltern-Chat der Name der Familie/des Kindes, bei einem sonstigen
  Team-Postfach-Chat der Postfach-Name.

## v196 (31.08.2026)

- **Teilnehmer-Bereich: alte Karte "Nachricht an die Trainer" entfernt.**
  Rückmeldung zum neuen Eltern-Chat (v195): "diese Option ist dann ja
  überflüssig". Das alte, einmalige Kontaktformular (eine Nachricht per
  E-Mail, ohne Antwortmöglichkeit) ist jetzt durch die neue Karte "💬
  Nachricht an den Verein" ersetzt und wurde aus dem Teilnehmer-Bereich
  entfernt.

## v195 (31.08.2026)

- **Neu: echter, zweiseitiger Chat mit den Eltern.** Torstens Wunsch: "die
  Eltern sollen antworten dürfen und auch die Nachrichten löschen und wir
  brauchen evtl. eine Lösung wie alte Nachrichten dort automatisch
  verschwinden". Im Teilnehmer-Bereich gibt es jetzt unterhalb der
  bisherigen einseitigen "Nachrichten vom Verein"-Karte eine neue Karte
  "💬 Nachricht an den Verein" – Eltern können dort schreiben, die Antwort
  des Vereins live mitverfolgen (aktualisiert sich von selbst, kein
  Neuladen nötig) und eigene Nachrichten über 🗑️ endgültig löschen
  (Nachrichten des Vereins können nicht gelöscht werden). Auf Vereinsseite
  landen alle Eltern-Chats gesammelt im neuen, automatisch angelegten
  Team-Postfach "👪 Eltern-Nachrichten" unter "💬 Nachrichten" – wer dort
  mitlesen und antworten darf, wird wie bei jedem anderen Postfach unter
  "⚙️ Verwaltung" → "📮 Postfächer" verwaltet. Damit alte Chatverläufe nicht
  unbegrenzt anwachsen, verschwinden Nachrichten aus Eltern-Chats
  automatisch nach einer frei einstellbaren Frist (Standard: 12 Monate,
  einstellbar unter "⚙️ Verwaltung" → "📮 Postfächer", 0 = nie automatisch
  löschen).
- **"💬 Nachrichten": der Gesprächspartner steht jetzt immer in der
  Chat-Liste.** Rückmeldung: "bei den Markierungen sollte der
  Gesprächspartner stehen" (Screenshot zu zwei persönlichen Chats mit
  eigenem Betreff, bei denen bisher nirgends stand, mit wem man da
  eigentlich schreibt). Ist für einen Chat ein eigener Betreff gesetzt,
  zeigt die Liste jetzt zusätzlich klein darüber, wer der Gesprächspartner
  (bzw. bei einem Postfach-Chat: welches Postfach) ist.
- **"📢 Mitteilung an Eltern": neue, einstellbare Anzeigedauer.** Wunsch:
  "besser wäre noch das man beim Nachricht an die Teilnehmer eine
  Anzeigedauer einstellen könnte beim senden der Nachricht 0=immer oder
  dann anzahl der Tage". Beim Versenden einer Mitteilung lässt sich jetzt
  festlegen, nach wie vielen Tagen sie aus der "🔔 Mitteilungen"-Karte im
  Teilnehmer-Bereich wieder verschwinden soll (0 = für immer sichtbar,
  Vorgabe). Betrifft nur die Anzeige beim Empfänger, nichts wird dabei
  serverseitig gelöscht.

## v194 (31.08.2026)

- **"💬 Nachrichten": neues, WhatsApp-artiges Layout mit Live-Updates.**
  Torstens Wunsch: "ich meinte das hier die Chats aufgelistet werden und
  rechts dann der Inhalt und das Eingabefeld ist dann unter den
  Nachrichten des betreffenden Chats, wie bei WhatsApp halt." Links steht
  jetzt EINE Liste aller Chats (Team-Postfächer und persönliche
  Konversationen zusammen) statt der bisherigen Ordner-Auswahl, rechts der
  Nachrichtenverlauf mit dem Antwortfeld direkt darunter.
- **Team-Postfächer ("Gruppen") stehen jetzt immer oben in der Chat-Liste.**
- **Die Chat-Liste und ein offener Chat aktualisieren sich jetzt von
  selbst**, ohne dass die Seite neu geladen werden muss – eine neue
  Nachricht erscheint automatisch, ein angefangener Entwurf im Antwortfeld
  geht dabei nicht verloren.
- **Teilnehmer-Bereich: die "🔔 Mitteilungen"-Karte hält sich jetzt
  ebenfalls von selbst aktuell**, eine neu gesendete Mitteilung erscheint
  ohne Neuladen der Seite.

## v193 (31.08.2026)

- **Startseite: Begrüßungstext ("Willkommen" + Absatz darunter) jetzt in
  der Verwaltung bearbeitbar.** Torstens Wunsch: "Der Willkommen Titel und
  der Text in diesem Block auf der Startseite muss im Verwaltungsbereich
  unter Startseite auch bearbeitbar sein". Der Titel und der Fließtext
  oberhalb der Kacheln auf der öffentlichen Startseite ("/") standen
  bisher fest im HTML – jetzt lassen sie sich unter "⚙️ Verwaltung" → "🏠
  Startseite" in zwei Feldern bearbeiten und speichern, direkt oberhalb
  der Kacheln-Verwaltung.

## v192 (31.08.2026)

- **Startseite: "💾 Speichern" bei einer bestehenden Kachel hat jetzt
  wieder eine Wirkung.** Torstens Meldung: "es passiert nichts wenn ich
  auf den speichern Button klicke". Beim Bearbeiten einer bereits
  bestehenden Kachel (z.B. Häkchen "Sichtbar" entfernen) griff der
  Speichern-Button ins Leere – ein technischer Fehler beim erstmaligen
  Bau der Funktion (v188) hatte die Feld-Erkennung durcheinandergebracht,
  sodass "➕ Anlegen" für eine neue Kachel funktionierte, "💾 Speichern"
  einer bestehenden dagegen nicht. Jetzt behoben und mit einem echten
  Browser-Test bestätigt.

## v191 (31.08.2026)

- **Schwerer Fehler behoben: Teilnehmer-Profile ließen sich teils gar
  nicht mehr öffnen ("Profil konnte nicht geladen werden"), und die
  Teilnehmer-Anmeldung per normaler TeilnehmerID blieb bei manchen
  Kindern wirkungslos.** Über die Server-Logs gefunden: bei der
  Umbenennung "Trainer" → "Nutzer" (v180) wurden historische
  Anwesenheits-Einträge nicht vollständig mit-migriert – eine (namentlich
  ähnliche, aber komplett separate) Tabelle blieb dabei unentdeckt auf dem
  alten Wert stehen. Sobald irgendeine Abfrage auf einen betroffenen
  Anwesenheits-Eintrag trifft (Profilseite, "Heute"-Ansicht, aber auch die
  künftigen Kurstage beim Teilnehmer-Login), brach die Abfrage komplett
  ab. Betroffen waren nur Teilnehmer mit Anwesenheits-Historie aus der
  Zeit vor v180. Die verbliebenen alten Werte werden jetzt beim ersten
  Start automatisch korrigiert – einmalig, wirkt sich auf nichts inhaltlich
  Sichtbares aus (reine technische Kennzeichnung).

## v190 (31.08.2026)

- **Manuelle Anmeldung im Teilnehmer-Bereich: Enter-Taste hat jetzt eine
  Funktion.** Torstens Meldung: "es passiert gar nicht wenn ich die
  Nummer eingebe und auf Enter klicke". Das Eingabefeld für TeilnehmerID/
  Master-ID hatte bisher keinerlei Reaktion auf die Enter-Taste – nur ein
  Klick auf den danebenstehenden "Anmelden"-Button löste die Anmeldung
  aus. Enter im Feld macht jetzt genau dasselbe wie ein Klick auf
  "Anmelden".

## v189 (31.08.2026)

- **Akuter Fehler behoben: Anmeldung per QR-Code im Teilnehmer-Bereich
  ging nicht mehr, nur noch per Master-ID.** Torstens Meldung: "die
  Teilnehmer können sich gerade nicht mit ihrem QR Code anmelden ich habe
  es gerade hier auch probiert es funktioniert gerade nur die Anmeldung
  per Master-ID". Ursache: Wird ein Teilnehmer in einen anderen Kurs
  verschoben (z.B. Gruppenumstufung zum Saisonwechsel), wird dabei seine
  bisherige TeilnehmerID im neuen Kurs weiterverwendet und die alte
  Kurs-Zuordnung dahinter gelöscht – eine schon gedruckte QR-Karte trägt
  aber weiterhin die alte Kursnummer. Die Anmeldung per QR-Code im
  Teilnehmer-Bereich (anders als der Einlass-Scan im MCC, der das schon
  konnte) kannte diesen Fall nicht und lehnte die Karte komplett ab. Jetzt
  sucht die Teilnehmer-Anmeldung in diesem Fall genau wie der Einlass-Scan
  über Name + TeilnehmerID weiter, unabhängig vom Kurs auf der Karte – alte
  Karten funktionieren dadurch auch nach einem Kurswechsel des Kindes
  weiter, ohne dass neue Karten gedruckt werden müssen.

## v188 (31.08.2026)

- **Startseite jetzt frei bearbeitbar.** Neue Karte "🏠 Startseite" im Tab
  "⚙️ Verwaltung": die Kacheln auf der öffentlichen Startseite ("/") lassen
  sich dort umbenennen, mit neuem Icon/Text/Link versehen, aus-/einblenden,
  in der Reihenfolge verschieben (▲/▼), neu anlegen und löschen. Bisher
  waren die Kacheln fest im Code hinterlegt.
- **Hundeschwimmen zeigt jetzt direkt auf die Anmeldeseite.** Die Kachel
  "Hundeschwimmen" hieß bisher schlicht "Hundeschwimmen" und führte auf die
  alte externe Vereinsseite – heißt jetzt "Hundeschwimmen 2026" und führt
  direkt zur internen Online-Anmeldung des Events (kein Umweg mehr über
  die externe Seite). Der Name des Events selbst wurde ebenfalls auf
  "Hundeschwimmen 2026" umbenannt.

## v187 (31.08.2026)

- **"Eltern-Bereich"/"Eltern-App" heißen jetzt "Teilnehmer-Bereich".** Neuer
  Name auf der Startseite, im Seitentitel, als Beschriftung beim
  Installieren als App sowie überall in der Admin-Oberfläche, wo bisher
  von "Eltern-Ansicht" die Rede war. Die Adresse `/eltern` selbst bleibt
  unverändert – bestehende Lesezeichen und ausgedruckte QR-Codes
  funktionieren weiterhin.
- **Neues Icon für den Teilnehmer-Bereich** (die beiden zuletzt
  zugeschickten Bilder) ersetzt das bisherige "Eltern"-Icon – wirkt sich
  beim (Neu-)Installieren als App aus. War die App vorher schon
  installiert, zeigt sie erst nach einem erneuten "Zum Startbildschirm
  hinzufügen" das neue Icon (Betriebssysteme aktualisieren ein einmal
  gespeichertes App-Icon nicht automatisch).
- **Fix: Dateiberechtigungen der Icon-Dateien vereinheitlicht.** Die
  Icons für die MCC-Admin-App waren mit restriktiveren Rechten abgelegt
  als alle anderen Bilddateien – konnte je nach Serverkonfiguration dazu
  führen, dass das Icon beim Installieren nicht angezeigt wird. Manifest,
  Icon-Dateien und Server-Auslieferung wurden geprüft und sind jetzt
  vollständig konsistent (gleiche Rechte wie alle übrigen Bilder,
  korrekte Größen/Formate, korrekte Content-Types).
- **Nachrichten-Ordnerliste sortiert jetzt nach Aktivität statt
  alphabetisch.** Postfächer mit der neuesten Nachricht stehen jetzt
  oben (wie die Konversationen-Liste innerhalb eines Ordners das schon
  bisher tat) – "Posteingang" bleibt als fester erster Eintrag stehen.

## v186 (31.08.2026)

- **Bereich "🔔 Mitteilungen" ist jetzt Teil von "💬 Nachrichten".** Statt
  eines eigenen Menüpunkts gibt es dort jetzt links einen zusätzlichen
  Ordner "📢 Mitteilungen an Eltern" – Funktion und Formular sind
  unverändert, nur die Ablage hat sich geändert. Dieser Ordner erscheint
  nur bei Accounts mit dem Recht "darf Mitteilungen senden" (bisher schon
  vorhandenes Recht, standardmäßig weiterhin nur Admins/Super-Admins,
  individuell erweiterbar über "🔐 Berechtigungen" wie gehabt).

## v185 (31.08.2026)

- **Fix: Nachrichten aus "🔔 Mitteilungen" sind jetzt auch im Eltern-
  Bereich nachlesbar.** Bisher kamen gesendete Mitteilungen ausschließlich
  als Push-Benachrichtigung an – wer sie verpasst hat (Handy aus,
  Benachrichtigungen (noch) nicht aktiviert) oder sie einfach nochmal
  nachlesen wollte, hatte keine Möglichkeit dazu. Jetzt erscheint im
  Eltern-Bereich eine neue Karte "Nachrichten vom Verein" mit allen
  bisher an diese Familie gerichteten Mitteilungen, neueste zuerst –
  unabhängig davon, ob auf diesem Gerät Push aktiviert ist.

## v184 (31.08.2026)

- **Neu: die Admin-/MCC-Ansicht ist jetzt als App installierbar (PWA).**
  Genau wie der Eltern-Bereich seit v177 lässt sich `/mcc` jetzt über "Zum
  Startbildschirm hinzufügen" als eigene App mit eigenem Icon installieren
  – ohne Adressleiste/Browser-Chrome drumherum. Am Login ändert sich dabei
  nichts: die App verlangt wie gewohnt Benutzername und Passwort, es gibt
  keinen anonymen Zugang.
- **Neu: internes Nachrichtensystem "💬 Nachrichten".** Ein neuer Bereich,
  in dem sich alle Benutzer-Accounts (Trainer, Admins, ...) gegenseitig
  Nachrichten schreiben können – als Chat mit Antworten/Verlauf, nicht als
  einzelne E-Mails. Zusätzlich zum persönlichen Posteingang gibt es jetzt
  mehrere, frei anlegbare **Team-Postfächer** (z.B. "Kursanmeldungen" oder
  "Vorstand") – neu anlegbar über eine Karte "📥 Postfächer" im Tab
  "⚙️ Verwaltung". Nur wer einem Postfach als Mitglied zugeordnet ist,
  sieht dessen Konversationen; ein neu hinzugefügtes Mitglied sieht sofort
  den kompletten bisherigen Verlauf. Eine neue Nachricht lässt sich an
  einen einzelnen Benutzer, an eine bestehende Gruppe (z.B. "an alle
  Trainer") oder in ein Postfach schreiben. Wer die Nachrichten-Ansicht als
  installierte App geöffnet hat, kann dort auch Push-Benachrichtigungen für
  neue Nachrichten aktivieren.
- **Neu: Bereich "🔔 Mitteilungen" kann jetzt auch an eine Gruppe senden.**
  Zu den bisherigen vier Zielen (Person, Kurs, alle mit aktivem Kurs, alle)
  kommt ein fünftes hinzu: eine bestehende Gruppe aus der
  Personenverwaltung (z.B. "an alle Besucher" für ein bestimmtes Event).

## v183 (31.08.2026)

- **Neu: gezielterer Versand im Bereich "🔔 Mitteilungen".** Bisher gab es
  nur "an alle" oder "an eine bestimmte Familie". Jetzt stehen vier Ziele
  zur Auswahl: eine einzelne Person, alle Teilnehmer eines bestimmten
  Kurses (Dropdown mit allen aktuell laufenden Kursen), alle mit einem
  aktuell laufenden Kurs (unabhängig davon, welcher), oder wie gehabt
  wirklich alle mit aktivierten Benachrichtigungen. Der Kopf der Seite
  zeigt jetzt zusätzlich an, wie viele der aktiven Geräte gerade zu einem
  laufenden Kurs gehören.

## v182 (31.08.2026)

- **Master-ID-Login im Eltern-Bereich funktioniert jetzt auch ohne
  laufenden Kurs.** Direkte Weiterentwicklung von v181: hat ein Kind
  gerade keinen aktuell laufenden Kurs (z.B. zwischen zwei Saisons), meldet
  der Login mit der Master-ID trotzdem an, statt eine Fehlermeldung zu
  zeigen – damit funktionieren Benachrichtigungen (Push) und das
  Kontaktformular weiterhin, auch wenn es gerade nichts anzumelden/
  abzumelden gibt. Die Karte "Abwesenheit eintragen" bleibt in diesem Fall
  ausgeblendet (es gibt ja keine Kurstage), stattdessen erscheint ein
  kurzer Hinweis dazu direkt oben im "Angemeldet als"-Bereich.

## v181 (31.08.2026)

- **Fix: Login im Eltern-Bereich akzeptiert jetzt auch die Master-ID.**
  Bisher ließ sich das Anmeldefenster von `/eltern` nur mit der
  TeilnehmerID von der Kurskarte öffnen – die kursunabhängige Master-ID
  (falls für ein Kind vergeben) wurde weder beim Scannen ihres eigenen
  QR-Codes noch bei manueller Eingabe erkannt. Beides funktioniert jetzt:
  Master-ID scannen oder eintippen meldet genauso an wie bisher die
  TeilnehmerID, und zeigt dabei immer den aktuell laufenden Kurs (eine
  Master-ID bleibt ja bewusst über Saisonwechsel hinweg gültig). Hat ein
  Kind gerade gar keinen laufenden Kurs, gibt es dafür jetzt eine eigene,
  klare Meldung statt der bisherigen "ID unbekannt".

## v180 (31.08.2026)

- **Login-Adresse geändert: `/trainer` → `/mcc`.** Torstens Wunsch: "ein
  Klick auf MCC Login führt im Moment auf die /trainer Seite ... das ist
  irreführend weil die App ja mittlerweile viel mehr kann und Trainer bei
  uns ja eine Funktion ist." Der MCC-Login-Knopf auf der Startseite führt
  jetzt direkt auf `/mcc`. Wer die alte Adresse `/trainer` noch als
  Lesezeichen gespeichert hat oder darüber verlinkt wurde, wird automatisch
  auf `/mcc` weitergeleitet – nichts geht kaputt, nur die Adresszeile ändert
  sich.
- **"Trainer" verschwindet aus der Rechteverwaltung.** In der
  Basisstufen-/Rollen-Verwaltung (Tab "⚙️ Verwaltung") tauchte der
  technische Begriff "trainer" bislang als Bezeichnung für die
  Basis-Zugriffsstufe auf, obwohl diese Stufe längst für jede
  Vereinsfunktion gilt (Trainer, Kassenwart, Einsatzleitung, ...) und
  bereits als "Benutzer" angezeigt wurde. Der interne Schlüssel heißt jetzt
  ebenfalls "nutzer" – bestehende Accounts, Rollen und Rechte laufen dabei
  automatisch und ohne weiteres Zutun weiter wie bisher, niemand muss sich
  neu anmelden oder wird ausgesperrt.
- **Die echte Trainerverwaltung ist von alldem unberührt.** Der Tab
  "🧑‍🏫 Trainer" (Trainer anlegen, Kurse zuordnen, Einsätze einchecken),
  die Gruppe "Trainer" in der Personendatenbank und die Trainer-Auswahl bei
  Events funktionieren exakt wie vorher – hier ging es ausschließlich um
  den irreführenden Namen im Login-/Rechtesystem, nicht um die
  Trainerfunktion selbst.

## v179 (31.08.2026)

- **Neu: Push-Benachrichtigungen an Eltern.** Torstens Wunsch: "können wir
  jetzt die Möglichkeit einbauen, den Eltern einmal an alle aber auch
  einzeln eine Push Nachricht senden zu können?" Es gibt jetzt einen neuen
  Bereich "🔔 Mitteilungen" (nur für Admins/Super-Admins), von dort aus kann
  eine kurze Nachricht (Titel optional, Text bis 500 Zeichen) entweder an
  alle Eltern gleichzeitig oder gezielt an eine einzelne Familie (per
  Namenssuche) geschickt werden. Die Nachricht kommt als normale
  Push-Benachrichtigung auf dem Handy an – auch wenn die Eltern-Seite
  gerade nicht geöffnet ist – und öffnet beim Antippen direkt `/eltern`.
  Damit das funktioniert, müssen Eltern zweierlei getan haben: die Seite
  `/eltern` als App installiert (siehe v177) UND dort aktiv auf den neuen
  Knopf "🔔 Benachrichtigungen aktivieren" getippt haben – es gibt bewusst
  KEINE automatische Berechtigungsabfrage beim Öffnen der Seite, die
  Zustimmung ist immer ein expliziter Klick. Wer nicht installiert hat oder
  nicht zugestimmt hat, bekommt schlicht keine Nachricht; es gibt keinen
  SMS- oder E-Mail-Versand als Ersatz. Der Bereich "Mitteilungen" zeigt vor
  dem Senden an, wie viele Geräte insgesamt gerade aktiv sind, und nach dem
  Senden, an wie viele davon die Nachricht tatsächlich zugestellt werden
  konnte.

## v178 (31.08.2026)

- **Eigenes App-Icon für den Eltern-Bereich.** Das rote Platzhalter-Symbol
  aus v177 ist jetzt Torstens eigenes Icon (rotes Feld, gelber Schriftzug
  "DLRG Mönsheim ....Eltern...."). Wer `/eltern` schon vor diesem Update
  installiert hatte, sieht auf Android das neue Icon in der Regel nach
  kurzer Zeit von selbst; auf dem iPhone übernimmt Safari ein einmal
  angelegtes Homescreen-Icon dagegen nicht automatisch – dort hilft nur,
  das alte Symbol zu löschen und die Seite einmal neu über "Zum
  Home-Bildschirm" hinzuzufügen. Wer die App noch gar nicht installiert
  hat, bekommt ohnehin gleich das neue Icon.

## v177 (31.08.2026)

- **Neu: Eltern-Bereich als installierbare App.** Torstens Frage "kann man
  den Eltern Bereich als App anbieten?" – ab sofort können Eltern die Seite
  `/eltern` über "Zum Startbildschirm hinzufügen" (iPhone: Teilen-Button →
  "Zum Home-Bildschirm"; Android: Chrome-Menü oder Installations-Banner)
  auf ihrem Handy installieren. Danach liegt ein eigenes Icon auf dem
  Homescreen, die Seite öffnet sich ohne Adressleiste/Browser-Chrome und
  fühlt sich wie eine eigene App an – ganz ohne App Store. Betrifft nur
  diese eine Seite, alle anderen Ansichten sind unverändert reine
  Webseiten. Das App-Icon ist aktuell noch ein rotes Platzhalter-Symbol
  ("MCC" im Kreis) – Torsten bringt ein eigenes Icon nach.

## v176 (30.08.2026)

- **Fix: Super-Admins hatten im Bereich "🚑 Einsatz" keine Schreibrechte
  mehr.** Torstens Meldung: "ich habe als Super Admin hier keinen Zugriff
  mehr" zum Medizinprodukteverzeichnis. Ursache war ein seit der
  Aufsplittung des Bereichs Einsatz (v146) übrig gebliebener, veralteter
  Berechtigungs-Schlüssel im Frontend – dadurch verschwanden die
  Anlegen-/Bearbeiten-/Löschen-Formulare im Medizinprodukteverzeichnis,
  in der Anleitungssammlung und im Medizinproduktebuch für ausnahmslos
  jeden Account, unabhängig von der Rolle. Jetzt behoben; das Anschauen
  (z.B. der "Anleitung"-Knopf) war die ganze Zeit über nicht betroffen.

## v175 (30.08.2026)

- **CSV-Import-Funktion (v174) wieder entfernt.** Der einmalige Import der
  drei Alt-Anmeldungen (Bettina Rieger, Heike Balog, Nicole Zobac) war
  erfolgreich – Torstens Rückmeldung: "die drei sind importiert, den Rest
  dazu vergessen wir und die import Funktion kann wieder raus." Der
  Import-Knopf über der Anmeldungsliste, der Endpunkt und die zugehörigen
  Hilfsfunktionen wurden komplett entfernt, da sie nur für diesen einen
  Altsystem-Import gebraucht wurden. Die drei bereits importierten
  Anmeldungen bleiben davon unberührt in der Datenbank erhalten und sind
  weiterhin ganz normal in der Anmeldungsliste von "Hundeschwimmen 2026"
  sichtbar.

## v174 (30.08.2026)

- **Neu: bestehende Anmeldungen aus dem alten Hundeschwimmen-Anmeldetool
  per CSV importieren.** Torstens Wunsch, nachdem er einen Beispiel-Export
  des Altsystems geschickt hat: "kannst du die bestehenden Anmeldungen aus
  dem Altsystem der Datenbank hinzufügen?" Bei jedem Event mit "Einfache
  Anmeldung" gibt es jetzt einen Knopf "📥 Alte Anmeldungen aus CSV
  importieren" direkt über der Anmeldungsliste. Erwartet wird die
  Original-CSV-Datei aus dem alten Anmeldetool (Spalten Anwesend,
  Eingegangen, Name, Adresse, Telefon, E-Mail, Info gewünscht, Hundename,
  Rasse(n), Unterschrift, Datum). Name und Adresse werden automatisch in
  Vor-/Nachname bzw. Straße/PLZ/Ort aufgeteilt, der ursprüngliche
  Eingangszeitpunkt bleibt erhalten, ein zweiter Import derselben Datei
  legt nichts doppelt an. Da die Altsystem-Nachweise (Versicherung,
  Heimtierausweis) nicht als Datei mit exportiert werden, zeigt jede
  importierte Anmeldung automatisch den seit v173 vorhandenen
  Warnhinweis, dass hier noch keine digitale Kopie vorliegt – so bleibt
  sichtbar, was vor dem Event noch nachgetragen werden sollte. Es werden
  bewusst keine Bestätigungs-/Benachrichtigungsmails für importierte
  Zeilen verschickt.

## v173 (30.08.2026)

- **Kontroll-Details in der Anmeldungs-Übersicht ergänzt.** Torstens
  Rückmeldung nach dem ersten Live-Test von v172: "in dieser Liste sehe
  ich die ganzen Details von der Anmeldeseite nicht, diese muss ich aber
  vor dem Event bereits kontrollieren." Jede Hundeschwimmen-Anmeldung
  zeigt jetzt zusätzlich E-Mail-Adresse, Adresse (Straße/PLZ/Ort),
  Unterschrift und Eingangszeitpunkt direkt in der Karte. Fehlt bei einer
  Anmeldung eine der drei Bestätigungen (Versicherung/Heimtierausweis/
  Badeordnung) oder einer der beiden Datei-Uploads – z.B. bei älteren
  Anmeldungen von vor der seit v172 verpflichtenden Uploads –, erscheint
  jetzt ein auffälliger roter Warnhinweis, damit das vor dem
  Veranstaltungstag nicht übersehen wird.
- **Fix: "Anmeldungen insgesamt" zählte auch abgesagte Anmeldungen mit.**
  Torstens Meldung, eine bereits abgesagte Testanmeldung sei "noch in der
  Liste": tatsächlich wurden abgesagte Anmeldungen in der Kartenliste
  schon länger korrekt ausgeblendet, die Kopfzeile "Anmeldungen
  insgesamt" zählte davon unabhängig aber weiterhin ALLE Anmeldungen
  inklusive abgesagter mit – dadurch stimmte die Zahl oben nie mit der
  Anzahl sichtbarer Karten überein und erweckte den Eindruck, eine
  Abmeldung sei nicht angekommen. Die Kopfzeile zählt jetzt nur noch
  aktive (nicht abgesagte) Anmeldungen, identisch zur Kartenliste
  darunter.
- **Beschriftung "Kind löschen" → "Anmeldung löschen".** Torstens
  Rückmeldung: der Lösch-Knopf einer Anmeldung war mit "Kind löschen"
  beschriftet, obwohl er z.B. bei Hundeschwimmen keine Kinder, sondern
  Hundehalter-Anmeldungen löscht (die Sicherheitsabfrage sprach schon
  vorher korrekt von "Anmeldung"). Vereinheitlicht auf "Anmeldung
  löschen".

## v172 (30.08.2026)

- **Fix: keine Abmeldebestätigung an Teilnehmer.** Torstens Meldung: "die
  Teilnehmer bekommen keine Mail beim abmelden." Beim Absagen einer
  Event-Anmeldung (über den öffentlichen Abmelde-Link oder die
  Selbstabmeldung im Eltern-Bereich) ging bisher nur eine interne
  Benachrichtigung an den Verein raus – die anmeldende Person selbst bekam
  nie eine Bestätigung, dass ihre Abmeldung angekommen ist. Jetzt bekommt
  sie (sofern eine E-Mail-Adresse hinterlegt ist) automatisch eine kurze
  Abmeldebestätigung.
- **Neu: Nachweis-Uploads bei Hundeschwimmen-Anmeldungen sind jetzt
  Pflicht.** Torstens Meldung: "die Anhänge oder Bilder in der Anmeldung
  sind Pflicht" – auf Rückfrage bestätigt: bisher konnten
  Versicherungsnachweis und EU-Heimtierausweis beim Hundeschwimmen ohne
  hochgeladene Datei abgeschickt werden, nur die beiden
  Bestätigungs-Haken waren zwingend. Beide Datei-Uploads sind jetzt
  zwingend erforderlich (in den Formular-Labeln mit "*" gekennzeichnet),
  sowohl im Formular selbst als auch serverseitig geprüft; eine zu große
  Datei (über 8 MB) wird jetzt ebenfalls mit einer klaren Fehlermeldung
  abgelehnt statt (wie zuvor bei optionalen Dateien) still übersprungen zu
  werden.
- **Verwalten-Ansicht bei "Einfache Anmeldung"-Events aufgeräumt.**
  Torstens Rückmeldung anhand von Screenshots der
  "Hundeschwimmen 2026"-Verwaltung: bei Events ohne echte
  Leistungsstufen/Zeitslots ergaben Trainer-Zuordnung, eine individuelle
  Zeitslot-Kapazität und das "Verschieben" zwischen Zeitslots keinen Sinn
  (es gibt ja nur den einen, automatisch verwalteten, unsichtbaren Slot) –
  diese Felder werden dort jetzt nicht mehr angezeigt. Das manuelle
  Hinzufügen einer Anmeldung ("+ Kind") ist bei "Einfache Anmeldung" jetzt
  ebenfalls nicht mehr möglich; ein Hinweistext verweist stattdessen auf
  den öffentlichen Anmeldelink (Torstens Plan: "wir werden dafür ein
  Tablet am Veranstaltungstag aufstellen"). Name, Kontaktdaten,
  hochgeladene Nachweise und der Löschen-Knopf bleiben selbstverständlich
  weiterhin sichtbar. Events mit normalen Leistungsstufen/Zeitslots (z.B.
  Schwimmcamp) sind davon nicht betroffen.

## v171 (30.08.2026)

- **Fix: Anmeldungen bei "Einfache Anmeldung"-Events waren im
  Verwalten-Bereich nicht sichtbar.** Torstens Meldung zu Hundeschwimmen
  2026, nachdem eine Testanmeldung gemacht wurde: "ich sehe auch hier
  keine Anmeldung" (obwohl der Kopfbereich korrekt "Anmeldungen
  insgesamt: 4" anzeigte). Ursache: die mit v167 eingeführte "Einfache
  Anmeldung" hat im Verwalten-Bereich anstelle der Leistungsstufen/
  Zeitslot-Verwaltung nur einen Hinweistext angezeigt – dabei wurde
  versehentlich auch die Liste der einzelnen Anmeldungen (Name, E-Mail,
  Hundename, hochgeladene Dateien, Löschen-Knopf) mit entfernt, die
  eigentlich unabhängig davon dargestellt werden sollte. Für Events mit
  "Einfache Anmeldung" wird jetzt unter der Überschrift "Anmeldungen"
  dieselbe, bereits bewährte Anmeldungskarte wie bei normalen
  Leistungsstufen/Zeitslots gezeigt – mit allen Namen, Kontaktdaten,
  hochgeladenen Dateien und dem Löschen-Knopf. Die angezeigte Uhrzeit
  (00:00–23:59 Uhr) ist dabei nur ein interner Platzhalter ohne
  Bedeutung, was ein Hinweistext direkt darüber erklärt. Events mit
  normalen Leistungsstufen/Zeitslots (z.B. Schwimmcamp) sind von diesem
  Fix nicht betroffen.

## v170 (30.08.2026)

- **Neu: zusätzlicher, pro Event editierbarer Text in der
  Anmelde-Bestätigungsmail.** Torstens Wunsch: "ich würde gerne pro Event
  den E-Mail Text anpassen können." In den Event-Einstellungen (sowohl
  beim Anlegen als auch nachträglich im Bearbeiten-Bereich) gibt es jetzt
  ein Textfeld "Zusätzlicher Text in der Bestätigungsmail" – der dort
  hinterlegte Text wird an die bestehende, automatisch generierte
  Bestätigungsmail (Termin, ggf. Zeitslot/QR-Code-Hinweis, Link zur
  Selbstverwaltung) angehängt, direkt vor der Grußformel. Der bisherige
  Mailinhalt bleibt dabei komplett erhalten; ist kein Text hinterlegt,
  ändert sich nichts. Betrifft nur die Bestätigungsmail an die anmeldende
  Person, nicht die interne Benachrichtigung an den Verein.

## v169 (30.08.2026)

- **Fix: doppelte Bestätigungs- und Benachrichtigungs-Mails bei einer
  Event-Anmeldung.** Torstens Meldung nach einer Testanmeldung: "ich
  bekomme alle Mails aus dem MCC doppelt" / "die Mail an den Event
  anmeldenden kam auch doppelt an." Ursache: der "Anmeldung absenden"-
  Knopf auf der öffentlichen Event-Seite hatte keinerlei Schutz gegen
  einen Doppelklick/-Tap – zwei fast gleichzeitige Klicks lösten zwei
  unabhängige Anmeldungen mit jeweils eigener Bestätigungs- UND interner
  Benachrichtigungs-Mail aus. Der Knopf wird jetzt sofort beim Absenden
  gesperrt, und zusätzlich verhindert eine serverseitige Prüfung, dass
  dieselbe Anmeldung (gleicher Zeitslot, Name und E-Mail) innerhalb eines
  kurzen Zeitfensters ein zweites Mal angelegt und erneut per Mail
  gemeldet wird – auch bei einer Netzwerk-Wiederholung statt eines
  Doppelklicks.

## v168 (30.08.2026)

- **Fix: QR-Kurskarten-Block entfernt bei Events der Kategorie
  "allgemein" (z.B. Hundeschwimmen).** Torstens Rückmeldung zum
  Anmeldeformular: "der Block mit der Kurskarte muss hier raus, DLRG
  Kurskarten zählen nicht für allgemeine Events." Teilnehmer an
  allgemeinen Events (Tab "🐕 Events") sind in der Regel keine
  DLRG-Kursmitglieder und besitzen darum keine Kurskarte zum Scannen – der
  Button "📷 QR-Code der Kurskarte scannen" erscheint auf der öffentlichen
  Anmeldeseite jetzt nur noch bei Schwimmcamp-Events.
- **Neu: "📷 Per Kamera aufnehmen"-Button bei den Datei-Uploads im
  Hundeschwimmen-Formular.** Torstens Rückmeldung: "für die Dateien fehlt
  der 'per Kamera' aufnehmen Button." Sowohl beim Nachweis der
  Haftpflichtversicherung als auch beim EU-Heimtierausweis öffnet ein
  eigener Knopf gezielt die Kamera, statt sich auf das browserabhängige
  Verhalten des normalen Datei-Auswahl-Dialogs zu verlassen; das
  aufgenommene Foto landet automatisch im selben Feld wie eine manuell
  ausgewählte Datei.

## v167 (30.08.2026)

- **Neu: "Einfache Anmeldung" für allgemeine Events (z.B. Hundeschwimmen) –
  ohne Stufen/Zeitslot-Bild, wie beim alten Anmeldetool.** Torstens
  Wunsch: "Nun zu den allgemeinen Events (z.B. Hundeschwimmen) hier
  benötige ich keine Stufen und Slots, ich benötige wie auf der alten
  Hundeschwimmen Anmeldung ein Fenster wo gleich die Badeordnung steht und
  das Bestätigen dieser dann zu dem Anmeldeformular führt." Bisher musste
  auf JEDER Event-Anmeldeseite erst eine Leistungsstufe aufgeklappt und
  ein Zeitslot gewählt werden, bevor sich das Anmelde-Popup öffnete – für
  Events ohne echte Zeitplanung ein unnötiger Zwischenschritt.
  Per Rückfrage bestätigt: ein eigener Schalter pro Event (nicht an die
  Event-Kategorie gekoppelt) sowie ein eigener, pro Event frei
  editierbarer Regeltext (nicht der bisherige globale Badeordnung-Text).
  Ist der Schalter aktiv, zeigt die öffentliche Seite sofort den
  Regeltext mitsamt Bestätigung und direkt danach das Anmeldeformular als
  normalen Seitenabschnitt statt als Popup – die dafür technisch nötige
  Leistungsstufe/der Zeitslot werden automatisch im Hintergrund verwaltet,
  ein Admin muss sie nie von Hand anlegen. Der bisherige Stufen/Zeitslot-
  Weg (inkl. des bestehenden, globalen Badeordnung-Textes für Hundeschwimmen)
  bleibt für jedes nicht umgestellte Event unverändert erhalten.

## v166 (30.08.2026)

- **Fix: TeilnehmerID/Master-ID im Feld "QR-Code scannen" jetzt auch von
  Hand eingebbar.** Torstens Rückmeldung: "wenn ich die ID per Hand
  eintrage (habe gerade keinen QR Code hier) [...] das sollte doch mit der
  ID per Hand eingegeben auch funktionieren oder?" – bisher erwartete das
  Feld immer das vollständige Kartenformat ("Name;TeilnehmerID;Kursnummer")
  bzw. den Master-ID-Code, eine von Hand eingetippte nackte Nummer (ohne
  QR-Code zur Hand) endete mit "QR-Code hat unerwartetes Format". Eine
  Eingabe ohne Semikolon und ohne Master-ID-Kennung wird jetzt als manuell
  eingegebene TeilnehmerID oder Master-ID erkannt und aufgelöst – erst
  gegen die Master-ID geprüft, sonst als TeilnehmerID über alle
  Kurs-Zugehörigkeiten. Da dieselbe TeilnehmerID in mehreren gleichzeitig
  laufenden Kursen zu unterschiedlichen Teilnehmern gehören kann, erscheint
  bei mehreren Treffern jetzt eine Auswahl (wie schon länger im
  Eltern-Bereich bekannt), statt möglicherweise den falschen Datensatz zu
  öffnen.

## v165 (30.08.2026)

- **Neu: Antworten auf interne Benachrichtigungs-Mails geht jetzt direkt an
  die betroffenen Eltern/Teilnehmer – pro Bereich einzeln einstellbar.**
  Torstens Frage: "kann man die Mails die vom MCC verschickt werden so
  einrichten das beim Antworten die E-Mail Adresse des Teilnehmers
  genommen wird" – bisher gingen alle vier internen Info-Mail-Bereiche
  (Kurstag-Änderung durch Eltern, Kontaktformular, Einverständniserklärung
  eingereicht, Event-An-/Abmeldung) an EINE Ziel-Adresse, und ein Klick auf
  "Antworten" ging ebenfalls wieder an diese eigene Adresse zurück – der
  Trainer musste die Adresse des Teilnehmers/der Eltern erst manuell
  heraussuchen. Auf Torstens Konkretisierung "es wäre gut wenn man das für
  jeden Bereich einstellen kann nebst der jeweiligen Empfänger Adresse" hin
  lässt sich jetzt in "⚙️ Verwaltung" → "Benachrichtigungen" für JEDEN der
  vier Bereiche unabhängig voneinander sowohl eine eigene Empfänger-Adresse
  (bisher gab es das nur exklusiv für den Kontakt-Bereich) als auch ein
  eigener "Antworten geht an..."-Schalter (Reply-To) einstellen. Ist der
  Schalter für einen Bereich aktiv, wird beim Antworten auf die jeweilige
  Mail automatisch die passende Adresse aus dem Vorgang selbst verwendet –
  bei Kurstag-Änderung/Kontaktformular/Erklärung nach der bestätigten
  Priorität "erste vorhandene, Eltern vor Kind" (1. Erziehungsberechtigte/r,
  sonst 2. Erziehungsberechtigte/r, sonst die E-Mail des Kindes selbst),
  bei Event-An-/Abmeldung die bei der Anmeldung angegebene E-Mail-Adresse.
  Ist keine Adresse bekannt, wird die Mail ganz normal ohne Reply-To
  verschickt – es gibt also kein manuell einzutragendes Reply-To-Freitext-
  feld, die Adresse wird immer dynamisch ermittelt. Event-Anmeldung und
  -Abmeldung bleiben dabei bewusst EIN gemeinsamer Bereich, wie schon
  bisher.

## v164 (30.08.2026)

- **Neu: Master-ID jetzt für JEDE Person vergebbar – auch ganz ohne
  Kurs-Teilnahme – und direkt scanbar.** Torstens Frage: "kann ich Personen
  ohne Kurs bereits eine ID zuordnen?" – bisher Nein: die Master-ID hing an
  einer konkreten Kurs-Teilnahme (Participant), eine reine Einsatzkraft
  ohne jeden Kurs konnte also keine bekommen. Auf "ja bitte einbauen, es
  darf gerne die Master-ID sein, diese soll dann aber auch scanbar sein"
  wandert die Master-ID jetzt zentral auf die Person selbst (bestehende
  Werte wurden beim ersten Start auf v164 automatisch übernommen) – im
  Personenstamm jeder Person lässt sie sich jetzt setzen, unabhängig davon,
  ob überhaupt ein Kurs dahintersteht.

  Gesetzte Master-IDs sind jetzt zusätzlich als QR-Code herunterladbar (🔳
  neben dem Feld, sowohl im Personenstamm als auch im Teilnehmer-Bereich)
  und scanbar – mit einer bewussten Unterscheidung, wie Torsten es wollte:
  im normalen „Einlass scannen"-Feld gescannt bucht eine Master-ID ganz
  normal die Anwesenheit der aktuell laufenden Kurs-Teilnahme dieser
  Person, genau wie eine normale Karte. Über das separate „QR-Code
  scannen"-Feld (seit v162) gescannt öffnet dieselbe Master-ID stattdessen
  IMMER den Personenstamm in einem neuen Tab – auch dann, wenn die Person
  gerade gar keine laufende Kurs-Teilnahme hat.

## v163 (30.08.2026)

- **Neu: 🔐 Berechtigungen direkt im Personenstamm bearbeitbar.** Torstens
  Wunsch: "noch einbauen, das die Super Admin im Personenstamm die
  zugeteilten Berechtigungen und Freigaben bearbeiten/anlegen/löschen
  können." Bisher gab es das feingranulare 🔐 Berechtigungen-Panel (welche
  Tabs/Bereiche darf genau dieser eine Account sehen, unabhängig von seiner
  Rolle) nur im Tab „⚙️ Verwaltung" → „Benutzer" – im Personenstamm einer
  Person mit verknüpftem Login stand dort bisher nur ein Hinweistext.
  Jetzt gibt es dort (im Reiter „Hauptdaten", Abschnitt „Login-Verwaltung",
  weiterhin nur für Super-Admins sichtbar) einen eigenen 🔐
  Berechtigungen-Button, der genau dasselbe Panel wie in der
  Benutzerverwaltung öffnet: pro Bereich/Tab lässt sich eine individuelle
  Ausnahme für genau diesen Account anlegen ("✅ Immer voller Zugriff"/"👁️
  Immer nur lesen"/"🚫 Immer gesperrt") oder wieder auf die Rollen-Vorgabe
  zurücksetzen ("Standard") – ändert man etwas hier, sieht man es genauso
  in der Benutzerverwaltung und umgekehrt, es ist derselbe Datensatz.

## v162 (30.08.2026)

- **Neu: eigenes Feld „QR-Code scannen" für den schnellen Sprung zum
  Personendatensatz.** Torstens Wunsch: "auf dem Einlass Rechner (nicht der
  Kiosk Raspi) brauche ich eine schnelle Möglichkeit nach scannen eines QR
  Codes direkt in den Personendatensatz zu kommen", konkretisiert als
  "eigentlich muss ein bestimmter User ein Feld 'QR Code' Scannen angezeigt
  bekommen und dieser scan führt dann zum teilnehmer." Im Tab-Baum gibt es
  jetzt (als Geschwister von „Einlass scannen") ein neues Feld „QR-Code
  scannen": Karte scannen oder TeilnehmerID eintippen, und der
  Personendatensatz öffnet sich direkt in einem neuen Tab – ganz ohne
  Anwesenheit zu buchen und ohne dass für den Kurs heute ein Kurstag
  angelegt sein muss. Das Scan-Feld im ursprünglichen Tab bleibt dabei
  aktiv, sodass direkt weitergescannt werden kann, während der Datensatz
  nebenbei geprüft wird.

  Wie schon bei den Rollen/Basisstufen ist dieses neue Feld standardmäßig
  nur für Super-Admins sichtbar – Torstens ausdrücklicher Wunsch war aber
  "einem beliebigen Benutzer oder Rolle zuordnen können": genau das geht
  jetzt über die bestehende Struktur-Verwaltung (einer beliebigen Rolle
  freischalten) oder über das 🔐 Berechtigungen-Panel bei einem einzelnen
  Benutzer (unabhängig von dessen Rolle), exakt wie bei jedem anderen
  Tab/Bereich auch.

## v161 (30.08.2026)

- **Neu: Warnung am Einlass, wenn eine Pflichtangabe fehlt.** Torstens
  Wunsch: "wenn die Teilnehmer sich am Einlass scannen und eine der
  Pflicht Sachen fehlt soll der Monitor wie bei falscher Karte rot leuchten
  und neben dem Namen anzeigen welche Sachen fehlen und in dem Fall auch 4
  Sekunden aufleuchten." Fehlt einem Teilnehmer beim Scannen am Einlass die
  Elternerklärung und/oder der Freibad-Nachweis für das laufende Jahr
  (egal ob noch nie eingereicht oder aus dem Vorjahr veraltet), leuchtet
  das große Popup auf Live-Anzeige und Kiosk jetzt genauso rot auf wie bei
  einer ungültigen Karte, zeigt zusätzlich den Namen und die fehlenden
  Angaben an (z.B. "Elternerklärung fehlt · Freibad-Nachweis fehlt") und
  bleibt dafür 4 statt der üblichen 2 Sekunden sichtbar. Der Check-in
  selbst wird dabei ganz normal gebucht – es ist nur eine Warnung, kein
  Fehler. Als kleine Zugabe zeigt jetzt auch die Trainer-Ansicht im Tab
  „Einlass scannen" direkt neben dem Scan-Feld an, welche Angaben fehlen,
  falls ohne Live-Anzeige/Kiosk gescannt wird. Betrifft bewusst nur das
  Scannen der Karte selbst – wird die Anwesenheit von Hand im Kurstag
  angehakt, bleibt das Feld wie gewohnt grün, ohne diese Warnung.

  Kleiner Hinweis dazu: die bereits bestehende rote Anzeige bei einer
  ungültigen/falschen Karte leuchtete schon vorher nur 2 Sekunden, nicht 4
  wie in der Rückmeldung angenommen – das wurde hier bewusst nicht mit
  geändert, da nicht ausdrücklich gewünscht. Bei Bedarf kann das auf
  Rückmeldung ebenfalls auf 4 Sekunden angepasst werden.

## v160 (30.08.2026)

- **Neu: Basisstufen-Verwaltung – auch die Rechte hinter den Rollen sind
  jetzt frei definierbar.** Torstens Rückmeldung: "die Basisstufen müssen
  auch editierbar sein." Bisher (v159) konnte man neue Rollen anlegen,
  aber nur mit einer von 3 festen Basisstufen (einlass/Benutzer/Admin) –
  jetzt gibt es dafür im Tab „⚙️ Verwaltung" eine eigene Karte „🧱
  Basisstufen-Verwaltung" (nur für Super-Admins), in der sich beliebig
  neue Basisstufen mit einer frei gewählten Kombination der zwei groben
  Rechte anlegen lassen: Zugriff auf Benutzer-/Trainer-Bereiche und/oder
  Zugriff auf Administrator-Bereiche. Eine neue Rolle kann dann auf so
  eine eigene Basisstufe verweisen, statt sich mit einer der 3
  Standard-Kombinationen begnügen zu müssen. Bei den 3 eingebauten
  Basisstufen einlass/Benutzer/Admin lassen sich die Rechte-Häkchen jetzt
  ebenfalls frei ändern (nur ihr technischer Schlüssel bleibt fest) – bei
  der Basisstufe „Super Admin" bleiben die Rechte dagegen aus
  Sicherheitsgründen fest, damit sich ein Super-Admin nicht versehentlich
  selbst die Administrator-Rechte entzieht. Der eigentliche Super-Admin-
  Status selbst (u.a. das Zuweisen weiterer Super-Admins, der
  Selbstsperrschutz im Berechtigungsbaum) bleibt unverändert exklusiv an
  die eine eingebaute Rolle „Super Admin" gebunden und ist über diese
  neuen Basisstufen nicht erreichbar.

## v159 (30.08.2026)

- **Neu: Rollen-Verwaltung – Login-Berechtigungsstufen selbst anlegbar.**
  Torstens Wunsch: "Unsere Administrationsgruppen sollten wir noch
  aufräumen und selbst editierbar machen, Super Admins dürfen natürlich
  als einzige alles." Die bisherigen 4 fest im Programmcode verdrahteten
  Login-Rollen (Standard-Benutzer/Einlasskontrolle/Admin/Super Admin)
  sind jetzt Datenbank-Einträge, die im Tab „⚙️ Verwaltung" – neue Karte
  „🔑 Rollen-Verwaltung", ausschließlich für Super-Admins sichtbar – frei
  verwaltet werden. Ein Super-Admin kann dort beliebige neue Rollen
  anlegen (z.B. „Kassenwart"), jeder mit einer selbst gewählten
  Basisstufe (Einlasskontrolle/Benutzer/Admin), und ihr im
  Berechtigungsbaum der Struktur-Verwaltung eigene, individuelle Rechte
  zuweisen – ein Login mit so einer Rolle darf danach genau das, wofür
  der Super-Admin es freigeschaltet hat, ohne automatisch alle Rechte der
  gewählten Basisstufe zu erben. Die 4 eingebauten Rollen lassen sich
  weiterhin nicht löschen und ihr technischer Schlüssel/ihre Basisstufe
  bleibt fest – ihr Anzeigename ist aber jetzt ebenfalls änderbar. Neu
  angelegte Rollen erscheinen automatisch überall dort, wo bisher die 4
  festen Rollen zur Auswahl standen (Login-Rolle bei „Logins ohne
  Person"/im Personenprofil, Rollen-Auswahl im Berechtigungsbaum) – ohne
  weitere Anpassung. Wie bisher darf ein normaler Admin nur
  Einlasskontrolle-/Benutzer-stufige (auch neue, selbst angelegte) Rollen
  vergeben; Admin- und Super-Admin-stufige Rollen bleiben ausschließlich
  Super-Admins vorbehalten, und der Schutz vor dem Löschen des letzten
  Admin-Logins gilt jetzt auch für neue, admin-stufige Custom-Rollen.
- **Aufräumen: toter Code alter Rechte-Systeme entfernt.** Als zweiten
  Teil desselben Wunsches wurden die seit v146 nicht mehr ausgewerteten
  Reste des Vorgänger-Berechtigungssystems entfernt
  (`VIEW_ROLLEN_STANDARD`, `ALLE_VIEWS`, die zugehörige
  Ausnahme-Auswertung) – rein internes Aufräumen ohne sichtbare
  Auswirkung.
- **Klarstellung Rolle vs. Gruppe.** Da "Rolle" (Login-Berechtigung) und
  "Gruppe" (Vereinszugehörigkeit wie Einsatzkraft/Wachgänger/Trainer)
  beide ähnliche Namen verwenden, aber unabhängige Systeme sind, gibt es
  jetzt sowohl bei der Rollen-Verwaltung als auch bei der
  Gruppen-Verwaltung einen kurzen Hinweistext, der auf das jeweils andere
  System verweist.

## v158 (30.08.2026)

- **Pflichtübungen jetzt in einem eigenen Reiter.** Torstens Rückmeldung:
  "die Jahresüberprüfungen müssen in einen extra Tab." Bislang erschienen
  die jährlichen Pflichtübungen im Personenprofil zusammen mit den
  Kursziel-Qualifikationsstufen im Reiter "Qualifikationen". Jetzt gibt es
  dafür einen eigenen Reiter "🗓️ Pflichtübungen" – der Reiter
  "Qualifikationen" zeigt wieder ausschließlich die Kursziel-Tabelle. Der
  neue Reiter ist bei jeder Person sichtbar (auch ohne zutreffende
  Pflichtübungen, dann mit entsprechendem Hinweistext).

## v157 (30.08.2026)

- **Pflichtübungen: kein Abhaken der eigenen Person mehr.** Torstens
  Rückmeldung: "die Pflichtübungen dürfen nicht durch die User selbst
  abgehakt werden." Meldet sich jemand mit seinem eigenen Login an und
  versucht, eine eigene Pflichtübung im Personenprofil abzuhaken (oder
  einen eigenen Abhak-Eintrag zu löschen), lehnt das System das jetzt
  serverseitig ab mit der Meldung "Eine Pflichtübung kann nicht für die
  eigene Person abgehakt werden – das muss jemand anderes überprüfen."
  Das gilt bewusst für JEDEN Account, auch für Admins und Super-Admins,
  wenn ihr Login mit ihrer eigenen Person verknüpft ist – es geht um
  Selbst- statt Fremdkontrolle, nicht um eine Rollenfrage. Ein anderer
  Trainer oder Admin kann die Übung wie gewohnt für diese Person abhaken.
  Das feste Anzeige-Passwort und Logins ohne verknüpfte Person sind von
  der Sperre nicht betroffen.

## v156 (30.08.2026)

- **Neu: Pflichtübungen pro Gruppe, jährlich abzuhaken.** Torstens Wunsch:
  "Für Einsatzkräfte und Wachgänger gibt es jährliche Pflichtübungen diese
  müssen pro Gruppe frei definiert werden können und dann jährlich
  überprüft werden." In der Personenverwaltung lässt sich jetzt bei jeder
  Gruppe (nicht nur "Einsatzkraft" – jede bestehende oder frei neu
  angelegte Gruppe, z.B. eine neue Gruppe "Wachgänger") über "▼
  Pflichtübungen" eine eigene Liste von Pflichtübungen anlegen/umbenennen/
  löschen. Jedes Mitglied einer solchen Gruppe sieht diese Übungen
  automatisch im eigenen Personenprofil (Reiter „Qualifikationen") mit
  Ampel-Status "fehlt"/"veraltet"/"✓ aktuell" – wie beim Freibad-Nachweis
  zählt nur das laufende Kalenderjahr: eine im Vorjahr abgehakte Übung
  gilt zum nächsten Turnus nicht mehr automatisch weiter und muss neu
  abgehakt werden. Ist eine Person Mitglied mehrerer Gruppen mit eigenen
  Pflichtübungen, erscheinen alle davon zusammen in ihrem Profil. Da
  Einsatzkräfte/Wachgänger typischerweise keine Schwimmkurs-Teilnehmer
  sind, hängt diese Funktion an der Gruppen-Mitgliedschaft der Person,
  nicht an einer Kurs-Teilnahme.

## v155 (30.08.2026)

- **Freibad-Nachweis: Kartennummer bei der Jahreskarte.** Torstens
  Rückmeldung: "bei der Freibad Jahreskarte müssen wir allerdings noch
  eine bis zu 6 stellige Nr. eingeben, dazu müssen wir dann immer den
  Jahresaufkleber kontrollieren." Wird "Jahreskarte vorgelegt" ausgewählt,
  erscheint zusätzlich ein Eingabefeld für die bis zu 6-stellige
  Kartennummer (nur Ziffern) mit eigenem Speichern-Knopf – ohne gültige
  Nummer lässt sich die Jahreskarte nicht speichern. Die Nummer erscheint
  fortan überall dort, wo auch der Freibad-Nachweis-Status steht (Chip in
  Teilnehmer-Tab/Übersicht sowie Dokumente-Reiter), z.B. "Jahreskarte Nr.
  123456". Bei "15€ bar bezahlt" oder beim Zurücksetzen wird eine zuvor
  gespeicherte Nummer automatisch gelöscht, da sie dann nicht mehr
  zuträfe. Die Kontrolle des Jahresaufklebers selbst bleibt ein
  organisatorischer Vorgang am Beckenrand und wird nicht separat
  abgehakt – die App hält dabei nur die kontrollierte Kartennummer fest.

## v154 (30.08.2026)

- **Neu: Freibad-Nachweis, integriert wie die Gesundheitserklärung.**
  Torstens Wunsch: "Die Schwimmkursteilnehmer müssen jedes Jahr zum
  Kursstart ihre Freibad Jahreskarte oder 15€ in bar vorlegen, das sollten
  wir wie die Gesundheitserklärung einbinden." Jeder Teilnehmer hat jetzt
  einen Freibad-Nachweis-Status ("– kein Nachweis –" / "Jahreskarte
  vorgelegt" / "15€ bar bezahlt") mit Datum, per Auswahlfeld von
  Trainern/Admins gesetzt – genau wie beim Papier-Haken der Erklärung.
  Wie bei der Erklärung zählt nur das laufende Kalenderjahr: ein im
  Vorjahr erbrachter Nachweis gilt zum nächsten Kursstart nicht mehr
  automatisch weiter. Der Status erscheint an allen vier Stellen, an
  denen auch die Erklärung erscheint: im Teilnehmer-Tab (Detailpanel und
  als Ampel-Chip in der Übersicht/Matrix, dort nur wenn der Nachweis
  fehlt) sowie im Dokumente-Reiter der Teilnehmer-Detailseite und der
  Personenprofil-Seite.
- **Neu: Allergien/Krankheiten aus der Gesundheitserklärung fließen
  automatisch ins Personenstammblatt.** Torstens Wunsch: "Ebenso müssen
  die Daten aus der Gesundheitserklärung rund um das Thema Allergien
  Erkrankungen in das entsprechende Feld im Personenstammblatt
  übernommen werden." Jedes Mal, wenn Eltern eine Gesundheitserklärung
  einreichen (auch bei erneuter Einreichung) oder ein Admin eine noch
  nicht zugeordnete Erklärung einem Teilnehmer zuordnet, wird das Feld
  "Allergien/Krankheiten" des Teilnehmers automatisch mit dem Text aus
  der Erklärung überschrieben – die Erklärung ist ab sofort die
  maßgebliche Quelle für dieses Feld. Bereits vor diesem Update
  eingereichte Erklärungen wurden einmalig automatisch nachgezogen,
  allerdings nur dort, wo das Feld noch leer war, damit bereits von Hand
  eingetragene Korrekturen nicht überschrieben werden.

## v153 (29.08.2026)

- **Neu: Personenprofil-Seite für ALLE Personen.** Torstens Rückmeldung:
  "ich sehe aber noch immer keine Profil Details wie in der Teilnehmerliste
  der Schwimmkurse, so in der Art soll das für alle aussehen." "🔍 Details"
  in der Personenverwaltung öffnet jetzt eine eigene Profilseite mit
  denselben 5 Reitern (Hauptdaten/Kontakt/Trainingsverlauf/
  Qualifikationen/Dokumente) wie die bekannte Teilnehmerliste der
  Schwimmkurse – für JEDE Person, nicht nur für Kursteilnehmer. Hat eine
  Person eine Kurs-Teilnahme, zeigt "Hauptdaten" zusätzlich Status/
  Kursziele im Kurs, "Kontakt" die gewohnten Kind-/Eltern-/
  Notfallkontakt-Felder und "Qualifikationen" die erreichten Stufen –
  ohne Kurs-Teilnahme (reine Trainer/Einsatzkräfte/Admins) stehen
  stattdessen eigene Kontaktdaten der Person selbst zur Verfügung. Neu auf
  dieser Seite: Name/Geburtsdatum bearbeiten, Gruppen-Zuordnung und
  Login-Verwaltung sind aus dem bisherigen inline "Details"-Panel der
  Personenverwaltung hierher umgezogen; der Führerschein-Upload (seit
  v149) steht jetzt im Reiter "Dokumente". Die bestehende
  Teilnehmer-Detailseite (verlinkt aus Teilnehmerliste/Kurse/Archiv/
  Hundeschwimmen/Schwimmcamp) bleibt unverändert bestehen.

## v152 (29.08.2026)

- **Personenverwaltung: "Person suchen" ganz oben und offen.** Torstens
  Wunsch: "in der Personenverwaltung soll ▼Person suchen ganz oben stehen
  und als einziges Feld geöffnet sein." Die Sektion "Person suchen" steht
  jetzt an erster Stelle und ist beim Öffnen der Personenverwaltung bereits
  aufgeklappt – die übrigen fünf Sektionen (Gruppen, Alle Personen, Neue
  Person anlegen, Logins ohne Person-Zuordnung, Vermutete Dubletten)
  bleiben wie bisher zugeklappt.

## v151 (29.08.2026)

- **Personenverwaltung: schlankere Zeilen.** Torstens Rückmeldung: "hier
  soll nur der Name und die Felder Details und löschen zu sehen sein,
  alles andere ist in den Details der Person einzustellen." In "Alle
  Personen" und "Person suchen" zeigt jede Zeile jetzt nur noch Name,
  "🔍 Details" und "🗑️ löschen". Gruppen-Zuordnung, Führerschein-Upload
  und Login-Verwaltung (Rolle, Passwort, Berechtigungen, Login
  anlegen/lösen/löschen) sowie das Geburtsdatum stehen jetzt gesammelt
  im "Details"-Panel, das sich per Klick öffnet – Funktion unverändert,
  nur der Ort.

## v150 (29.08.2026)

- **Neu: Personendatensatz bearbeiten + Detailansicht.** Torstens
  Rückmeldung: "einen Personendatensatz zu bearbeiten ist in der neuen 👤
  Personenverwaltung noch nicht möglich und ich sehe keine Möglichkeit in
  die 'User Details' zu kommen." Jede Personen-Zeile in "Alle Personen"
  und "Person suchen" hat jetzt einen Button "🔍 Details" – er öffnet ein
  Panel mit einem Bearbeiten-Formular für Name/Geburtsdatum sowie darunter
  die vollständige, kurs-/saisonübergreifende Kurs-Historie dieser Person
  (alle Kurse + darin erreichte Kursziele über die Jahre).

## v149 (29.08.2026)

- **Neu: Führerschein-Foto/-Datei im Personenstamm.** Torstens Wunsch:
  "für die Einsatzkräfte muss ich den Führerschein als Foto oder Datei im
  Personenstamm hinterlegen können (beide Seiten)". In der
  Personenverwaltung zeigt jede Person aus der Gruppe "Einsatzkraft" jetzt
  ein Feld "🪪 Führerschein" mit zwei unabhängigen Upload-Feldern
  (Vorderseite/Rückseite) – Foto (JPG/PNG/…) oder PDF, bis 15 MB. Ist eine
  Seite hochgeladen, lässt sie sich über "👁️ ansehen" öffnen oder über
  "🗑️" wieder entfernen; ein erneuter Upload ersetzt die vorherige Datei.
  Sichtbar/hochladbar unter denselben Rechten wie der Rest der
  Personenverwaltung.

## v148 (29.08.2026)

- **Personenverwaltung: Sektionen auf-/zuklappbar.** Torstens Wunsch: "auch
  im Bereich 👤 Personenverwaltung wäre es schön wenn die Sektionen auf und
  zuklappbar wären mit dem default geschlossen." Die sechs Abschnitte
  (Gruppen, Person suchen, Alle Personen, Neue Person anlegen, Logins ohne
  Person-Zuordnung, Vermutete Dubletten) lassen sich jetzt einzeln per
  Klick auf Überschrift/Pfeil auf- und zuklappen, genau wie schon länger im
  Tab "⚙️ Verwaltung" – alle sechs starten zugeklappt. Rein optisch, keine
  Funktion wurde verändert.

## v147 (29.08.2026)

- **Bugfix Struktur-Verwaltung**: bestehende Bereiche ließen sich in v146
  zwar umbenennen und ihre Berechtigungen ändern, aber nicht in einen
  anderen Bereich VERSCHIEBEN (Torstens Rückmeldung: "ich kann nur noch
  keine bestehenden Bereiche in Unterbereiche verschieben"). Das
  Bearbeiten-Formular eines Knotens hat jetzt ein zusätzliches Feld
  "Übergeordneter Bereich" – dort lässt sich ein bestehender Bereich (oder
  ein Unterbereich davon) auswählen, um den gerade bearbeiteten Knoten
  dorthin zu verschieben, oder "oberste Ebene" für einen eigenständigen
  Bereich. Als Ziel stehen nur Ordner-Knoten zur Auswahl, der Knoten
  selbst sowie alle seine eigenen Unterbereiche scheiden aus (kein
  Verschieben in sich selbst).

## v146 (29.08.2026)

- **Neu: Bereiche/Unterbereiche selbst anlegen.** Torstens Wunsch: "für
  die Verwaltung der Bereiche und Unterbereiche hätte ich gerne die
  Möglichkeit diese selbst anzulegen, bis hin zu Unter Unter Bereiche und
  dazu die Berechtigungen wie bisher festzulegen." Die komplette
  Navigation (Hub-Kacheln + Tab-Leisten) ist jetzt kein festes
  Programm-Gerüst mehr, sondern ein Baum, den ein Super-Admin über die
  neue Karte "🌳 Struktur-Verwaltung" (Tab "⚙️ Verwaltung") selbst
  bearbeitet: Bereiche, Unterbereiche und Unter-Unterbereiche anlegen,
  umbenennen, mit Icon versehen, verschieben, löschen – beliebig tief
  verschachtelt. Jeder Knoten trägt eine feste technische Nummer (`#12`
  usw.), damit sich eindeutig auf ihn verweisen lässt, auch wenn sich der
  Name später ändert.
- **Berechtigungen jetzt auf jeder Ebene einzeln.** Die Berechtigungs-
  verwaltung (Personenverwaltung → "🔐 Berechtigungen") zeigt den ganzen
  Baum auf-/zuklappbar und lässt "Standard"/"voller Zugriff"/"nur
  lesen"/"gesperrt" für JEDEN Knoten setzen – vom ganzen Bereich bis zum
  einzelnen Unter-Unterpunkt, nicht mehr nur pro fest benannter View.
  Neue Knoten bekommen beim Anlegen entweder eine Liste von Rollen oder
  eine Gruppe als Standard-Sichtbarkeit.
- **Neue Inhalts-Knoten**: ein selbst angelegter Unterbereich vom Typ
  "Inhalt" bekommt einen einfachen Editor für Freitext, einen optionalen
  Link und ein optionales Bild – wahlweise öffentlich (ohne Login lesbar)
  oder nur für berechtigte Accounts.
- **Einsatz-Bereich in drei unabhängige Rechte aufgeteilt**:
  Medizinprodukteverzeichnis, Anleitungssammlung und Medizinproduktebuch
  lassen sich jetzt einzeln frei-/sperren, statt sich (wie bisher) einen
  gemeinsamen Rechte-Schlüssel zu teilen.
- **Events/Schwimmcamp/Archiv ebenfalls unabhängig berechtigt**: "Events",
  "Schwimmcamp" und das gemeinsame Archiv (beide Kategorien) sind jetzt
  drei eigene Rechte statt einem gemeinsamen. Beim Verschieben eines
  Events zwischen aktiv und archiviert (oder beim Kopieren) wird jetzt
  sowohl das Recht auf der alten als auch auf der neuen Seite geprüft.
- **Bugfixes im selben Zug behoben**: mehrere Endpunkte der neuen
  bereichsspezifischen "Verwaltung"-Tabs (v145) waren noch fälschlich auf
  das allgemeine "admin"-Recht verdrahtet statt auf die eigentlich dafür
  vorgesehenen Rechte; das Verschieben einer Anmeldung akzeptierte
  versehentlich auch einen Zielzeitslot eines ANDEREN Events (lehnt das
  jetzt ab); ein latenter Fehler in der Erkennung "Rolle Einlasskontrolle
  darf nur scannen" ist behoben (betraf ausschließlich das interne
  Frontend-Verhalten, keine Serverdaten).
- Bestehende Konten/Berechtigungen bleiben nach dem Update unverändert –
  die neue Struktur wird beim ersten Start 1:1 aus der bisherigen,
  hartcodierten Navigation aufgebaut.

## v145 (29.08.2026)

- Der bisher eine große Tab "⚙️ Verwaltung" ist entschlackt: zwei neue,
  bereichsspezifische "⚙️ Verwaltung"-Tabs übernehmen die Karten, die
  inhaltlich zu einem bestimmten Bereich gehören.
  - Im Bereich "🏊 Schwimmkurse": "Erklärungen ohne TeilnehmerID zuordnen",
    "Qualifikationsstufen" und "Erklärungen als Papierform vorgelegt
    markieren".
  - Im Bereich "🐕 Events": "Badeordnung (Hundeschwimmen-Anmeldung)".
  - In der zentralen "⚙️ Verwaltung" (Bereich "Verwaltung") bleiben nur
    noch die bereichsübergreifenden Einstellungen: Anzeige-Passwort,
    E-Mail-Versand (SMTP), Benachrichtigungen, Datensicherung.
  - Inhalt und Funktion aller Karten sind unverändert, nur ihr Platz in
    der Navigation hat sich geändert – auch als eigene, einzeln
    frei-/sperrbare Berechtigung in der Personenverwaltung verfügbar.

## v144 (29.08.2026)

- Die bisherige Anleitungs-Ablage (seit v142: ein PDF-Upload je einzelnem
  Medizinprodukt) ist aufgeteilt in zwei eigene neue Unterbereiche des
  Tabs "🚑 Einsatz":
  - **📄 Anleitungssammlung**: eine zentrale Liste von Bedienungsanleitungen
    je Hersteller+Modell. Ein Upload gilt automatisch für ALLE Geräte im
    Medizinprodukteverzeichnis mit demselben Hersteller+Modell – bei
    mehreren baugleichen Geräten muss die Anleitung nur noch einmal
    hochgeladen werden. Im Bearbeiten-Panel eines Medizinprodukts wird die
    passende Anleitung jetzt automatisch angezeigt (nur noch zum Ansehen,
    der Upload läuft ausschließlich über die Anleitungssammlung).
  - **📖 Medizinproduktebuch**: ein Logbuch je einzelnem Gerät nach der
    Medizinprodukte-Betreiberverordnung (MPBetreibV) – Einträge für
    sicherheitstechnische Kontrolle (STK), Reparatur, Funktionsprüfung und
    Vorkommnis, jeweils mit Datum, Ergebnis/Beschreibung und
    durchführender Person/Firma.
  - Bereits vorher (v141-v143) hochgeladene Anleitungen werden beim ersten
    Start dieser Version automatisch in die neue Anleitungssammlung
    übernommen, nichts geht dabei verloren.

## v143 (29.08.2026)

- Bugfix: der erste Anleitungs-Upload nach dem Umstieg von v141 (Google-
  Suche) auf v142 (manueller Upload) schlug bei bereits laufenden
  Installationen mit einem Serverfehler fehl ("NOT NULL constraint
  failed"), weil die Datenbanktabelle noch zwei nicht mehr benötigte
  Spalten aus v141 enthielt. Wird jetzt beim Start automatisch bereinigt,
  kein manueller Eingriff nötig – einfach neu deployen.

## v142 (29.08.2026)

- Die in v141 vorgesehene automatische Google-Suche nach Anleitungen für
  Medizinprodukte ließ sich nicht einrichten: Google hat die dafür nötige
  Custom Search API für neue Kunden komplett geschlossen (Microsofts
  Bing-Alternative ist bereits seit August 2025 ganz abgeschaltet). Der
  komplette Google-Suche-Block (Einstellungskarte in der Verwaltung sowie
  der "🔍 Anleitung suchen"-Button) ist deshalb wieder entfernt.
- Stattdessen gibt es im Bearbeiten-Panel eines Medizinprodukts
  (Bereich "🚑 Einsatz") jetzt ein einfaches Upload-Feld: PDF-Datei
  auswählen und auf "⬆️ PDF hochladen" klicken, fertig. Die Datei wird wie
  zuvor dauerhaft gespeichert; in der Liste erscheint bei hinterlegter
  Anleitung weiterhin ein "📄 Anleitung"-Button, der sie in einem neuen Tab
  öffnet – auch für Accounts mit "nur lesen"-Zugriff auf Einsatz (Hochladen/
  Ersetzen/Entfernen bleibt Accounts mit vollem Schreibrecht vorbehalten).

## v141 (29.08.2026, in v142 überarbeitet – siehe oben)

- Medizinprodukteverzeichnis (Bereich "🚑 Einsatz"): ursprünglich als
  automatische Anleitungs-Suche über die Google Custom Search API geplant
  und umgesetzt. Ließ sich in der Praxis nicht einrichten (siehe v142) und
  wurde durch einen manuellen Upload ersetzt. Die Speicherung/Anzeige der
  Anleitung (dauerhaft abgelegt, online ansehbar über einen "📄
  Anleitung"-Button, auch für "nur lesen"-Accounts) ist unverändert aus
  dieser Version übernommen.

## v140 (29.08.2026)

- Berechtigungsverwaltung (Button "🔐 Berechtigungen" in der
  Personenverwaltung) um eine dritte Stufe "👁️ Immer nur lesen" erweitert:
  eine damit freigeschaltete Ansicht lässt sich betrachten, aber nicht
  anlegen/bearbeiten/löschen – z.B. das Medizinprodukteverzeichnis im
  Bereich "Einsatz" für einen Account freigeben, ohne dass dieser Geräte
  hinzufügen, ändern oder löschen kann. Gilt jetzt konsistent für jede der
  bisherigen Ansichten in dieser Verwaltung, nicht nur für Einsatz. Für das
  Medizinprodukteverzeichnis bereits vollständig in der Oberfläche
  umgesetzt (Bearbeiten-Button und Anlegen-Formular verschwinden bei "nur
  lesen", die Liste bleibt sichtbar) – bei den übrigen Bereichen bleiben
  Schreibversuche eines "nur lesen"-Accounts serverseitig ebenfalls
  zuverlässig blockiert, auch wenn die Oberfläche dort noch nicht überall
  gezielt Bearbeiten-Knöpfe ausblendet.
- Das Berechtigungs-Panel zeigt seine Ansichten jetzt nach Bereich
  gruppiert (Schwimmkurse/Events/Einsatz/Personenverwaltung/Verwaltung) und
  einzeln auf-/zuklappbar, standardmäßig alle zugeklappt – ein Bereich mit
  mindestens einer gesetzten Ausnahme zeigt das direkt als Hinweis an der
  Überschrift an, auch ohne ihn erst aufzuklappen.

## v139 (29.08.2026)

- Bugfix Personendatenbank: eine Person, die als Login-Account verknüpft
  ist (z.B. der eigene Admin-Account), konnte beim Löschen ihres letzten
  Kurses (Button "🗑️ löschen" bei "Kurse dieses Teilnehmers") unbemerkt mit
  gelöscht werden, wenn sie zu diesem Zeitpunkt gerade keiner Gruppe
  angehörte – die Verknüpfung zum Login-Account riss dadurch ab, ohne dass
  das an der Oberfläche auffiel. Betroffen war ausschließlich dieser
  Sonderfall (eigener Test-Kurs bei einem verknüpften Account); normale
  Teilnehmer ohne Login-Verknüpfung waren nie betroffen. Eine mit einem
  Account verknüpfte Person gilt jetzt nie mehr als verwaist, unabhängig
  davon, ob sie noch einen Kurs oder eine Gruppe hat.

## v138 (29.08.2026)

- Neue, CMS-artige Berechtigungsverwaltung: ein Super-Admin kann jedem
  einzelnen Account (nicht nur jeder Rolle) über einen neuen Button
  "🔐 Berechtigungen" in der Personenverwaltung gezielt einzelne Bereiche/
  Tabs freischalten oder sperren – unabhängig davon, was dessen Rolle
  normalerweise erlaubt. Beispiel aus der Praxis: "Statistik" (normalerweise
  nur für Admins) lässt sich für genau einen einzelnen Trainer-Account
  freischalten, ohne ihn gleich zum Admin zu machen. Für jede Ansicht steht
  eine dreistufige Auswahl zur Verfügung: "Standard" (richtet sich wie
  bisher nach der Rolle), "Immer erlaubt" oder "Immer gesperrt" (beides
  gilt nur für diesen einen Account). Ohne gesetzte Ausnahme verhält sich
  jeder Account exakt wie vor v138 – die neue Verwaltung ändert an den
  bisherigen Standard-Rechten nichts, sie ergänzt nur eine optionale
  Ausnahme pro Account.
- Diese individuellen Ausnahmen wirken jetzt durchgehend sowohl im
  Menü (welche Tabs/Kacheln sichtbar sind) als auch serverseitig bei den
  jeweils zugehörigen Programmierschnittstellen (Endpunkten) – eine
  Freischaltung funktioniert also wirklich, keine reine Oberflächen-Attrappe.
  Ausgenommen bleibt bewusst die bestehende Sperre, wer die Rollen "Admin"/
  "Super Admin" vergeben, ändern oder löschen darf: die bleibt unabhängig
  von jeder Einzel-Freischaltung ausschließlich Super-Admins vorbehalten.
- Ein Super-Admin kann sich über diese neue Verwaltung nicht versehentlich
  selbst aus der Personenverwaltung oder der Verwaltung aussperren – diese
  beiden Bereiche bleiben für Super-Admin-Accounts immer erreichbar, damit
  eine falsch gesetzte Sperre sich immer selbst wieder rückgängig machen
  lässt.

## v137 (29.08.2026)

- Der v135-Button "🔀 Verschieben" (Event zwischen Schwimmcamp/Events
  umkategorisieren) ist wieder entfernt – er wurde nur einmalig für ein
  bestehendes, falsch kategorisiertes Event gebraucht.
- Neuer Gruppen-Filter in der Personenverwaltung ("Alle Personen"): lässt
  sich jetzt gezielt auf eine bestimmte Gruppe einschränken, inklusive der
  automatisch berechneten Gruppen "Schwimmkursteilnehmer"/"Besucher" (seit
  v136) – diese waren technisch immer korrekt gesetzt, tauchten aber in der
  bisherigen Standard-Übersicht nicht auf, wodurch es so wirkte, als fehle
  das Häkchen bei den bestehenden Schwimmkursteilnehmern. Die Gruppen-Karte
  zeigt jetzt außerdem die korrekte Mitgliederzahl für diese beiden Gruppen
  an (vorher immer 0).

## v136 (29.08.2026)

- Neuer eigenständiger Bereich "👤 Personenverwaltung" auf der Bereiche-
  Startseite (5. Kachel): die bisherige Karte aus "⚙️ Verwaltung" ist
  komplett hierher umgezogen, unverändert an Inhalt/Funktion.
- Zentrale Personendatenbank: "Schwimmkursteilnehmer" (echte Schwimmkurse
  UND Schwimmcamp) und "Besucher" (allgemeine Vereins-Events) werden ab
  sofort automatisch anhand der tatsächlichen Kurs-/Event-Teilnahmen
  berechnet, statt manuell gepflegt zu werden – erkennbar am 🔒-Symbol und
  der schreibgeschützten Checkbox in der Personenverwaltung. Über den
  Gruppen-Filter lässt sich dort gezielt "alle Schwimmkursteilnehmer" oder
  "alle Besucher" nachschlagen.
- Die bestehenden Teilnehmer-Listen in Schwimmkurse/Schwimmcamp/Events
  bleiben unverändert wie bisher – die neue automatische Einordnung ergänzt
  nur die zentrale Personendatenbank, ohne an diesen Ansichten etwas zu
  ändern.

## v135 (29.08.2026)

- Neuer Button "🔀 Zu 🏕️ Schwimmcamp" / "🔀 Zu 🐕 Events" in allen vier
  Event-Listen (Events/Schwimmcamp, jeweils aktiv und Archiv): verschiebt
  ein bestehendes Event nachträglich zwischen den beiden Kategorien, falls
  es beim Anlegen versehentlich der falschen zugeordnet wurde. Alle
  Anmeldungen, Stufen und Zeitslots bleiben dabei vollständig erhalten –
  es ändert sich nur die organisatorische Zuordnung (Bereich Schwimmkurse
  vs. Bereich Events).

## v134 (29.08.2026)

- Neuer Tab "📢 Aktuelles" im Bereich "Schwimmkurse": der Hinweis-Block für
  die Eltern-Ansicht (Text/Bild/Link) ist aus der Verwaltung hierher
  umgezogen, ohne Änderung an Funktion oder Inhalt.
- "Schwimmcamp" ist jetzt eine echte, eigenständige Verwaltung im Bereich
  "Schwimmkurse" (Tab "🏕️ Schwimmcamp", löst den bisherigen
  "in Vorbereitung"-Platzhalter ab): eigene Liste, eigenes Anlegen-Formular
  und eine eigene, vom Bereich "Events" getrennte Teilnehmer-Liste. Technisch
  ist ein Schwimmcamp weiterhin ein ganz normales Event mit Stufen,
  Zeitslots, öffentlicher Online-Anmeldung und "Anmeldungen übernehmen" –
  nur organisatorisch jetzt im Bereich "Schwimmkurse" statt "Events"
  geführt.
- Der Bereich "Events" (Tab "🐕 Events verwalten") zeigt entsprechend nur
  noch die allgemeinen Vereins-Events (z.B. Hundeschwimmen) – ein neuer Tab
  "📦 Archiv" ist dort dazugekommen, für archivierte allgemeine Events (bis
  v134 gab es dafür in diesem Bereich noch kein eigenes Archiv). Das
  bisherige Archiv im Bereich "Schwimmkurse" zeigt jetzt entsprechend nur
  noch archivierte Schwimmcamp-Events.
- Die Teilnehmer-Liste "👥 Teilnehmer" im Bereich "Events" zeigt nach der
  Trennung nur noch Teilnehmer aus allgemeinen Events – Schwimmcamp-
  Teilnehmer stehen in der neuen, eigenen Liste im Tab "🏕️ Schwimmcamp".
- Die Link-Übersicht (Tab "🔗 Links") zeigt weiterhin die Anmeldelinks
  BEIDER Kategorien zusammen, wie bisher.

## v133 (29.08.2026)

- Neue, einheitliche Karte "👤 Personenverwaltung" im Bereich "⚙️
  Verwaltung" (Torstens Wunsch: "ich hätte in der Verwaltung noch genau
  einen Bereich zur Personenverwaltung … es sollen alle Personen egal ob
  Trainer, Kursteilnehmer, Einsatzkräfte, Benutzer in einer Datenbank
  sein, also ein Personenstamm in dem alles einstellbar ist als zentrale
  Anlaufstelle rund um die Personenverwaltung") – sie ersetzt die vier
  bisherigen, getrennten Karten "Benutzer", "Gruppen", "Personen" und
  "Personen-Zuordnung" vollständig.
- Das Benutzerkonto (Login/Rolle/Passwort) einer Person wird jetzt direkt
  in ihrer Zeile in "Alle Personen" bzw. in den Suchergebnissen verwaltet:
  "🔑 Login anlegen" legt ein neues Konto direkt für diese Person an, ist
  schon eines verknüpft, erscheinen dort sofort Rollen-Auswahl, "🔑
  Passwort setzen", "🔓 lösen" (Konto bleibt bestehen, verliert aber die
  Verknüpfung zu dieser Person) und "🗑️ löschen" (Konto komplett
  entfernen). Ein separates "Neuen Benutzer anlegen"-Formular gibt es
  dafür nicht mehr.
- Eine Person kann ab sofort mit höchstens einem Benutzerkonto gleichzeitig
  verknüpft sein – ein Versuch, ein zweites Konto an dieselbe Person zu
  hängen, wird mit einer klaren Fehlermeldung abgelehnt.
- Neuer Unterabschnitt "Logins ohne Person-Zuordnung": Benutzerkonten, die
  (noch) mit keiner Person verknüpft sind – z.B. der technische
  Bootstrap-Account "admin" – bleiben dadurch weiterhin sichtbar und
  verwaltbar (Rolle ändern, Passwort setzen, mit einer Person verknüpfen,
  löschen), statt beim Wegfall der alten "Benutzer"-Karte unsichtbar zu
  werden.
- Die Übersicht "Alle Personen" zeigt jetzt jede Person mit mindestens
  einer Gruppen-Mitgliedschaft ODER einem verknüpften Login (vorher nur
  Personen mit Gruppe) – eine Person mit ausschließlich einem Login (ohne
  jede Gruppe) taucht damit ebenfalls auf.
- Der Unterabschnitt "Vermutete Dubletten" (zusammenführen/ignorieren,
  bisher eigene Karte "Personen-Zuordnung") ist jetzt Teil derselben
  Personenverwaltung-Karte, an gleicher Stelle wie vorher inhaltlich
  unverändert.
- Alle bisherigen Regeln bleiben unverändert erhalten: nur ein
  Super-Admin darf Admin-/Super-Admin-Rollen vergeben oder ändern, der
  eigene Account sowie der letzte verbleibende Administrator können nicht
  gelöscht werden, und Gruppen-Zuordnung/Personen-Anlage/-Löschung
  funktionieren wie in v131.

## v132 (29.08.2026)

- Neue Startseite nach dem Login: statt der bisherigen Tab-Leiste mit allen
  Tabs nebeneinander gibt es jetzt vier Bereichs-Kacheln – "🏊
  Schwimmkurse" (Einlass scannen, Übersicht, Kurse, Teilnehmer, Statistik,
  Archiv, Trainer), "🐕 Events" (Events verwalten, Teilnehmer), "🚑
  Einsatz" (Medizinprodukteverzeichnis) und "⚙️ Verwaltung" (Verwaltung,
  Links). Ein Klick auf eine Kachel öffnet nur noch die Tabs DIESES
  Bereichs, "← Bereiche" führt jederzeit zurück zur Übersicht. Welche
  Kacheln/Tabs zu sehen sind, richtet sich wie bisher nach der Rolle bzw.
  Gruppen-Mitgliedschaft (z.B. "Einsatz" nur für Einsatzkräfte/
  Super-Admins, "Statistik"/"Archiv"/"Trainer"/"Verwaltung" nur für
  Admins). Die Rolle "Einlasskontrolle" bekommt diese neue Startseite gar
  nicht erst zu sehen und landet wie bisher direkt beim Scannen.
- Im Bereich "Schwimmkurse" taucht als Vorschau bereits "🏕️ Schwimmcamp
  (in Vorbereitung)" auf, im Bereich "Einsatz" zusätzlich "📄 Anleitung"
  und "🚒 Einsatzkräfte" (jeweils "in Vorbereitung") – alle drei sind
  noch nicht nutzbar, zeigen aber schon, wohin sich die App als Nächstes
  entwickelt.
- Auf der Vereins-Startseite (`/`) heißt die Kachel zur Anmeldung jetzt
  "MCC Login" statt "Einlasskontrolle & Kursverwaltung", da die
  Anwendung dahinter längst viel mehr als reine Einlasskontrolle abdeckt.

## v131 (29.08.2026)

- Neues Gruppensystem für die Personendatenbank (Torstens Wunsch: "ich
  benötige noch ein Gruppensystem für die Personendatenbank, Personen
  können Mitglied mehrerer Gruppen sein"): jede Person kann jetzt beliebig
  vielen Gruppen gleichzeitig angehören. Vier Standard-Gruppen sind von
  Anfang an vorhanden (Schwimmkursteilnehmer, Trainer, Einsatzkraft,
  Besucher), weitere eigene Gruppen lassen sich in der neuen Karte
  "Gruppen" im Tab "⚙️ Verwaltung" frei anlegen (sowie umbenennen/löschen –
  "Trainer" und "Einsatzkraft" sind dabei geschützt, da an ihnen feste
  Automatik hängt, siehe unten).
- Neue Karte "Personen" im Tab "⚙️ Verwaltung": Personen suchen (auch
  bestehende Kursteilnehmer) und ihnen Gruppen per Checkbox zuordnen, eine
  Übersicht aller Personen mit mindestens einer Gruppe, sowie ganz neue,
  noch nirgends im System vorkommende Personen anlegen (z.B. für einen
  neuen Trainer oder eine neue Einsatzkraft). Admins UND Super-Admins
  dürfen Gruppen zuordnen.
- Die Gruppe "Trainer" ersetzt das bisherige manuelle Anlegen eines
  Trainers im Tab "🧑‍🏫 Trainer": eine Person mit dieser Gruppe erscheint
  automatisch dort, ohne Gruppe verschwindet sie automatisch wieder ("+
  Neuen Trainer anlegen" gibt es in diesem Tab nicht mehr).
- Die Gruppe "Einsatzkraft" ersetzt das mit v130 eingeführte Häkchen
  "Einsatzkraft" in der Benutzerverwaltung vollständig: ob ein
  Benutzer-Konto den Tab "🚑 Einsatz" sehen darf, entscheidet jetzt allein,
  ob die mit diesem Konto verknüpfte Person Mitglied der Gruppe
  "Einsatzkraft" ist (Super-Admins sehen den Tab weiterhin immer). Ein
  Konto wird über einen neuen "🔗 verknüpfen"-Knopf in der
  Benutzerverwaltung mit einer Person verbunden.
- Nur noch Super-Admins dürfen Konten mit der Rolle "Admin" oder "Super
  Admin" ernennen, zurückstufen oder löschen (vorher durfte jeder Admin
  auch andere Admins ernennen) – ein normaler Admin sieht diese beiden
  Rollen in den entsprechenden Auswahlfeldern gar nicht mehr erst
  angeboten.

## v130 (29.08.2026)

- Neuer Bereich "🚑 Einsatz" mit dem ersten Unterbereich
  "Medizinprodukteverzeichnis" (Torstens Wunsch: "für unser Einsatzwesen
  benötigen wir auch noch viele Sachen zuerst einen eigenen Bereich Einsatz
  mit dem ersten Unterbereich Medizinprodukteverzeichnis") – ein
  Bestandsverzeichnis für die Medizinprodukte im Einsatzdienst mit den
  üblichen Pflichtangaben (Bezeichnung, Hersteller, Modell, Seriennummer,
  Standort, Anschaffungsdatum, nächste Prüfung/Wartung fällig am, Status
  "in Betrieb"/"defekt"/"außer Betrieb", Verantwortlicher). Eigene
  Unter-Navigation von Anfang an, damit weitere angekündigte
  Unterbereiche des Einsatzwesens sich künftig einfach ergänzen lassen.
- Neues Häkchen "Einsatzkraft" in der Benutzerverwaltung, unabhängig von
  der bisherigen Rolle – nur damit ist der neue Tab "Einsatz" für einen
  Benutzer sichtbar (ein Admin OHNE dieses Häkchen sieht ihn nicht,
  Torstens ausdrücklicher Wunsch), Super-Admins sehen ihn zusätzlich
  immer.

## v129 (29.08.2026)

- Neue "Master-ID" je Teilnehmer: eine einzige, frei editierbare Kennung
  für den zentralen Teilnehmer-Datensatz, unabhängig davon, in welchem/
  welchen Kursen er gerade ist – anders als die TeilnehmerID, die es seit
  v128 je Kurs einzeln gibt (wichtig für den QR-Code auf der gedruckten
  Karte). Gedacht z.B. für eine externe Mitglieds-/Vereinsnummer. Eindeutig
  über alle Teilnehmer hinweg; steht ganz oben bei den Grunddaten in
  "▼ Ansicht", mit eigenem Speichern-Button.
- Kursziele werden jetzt korrekt JE KURS unterschieden: ist ein Teilnehmer
  gleichzeitig in mehreren Kursen mit unterschiedlichen Kurszielen, zeigt
  jeder Kurs nur noch sein EIGENES Kursziel an (in dessen Übersicht/Matrix,
  in "Kurse dieses Teilnehmers" direkt an der jeweiligen Kurs-Zeile, in der
  Live-Anzeige, im Kurstag und im Trainingsverlauf) – vorher wurden seit
  v128 versehentlich die Kursziele ALLER gleichzeitigen Kurse eines
  Teilnehmers vermischt, sodass er z.B. in Kurs A schon als "Kursziel
  erreicht" markiert war, nur weil er das Ziel von Kurs B erreicht hatte.
- Tab "Teilnehmer"/"Kurse": in "▼ Ansicht" stehen die Grunddaten (Master-ID,
  Markierung, Alter, Kontaktdaten, Erklärung) jetzt wieder ganz oben,
  "Kurse dieses Teilnehmers" direkt darunter – kehrt die mit v128
  eingeführte Reihenfolge (Kurse ganz oben) auf Rückmeldung wieder um.
- In "▼ Ansicht" wurden die erreichten Qualifikationsstufen-Chips samt den
  generischen Kursziel-Schnellauswahl-Buttons entfernt (Torstens
  Rückmeldung: "die Daten ... brauchen in der schnellansicht gar nicht mehr
  zu stehen, das sehe ich ja unter Qualifikationen was er schon hat") – sie
  duplizierten den Reiter "Qualifikationen" auf der Personen-Detailseite
  und zeigten, kursübergreifend zusammengefasst, ein Kursziel nicht
  erkennbar dem richtigen Kurs zugeordnet. Was ein Teilnehmer je Kurs
  konkret erreicht hat, steht seitdem ausschließlich direkt an der
  jeweiligen Kurs-Zeile in "Kurse dieses Teilnehmers" (🎯-Hinweis, siehe
  oben). Der "schwimmt"-Button bleibt unverändert.
- Tab "Teilnehmer": in der Übersichts-Zeile jedes Teilnehmers steht der
  Kurs/die Kurse nicht mehr (Torstens Rückmeldung: "in der Teilnehmer
  Übersicht braucht der Kurs nicht mehr stehen") – welche(r) Kurs(e), steht
  weiterhin beim Aufklappen unter "Kurse dieses Teilnehmers".

## v128 (29.08.2026)

- Ein Teilnehmer kann jetzt GLEICHZEITIG in mehreren Kursen sein (Torstens
  Wunsch: "es muss möglich sein das Teilnehmer in mehreren Kursen sind") –
  vorher war ein Teilnehmer immer nur in genau einem Kurs, "↔ verschieben"
  war der einzige Weg, ihn einem anderen Kurs zuzuordnen. Jeder Kurs
  vergibt weiterhin seine eigene TeilnehmerID (wichtig für den QR-Code auf
  der gedruckten Karte), ein Teilnehmer hat also je Kurs eine eigene ID,
  aber genau EINEN zentralen Datensatz mit Name, Kontaktdaten, Alter,
  Erklärung und Qualifikationsstufen.
- Neuer Bereich "Kurse dieses Teilnehmers" oben in der "▼ Ansicht" eines
  Teilnehmers (sowohl im Tab "Teilnehmer" als auch im Tab "Kurse") – der
  bisherige, etwas versteckte "↔ verschieben"-Modus steht jetzt dort ganz
  oben, je Kurs des Teilnehmers mit eigener Ziel-Auswahl (Torstens
  Rückmeldung: "die verschieben Ansicht ist in beiden Ansichten etwas
  versteckt bitte nach oben schieben hinter den aktuellen Kurs"). Für
  jeden Kurs des Teilnehmers steht dort außerdem die eigene TeilnehmerID
  (bearbeitbar mit eigenem Speichern-Button) sowie ein Button "✕ aus
  diesem Kurs", um den Teilnehmer aus genau diesem einen Kurs zu
  entfernen, ohne seine anderen Kurse oder seine Kontaktdaten anzutasten.
  Darunter eine Kurs-Auswahl mit Button "+ zu Kurs hinzufügen", um den
  Teilnehmer zusätzlich in einen weiteren Kurs aufzunehmen (er bekommt
  dort automatisch eine neue TeilnehmerID, falls keine eigene eingetragen
  wird). Der letzte verbleibende Kurs eines Teilnehmers lässt sich nicht
  über "✕ aus diesem Kurs" entfernen (dafür weiterhin "🗑️ löschen" nutzen).
- Die kollabierte Teilnehmerzeile zeigt jetzt alle Kurse eines Teilnehmers
  durch Komma getrennt an (z.B. "Kurs A, Kurs B") statt nur des einen,
  bisherigen Kurses; im Tab "Kurse" steht bei einem Teilnehmer, der auch
  in anderen Kursen ist, zusätzlich der Hinweis "auch in: …".
- Übersicht/Matrix, Einlass-Scan, Statistik, Events-Teilnahmeprüfung,
  Eltern-Ansicht-Kurstermine, Personendaten-Import und der
  Datensicherung-Export berücksichtigen jetzt alle Kurse eines
  Teilnehmers statt nur seines bisherigen einzelnen Kurses – z.B. zeigt
  die Matrix eines Kurses einen Teilnehmer weiterhin korrekt an, auch wenn
  er zusätzlich in einem anderen Kurs ist, und der Einlass-Scan erkennt
  denselben Teilnehmer über die QR-Codes all seiner Kurse.
- Wird ein Kurs gelöscht, wird ein Teilnehmer, der AUSSCHLIESSLICH in
  diesem einen Kurs war, weiterhin komplett gelöscht (wie bisher) – ist er
  zusätzlich noch in mindestens einem anderen Kurs, bleibt er als Person
  mit seinen übrigen Kursen erhalten, nur die Zugehörigkeit zum gelöschten
  Kurs verschwindet.
- Bestehende Teilnehmer aus Installationen vor dieser Version werden beim
  ersten Start automatisch in das neue System übernommen (ihr bisheriger,
  einzelner Kurs samt TeilnehmerID bleibt dabei unverändert erhalten) –
  keine manuelle Aktion nötig.

## v127 (29.08.2026)

- Tab "Kurse": neue Karte "Teilnehmer dieses Kurses" direkt unterhalb der
  Kursauswahl – sobald oben ein Kurs gewählt ist, erscheint dort die
  Teilnehmerliste dieses Kurses mit derselben "▼ Ansicht"-Verwaltung wie im
  Tab "Teilnehmer" (bearbeiten, in einen anderen Kurs verschieben,
  löschen), darunter ein Formular zum Hinzufügen eines neuen Teilnehmers zu
  genau diesem Kurs. Ergänzt die bisherige, kursübergreifende Verwaltung im
  Tab "Teilnehmer" (bleibt unverändert bestehen), erspart aber das
  Heraussuchen eines Kurses in der langen Gesamtliste, wenn man ohnehin
  schon im Tab "Kurse" bei diesem Kurs ist.

## v126 (29.08.2026)

- Kurs-Import aus Excel-Export: schlägt der automatische Import fehl, weil
  die Export-Datei keine Kursnummer enthält (kommt bei manchen
  Export-Typen ohne die übliche Kopfzeile "Nr." vor), erscheint jetzt ein
  Feld zum manuellen Eintragen der Kursnummer – vorher brach der Import in
  diesem Fall komplett ab.

## v125 (29.08.2026)

- Der neue Bereich "Pünktlichkeit" (seit v124) ist jetzt kein eigener Tab
  mehr, sondern ein Unterpunkt im Tab "📈 Statistik" – weiterhin nur für
  Super-Admins sichtbar, alle anderen Unterpunkte in "Statistik" bleiben
  für jeden Admin wie gewohnt zugänglich.
- Tab "Trainer": die Anzahl der Einsätze wird in der Trainer-Kachel nicht
  mehr angezeigt (die "Einsätze-Details" mit den einzelnen Terminen
  bleiben erhalten) – die entsprechende Auswertung gibt es bereits als
  eigenen Unterpunkt "Trainer" im Tab "Statistik".

## v124 (29.08.2026)

- Neue Benutzerrolle "Super Admin" (oberhalb von "Admin", hat automatisch
  alle Admin-Rechte mit dazu) – nur ein bestehender Super-Admin darf diese
  Rolle einem Account geben, ändern oder den Account löschen. Bei der
  ersten Installation mit dieser Version wird automatisch der
  dienstälteste bestehende Admin-Account zum ersten Super-Admin befördert.
- Neuer, nur für Super-Admins sichtbarer Tab "🕐 Pünktlichkeit": zeigt, wie
  pünktlich Teilnehmer beim Einlass-Scan und Trainer beim Check-in im
  Vergleich zur hinterlegten Kurstag-Startzeit erscheinen – als
  Kennzahlen (Ø Verspätung, Anzahl pünktlich/verspätet, Aufschlüsselung
  je Kurs/Teilnehmer/Trainer) und als Rohdaten-Liste, mit Zeitraum-Filter
  und Excel-Export.
- Teilnehmer: der Einlass-Scan protokolliert jetzt zusätzlich den
  Zeitpunkt des ERSTEN Scans pro Kurstag (bleibt bei erneutem Scan
  unverändert) – Grundlage für die neue Pünktlichkeits-Auswertung. Dieser
  Zeitpunkt ist ausschließlich über den neuen Super-Admin-Tab einsehbar,
  nirgendwo sonst in der App.
- Trainer-Anwesenheit: neuer Button "🕐 Jetzt einchecken" neben dem
  bisherigen "war da"-Häkchen, mit dem ein Trainer den Zeitpunkt seiner
  Ankunft für einen Kurstag bewusst protokollieren kann (einmalig, bleibt
  danach unverändert). Ebenfalls nur für Super-Admins in der
  Pünktlichkeits-Auswertung sichtbar.

## v123 (29.08.2026)

- Events: die Namensvorschläge beim manuellen Kind-Eintragen zeigen jetzt
  nur noch Teilnehmer, die für die jeweilige Leistungsstufe auch wirklich
  zugelassen sind (passender Kurs, passende Qualifikation) – ein
  ausgewählter Vorschlag löst dadurch nicht mehr die Rückfrage
  "Unbekannter Name" aus, weil er in Wahrheit einem anderen Kurs/einer
  anderen Qualifikationsstufe angehört.

## v122 (29.08.2026)

- Events: beim manuellen Eintragen eines Kindes in eine Zeitslot-Karte gibt
  es jetzt nur noch EIN Namensfeld ("Vor- und Nachname") statt zwei
  getrennter Felder für Vor- und Nachname – die Vorschläge daraus sind
  vollständige, tatsächlich zusammengehörige Namen aus der Teilnehmerliste,
  lassen sich also nicht mehr zu einer nicht existierenden Kombination
  vermischen. Ein noch nicht angelegter Name lässt sich weiterhin frei
  eintragen.
- Events: stornierte Anmeldungen (z.B. von Eltern über die Eltern-Ansicht
  wieder abgemeldet) werden in der Zeitslot-Karten-Übersicht nicht mehr
  angezeigt. Sie bleiben in der Datenbank erhalten, zählen weiterhin nicht
  zur Kapazität.

## v121 (28.08.2026)

- Events: die Trainer-Auswahl bei Zeitslots und (bei "Trainer pro Kind")
  einzelnen Kindern ist jetzt eine feste Auswahlliste statt eines freien
  Textfelds mit Vorschlägen – zur Wahl stehen nur Trainer, die im Tab
  "Trainer" als "Event-Trainer" markiert sind, und dort jeweils nur mit
  ihrem Vornamen.
- Tab "Trainer": neues Häkchen "Event-Trainer" pro Trainer, mit dem
  festgelegt wird, wer in der Events-Trainerauswahl erscheint (z.B. reine
  Kursleiter ohne Event-Bezug lassen sich so aus der Liste heraushalten).
- Ein bereits eingetragener Trainer-Wert, der nicht (mehr) zur Auswahl
  passt (z.B. weil der Trainer kein Event-Trainer mehr ist oder es sich um
  einen alten Freitext-Eintrag handelt), bleibt als zusätzliche, weiterhin
  ausgewählte Option erhalten, statt beim Öffnen stillschweigend
  verändert zu werden.

## v120 (28.08.2026)

- Events: die Trainer-Felder bei Zeitslots und (bei "Trainer pro Kind")
  einzelnen Kindern schlagen jetzt beim Tippen Namen aus der bestehenden
  Trainer-Liste (Tab "Trainer") vor, statt komplett frei eingetippt werden
  zu müssen. Ein noch nicht angelegter Name lässt sich weiterhin frei
  eintragen.

## v119 (28.08.2026)

- Eltern-Ansicht: die Karte "Aktuelles" ist jetzt immer sichtbar – ist
  gerade nichts hinterlegt, steht dort "Gerade nichts Neues." statt die
  ganze Karte auszublenden.

## v118 (28.08.2026)

- Die Benachrichtigungsmail zum Kontaktformular "Nachricht an die
  Trainer" (Eltern-Ansicht) enthält jetzt zusätzlich die im
  Teilnehmer-Datensatz hinterlegten Kontaktdaten des Kindes (Telefon/
  E-Mail) sowie Name, Telefon und E-Mail der Erziehungsberechtigten –
  damit lässt sich direkt aus der Mail zurückrufen, ohne extra die App zu
  öffnen. Fehlt etwas im Teilnehmer-Datensatz, wird die jeweilige Zeile
  einfach weggelassen.

## v117 (28.08.2026)

- Eltern-Ansicht: der Browser-Tab-Titel zeigte bisher "Abwesenheit melden –
  DLRG Mönsheim" und war damit unter mehreren offenen Tabs kaum von den
  anderen zu unterscheiden – heißt jetzt "DLRG Mönsheim – MCC
  Eltern-Ansicht", passend zur Überschrift oben auf der Seite.

## v116 (28.08.2026)

- Eltern-Ansicht: die "Folgt uns auch hier"-Links (Instagram/Facebook/
  WhatsApp) zeigen jetzt die echten, offiziellen Marken-Icons in den
  jeweiligen Markenfarben statt der bisherigen Emoji-Platzhalter.
- Eltern-Ansicht: das Kontaktformular "Nachricht an die Trainer" hat kein
  eigenes Rückruf-Feld mehr – Telefon/E-Mail des Kindes liegen den
  Trainern über den Teilnehmer-Datensatz ohnehin schon vor.
- Nachrichten aus diesem Kontaktformular gehen jetzt ausschließlich per
  E-Mail an die Trainer/den Admin – die bisherige Auflistung in der
  Verwaltung ("Nachrichten der Eltern") ist entfallen. Wichtig: dafür
  muss in der Verwaltung unter "Benachrichtigungen" das Häkchen "Beim
  Eingang einer Nachricht über das Kontaktformular" gesetzt und eine
  Ziel-Adresse hinterlegt sein, sonst geht eine Nachricht ohne den
  bisherigen Datenbank-Fallback verloren.

## v115 (28.08.2026)

- Eltern-Bereich: bereits VOR der eingebetteten Event-Buchung (siehe v112)
  entstandene Anmeldungen werden jetzt automatisch nachträglich dem
  passenden Kurskind zugeordnet, sofern eindeutig anhand des Namens
  erkennbar – solche älteren Buchungen erscheinen dadurch jetzt ebenfalls
  in der Eltern-Ansicht und lassen sich von dort aus abmelden, nicht nur
  neue Buchungen.
- Eltern-Bereich-Buchung: die Bestätigungsmail für bekannte Kurskinder
  (siehe v113) verweist nicht mehr auf einen "nicht nötigen neuen
  QR-Code" und enthält keinen Anmeldungs-Link mehr zum späteren
  Ansehen/Absagen – stattdessen nur noch den Hinweis, dass sich die
  Anmeldung jederzeit über die Eltern-Seite absagen lässt.

## v114 (28.08.2026)

- Eltern-Bereich: nach Klick auf einen Zeitslot bei der eingebetteten
  Event-Buchung kommt jetzt erst eine Rückfrage ("Wirklich „Name" für
  Datum Uhrzeit anmelden?"), bevor die Buchung tatsächlich gespeichert
  wird.

## v113 (28.08.2026)

- Eltern-Ansicht: die Zeitslot-Auswahl bei der eingebetteten Event-Buchung
  (siehe v112) zeigt jetzt dieselben Kacheln mit farbiger Belegungsanzeige
  wie auf der öffentlichen Event-Anmeldeseite, statt eigener Knöpfe.
- Events: pro Leistungsstufe lässt sich jetzt zusätzlich zur Kurs-
  Einschränkung ein Qualifikationsstufen-Filter hinterlegen ("nur mit"
  oder "nur ohne" einer bestimmten Qualifikation, z.B. "Anfänger ohne
  Seepferdchen") – ein Kind muss beide Bedingungen erfüllen, um die Stufe
  zu sehen/zu buchen. Geprüft an allen bisherigen Stellen (Eltern-Bereich,
  öffentliche Anmeldung, manuelles Eintragen).
- Eltern-Bereich-Buchung: bekannte Kurskinder bekommen bei der
  eingebetteten Event-Buchung keinen neuen, separaten QR-Code per Mail
  mehr – ihre bereits vorhandene Kurskarte funktioniert am Einlass
  automatisch auch für das Event.

## v112 (28.08.2026)

- Eltern-Ansicht: für "kursgesperrte" Events (z.B. das Schwimmcamp, siehe
  v110) zeigt der Eltern-Bereich nach dem Login jetzt direkt das nächste
  passende Event mit der Übersicht der für das eingeloggte Kind
  zugelassenen Leistungsstufen/Zeitslots an – ein Klick auf einen freien
  Slot bucht die Anmeldung sofort, ganz ohne erneute Namenseingabe
  (Torstens Wunsch: "die Eltern sollen nach ihrer Anmeldung den nächsten
  Event sehen und dort direkt die Übersicht der für sie zugelassenen
  Slots"). Eine bestehende Buchung erscheint dort ebenso direkt mit
  Abmelde-Button. Dieser eingebettete Weg ersetzt für kursgesperrte Events
  die bisherige öffentliche Anmeldeseite – uneingeschränkte Events (z.B.
  Hundeschwimmen) laufen unverändert über die bisherige Linkliste.

## v111 (28.08.2026)

- Eltern-Ansicht: der Kursname steht oben nicht mehr neben dem Namen des
  eingeloggten Kindes (Torstens Wunsch: "in der Eltern Ansicht den
  Kursnamen oben ausblenden, sonst denken die Eltern noch sie melden das
  Kind aus dem Kurs ab") – stattdessen steht dort jetzt "Angemeldet als
  ⟨Name⟩".
- Benachrichtigungen: für die Nachrichten aus dem Eltern-Kontaktformular
  ist jetzt eine eigene, abweichende Empfänger-Adresse hinterlegbar
  (Torstens Wunsch: "die Änderung der Empfänger Mail Adresse für die
  Eltern Nachricht in dem Block ermöglichen") – bleibt das neue Feld leer,
  gilt weiterhin die allgemeine Ziel-E-Mail-Adresse für alle
  Benachrichtigungs-Arten wie bisher.
- Eltern-Ansicht: neuer Bereich ganz unten mit Links zu Instagram, Facebook
  und dem WhatsApp-Kanal des Vereins (Torstens Wunsch: "in der Eltern
  Ansicht ganz unten egal ob angemeldet oder nicht, folgt ihr uns schon
  auf Facebook Instagram Whatsapp mit Logos und Verknüpfung") – sichtbar
  unabhängig vom Login-Status.

## v110 (28.08.2026)

- Eltern-Ansicht: Hinweistext über dem Button "QR-Code der Karte scannen"
  im Anmeldefenster entfernt (Torstens Wunsch: "im Anmeldefenster Eltern
  Bereich kann der Satz über dem QR-Code der Karte scannen weg").
- Events: die bisherige Ja/Nein-Einschränkung "nur für Kinder unserer
  Schwimmkurse" (ein einziges Kästchen fürs ganze Event, geprüft gegen
  ALLE Kurse zusammen) ist ersetzt durch eine echte Kurs-Zuordnung pro
  Leistungsstufe (Torstens Wunsch: "die Umsetzung der nur Berechtigten
  Slots ist doch gar nicht so schwer ich müsste doch nur ein Feld haben in
  dem ich sage nur für Kinder aus folgendem Kurs", präzisiert um "es muss
  für eine Leistungsstufe möglich sein mehrere Kurse auszuwählen (z.B. alle
  Anfängerkurse)"). Jede Stufe eines Events (z.B. beim Schwimmcamp
  "Anfänger"/"Fortgeschrittene") hat jetzt eine eigene Mehrfachauswahl an
  Kursen statt eines Ja/Nein-Kästchens am ganzen Event – die "Anfänger"-
  Stufe kann so z.B. auf alle Anfänger-Kurse (Montag/Mittwoch/…)
  eingeschränkt werden, unabhängig davon, welche Kurse bei
  "Fortgeschrittene" hinterlegt sind. Ohne angehakten Kurs bleibt eine
  Stufe wie bisher für alle offen. Damit ist auch die zuvor fehlende "nur
  Termine für den eigenen Kurs"-Zuordnung im per-Login geschützten
  Eltern-Bereich (seit v109) umgesetzt: ein Event erscheint dort nur noch,
  wenn mindestens eine seiner Stufen entweder uneingeschränkt ist oder zum
  Kurs des eingeloggten Kindes passt. Das alte Kästchen ist aus den
  Event-Einstellungen entfernt; die Kurs-Auswahl findet sich jetzt direkt
  im Klappblock jeder einzelnen Leistungsstufe.

## v109 (28.08.2026)

- Beschreibungsblock am Anfang dieser Datei entfernt (Torstens Wunsch:
  "bitte den Beschreibungsblock über den Versionen im changelog löschen").
- Startseite: Block "Offene Anmeldungen" entfernt (Torstens Wunsch: "auf
  der Startseite die offenen Anmeldungen entfernen") – die Kachel
  "Eltern-Bereich" führt weiterhin zum Eltern-Bereich, dort steht seit
  diesem Update derselbe Event-Hinweis (jetzt hinter dem neuen Login, siehe
  nächster Punkt).
- Eltern-Ansicht: Login per Karten-Scan/TeilnehmerID jetzt dem gesamten
  restlichen Bereich vorgeschaltet (Torstens Idee: "macht es evtl Sinn dem
  Eltern Bereich das Login per QR Code vorzuschalten?") – Kurstage, Events
  und das neue Kontaktformular (nächster Punkt) sind erst nach
  erfolgreicher Identifikation sichtbar; "Aktuelles" bleibt bewusst auch
  ohne Login sichtbar. Events mit "nur für unsere Kurskinder" erscheinen
  jetzt nur noch für eingeloggte, tatsächlich bekannte Teilnehmer statt wie
  bisher für jeden Besucher. Der Login bleibt für den Rest des
  Browser-Tabs gespeichert, ein erneutes Scannen bei jedem Aufruf ist
  damit nicht mehr nötig.
- Eltern-Ansicht: neues Mini-Kontaktformular für Nachrichten an die
  Trainer (Torstens Wunsch: "in der Eltern Ansicht ein mini
  Kontaktformular für die Eltern einrichten") – dank des Logins immer mit
  Absender (Name + Kurs des Kindes, Torstens Wunsch: "die Nachrichten
  wären direkt mit Absender versehen"), optional mit Rückruf-Nummer/
  E-Mail. Nachrichten landen dauerhaft in der neuen Verwaltungskarte
  „Nachrichten der Eltern" und lösen optional eine interne
  Benachrichtigungs-Mail aus (Tab „⚙️ Verwaltung" → „Benachrichtigungen").

## v108 (28.08.2026)

- Neuer, eigener Tab „🐕 Hundeschwimmen" in der Trainer-Ansicht (Torstens
  Wunsch: "für dieses Event muss es eine getrennte Teilnehmer Ansicht
  geben, damit das nicht mit den Schwimmkursen durcheinander gerät") –
  Teilnehmer, die über „🐕 Events" → „Anmeldungen übernehmen" in den
  Einlass übernommen wurden, erscheinen ab jetzt NICHT mehr im Tab
  „Teilnehmer" (und damit auch nicht mehr in dessen Kurs-Auswahllisten,
  Einlass-scannen-Dropdowns, Übersicht-/Statistik-Checkboxen), sondern
  ausschließlich in diesem eigenen Tab. Scannen, QR-Karten, Übersicht,
  Statistik und Archiv funktionieren für diese Kurse unverändert wie für
  jeden Schwimmkurs.
- Hundeschwimmen-Anmeldeseite (`/event/<slug>`) neu strukturiert (Torstens
  Wunsch, Ablauf aus 3 Referenzbildern: "Fenster mit der Badeordnung öffnet
  sich, diese muss man als gelesen bestätigen"): ein Klick auf einen
  Zeitslot öffnet zunächst ein Badeordnung-Fenster mit einer nummerierten
  Liste (Text in der Verwaltung unter „⚙️ Verwaltung" → „Badeordnung"
  pflegbar) – erst nach angehakter Bestätigung öffnet sich das eigentliche
  Anmeldeformular. Bei den beiden Nachweis-Uploads (Haftpflichtversicherung,
  EU-Heimtierausweis) gibt es jetzt außerdem eine kurze Richtig/Nicht
  ausreichend-Hinweiszeile, was ein brauchbares Foto zeigen sollte. Optik
  (Farben/Schrift/Kartenstil) bleibt bewusst die normale MCC-Oberfläche,
  übernommen wurde nur der Ablauf aus den Referenzbildern.
- Event-Anmeldebestätigung per E-Mail enthält jetzt einen persönlichen
  QR-Code als Anhang (Torstens Wunsch: "als Bestätigung gibt es eine Mail
  mit dem Termin und einem persönlichen QR Code welcher am Einlass
  vorgezeigt werden muss zum check in") – derselbe Code, den die Kurskarte
  am Einlass verwendet, funktioniert dort also unverändert zum Einchecken,
  sobald die Anmeldungen dieses Events einmal übernommen wurden.

## v107 (28.08.2026)

- Eltern-Ansicht: neuer Block "Aktuelles" ganz oben, für spontane
  Durchsagen (Torstens Wunsch: "In der Eltern Ansicht ganz oben noch ein
  Feld mit dem Titel 'Aktuelles' hinzufügen, der Text oder evtl. ein Bild
  oder ein Link sollen in der Verwaltung ganz oben hinzugefügt werden").
  Text, Bild und Link sind im Tab „⚙️ Verwaltung" (jetzt die erste Karte
  dort) einzeln pflegbar und alle optional – solange nichts hinterlegt
  ist, bleibt der Block in der Eltern-Ansicht unsichtbar.

## v106 (28.08.2026)

- Tab „⚙️ Verwaltung" → „Qualifikationsstufen": zwei neue Felder
  "Gliederung" und "Prüfungsnummer" je Stufe (Torstens Wunsch: "die
  vorbelegten Zahlen für die Qualifikationen (Gliederung und
  Prüfungsnummer) sollen in der Verwaltung unter den Qualifikationen
  eingetragen werden können"). Im Reiter „🎖️ Qualifikationen" der
  Personen-Detailseite wird das Registriernummer-Feld beim Auswählen
  einer Qualifikationsstufe jetzt automatisch mit
  "Gliederung/Prüfungsnummer/" vorbelegt (Aufbau der DLRG-Registriernummer:
  "0112011/121/003/2023" = Gliederung/Prüfungsnummer/lfd. Nr. des
  Jahres/Jahr) – es muss nur noch die laufende Nummer und das Jahr ergänzt
  werden.

## v105 (28.08.2026)

- Personen-Detailseite, Reiter „🎖️ Qualifikationen": aus den reinen
  Anzeige-Chips ist eine editierbare Tabelle geworden (Torstens Wunsch:
  "in dem Qualifikationstab in der Personenübersicht muss ich auch
  manuell Qualifikationen hinzufügen können. das Datum der Qualifikation
  muss änderbar sein und es muss ein zusätzliches Feld 'Registriernummer'
  geben"). Neu: ein Formular zum manuellen Hinzufügen mit frei wählbarem
  Datum (vorausgefüllt mit heute) und optionaler Registriernummer; jeder
  bestehende Eintrag hat jetzt ein Datum- und ein Registriernummer-Feld
  mit eigenem "speichern"-Button. Für die Rolle „Trainer" bleibt es wie
  bisher reine Anzeige ohne Bearbeiten – nur Admins sehen die Eingabefelder.

## v104 (28.08.2026)

- Eltern-Ansicht: der erklärende Satz direkt über dem "QR-Code scannen"-
  Button ist entfernt (Torstens Wunsch: "den Satz über dem 'QR Code
  scannen' entfernen") – die Überschrift "Abwesenheit eintragen" und der
  Button-Text erklären die Funktion inzwischen ausreichend. Außerdem
  steht der "Abwesenheit eintragen"-Block jetzt über dem "Events"-Hinweis
  statt darunter (Torstens Wunsch: "die Abwesenheit über den Events
  anzeigen") – die Kernfunktion der Seite hat damit Vorrang.

## v103 (28.08.2026)

- Eltern-Ansicht: der Scan-/Eingabe-Block hatte noch keine eigene
  Überschrift – jetzt "Abwesenheit eintragen" (Torstens Wunsch: "der
  Block für die Abmeldung braucht dann auch einen Namen bitte
  'Abwesenheit eintragen' hinzufügen").

## v102 (28.08.2026)

- Tab „📷 Einlass scannen": im Block „Kurse & Kurstag" standen die
  Auswahlfelder „Kurs" und „Kurstag" nicht mehr sauber nebeneinander,
  weil der breitere Hinweistext unter „Kurs" die rechte Spalte nach unten
  verschoben hat (Torstens Rückmeldung: "Kurs und Kurstag stehen nicht
  sauber nebeneinander") – behoben, beide Spalten beginnen jetzt oben
  bündig.
- Eltern-Ansicht: der Hinweis-Block heißt jetzt „Events" statt „Offene
  Anmeldungen" (Torstens Wunsch: "im Eltern Bereich soll es nicht offene
  Anmeldungen sondern Events heißen"). Außerdem neu in den
  Event-Einstellungen: eine Checkbox „Im Eltern-Bereich anzeigen" legt
  pro Event fest, ob es dort auftaucht – unabhängig von der vollständigen
  Linkliste auf der Startseite, die weiterhin jedes offene Event zeigt
  (Torstens Wunsch: "in den Event Einstellungen muss ich festlegen können
  welche Events dort angezeigt werden").

## v101 (28.08.2026)

- Tab „Kurse": der Block „Kurs wählen" steht jetzt ganz oben, noch vor dem
  Excel-Import und dem „Gemeinsamer Termin"-Block (Torstens Wunsch: "im Tab
  Kurse den Block Kurs wählen nach ganz oben") – er ist der Ausgangspunkt
  für Umbenennen/Archivieren/Löschen sowie das Setzen von Kursziel(en), und
  die darunterliegende „Kurstage verwalten"-Karte hängt ebenfalls vom dort
  gewählten Kurs ab, war vorher aber hinter Import und Gemeinsamer-Termin
  versteckt.
- Trainer-Statistik: die von Torsten angesprochene Verzerrung bei Trainern
  mit nur einem Kurs (kleine Kurstage-Stichprobe, ein einzelner Fehltag
  wirkt sich prozentual stark aus) ist noch offen – Torsten sammelt dazu
  noch Ideen, wird in einer der nächsten Versionen nachgezogen.

## v100 (28.08.2026)

- Übersicht: der Button „schwimmt" steht in der Markierung-Spalte jetzt vor
  den Kursziel-Chips statt danach (Torstens Wunsch: "das Feld schwimmt vor
  den Kursziel darstellen"). Einlass scannen zeigt hier weiterhin keine
  Chips/Buttons (das war schon vorher so, dort bleibt nur die passive
  Zeilenfarbe).

## v99 (28.08.2026)

- Tab „📷 Einlass scannen": die immer voll sichtbare Checkbox-Liste aller
  Kurse ist einer schlanken Dropdown gewichen (Torstens Rückmeldung: "die
  schnellcheckboxen oben sind gut darunter die Checkboxen entfernen und
  die Auswahl über die zwei Dropdowns (Kurs und Kurstag) ermöglichen") –
  eine Auswahl im Kurs-Dropdown fügt den Kurs zur Auswahl hinzu (statt sie
  zu ersetzen), aktuell ausgewählte Kurse erscheinen darunter als schmale
  Chips mit ×-Button zum Entfernen. Die Schnellauswahl-Buttons (heute /
  nächster Kurstag) bleiben unverändert.

## v98 (28.08.2026)

- Sicherheitsfix: die Beispiel-TeilnehmerID im Eingabefeld der Eltern-Ansicht
  und der Einverständnis-/Gesundheitserklärung-Seite traf zufällig eine
  tatsächlich vergebene ID – durch die eindeutig erfundene 1234567 ersetzt.
- In allen Ansichten steht jetzt in der Titelzeile „MCC (Mönsheim
  ControlCenter)" gefolgt vom Namen der jeweiligen Ansicht; ein Klick auf
  das DLRG-Logo führt überall zur Startseite zurück.
- Eltern-Ansicht: Hinweis auf gerade offene Event-Anmeldungen (z.B.
  Schwimmcamp) mit Link zur Anmeldeseite, sofern aktuell ein Event offen
  ist – dieselbe Datenquelle wie das Verzeichnis auf der Startseite.

## v97 (28.08.2026)

- Übersicht: die generische „+ andere…"-Auswahl in der Markierung-Spalte ist
  entfallen (Torstens Rückmeldung: "in der Übersicht ist das +andere
  enthalten das soll dort nicht stehen") – Chips für erreichte Stufen und
  die Ein-Klick-Buttons für offene Ziel-Stufen bleiben, für alles andere
  weiterhin über Tab „Teilnehmer" oder die Personen-Detailseite.
- Tab „⚙️ Verwaltung": alle Karten sind jetzt einzeln auf-/zuklappbar,
  standardmäßig alle zugeklappt (Torstens Wunsch: "in der Verwaltung bitte
  auch alle Bereiche auf und zuklappbar machen per default alle
  geschlossen") – Klick auf Titel oder Pfeil klappt eine Karte auf/zu.
- Tab „📷 Einlass scannen": Mehrfachauswahl der Kurse (Torstens Wunsch:
  "auch in der Einlass scannen Ansicht muss es möglich sein mehr als einen
  Kurs auszuwählen") – die Kurs-Auswahl ist jetzt eine Checkbox-Liste statt
  eines einzelnen Dropdowns, Teilnehmerliste und Trainer-Anwesenheit zeigen
  bei mehreren ausgewählten Kursen alle gemeinsam für den gewählten
  Kurstag. Zusätzlich zur bisherigen Schnellauswahl „heute" gibt es jetzt
  eine zweite Schnellauswahl-Zeile für den nächsten Kurstag über alle Kurse
  hinweg (Torstens Wunsch: "wie in der Übersicht Ansicht schnell
  Auswahlbuttons für die Kurse des nächsten Kurstages anlegen") – ein Klick
  hakt den jeweiligen Kurs an/ab, statt die Auswahl zu ersetzen.
- Tab „📈 Statistik": neuer Unterpunkt „Trainer" (Torstens Wunsch: "die
  Trainer Anweseheiten in die Statistik einbauen") – zeigt je Trainer, bei
  wie vielen Kurstagen der ihm zugeordneten (oben ausgewählten) Kurse eine
  Anwesenheit erfasst ist (Soll/Ist-Quote, analog zur
  Teilnehmer-Anwesenheitsquote).

## v96 (28.08.2026)

- Das bisherige, separat geführte Kursziel-System (feste Liste Seepferdchen/
  Bronze/Silber/Gold/Junior-Retter/Rettungsschwimmer im Code, ein einzelnes
  Kursziel je Kurs) ist entfallen und geht vollständig in den
  Qualifikationsstufen auf (Torstens Wunsch 28.08.: "ich habe die
  bisherigen Kursziele als Qualifikationen angelegt... die bisher seperat
  geführten Kursziele entfallen dann"):
  - Tab „📋 Kurse": „Kursziel(e)" ist jetzt eine Mehrfachauswahl aus den im
    Tab „⚙️ Verwaltung" gepflegten Qualifikationsstufen statt eines
    einzelnen Werts aus der alten festen Liste – „es können bei Bedarf
    mehrere Kursziele für einen Kurs gewählt werden".
  - Ein Kursziel als erreicht markieren trägt jetzt direkt eine
    Qualifikationsstufe beim Teilnehmer ein (derselbe Weg wie bisher schon
    für die freien Qualifikationsstufen) – „beim erreichen (abhaken)
    müssen die in die Personendatenbank eingetragen werden" gilt damit
    einheitlich für beide, vormals getrennte Wege.
  - Übersicht, Tab „Teilnehmer" und die Personen-Detailseite zeigen dafür
    jetzt EINE gemeinsame Chip-/Button-Leiste statt zweier getrennter
    (Kursziel-Chips + Qualifikationsstufen-Chips): erreichte Stufen als
    Chip, für jede noch offene, dem Kurs zugeordnete Ziel-Stufe ein
    Ein-Klick-Button, plus eine Auswahl für alles andere.
  - Bereits vorhandene Kursziel-Daten (Kurs-Zuordnung + erreichte
    Kursziele) werden beim ersten Start mit v96 automatisch in
    Qualifikationsstufen umgewandelt – anhand des Namens passenden bereits
    angelegten Stufen zugeordnet, für unbekannte Namen wird automatisch
    eine neue Stufe mit demselben Namen angelegt, damit nichts verloren
    geht. Bei Bedarf im Tab „⚙️ Verwaltung" nachträglich aufräumbar.

## v95 (28.08.2026)

- Deploy-Fix: `WHATSNEW.md` fehlte bisher im ausgelieferten Docker-Image
  (Dockerfile kopierte nur `app/` und `static/`) und in den Dateilisten von
  `deploy.sh`/`update.sh` – dadurch zeigte `/whatsnew` auf einer laufenden
  Installation "WHATSNEW.md wurde nicht gefunden". Beide Skripte und das
  Dockerfile kopieren die Datei jetzt mit (ebenso INTEGRATIONSPLAN-
  Vereinstools.md in den beiden Skripten, aus demselben Grund).
- Tab „📦 Archiv" hat jetzt zwei Unterpunkte: „📋 Kurse" (wie bisher) und
  neu „🐕 Events" – die archivierten Events sind aus dem aufklappbaren
  Bereich der Events-Karte (v94) hierher umgezogen. „⧉ Kopieren" bleibt
  auch von hier aus möglich und wechselt dafür automatisch in den Tab
  „🐕 Events", wo die neue Kopie zur Prüfung geöffnet wird.

## v94 (28.08.2026)

- Titelleiste: die Versionsnummer bei Admin-Anmeldung ist jetzt zugleich
  ein Link auf `/whatsnew` (neue, ungeschützte Seite, die diese Datei
  lesbar im Browser anzeigt).
- Tab „👤 Personen" (v93) wieder entfernt – zeigte praktisch dieselbe Liste
  wie der Tab „👥 Teilnehmer" (nur ohne dessen Kurs-Verwaltung) und damit
  eine störende Dopplung. Der Zugang zur Personen-Detailseite bleibt über
  den Link „👤 Profil" in Teilnehmer-Zeilen und der Übersicht erhalten.
- Tab „🐕 Events": Klapp-Block „Anmeldungen aus altem Anmeldetool
  übernehmen" entfernt (das externe Node.js-Anmeldetool, aus dem einmalig
  übernommen wurde, gibt es nicht mehr) – inkl. der beiden zugehörigen
  Backend-Endpunkte.
- Tab „🐕 Events": neue Archivfunktion – „🗄️ Archivieren" bei einem aktiven
  Event verschiebt es in den aufklappbaren Bereich „📦 Archivierte Events"
  darunter (Standard: zugeklappt), „↩ Reaktivieren" holt es zurück. Ein
  archiviertes Event bleibt weiterhin über „⧉ Kopieren" als Vorlage für ein
  neues, aktives Event nutzbar.

## v93 (28.08.2026)

- Trainer-Verwaltung (anlegen/umbenennen/löschen) aus dem Tab „⚙️
  Verwaltung" in den Tab „🧑‍🏫 Trainer" verschoben: oben „Neuen Trainer
  anlegen", darunter je Trainer eine aufklappbare Zeile (standardmäßig
  alle zugeklappt), im aufgeklappten Zustand Kurs-Zuordnung +
  Kursleiter-Funktion + Einsätze-Details – alles an einem Ort statt
  getrennt in zwei Tabs.
- Neuer Tab „👤 Personen" in der Hauptnavigation: schlanker Einstiegspunkt
  (Suche + A-Z-Sprungleiste) direkt zur Personen-Detailseite
  (`/personen/<id>`), nachdem der bisherige Zugang nur über die
  „👤 Profil"-Links in Teilnehmer-Zeilen bzw. der Übersicht führte.
- Versionsnummer in der Titelleiste bei Admin-Anmeldung (`APP_VERSION` in
  `app/main.py`, ausgeliefert über `/api/version`, angezeigt in
  `enterApp()` in `trainer.js`).
- Diese Datei (`WHATSNEW.md`) neu angelegt.

## v92 (28.08.2026)

- Personen-Detailseite umbenannt: Route `/teilnehmer/<id>` → `/personen/<id>`,
  Seitentitel „MCC – Teilnehmer-Profil" → „MCC – Personen".
  `teilnehmer-detail.html`/`.js` → `personen-detail.html`/`.js`.
- „👤 Profil"-Link im Tab „Teilnehmer" direkt neben den Toggle-Button
  „▼/▲ Ansicht" in die Hauptzeile verschoben (vorher erst im aufgeklappten
  Panel).
- Toggle-Button-Text „▼/▲ Details" → „▼/▲ Ansicht" umbenannt (nur der
  angezeigte Text, interne Funktions-/Variablennamen unverändert).
- Kursziel-Button auf der Personen-Detailseite (Reiter „Hauptdaten") zeigt
  jetzt konsistent mit Übersicht und Tab „Teilnehmer" den Namen des
  aktuellen Kursziels statt „+Kursziel" und verschwindet, sobald das
  Kursziel erreicht ist.

## v91 (28.08.2026)

- Neue eigene Detailseite pro Teilnehmer mit Reitern (Vorbild: DLRG-ISC-
  Personendatensatz): Hauptdaten, Kontakt (erweiterte Kontaktdaten für
  beide Erziehungsberechtigte + Notfallkontakt), Trainingsverlauf
  (saison-/kursübergreifend über `Person`/`person_id`), Qualifikationen,
  Dokumente – bewusst additiv zum bisherigen „Details"-Panel im Tab
  „Teilnehmer", nicht als Ersatz. Bewusst **ohne** „Bank"-Reiter (keine
  Zahlungs-/Bankdaten in dieser Einlasskontrolle).

## v90 (28.08.2026)

- Start-/Hauptseite: neue Kachel „Eltern-Bereich" verlinkt auf `/eltern`.
- Tab „Kurse": Block „Schwimmcamp importieren" entfernt (durch die native
  Event-Anmeldung im Tab „🐕 Events" abgelöst).
- Tab „⚙️ Verwaltung": Karte „Schwimmcamp-Anmeldetool" (Verbindungsdaten)
  entfernt, zugehöriger Backend-Code (Vorschau/Import/Einstellungen)
  aufgeräumt – `camp_karten_pdf()` bleibt unverändert bestehen.
- Tab „Events": immer sichtbare Eingabemaske „Neues Event anlegen" durch
  einen Button darüber ersetzt, der die Maske bei Bedarf einblendet.
- Übersicht/Tab „Teilnehmer": Button „+Kursziel" verschwindet, sobald das
  Kursziel eines Teilnehmers bereits erreicht ist, und zeigt sonst den
  Namen des aktuellen Kursziels statt generischem „+Kursziel"-Text.