Files
mindflux/CHANGELOG.md
T
AliceDarkest f9e6516124
mindflux-ci / build (push) Successful in 24s
Open NeuralNet chats before history loads
2026-07-14 16:19:52 +02:00

509 lines
38 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
- **NeuralNet-Chat öffnet sofort:** Der Klick auf eine Verbindung schaltet das
Gespräch samt Eingabefeld nun unabhängig vom anschließenden Verlaufsabruf frei;
Chat-Aktionen sind explizit als Buttons markiert.
- **NeuralNet-Chat repariert:** Leere, erfolgreiche API-Antworten werden nicht mehr
fälschlich als JSON gelesen. Kontaktaktionen aktualisieren die Oberfläche wieder
zuverlässig und bestätigte Verbindungen lassen sich direkt im Chat öffnen.
- **NeuralNet-Testkonto:** Ein klar benanntes, für NeuralNet aktiviertes Dummykonto
erleichtert das Prüfen von Kontaktanfragen und privaten Nachrichten.
- **NeuralNet-MVP:** Der frühere Soziales-Platzhalter ist jetzt ein Opt-in-Hub für
Kontaktanfragen, Annahme/Ablehnung/Rückzug und private 1:1-Nachrichten. Ohne
bestätigte Verbindung lässt der Server keine Nachrichten zu.
- **NeuralNet geplant:** Der kommende soziale Bereich heißt NeuralNet und priorisiert
private Lernverbindungen: Kontaktanfragen müssen erst ausdrücklich angenommen werden,
bevor private Nachrichten möglich sind.
- **Farbschema ohne Aufblitzen:** Die Neural-Hülle wird nun statisch mit dem
Grundtheme geladen und ihre Klasse bereits im `<head>` 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; Sterne­wertung 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-`<main>`; jetzt in `.finalflux-main` neutralisiert und die Shell stapelt auf Mobil sauber (`display:block`, Sidebar mit voller Höhe).
### Sicherheit
- Neue Rechtsseiten öffentlich erreichbar (`permitAll` für `/impressum`, `/nutzungsbedingungen`, `/datenschutz`, `/richtlinien`).
### Hinweise
- Footer-Links **Support** und **Feedback** sind weiterhin Platzhalter (`href="#"`).
- Die Rechtstexte sind inhaltlich vollständig, aber KI-erstellt — vor einem öffentlichen Launch fachlich/juristisch prüfen (insb. konkrete Anbieteranschrift im Impressum).
- Vier ungenutzte Alt-CSS-Dateien (`progress/settings/achievements/soziales.css`, keine Referenzen) blieben vorerst liegen.
## [Unreleased] – 2026-06-25
Großer Ausbau: zwei vollständige Spiele, durchgängig DB-gestützte und
admin-pflegbare Inhalte sowie ein kompletter Optik-Relaunch (Theme-System
mit Dark/Light-Umschaltung).
### Hinzugefügt
#### Spiel: MindMatch (Lern-Memory)
- Memory-Spiel, das **Begriff ↔ Bedeutung** paart (klassische Aufdeck-Mechanik mit Lernwert).
- Deck-Auswahl, Zug-/Zeitzähler, Sternebewertung und „Spiel abbrechen".
- **No-Scroll-Layout**: alle Karten einer Runde passen ohne Scrollen auf den Schirm (Brett skaliert die Karten).
- Kartenrückseiten tragen das leuchtende Mindflux-Emblem (grün/magenta je Theme).
- Inhalte **DB-gestützt und im Admin pflegbar** (`/admin/mindmatch`): Decks und Paare jederzeit erweiterbar.
- Mitgelieferte Decks: Netzwerk, Hardware, IT-Sicherheit, SQL-Befehle sowie ein großer Fachinformatiker-Satz (15 Decks insgesamt).
#### Spiel: TechTacular (Jeopardy-Quiz)
- **Echtes Jeopardy-Prinzip (umgekehrt):** angezeigt wird eine Aussage, gesucht ist der Begriff als „Was ist …?".
- 5×5-Board (Kategorie × Punktwert 100–500), Antwortprüfung mit Erklärung.
- **Server-autoritativ & Anti-Cheat:** das Board enthält nie die Lösung; Prüfung und Wertung passieren ausschließlich serverseitig.
- **≥ 60 % neue Fragen pro Runde:** das Board schließt die Fragen der Vorrunde aus.
- **Kuratierter Inhalt:** 12 Kategorien über das ganze Informatik-Prüfungsspektrum (Netzwerk, Betriebssysteme, Programmierung, Datenstrukturen & Algorithmen, Datenbanken/SQL, IT-Sicherheit & Krypto, Web, Rechnerarchitektur, Software-Engineering, Theoretische Informatik, Cloud/DevOps, IT-Recht), **384 Hinweise**.
- Admin-Verwaltung als Drill-down (`/admin/techtacular`).
#### Generisches Spiel-Backend
- Tabelle `game_scores` + `GameScoreService`/`GameScoreController` mit `POST /api/games/{game}/scores` und `GET /api/games/{game}/stats` für alle Spiele.
- `/progress` zeigt echte Spiel-Statistiken (Highscore, Spiele, zuletzt gespielt).
#### Optik-Relaunch / Theme-System
- **Zentrale Tokens** in `theme.css` + Umschalter `theme.js`, gesteuert über `<html data-theme="dark|light">` (Persistenz via `localStorage`, kein Aufblitzen).
- **Dark = Grün-Neon, Light = heller Grund + Magenta** (bewusst invertiert).
- Wiederverwendbare `mf-`-Komponenten (Shell/Sidebar/Topbar, HUD-Karten, Panels, Buttons, Formulare, Tabellen, Footer …).
- **Dashboard** im „Cyber-Grid"-Look neu: linke Sidebar (Nav, Profil, Level/XP, Streak), Mitte mit HUD-Spielkarten, rechte Widget-Spalte (System-Status, Fortschritt, Top-Kategorien, Challenge), Top-Leiste mit Suche/Glocke/Theme-Schalter.
- Original-Mindflux-Logo per CSS-Maske theme-abhängig eingefärbt (`/img/mindflux-emblem.png`).
- Theme + Umschalter **app-weit** ausgerollt: Login/Registrierung, beide Spiele, Profil/Fortschritt/Achievements/Einstellungen/Soziales/Knowledge, alle Admin-Seiten, FinalFlux-Hub und 28 statische Lernseiten.
- **Fußzeile** (Support · Feedback · Nutzungsbedingungen · Richtlinien · Datenschutz · Impressum) als `.mf-footer`-Komponente, einheitlich auf allen Content-Seiten.
### Geändert
- `ProgressService` liefert echte DB-Daten statt der bisherigen Dummy-Spiele.
- Admin-Bootstrap-User auf `AliceDarkest` umbenannt (vorher „Alice Darkest" mit Leerzeichen); zusätzlicher Admin `KevCipher` angelegt.
### Sicherheit
- Statische JS-Ressourcen (`/js/**`) wie CSS/Bilder öffentlich (`permitAll`) — kein schützenswerter Inhalt.
- Score-Endpunkte gegen eine Allowlist bekannter Spiele abgesichert; Punkte werden serverseitig berechnet (kein vom Client gemeldeter Score).
### Technisch
- **Flyway-Migrationen V2–V6:** `game_scores` (V2), MindMatch-Decks/-Paare (V3) + Fachinformatiker-Inhalte (V4), TechTacular-Schema (V5) + kuratierte Reverse-Inhalte (V6).
- Inhalts-Import für TechTacular über einen `CommandLineRunner`-Seeder aus `techtacular/content.json`.
- Hinweis (Thymeleaf): Inline-`<script>` mit `[[`/`]]` benötigt `th:inline="none"`, sonst bricht die Antwort ab.
### Hinweise
- Footer-Links sind aktuell Platzhalter (`href="#"`); echte Impressum-/AGB-/Datenschutz-Seiten existieren noch nicht.
- Die fünf übrigen Dashboard-Spiele (Syntax Saga, Code Escape Room, Service Clash, Bug Hunter, Netzwerker) sind noch nicht umgesetzt und verweisen auf „coming soon".
---
_Frühere Stände (Grundgerüst der Lernplattform: Benutzer/Login, Profil, Achievements, FinalFlux, Admin) wurden vor Einführung dieses Changelogs entwickelt._