25 KiB
Changelog
Alle nennenswerten Änderungen an Mindflux werden hier dokumentiert. Format angelehnt an Keep a Changelog, Versionierung semantisch.
[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.
Sicherheit
- DB-Passwort aus dem Repo entfernt:
docker-compose.ymlliest 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 (Commit4f5042d). - Unsicherer Legacy-Endpunkt
/users/savegelö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 vongame_scores/achievementsaufusers(username)mitON 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:
ProgressServiceaggregiert ausgame_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/printStackTracedurch SLF4J ersetzt. spring-boot-starter-validation+-actuatorergänzt, redundantesspring-security-cryptoentfernt, 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;SettingsControllerin denProfileControllergemergt; Token-Farbe statt Hardcode. - Spielnamen vereinheitlicht (englisch, zusammengeschrieben): DevLab, SyntaxSaga sowie
CodeEscape, ServiceClash, BugHunter, NetWorker für die geplanten Spiele (Keys in
KNOWN_GAMES/ProgressServicemit 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),AppStartChecku. 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
@WebMvcTestder 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 CodeEscape, 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.
CodeEscape
- 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 CodeEscape-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 perinnerHTMLals (kaputtes) HTML interpretiert statt als Text gerendert. Der Marker wird jetzt escaped (esc(p.marker), Cache-Busterv4); 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 generischegame_scores-Tabelle (Kennungdevlab,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 ausdevlab/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) + FlywayV8__devlab.sql;DevLabServicemit sechs Mechanik-Checkern; JSON-API/api/devlab/**(catalog/session/check/finish, CSRF-ausgenommen,devlabinKNOWN_GAMES). Frontend: polymorphe Enginedevlabgame.js, DB-getriebener Hubdevlab.js,devlabgame.css(Prefixdlg-).
[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) aussyntaxsaga/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-Kennungsyntax-saga), inkl. Highscore/„Neuer Bestwert" und Statistik im Spiel-HUD.
Technik
- Neue Entities
SyntaxSagaMission/SyntaxSagaGap/SyntaxSagaSolution+ Flyway-MigrationV7__syntax_saga.sql; server-autoritativerSyntaxSagaService(Story ohne Lösungen / serverseitige Prüfung / Score-Recompute beim Abschluss); JSON-API/api/syntaxsaga/**(CSRF-ausgenommen). Frontend untersyntaxsaga.html/syntaxsaga.js/syntaxsaga.css(Prefixss-, zentraletheme.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 übertheme.css-Tokens; Legacy-Cyan instyle.cssauf 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 (#ff4d6ddunkel /#be123chell), 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.jsinjiziert, Styles intheme.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
@Transactionalbei 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.csstraf das Hub-<main>; jetzt in.finalflux-mainneutralisiert und die Shell stapelt auf Mobil sauber (display:block, Sidebar mit voller Höhe).
Sicherheit
- Neue Rechtsseiten öffentlich erreichbar (
permitAllfü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/GameScoreControllermitPOST /api/games/{game}/scoresundGET /api/games/{game}/statsfür alle Spiele. /progresszeigt echte Spiel-Statistiken (Highscore, Spiele, zuletzt gespielt).
Optik-Relaunch / Theme-System
- Zentrale Tokens in
theme.css+ Umschaltertheme.js, gesteuert über<html data-theme="dark|light">(Persistenz vialocalStorage, 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
ProgressServiceliefert echte DB-Daten statt der bisherigen Dummy-Spiele.- Admin-Bootstrap-User auf
AliceDarkestumbenannt (vorher „Alice Darkest" mit Leerzeichen); zusätzlicher AdminKevCipherangelegt.
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 austechtacular/content.json. - Hinweis (Thymeleaf): Inline-
<script>mit[[/]]benötigtth: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.