# Changelog Alle nennenswerten Änderungen an **SysnaptiK Neural** werden hier dokumentiert. Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.0.0/), Versionierung [semantisch](https://semver.org/lang/de/). ## [Unreleased] – 2026-07-14 · SysnaptiK Neural Rebrand ### Marke & Plattform - **Farbschema ohne Aufblitzen:** Die Neural-Hülle wird nun statisch mit dem Grundtheme geladen und ihre Klasse bereits im `
` gesetzt. Theme- und Bootstrap-Dateien tragen neue Versionsparameter, damit Login, Logout und jede Navigation direkt im SysnaptiK-Neural-Schema zeichnen. - **Fortschritt & Barrierefreiheit repariert:** Die Diagramme warten jetzt auf die Neural-Plattformklasse und erscheinen dadurch in Mint statt im alten Orange. Hochkontrast und Farbenblind-Modus überschreiben nun auch lokale Plattform- und Spieltokens; der Farbenblind-Modus nutzt eine klar unterscheidbare Palette. - **Echter Lernnetz-Status:** Der Dashboard-Status prüft nun serverseitig den Fortschrittsspeicher und zeigt nachvollziehbar „bereit“ oder „eingeschränkt“ samt Zeitstempel und registrierten Lernmodulen. Der dekorative 100%-Ring wurde entfernt. - **Akzente klar getrennt:** MindMatch ist nun Magenta, SyntaxSaga ein kühleres Violett, SystemEscape Gelb-Bernstein und FinalProtocol Koralle. Die Plattformkarten sind damit auf einen Blick unterscheidbar, ohne die Farben in den Spielen selbst anzutasten. - **Fortschrittsdiagramme korrigiert:** Donut- und Wochenchart lesen den Neural-Akzent nun von der Plattformhülle statt den alten globalen Orange-Token zu verwenden. - **Alte Platzhalter-Copy entfernt:** Die Registrierungsrakete und der Zeitreise-Spruch auf der Vorbereitungsseite wurden durch neutrale SysnaptiK-Neural-Texte ersetzt. - **Admin-Umfang transparent:** Das Admin-Dashboard benennt jetzt klar, welche Inhaltsverwaltungen vorhanden sind und dass ServiceClash, NetWorker und FinalProtocol noch direkt mit der Anwendung ausgeliefert werden. - **Bestehendes Emblem bewahrt:** Die kurzfristig ergänzte CSS-Knotenmarke wurde zurückgenommen. Das vorhandene Emblem bleibt als Wiedererkennungszeichen bestehen, weil es die neue neuronale Metapher bereits passend transportiert. - **Sichtbarer Markenwechsel:** Mindflux heißt auf der Plattform nun **SysnaptiK Neural**; FinalFlux wurde zu **FinalProtocol**. Bestehende technische Routen, Datenbanktabellen, Spiel-Keys und Paketnamen bleiben für Kompatibilität unverändert. - **Neue Plattformwelt:** Die bisherige Zeitreise-/BTTF-Anmutung wurde durch ein dunkles neuronales Netzwerk mit Knoten, Verbindungen, Petrolflächen und grünen Glows ersetzt. Login/Registrierung, Dashboard, Profilseiten, Admin- und Rechtsseiten nutzen dieselbe Hülle. - **Dashboard nach Spielknoten:** Jede Plattform-Spielkarte trägt einen eigenen Akzent (u. a. DevLab Mint, SyntaxSaga Violett, BugHunter Crimson, NetWorker Blau, FinalProtocol Orange) – ohne die internen Spieloberflächen zu verändern. - **Zeitreise-Copy entfernt:** Die sichtbare Pausenfunktion heißt nun **NeuralPause**; BTTF-Referenzen und Sprüche wurden durch neutrale Lernpausen-Texte ersetzt. - **FinalProtocol durchgängig benannt:** Hub, Lernseiten, Navigation, Rücklinks und Seitentitel zeigen den neuen Namen, während die bestehende FinalFlux-URL als kompatibler technischer Pfad erhalten bleibt. ## [Unreleased] – 2026-07-13 · BugHunter, NetWorker & echter Lernfortschritt ### Planung - **S3-Sicherheitsstand nachgezogen:** Der Zukunftsplan markiert die serverseitige Spielwertung nun korrekt als umgesetzt: alle vier neuen Spiele halten Lösungen, Reveal- und Versuchsstatus serverseitig und berechnen Ergebnisse unabhängig vom Client. ### Eigenständige Spielwelten - **Bestandsspiele gestalterisch getrennt:** MindMatch erhielt ein Violett-/Mint- „Neural Archive“, TechTacular eine Magenta-/Blaue Cyber-Quizshow, SyntaxSaga ein phosphoriges Terminal und FinalFlux eine ruhige Gold-/Indigo-Prüfungszentrale. - **DevLab als Werkstatt:** Petrol/Orange, Schaltkreisraster und Build-Pipeline-Akzente schärfen die Oberfläche nach. Die schwebende Kolben-/dlFloat-Animation bleibt unverändert erhalten. - **Zugänglichkeit bleibt stimmig:** Das Accessibility-Widget erkennt und verwendet nun auch für diese fünf Lernwelten automatisch deren lokalen Akzent; Statusfarben und Spielmechaniken bleiben unverändert. ### ServiceClash - **Auswertung repariert:** Nach dem letzten Ticket wurde die Abschlussansicht nicht geöffnet, weil der Renderer noch auf ein nicht vorhandenes Folgeticket zugriff. Die Abschlussprüfung erfolgt nun vor jeder Ticketzustands-Abfrage. - **Letztes geplantes Spiel ausgeliefert:** drei Service-Desk-Schichten mit insgesamt **24 kuratierten Tickets** aus Incident-, Request-, Change-, Monitoring-, Backup- und Security-Szenarien. Jede Aufgabe führt verständlich durch Art, Priorität und passende Erstmaßnahme. - **Echte Wertung und Fortschritt:** V15-Datenmodell, lösungsfreie Sessions und serverseitige Prüfung bewerten jeden der drei Schritte samt Versuchsleiter. Score, Sterne, Highscore, Dauer und Fortschritt werden gespeichert; „Leitstand-Einsatz“ und der fehlerfreie „Incident Commander“ sind als Achievements integriert. - **Eigenständiger Leitstand:** Cyanfarbene Queue, Wellen, Fortschrittsanzeige, Ticket-Debriefs sowie bewusstes Weiterklicken nach einer Lösung. Die Lobby erklärt Incident vs. Anfrage und die Priorisierung vor der ersten Schicht. - **Integration abgeschlossen:** Dashboard-Karte öffnet `/serviceclash`, die API ist CSRF-konform eingebunden und das Accessibility-Widget übernimmt den ServiceClash-Akzent. ### BugHunter - **Vollständiges Fallakten-Spiel ausgeliefert:** serverautoritatives Drei-Phasen-Debugging (Orten → Klassifizieren → Fixen), Score, Combo, Sterne, Highscore, Admin-Pflege und lösungsfreie Sessions über eigene V12-Tabellen, Seeder und API. - **Inhalte ausgebaut und nach Schwierigkeit sortiert:** 12 schlüssige Fallakten von Junior über Senior bis Principal mit längeren Briefings, Mehrdatei-Fällen und mehreren Bugs. - **Archiv und Ablauf verfeinert:** Die Lobby ist ein Aktenschrank statt eines unlesbaren Kartenstapels; Akten lassen sich klar öffnen. Nach jeder Prüfung bleibt das Debriefing stehen und der nächste Schritt erfolgt bewusst per Klick. - **Wiederholbarkeit:** Eine fehlerfrei gelöste Akte erhält einen diagonalen „GELÖST“-Stempel. Ein Reset startet eine passende Variantenlage, sodass Fehler und Hinweise nicht immer an derselben Stelle liegen. - **Sprache und Gestaltung bereinigt:** Fallakten- statt „Investigation Bureau“-Vokabular, korrigierte Schreibfehler sowie Crimson-Akzent ohne auffällig eingefärbte Dashboard-Karte. ### NetWorker - **Neues Netzwerk-Puzzle ausgeliefert:** V14-Datenmodell, Seeder, Server-API und serverseitiger `NetSimulator` prüfen IPv4-/CIDR-, Host-/Broadcast-, Gateway-, Duplikat-IP- und Routing-Fälle unabhängig vom Client. - **15 Aufgaben in drei Welten:** adressieren, diagnostizieren und routen; Ergebnisse, Highscores und Fortschritt werden wie bei den übrigen Spielen gespeichert. - **Blaupausen-Optik nachgeschärft:** korrekte Schreibweise „NetWorker“, sichtbares Raster auf Seiten- und Netzwerkboard-Hintergrund sowie blaues Accessibility-Widget. - **Einsteigerführung ergänzt:** Lobby, Weltstart und die Levelansicht erklären Ablauf, IP-Adresse, Präfix, Gateway und Ping. Je Aufgabentyp gibt es konkrete Handlungsanweisungen samt Beispielen für `/24`, Hostadressen und statische Routen. - **Direkter Rückweg:** Die Kopfzeile führt mit „NETZPLÄNE“ zurück zur NetWorker-Übersicht, ohne den Umweg über das Dashboard. ### Navigation & Fehlerbehebung - **BugHunter und NetWorker:** „AKTENSCHRANK“ bzw. „NETZPLÄNE“ brechen einen laufenden, noch nicht gespeicherten Durchgang bewusst ab und öffnen direkt die jeweilige Übersicht. - **Fortschrittsseite repariert:** Der JavaScript-Inliner in `progress.html` konnte zwei Ausdrücke in einer Rechenoperation nicht parsen und erzeugte deshalb einen Fehler 500. Die Werte werden nun erst in JavaScript-Konstanten übergeben. ### Fortschritt, Achievements & Knowledge Core - **Spielbezogene Achievements ergänzt:** MindMatch, TechTacular, DevLab, SyntaxSaga, SystemEscape, BugHunter und NetWorker können nun passende Erfolge auslösen; zusätzliche Spezialerfolge belohnen perfekte SystemEscape-/BugHunter-/NetWorker-Runden. - **Dashboard und Statistik von Platzhaltern befreit:** Wochen-XP, Verlauf und Top-Spiele kommen aus `game_scores`; die Statistik zeigt den realen XP-Fortschritt und die gemessene Dauer abgeschlossener Runden. Nicht messbare Runden werden bewusst nicht als Spielzeit behauptet. - **Bezeichnungen präzisiert:** Das Level ist transparent ein XP-Level (1.000 XP je Stufe), und die frühere Zahl „korrekte Antworten“ heißt nun „erfasste Spielaktionen“. - **Knowledge Core aufgebaut:** Lernzentrale mit AP1-, Netzwerk-/Systemintegration- sowie Debugging-/Security-Pfaden, Verweisen auf passende Module und persönlichem, datenbasiertem Status statt vorgetäuschter Themenanalyse. ### Barrierefreiheit & Qualität - Accessibility-Steuerung übernimmt in SystemEscape, BugHunter und NetWorker den jeweiligen Spielakzent und bleibt in der Kopfzeile reserviert. - Zusätzliche Tests sichern den Wochenaggregator und den kompletten `/progress`-Renderpfad; insgesamt **46 Tests** grün. ## [Unreleased] – 2026-07-12 · Großer Verbesserungs-Sweep (Sicherheit, Daten, Navigation) Weitgehende Umsetzung des Verbesserungskatalogs aus `mindfluxfuture.md` (Teil 2; bewusst zurückgestellte Restpunkte sind dort weiterhin als offen markiert): Sicherheit, Datenintegrität, echtes XP/Achievement-System, Navigations-Umbau, Docker/CI-Härtung und erste Tests. ### Responsive Darstellung & Barrierefreiheit - Logout-Navigation in Dashboard, DevLab, MindMatch, SyntaxSaga und TechTacular auf ein einheitliches Icon mit zugänglichem Namen und Tooltip „Abmelden“ vereinheitlicht. - **Globales Accessibility-Widget:** Ein schwebender Rollstuhl-Button öffnet auf jeder Seite ein tastaturbedienbares Panel. Einstellungen werden ausschließlich lokal im Browser gespeichert. - Enthalten sind vier Textgrößen, Hochkontrast, farbenblindfreundliche Statusfarben, Monochrom, einen Lesemodus für Dyslexie mit Verdana und angepassten Abständen, unterstrichene Links, reduzierte Animationen, großer Cursor und ein zentraler Reset. - Floating-Button an die Mindflux-Palette angepasst; der Schrift-Schalter heißt nun transparent „Lesemodus (Dyslexie)“ und weist auf Verdana plus vergrößerte Abstände hin. - Der dauerhaft erreichbare Auslöser besitzt nun reservierten Layoutplatz statt Spielkarten oder Formulare zu überdecken: seitlich auf Desktop und in einer unteren Schutzzone auf kleinen Displays. - Accessibility-Zugriff in die jeweilige sticky Kopfzeile neben Theme/Logout verschoben; Seiten ohne Werkzeugleiste erhalten eine eigene reservierte Utility-Zeile statt eines Inhalts-Overlays. - Accessibility-Schaltfläche auf dieselben 38 px Außen- und 18 px Iconmaße wie die übrigen Kopfzeilen-Werkzeuge vereinheitlicht. - SystemEscape behält seine Terminal-Typografie im Spiel, verwendet für globale Navigation und Werkzeuge aber die einheitliche Mindflux-Sans-Serif-Schrift. - TechTacular-Kategoriekarten auf identische Höhe gesetzt und zweizeilige Titel mittig ausgerichtet. - Das Panel besitzt Dialogsemantik, sichtbaren Tastaturfokus, Escape-Schließen und verständliche Aktivzustände; Spielzustände oder Benutzerkonten werden dabei nicht verändert. - **DevLab-Spielansicht nutzt große Bildschirme aus:** Die bisherige starre Begrenzung auf 1100 px wurde durch ein fluides, bis 2200 px breites Viewport-Layout ersetzt. Hauptbereich, Seitenpanel, Abstände und Grundschrift skalieren mit der verfügbaren Bildschirmgröße. - Auf Mobilgeräten bleibt das Layout einspaltig und setzt die Grundschrift auf mindestens 16 px. ### Sicherheit - **DB-Passwort aus dem Repo entfernt:** `docker-compose.yml` liest jetzt `${MINDFLUX_DB_PASSWORD}` aus einem Gitea-Secret (wie die Admin-Passwörter). Compose bricht bei einem fehlenden oder leeren Secret jetzt sofort mit einer eindeutigen Fehlermeldung ab, statt einen App-Container mit leerem DB-Passwort zu starten. Der Gitea-Runner gleicht das PostgreSQL-Passwort vor jedem Deployment automatisch mit dem Secret ab; für die Rotation ist daher kein separater SSH-Zugang erforderlich. **Produktionsrotation abgeschlossen am 2026-07-12:** Secret angelegt, DB-Rolle aktualisiert und Mindflux über den erfolgreichen Gitea-Workflow-Lauf 43 neu gestartet (Commit `4f5042d`). - **Unsicherer Legacy-Endpunkt `/users/save` gelöscht** (speicherte User ohne Hashing, mit frei wählbarer Rolle) inkl. `UserViewController`, `user-form.html`, `user-success.html`. - **Logout nur noch per POST** mit CSRF-Token (alle Templates umgestellt). - **Login-Brute-Force-Schutz:** Nach 5 Fehlversuchen wird der Benutzername 15 Minuten gesperrt (`LoginAttemptService`, In-Memory). - **Registrierung gehärtet:** Passwort-Mindestlänge 8, E-Mail-Formatprüfung, case-insensitiver Unique-Index auf `users.username` (Migration V9) schließt das Registrierungs-Race. - **Bootstrap-Admins abgesichert:** Ein Admin wird nur noch angelegt, wenn sein Passwort-Secret tatsächlich gesetzt ist; fehlende optionale Admin-Konfiguration wird protokolliert und sicher übersprungen. - Dockerfile läuft nicht mehr als root (`USER mindflux`), zweistufig mit Dependency-Cache; Tests laufen im Image-Build mit. Compose-Healthcheck auf `/actuator/health` (Actuator neu). ### Daten & Backend - **Migration V10:** `UNIQUE(lower(email))`, Fremdschlüssel von `game_scores`/`achievements` auf `users(username)` mit `ON DELETE CASCADE ON UPDATE CASCADE`; verwaiste Altdaten werden bereinigt, E-Mail-Dubletten aufgelöst (älteste Zeile behält die Adresse). - **Echte XP/Level/Streak statt Dummy-Daten:** `ProgressService` aggregiert aus `game_scores` (XP = Score-Summe, 1000 XP je Level, Tages-Streak mit 1 Tag Karenz); Dashboard-Sidebar zeigt echte Werte. - **Achievements sind live:** Katalog aus 6 Regeln (Erster Sieg, 1000er-Club, Highscore-Jäger, Dauerbrenner, Punktesammler, Allrounder), Vergabe automatisch bei jedem gespeicherten Score; Dummy-Daten entfernt, gesperrte Karten zeigen den Katalog. - **User-Logik konsolidiert:** Registrierung, REST- und Admin-Anlage laufen über einen `UserService` (eine Stelle für BCrypt, Rollen-Whitelist, Eindeutigkeit); `AdminUserService`/`AdminUserRepository` (Duplikate) entfernt. - **Globales Error-Handling:** eigene Fehlerseite (`error.html`) statt Whitelabel, JSON-Fehler mit korrekten Statuscodes für alle APIs, unbekannte URLs liefern eine echte 404-Seite. - **N+1-Queries behoben:** TechTacular-Board lädt Kategorien/Fragen/Antworten in 2 Queries (Fetch-Join), Admin-Fragenzähler als eine GROUP-BY-Query. - **Logging:** alle `System.out`/`printStackTrace` durch SLF4J ersetzt. - `spring-boot-starter-validation` + `-actuator` ergänzt, redundantes `spring-security-crypto` entfernt, Java auf 21 vereinheitlicht (pom + Dockerfile). ### Navigation & UI - **Layout-Fragmente eingeführt** (`fragments/layout.html`): App-Sidebar, Profil-Tab-Leiste und Footer sind jetzt gemeinsame Fragmente (erster Schritt gegen die Template-Duplikation). - **Sidebar hat einen „Profil"-Eintrag**; der User-Block verlor den irreführenden Dropdown-Pfeil. - **Profil-Tab-Leiste auf allen Unterseiten** (Profil · Statistiken · Erfolge · Soziales · Einstellungen) mit einheitlichen Namen; Rück-Links führen einheitlich zum Dashboard. - **Einstellungen aufgeräumt:** Theme-Auswahl funktioniert jetzt wirklich (gekoppelt an `theme.js`/localStorage); funktionslose Sprach-/Benachrichtigungs-Attrappen entfernt; `SettingsController` in den `ProfileController` gemergt; Token-Farbe statt Hardcode. - **Spielnamen vereinheitlicht** (englisch, zusammengeschrieben): DevLab, SyntaxSaga sowie SystemEscape, ServiceClash, BugHunter, NetWorker für die geplanten Spiele (Keys in `KNOWN_GAMES`/`ProgressService` mit umbenannt – noch keine Scores vorhanden). - **DevLab erscheint jetzt auf der Statistik-Seite** (fehlte in `ProgressService.GAMES`). - Tote Templates entfernt: `login.html`, `register.html` (Formular lebt auf der Startseite), `AppStartCheck` u. a. Kleinkram. ### FinalFlux - **AP2-Gerüst:** neue Sidebar-Blöcke „AP2 Anwendungsentwicklung" und „AP2 Systemintegration" mit den ersten Themenseiten **Entwurfsmuster** (FIAE) und **Hochverfügbarkeit** (FISI) inkl. FluxChecks – FinalFlux deckt damit den Weg zur gesamten Ausbildung ab (AP1 + AP2). ### Tests (neu – vorher 0) - 33 Tests: Score-Formel, XP/Level/Streak-Berechnung, Registrierungsregeln, Achievement-Vergabe, Login-Sperre sowie `@WebMvcTest` der Security-Regeln (Login-Zwang, Admin-Schutz, gelöschter Legacy-Endpunkt). Die CI baut das Image jetzt inklusive Testlauf. ### Dokumentation - **`mindfluxfuture.md`:** konsolidierter Verbesserungs- und Ausbaukatalog mit umgesetzten, bewusst zurückgestellten und künftig geplanten Punkten. - **`pw_anleitung.md`:** Betriebsanleitung für DB-Secret, automatische Runner-Rotation, manuellen Notfallweg und Verifikation nach dem Deployment. ### Zukunftsfundament & FluxTimer - **Plan technisch aktualisiert:** freie Flyway-Reihenfolge V11–V14, persistiertes `exam_scope`-Tagging und verbindlicher S3-Anti-Cheat-Vertrag für alle neuen Spiele. - **Spiel-Akzentbasis:** Dark-/Light-Tokens für SystemEscape, BugHunter, ServiceClash und NetWorker. - **FluxTimer-MVP:** lokaler Pausentimer mit 5–240 Minuten Intervall, rotierenden Erinnerungen, eigenem Text, Snooze, Probelauf, optionalem Sound und lokaler Browser-Benachrichtigung. Countdown und Overlay laufen über Navigationen weiter; ein eigener Topbar-Button öffnet den Schnellzugriff und die Einstellungen enthalten die vollständige Konfiguration. - **Dashboard-Topbar aufgeräumt:** generische Winkehand und dekorative Pulsline entfernt. FluxTimer besitzt statt der Glocke jetzt ein eigenes Uhr-mit-Blitz-Icon im Zeitreise-Look; die Glocke bleibt frei für spätere echte Benachrichtigungen. - **Login entschlackt:** das generische Schloss-Emoji aus dem Login-Button entfernt; die klare Beschriftung reicht als Handlungsaufforderung und passt besser zur eigenständigen Designsprache. - Datenschutzerklärung um lokale Speicherung und Browser-Benachrichtigung ergänzt. ### SystemEscape (interner Key `codeescape`) - **Variable SystemEscape-Runs:** Jedes Szenario besitzt nun acht Räume; ein Durchlauf wählt serverseitig vier davon in zufälliger Reihenfolge. Der Pool wächst damit auf 24 Räume und 69 Rätsel, mit 1.680 möglichen geordneten Raumkombinationen je Szenario. - Die konkrete Raum- und Rätselauswahl wird im Server-Run festgeschrieben. Checks, Hinweise, Türen, Finish, Maximalpunktzahl und Sterne akzeptieren ausschließlich IDs dieses Runs. - Lobby erklärt Poolgröße und Run-Länge; ein neuer Start erzeugt ausdrücklich eine neue Route. - **Sichtbarer Name zu SystemEscape geändert:** Der neue Name bildet Netzwerk-, Security-, Hardware-, Backup- und Entwicklungsthemen besser ab. Interner Key, Route und Datenmodell bleiben für bestehende Scores und Migrationen kompatibel bei `codeescape`. - **Spielablauf verdeutlicht und Schleusenfehler behoben:** dauerhafte Drei-Schritt-Führung „Rätsel lösen → Fragmente sammeln → Türcode bilden“, nummerierte Fragmentreihenfolge, optionales automatisches Einsetzen und klare Rückmeldungen bei Prüfung, Erfolg und Fehler. - **Produktive Türcodes repariert:** ergänzende V11.1-Datenmigration gleicht alle neun Türcodes mit ihren sichtbaren Fragmenten ab. Die Lösereihenfolge der Rätsel bleibt bewusst frei. - Schleusen lassen sich serverseitig erst nach Abschluss aller Rätsel öffnen; ein zusätzlicher Test sichert diesen Ablauf und die hilfreiche Fehlermeldung ab. - **Neues vollständiges Spiel:** drei Facility-Szenarien mit neun Räumen und 24 IT-Rätseln von AP1 bis AP2 (FIAE/FISI/Cross), Fragment-Inventar, Türcodes, Countdown, Alarmzustand, Hinweise, Reveal, Zeitbonus, Sterne, Highscore und Ergebnis-Debriefing. - **Serverautoritativ:** V11-Schema mit `exam_scope`, lösungsfreie Session-DTOs, serverseitig protokollierte Versuche/Hinweise/Reveals/Türen und vollständige Score-Neuberechnung beim Finish. Fremde oder doppelte IDs, überlange Listen und unplausible Zeiten werden abgewiesen. - **Vier Mechaniken:** freie Code-Eingabe, Choice, Reihenfolge und Matching; alle Lösungen bleiben bis zur expliziten Auflösung auf dem Server. - **Eigene visuelle Welt:** dunkle Facility-/CRT-Optik, Scanlines, Terminal-Dialoge, Fragment-Chips und SystemEscape-Akzent im Dashboard; responsive für mobile Ansichten. - **Admin-CRUD:** Szenarien, Räume und Rätsel inklusive JSON-Payload und Prüfungsbereich pflegbar. - Dashboard, Security-CSRF-Ausnahme, Score-/XP-/Achievement-System und Admin-Dashboard integriert. - Vier neue Service-Tests prüfen Lösungsfreiheit, serverseitige Hint-/Versuchsabrechnung sowie Schutz vor fremden IDs und unplausiblen Laufzeiten. ## [Unreleased] – 2026-06-30 · Login, Registrierung & Konten Reihe von Fixes und Verbesserungen rund um Anmeldung, Registrierung und Konto-Verwaltung – ausgelöst durch einen Login-Bug, bei dem ein frisch registriertes Konto sich nicht anmelden konnte. ### Behoben - **Login scheiterte an Groß-/Kleinschreibung des Benutzernamens:** Die Registrierung speicherte den Namen klein, der Login suchte aber **case-sensitiv** – wer sich z. B. als „LostAtWonderland" registrierte, kam mit genau dieser Schreibweise nicht hinein. Das wirkte wie ein Passwort-Problem, war aber der Benutzername-Abgleich (das Passwort lag korrekt verschlüsselt in der DB). Login **und** Dublettenprüfung sind jetzt **case-insensitiv** (`findByUsernameIgnoreCase`); Admin-Logins funktionieren unverändert in jeder Schreibweise. - **Profilbild wurde beim Bearbeiten im Admin genullt:** Das Benutzer-Edit-Formular sendet kein `profile_picture`, wodurch ein Speichern das Bild löschte. Beim Bearbeiten bleibt das bestehende Profilbild jetzt erhalten. - **Dev-Lab-Pfad-Icon „Debugging & Problemlösung" war leer:** Das Symbol `>` wurde per `innerHTML` als (kaputtes) HTML interpretiert statt als Text gerendert. Der Marker wird jetzt escaped (`esc(p.marker)`, Cache-Buster `v4`); alle drei Trainingspfade zeigen ihr Icon (`{}` · `>` · `[]`). ### Geändert / Hinzugefügt - **Registrierung behält die Schreibweise des Benutzernamens** (vorher klein) und trimmt nur noch. - **Passwort-Wiederholung bei der Registrierung:** neues Feld „Passwort wiederholen" mit Client- **und** Server-Prüfung; bei Abweichung wird der Account nicht angelegt (Schutz vor Tippfehlern, da die Passworteingabe verdeckt ist). Eigene Fehlermeldung, die das Signup-Panel direkt öffnet. - **Admin-Passwort-Reset (ohne E-Mail):** In der Benutzerverwaltung lässt sich pro Nutzer direkt ein neues Passwort setzen („PW zurücksetzen"); das Bearbeiten-Formular setzt ein eingegebenes Passwort ebenfalls neu (leer = unverändert). Dient als Konto-Recovery (Phase 1). ### Hinweise / offen - **„Passwort vergessen" als E-Mail-Self-Service (Phase 2)** ist noch offen: Der Server hat aktuell keinen Mailversand. Geplant über ein SMTP-Relay (z. B. Brevo/Mailjet, EU/DSGVO) bzw. ein vorhandenes Postfach, sobald SMTP-Zugangsdaten vorliegen – Reset dann per zeitlich begrenztem Token-Link. (Ein eigener Mailserver ist wegen Zustellbarkeit/Reputation nicht vorgesehen.) ## [Unreleased] – 2026-06-30 · Dev Lab Neues Spiel **Dev Lab**: ein Entwicklerlabor, das mehrere kleine Disziplinen bündelt (SQL, Java/Debugging, Git, HTML, CSS, Regex, PHP, REST). Im Gegensatz zur ersten, rein clientseitigen Skizze ist Dev Lab jetzt **server-autoritativ, DB-gestützt und im Admin pflegbar** – mit **echter Mechanik-Vielfalt** statt überall demselben Lückentext. ### Hinzugefügt - **Spiel: Dev Lab (`/devlab`)** mit Hub (drei Trainingspfade: Syntax · Debugging · Praxis) und **11 Disziplinen** (`query-builder`, `sql-detective`, `debug-hunt`, `git-mission`, `html-architect`, `css-designer`, `css-cascade`, `flexbox-factory`, `regex-master`, `php-request`, `api-explorer`), zusammen **189 Aufgaben** (16–21 je Spiel). - **Sechs unterschiedliche Spielmechaniken** – passend zum Thema gemischt: **cloze** (Code-Lücke tippen), **choice** (Multiple-Choice-Chips), **order** (Bausteine klick-basiert zusammensetzen/sortieren), **spot** (den fehlerhaften Token anklicken), **match** (Paare zuordnen) und **regex** (Muster schreiben mit **Live-Treffer-Vorschau** gegen Beispiel-Strings). - **Server-autoritativ & Anti-Cheat:** Aus dem JSON-Payload jeder Aufgabe baut der Server eine bereinigte Sicht **ohne Lösung**; geprüft und gewertet wird ausschließlich serverseitig (Text-/Reihenfolge-/Verhaltensvergleich). `correctIndex`/`bugIndex`/Lösungen/Pattern verlassen nie das Backend. Score über die generische `game_scores`-Tabelle (Kennung `devlab`, `deck`=Spiel-Slug). - **Fehler-Mechanik** wie bei Syntax Saga: bis zu drei Versuche mit Hinweis, dann „Auflösung", kein Game-Over; Punkte nach Versuch, Sterne 0–3. - **Admin-Verwaltung (`/admin/devlab`):** Spiele und Aufgaben (Typ + JSON-Payload) anlegen, bearbeiten, löschen, aktiv/inaktiv schalten. Inhalte aus `devlab/content.json` (idempotenter Seeder). ### Behoben / geändert (ggü. der ersten Dev-Lab-Skizze) - **Platzhalter-Leak entfernt:** Die Eingabefelder zeigten vorher die Lösung als Platzhalter – jetzt sind es neutrale Kategorie-Labels („Keyword", „Operator", „Tag" …). Geprüft wird serverseitig. - **Echte Mechanik-Abwechslung** statt 11×Lückentext; **deutlich mehr Aufgaben** je Disziplin. ### Technik - Neue Entities `DevLabGame`/`DevLabTask` (JSON-`payload`) + Flyway `V8__devlab.sql`; `DevLabService` mit sechs Mechanik-Checkern; JSON-API `/api/devlab/**` (`catalog`/`session`/`check`/`finish`, CSRF-ausgenommen, `devlab` in `KNOWN_GAMES`). Frontend: polymorphe Engine `devlabgame.js`, DB-getriebener Hub `devlab.js`, `devlabgame.css` (Prefix `dlg-`). ## [Unreleased] – 2026-06-30 Neues Spiel **Syntax Saga**: interaktive IT-Geschichten, in denen man den fehlenden Code (Schlüsselwörter, Operatoren, ganze Zeilen) in eine kleine Story tippt. Server-autoritativ nach dem TechTacular-Muster, Inhalte DB-gestützt und im Admin pflegbar. Die Dashboard-Kachel „Syntax Saga" ist damit aktiv (vorher „coming soon"). ### Hinzugefügt - **Spiel: Syntax Saga (`/syntaxsaga`):** Missions-Saga in drei **wählbaren Schwierigkeitsstufen** (Junior = eine Lücke, Professional = mehrere Lücken, Senior = ganze Zeile rekonstruieren). Jede Mission besteht aus Erzähltext + optionalem Dialog + Codeblock mit `{{n}}`-Lücken. Eine Lücke kann **mehrere gültige Antworten** haben (z. B. `localhost` / `192.168.0.1`) und optional groß-/kleinschreibungs-unabhängig prüfen (z. B. SQL-Keywords). Eingabe per Freitext; **Prüfung und Score ausschließlich serverseitig** – die Lösungen verlassen nie das Backend (Anti-Cheat wie bei TechTacular/MindMatch). - **Fehler-Mechanik:** pro Lücke bis zu drei Versuche mit Hinweis, danach **„Auflösung anzeigen"**; die Geschichte läuft immer weiter (**kein Game-Over**). Punkte je nach Versuch (Erstversuch voll, danach weniger), aufgelöste Lücke = 0 Punkte; Sternewertung 0–3. - **Admin-Verwaltung (`/admin/syntaxsaga`):** Missionen, Lücken und Lösungen anlegen/bearbeiten/löschen, aktiv/inaktiv schalten. Mitgeliefert: **34 Seed-Missionen** (16 Junior · 10 Professional · 8 Senior, zusammen 44 Lücken) aus `syntaxsaga/content.json` (idempotenter Seeder, lädt nur in leere Tabellen). Themen quer durch den Stack: **Java** (Schleifen, OOP/`class`/`this`, Exceptions, Collections, Operatoren), **SQL** (`WHERE`/`ORDER BY`/`JOIN … ON`/`INSERT`/`UPDATE`/`DELETE`), **Bash** (`cd`/`grep`/Pipe), **Git** (`commit`), **HTML** (Link/Formular) und **Python** (`print`); Senior rekonstruiert ganze Zeilen (z. B. `public static void main(String[] args)`, `Scanner sc = new Scanner(System.in)`) mit ein paar tolerierten Schreibvarianten. - Spielstände laufen über die bestehende generische `game_scores`-Tabelle (Spiel-Kennung `syntax-saga`), inkl. Highscore/„Neuer Bestwert" und Statistik im Spiel-HUD. ### Technik - Neue Entities `SyntaxSagaMission` / `SyntaxSagaGap` / `SyntaxSagaSolution` + Flyway-Migration `V7__syntax_saga.sql`; server-autoritativer `SyntaxSagaService` (Story ohne Lösungen / serverseitige Prüfung / Score-Recompute beim Abschluss); JSON-API `/api/syntaxsaga/**` (CSRF-ausgenommen). Frontend unter `syntaxsaga.html` / `syntaxsaga.js` / `syntaxsaga.css` (Prefix `ss-`, zentrale `theme.css`-Tokens). ## [Unreleased] – 2026-06-29 Inhaltlicher und optischer Feinschliff: echte Rechtstexte, vollständig überarbeitete FinalFlux-Inhalte, neue Login-Optik, eine reparierte Konto-Löschung sowie ein app-weiter Farb-Relaunch auf das „Back to the Future"-Schema. ### Hinzugefügt - **Rechtsseiten:** Impressum-Platzhalter (Hinweis „in Entwicklung / nicht für die öffentliche Nutzung") sowie **echte** Nutzungsbedingungen/AGB, Datenschutzerklärung (DSGVO-konform, spiegelt die tatsächlich verarbeiteten Daten) und Community-/Nutzungsrichtlinien. Neuer `LegalController` (`/nutzungsbedingungen`, `/datenschutz`, `/richtlinien`) + `ImpressumController`; alle Footer-Links app-weit verdrahtet. - **Kombinierte Login/Registrierung:** Dual-Panel mit überschiebendem Overlay (Sign-in ↔ „Account erstellen") und Neon-Button mit Hover-Expand und rotierendem Conic-Glow; ausgelagert nach `static/css/auth.css`. Responsiver Fallback (gestapelt) auf schmalen Screens. - **FinalFlux – Netzwerktopologien:** fünf theme-adaptive Inline-SVG-Diagramme (Stern, Bus, Ring, Mesh, Baum) in den Erklärungen. ### Geändert - **FinalFlux-Inhalte komplett überarbeitet (28 Themen, ~742 Fragen):** die generischen Dummy-Falschantworten („nur Dekoration", „zufälliger Begriff" …) durch plausible, themennahe Distraktoren ersetzt, jede Frage mit echter Begründung und variierender Antwortposition. Jede Themenseite hat jetzt **echten Lehrtext** (Definitionen, Funktionsweise, Rechenbeispiele, Merksätze) statt des bisherigen Stubs. - **App-weiter Farb-Relaunch auf „Back to the Future"-Palette:** Primär **Feuer-Amber** (`#f0a81a`) + Gelb-Glow, **Flux-Blau** (`#2d9cce`) als Zweitakzent (u. a. Links); warmer Bernstein-Glow statt Matrix-Grün. Dark/Light bleiben (sehr dunkler/sehr heller Grund). Zentral über `theme.css`-Tokens; Legacy-Cyan in `style.css` auf Theme-Variablen umgestellt. - **Spiele-Feedback ohne Grün:** richtig = **Flux-Blau + ✓**, falsch = **Rot + ✗** in FinalFlux, MindMatch und TechTacular (löst den fehlenden Kontrast von „grün auf grün"); neue Tokens `--success`, `--danger`, `--secondary`. Das Fehler-Rot ist ein kühleres Crimson (`#ff4d6d` dunkel / `#be123c` hell), damit es sich klar vom orangen Akzent abhebt (v. a. im Light-Mode). - Registrierungs-Duplikat leitet auf `/?registerError` (kombinierte Seite öffnet automatisch das Signup-Panel). - **Vollständig responsive / mobiltauglich:** Auf schmalen Screens wird die App-Sidebar nicht mehr ausgeblendet (vorher fehlte die Navigation komplett), sondern zu einer Off-Canvas-Schublade mit Hamburger-Button + Backdrop (global via `theme.js` injiziert, Styles in `theme.css`). Topbar stapelt/umbricht (dekorativer Puls + Suche ausgeblendet), Spielkarten-Grid 3→2→1, breite Tabellen horizontal scrollbar. Spiele, FinalFlux und Login/Registrierung waren bereits responsiv. ### Behoben - **Konto-Löschung repariert:** „Profil löschen" warf einen 500er (fehlendes `@Transactional` bei einer abgeleiteten Delete-Query) und löschte nichts. Jetzt werden Konto **plus** Spielstände, Achievements und Profilbild-Datei in einer Transaktion entfernt — erfüllt die in der Datenschutzerklärung zugesicherte Löschung (Art. 17 DSGVO). - Impressum-„Zurück"-Link loggte eingeloggte Nutzer scheinbar aus; jetzt login-abhängig (eingeloggt → Dashboard, sonst → Startseite). Gleiche Logik auf den Rechtsseiten. - Login-Overlay im **Light-Mode** war weiß-auf-weiß/verwaschen; jetzt kräftiges Orange-Panel mit weißem Text (Dark-Mode unverändert). - **Mobile-Bedienbarkeit der Spiele:** MindMatch- und TechTacular-Boards ragten auf dem Handy aus dem Bildschirm, ohne dass man scrollen konnte (`height:100vh; overflow:hidden` + iOS-Adressleiste). Auf Touch-Breiten jetzt scrollbar, Karten/Kacheln mit fester Proportion bzw. Mindesthöhe → alle Felder erreichbar. - **FinalFlux-Hub auf Mobil:** Überlappung von Kopfbereich und Inhalt + unerreichbares Themen-Menü. Ursache: das generische `main {}` aus der Alt-`style.css` traf das Hub-`