641 lines
47 KiB
Markdown
641 lines
47 KiB
Markdown
# 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-21 · Gesamt-Audit: Light Mode, Barrierefreiheit, AP2-Inhalte, DSGVO
|
||
|
||
### Light Mode & Design
|
||
- **Light-Mode-Fundament:** zentrale UI-Effekte sind jetzt als Theme-Primitives
|
||
organisiert. Dark Mode behält Neon-Emissionen; Light Mode nutzt warme Elevation,
|
||
entfernt Text-/Icon-Halos und erhält einen sichtbaren Scrollbar-Thumb. Native
|
||
Controls folgen über `color-scheme` dem gewählten Theme.
|
||
- **Theme-Start & FinalProtocol:** Erstbesucher folgen der OS-Farbpräferenz, die
|
||
Browser-Chrome erhält ein passendes `theme-color` und FinalProtocol lädt keinen
|
||
ungenutzten Legacy-Style mehr; die statischen Lernseiten erhalten daraus nur noch
|
||
eine minimale Reset-Basis.
|
||
- **Kritische Light-Mode-Fälle behoben:** Login-Overlay, SyntaxSaga-Bühne,
|
||
CodeEscape-Terminal, NetWorker-Guide und die Farbenblind-Palette sind in heller
|
||
Darstellung wieder lesbar und kontraststark. A11y-Widget und FinalProtocol
|
||
verwenden ebenfalls themefähige Farben.
|
||
- **Ansichtswechsel abgesichert:** zentrale SPA-Übergänge starten oben, ohne laufendes
|
||
Antwortfeedback zu versetzen. FinalProtocol scrollt Ergebnisse und Neustarts gezielt
|
||
ins Sichtfeld; SyntaxSaga und DevLab fokussieren ohne Scrollsprung.
|
||
- **Echter Light Mode statt Invertierung:** Light-Tokens auf WCAG AA nachgeschärft
|
||
(Akzent, Muted, Sekundär, Spielakzente), neues `--warn`-Token. Die Spielkarten der
|
||
Plattform-Hülle erhalten im Light Mode farbton-treu abgedunkelte Akzente statt
|
||
durchschlagender Neon-Werte.
|
||
- **ServiceClash, NetWorker und BugHunter** haben jetzt eine echte helle Variante
|
||
(zuvor dauerhaft dunkel): alle Farben laufen über scoped CSS-Custom-Properties auf
|
||
der Body-Klasse, Dark bleibt pixelgleich, die Light-Paletten sind handentworfen und
|
||
vollständig WCAG-AA-geprüft; der Theme-Umschalter wurde im Header ergänzt. Der bei
|
||
NetWorker fälschlich globale `var(--text)`/`var(--muted)`-Zugriff ist behoben.
|
||
- **Header-Icons vereinheitlicht:** alle Icon-Buttons einheitlich 42×42 px, Radius 10,
|
||
Glyphe 20×20, Outline-Stil (Surface-Fill, Akzent nur über Farbe/Rahmen).
|
||
|
||
### Barrierefreiheit
|
||
- **Widget perfektioniert:** Fokus-Falle im Panel, `aria-modal`, Schließen per Klick
|
||
außerhalb; der Textgrößen-Button nutzt ein dynamisches `aria-label` statt eines
|
||
falschen `aria-pressed`, der Reset-Button ist als Aktion ausgezeichnet; Hochkontrast
|
||
ist als „immer dunkel" kenntlich gemacht. Toter Legacy-Dock-Code entfernt.
|
||
- **Spielanleitungen & Hints:** gemeinsames „So funktioniert's"-Overlay mit ?-Button
|
||
und automatischem Erstaufruf für sieben Spiele (NetWorker behält seinen Inline-Guide);
|
||
MindMatch erhält einen „Paar-Blitz"-Tipp, der kurz ein Paar aufdeckt und dafür einen
|
||
Zug kostet (rein clientseitig, keine Backend-Änderung).
|
||
|
||
### FinalProtocol – Abschlussprüfung Teil 2
|
||
- **200 neue Prüfungsfragen:** je fünf Themen für Systemintegration (Netzwerkplanung,
|
||
IT-Sicherheit, Virtualisierung, Monitoring & Backup, Skripting) und Anwendungs-
|
||
entwicklung (SQL, UML, OOP, Algorithmen, Testverfahren) mit je 20 Fragen, fünf
|
||
Kategorien und ausgewogener Antwortverteilung. Titel und Navigation decken jetzt
|
||
AP1 **und** AP2 ab.
|
||
|
||
### DSGVO & Recht
|
||
- **Rechtslinks von jeder Seite erreichbar:** das bislang ungenutzte Footer-Fragment
|
||
wird jetzt auf allen Seiten inkl. Spiel-, Fehler- und Anmeldeseiten verwendet
|
||
(26 duplizierte Inline-Footer ersetzt, 11 fehlende ergänzt).
|
||
- **Datenschutzerklärung** um NeuralNet-Nachrichten, E-Mail-Token (SHA-256, 24 h),
|
||
SMTP-Versand und konkrete Speicherfristen ergänzt; **Impressum** nach § 5 DDG
|
||
strukturiert (auffällig markierte Pflichtfeld-Platzhalter).
|
||
- **Datenexport (Art. 20):** `/profile/export` liefert alle Kontodaten (ohne Passwort)
|
||
als JSON-Download.
|
||
- **Demo-Konto „NeuralTest"** wird per Migration aus produktiven Datenbanken entfernt.
|
||
|
||
### Technik & Qualität
|
||
- **E-Mail-Versand diagnostizierbar:** Bestätigungs- und Reset-Mails schreiben jetzt
|
||
datensparsame, korrelierbare Ereignislogs für Token-Erstellung, SMTP-Übergabe,
|
||
Fehler, erneute Anforderung und Verifikation. Roh-Tokens und Bestätigungslinks
|
||
werden nie protokolliert; eine SMTP-Annahme wird nicht als Postfachzustellung
|
||
ausgegeben.
|
||
- **Legacy aufgeräumt:** die nicht referenzierten Styles für Achievements, Progress,
|
||
Settings und Soziales sowie `finalflux-check.js` entfernt; der Styleguide dokumentiert
|
||
die neuen Effekt-Primitives.
|
||
- **Chart.js lokal ausgeliefert** statt vom CDN – das einzige externe Asset entfällt,
|
||
wodurch die Datenschutzerklärung wieder zur Realität passt.
|
||
- **Security-Header** ergänzt: Content-Security-Policy (self-hosted), Referrer-Policy;
|
||
HSTS bleibt auf HTTPS beschränkt.
|
||
- **Umlaute** in den Spielinhalten flächendeckend korrigiert (wort-/morphemgenau,
|
||
Slugs und Code-Bezeichner geschont), mit Reseed-Migration für bereits befüllte
|
||
Datenbanken.
|
||
- **AvatarService** aus dem ProfileController extrahiert (Bildverarbeitung und
|
||
Pfad-Logik zentralisiert); **Bean Validation** eingeführt (Start mit ScoreSubmission).
|
||
- Aufräumen: totes Scaffolding (`DummyController`, `dummy.html`, `hello.txt`) und
|
||
obsoleter CSS-Code entfernt.
|
||
|
||
## [Unreleased] – 2026-07-14 · SysnaptiK Neural Rebrand
|
||
|
||
### TechTacular
|
||
- **50:50-Joker:** Pro Runde kann im Frage-Overlay ein Joker zwei garantiert falsche
|
||
Antworten ausblenden und deaktivieren. Die Lösung bleibt vollständig serverseitig;
|
||
ein verwendeter Joker halbiert die Punkte der betreffenden Frage nur, wenn der
|
||
serverseitige Rundenzustand den Einsatz bestätigt.
|
||
|
||
### Konto & Sicherheit
|
||
- **E-Mail-Bestätigung:** Neue Accounts erhalten einen einmaligen, 24 Stunden
|
||
gültigen Bestätigungslink und werden erst nach erfolgreicher Verifikation zum
|
||
Login freigeschaltet. Bestehende Accounts bleiben ohne Unterbrechung bestätigt.
|
||
- **Passwort-Reset per E-Mail:** Über „Passwort vergessen?“ können bestätigte
|
||
Nutzerinnen und Nutzer einen zeitlich begrenzten Reset-Link anfordern und ihr
|
||
Passwort selbst neu vergeben. Token werden ausschließlich gehasht gespeichert.
|
||
- **Admin-Reset vereinheitlicht:** Manuelle Passwort-Resets im Adminbereich
|
||
verwenden jetzt verdeckte Eingabefelder und dieselbe Mindestlänge von acht Zeichen.
|
||
- **Zustellungsweg repariert:** Mindflux verwendet für SMTP den Zertifikatsnamen
|
||
`mail.sysnaptik.de`, der im internen `backend_network` direkt auf den
|
||
Mailserver aufgelöst wird. STARTTLS prüft damit den korrekten Hostnamen,
|
||
ohne die interne Container-Verbindung zu verlassen.
|
||
- **Deployment verifiziert:** Der Deployment-Workflow wartet jetzt bis zu 90
|
||
Sekunden auf den Container-Healthcheck und bricht mit den App-Logs ab, falls
|
||
die Anwendung nicht gesund startet. Dadurch werden fehlerhafte Deployments
|
||
nicht mehr fälschlich als erfolgreich angezeigt.
|
||
- **Registrierung kompakter:** „Bestätigungslink erneut senden“ ist nun eine
|
||
einklappbare Aktion; das Eingabefeld erscheint erst auf Klick. Bei längeren
|
||
Formularen bleibt der Registrierungsbereich innerhalb des Panels scrollbar.
|
||
- **Registrierung eindeutig bestätigt:** Nach einer erfolgreichen Anmeldung
|
||
bleibt der Registrierungsbereich geöffnet und zeigt die Versandbestätigung
|
||
direkt am Formular, statt unauffällig zum Login zu wechseln.
|
||
- **Registrierungsroute korrigiert:** Der direkte Aufruf von `/register` öffnet
|
||
nun wieder den Registrierungsmodus statt auf dem Login zu landen.
|
||
- **Passwort-Reset sichtbar verlinkt:** „Passwort vergessen?“ steht jetzt direkt
|
||
unter dem Passwortfeld im Login-Bereich.
|
||
- **Token-Schema nachgeschärft:** Folge-Migrationen richten UTC-Zeitstempel und
|
||
den Token-Hash-Typ an das JPA-Modell aus, damit Schema-Validierung und
|
||
Container-Start zuverlässig funktionieren.
|
||
|
||
### Marke & Plattform
|
||
- **Neural Lightmode & Kontrast:** Die helle Plattformvariante ist wieder ein
|
||
vollständiges Mint-/Blau-Neural-Theme, inklusive Sidebar, Karten und Login.
|
||
Hochkontrast nutzt jetzt dieselbe Mint-/Cyan-Sprache statt der alten Amber-Palette.
|
||
- **NeuralNet aufgeräumt:** Der leere Gesprächshinweis verschwindet beim Öffnen
|
||
wirklich, die letzte Verbindung wird pro Konto gespeichert und beim nächsten
|
||
Besuch direkt wieder geöffnet. Die Sprechblase bleibt neutral und invertiert
|
||
nur bei ungelesenen Nachrichten.
|
||
- **NeuralNet-Benachrichtigung:** Die Dashboard-Glocke ist jetzt eine
|
||
Sprechblase. Sie zeigt den echten Zähler ungelesener Direktnachrichten und
|
||
leuchtet in der Neural-Akzentfarbe, bis die Nachrichten gelesen sind.
|
||
- **NeuralNet-Chatlayout geschlossen:** Chatkopf, Nachrichtenliste und Eingabefeld
|
||
bilden nun eine feste Flex-Spalte im Panel. Der Footer kann nicht mehr zwischen
|
||
Gespräch und Eingabe rutschen.
|
||
- **NeuralNet-Buttons direkt gebunden:** Kontakt- und Chat-Buttons erhalten nach
|
||
jedem Rendern eigene Handler. Damit öffnet eine Verbindung unabhängig von der
|
||
Ereignisweitergabe des umgebenden Panels zuverlässig den Nachrichtenbereich.
|
||
- **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; 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-`<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._
|