game.html: bei Mission-Ende Snapshot game.lastResult (Start/Landung/Gesamt); GGS_LIVE_STATE
zeigt in mission/briefing den letzten Einsatz statt leerer Spalten. teacher.html Status:
"✓/⚠ letzter Einsatz" wenn Werte aus dem letzten Lauf stammen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
HEUTE triagiert exakt gleich (support/more/work/good/idle), aber nur auf die heutigen
Laeufe (Erfolg = Ø der heutigen Scores aus summary-Endpoint). Karten-Renderer in
_ivTriageCards ausgelagert + wiederverwendet. Neuer summary-Fetch im Promise.all.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
live.php meldet paused (Idle-Pause/Sim-Pause/phase=paused) + activeUntilMs (letzte
Interaktion). renderLiveSummary: Hauptbalken volle Hoehe bis Pausenbeginn, danach
halbhoher gedaempfter "Pausen-Schwanz" der mit der Zeit weiterwaechst. Legende + tz.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
_hhmm/_vdt/_fmtHM formatieren mit timeZone Europe/Vienna; _asMs normalisiert Epoch UND
MySQL-UTC-Strings. Betrifft Tag-Achse+Balken, Session-Detail, "Heute erledigt", Cockpit
"zuletzt aktiv", Reflexionen, letztes Lebenszeichen. Vorher zeigte new Date().getHours()
je nach Geraet evtl. UTC.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Vorher rundete winStart auf 30-min + 15-min-Polster -> bis zu 45 min leerer Platz vor
dem ersten Balken (z.B. Spiel 09:44, Achse begann 09:00). Jetzt winStart = erstes Spiel
minus 4 min, Marker adaptiv auf sauberen Uhrzeiten (15/30/60-min je nach Spanne).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Skala war fix 1500-4500 -> alle Populationen (5000-8800) klammerten bei 100%. Jetzt
relativ zum Level-Start (6000/7000), 30%-160% -> unter Start rot, gewachsen gruen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- engine.js: floodedPct steigt jetzt stetig mit dem schutzbereinigten Meeresspiegel statt bei 15% zu plateauen. Guter Schutz haelt das Inland lange trocken (effRise = sea - prot*0.85), Strand-Verlust gedeckelt bei 12%. Downstream mitrebalanciert: Pop-Verlust-Multiplikator 5->3, Wachstums-Schwellen 15/35, Flut-Events 8-20/40, Ende bei >60. Node-validiert: guter Spieler gewinnt + Bevoelkerung waechst (statt Kollaps), Flut diskriminiert gut/mittel/schlecht.
- teacher.html: iv-prow/iv-cols Grid flexibel (Name minmax(0,1fr) + Ellipsis, Datenspalten auto) -> "Nicht aktiv"-Liste laeuft nicht mehr aus der Karte.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Gemeinsamer _avatarHtml-Helper: erkennt Slug in avatar_slug ODER als "avatar:<slug>" im emoji-Feld.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- klima game-2d/3d: GGS_LIVE_STATE liefert laufenden Punktestand (score, gleiche Formel wie Endbewertung)
- live.php summary: laufende Sessions jeder Sim bekommen Ampel-Score (nicht mehr nur Farmer) -> Tag-Ansicht faerbt laufende Balken statt grau
- teacher.html _renderInactiveToday: zeigt jetzt ALLE heute abgeschlossenen Laeufe (auch von gerade aktiven Schueler:innen); nur das laufende Spiel bleibt oben. Titel -> "Heute bereits erledigt"
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- teacher.html: LIVE_PRIMARY_FIELDS.klima Kennzahlen mit _liveBar-Ampel (absolute Skalen), _liveBar +Nachkomma-Param; tick-Spalte entfernt (redundant zu Jahr)
- game-2d/3d: beendete Laeufe (phase=end) werden beim Resume verworfen -> "Nochmal spielen"/erneutes Oeffnen startet frisch statt im Endbildschirm
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Umbenannt von "Heute nicht mehr aktiv"; zeigt jetzt ALLE heutigen Aktivitaeten
pro Schueler:in (group by name, eine Zeile je Aktivitaet, Trennlinie zwischen
Personen) mit Uhrzeit + Leistung.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Unter den aktiven Schueler:innen eine eigene Tabelle (gleiche Form): wer HEUTE
schon gespielt hat, gerade aber offline ist -> Zuletzt aktiv (Uhrzeit),
Aktivitaet (Sim), Leistung (Score-Prozent, Ampelfarbe). Reusable
_renderInactiveToday(activeSet), gespeist aus dem summary-Endpoint (heute),
laufende/online ausgenommen. In renderLive und renderLiveCompare eingehaengt.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Statt separatem Top-Streifen (rueckgebaut): results.php view=fleiss spielt
laufende live_sessions in den aktuellen Bucket (Stunde/Wochentag/Tag/Monat) ein,
markiert ihn `live`. renderFleiss laesst diese Saeule blinken (roter Rahmen).
So sieht man Bens laufendes Spiel direkt bei "Fleiss pro Schueler*in".
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
In Ergebnisse/Gesamt fehlten laufende Sessions (Fleiss baut nur auf fertigen
Laeufen). Neuer blinkender Live-Streifen ganz oben aus live_sessions: Name +
Sim-Symbol + Laufzeit, Klick = zuschauen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Running-Balken (isLive/running) blinken jetzt sanft (_tagblink 1.8s), damit
laufende Spiele klar von fertigen zu unterscheiden sind. Breite = Spieldauer
(waechst mit der Zeit) war bereits so.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Immer sichtbare Live-Zeile ueber den Empfehlungen: wie viele gerade aktiv +
welche Sims, und wer JETZT Hilfe braucht (needsHelp) als klickbare Chips mit
Klartext-Grund (z.B. "Ben - Trefferquote 10 %"). Quelle: cockpit.students.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Ben spielt bewusst schlecht (hit_rate ~10%), Konto aber wieder im Plus -> blinkte
nicht. needsHelp (teacher.html client + live.php server) jetzt: cash<0 ODER
(attempts>=6 UND hit_rate<30). Faengt dauerhaft falsche Boden/Klima-Wahl; Clara
(hit 75, 3 Krankheiten) bleibt bewusst ruhig.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
562 Ersetzungen in 50 Dateien: Halbgeviertstrich zwischen zwei Ziffern (=
"bis"-Bereich) bekommt Leerzeichen davor/danach (3–4 -> 3 – 4). Regex
/([0-9])\s*–\s*(?=[0-9])/ auf Rohtext (format-erhaltend, CRLF/Einrueckung
unveraendert), Bindestriche in Woertern und Minuszeichen unangetastet, alle
JSON weiter gueltig. Energiemanager-Zeitbloecke sind Display-Labels (kein
Logik-Key) -> safe.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Kleine Balkengrafik unter jedem Zahlenwert: bounded Metriken (Jahr/Trefferquote/
Sorten absolut zur Skala) + offene Werte (Konto/Laender/Felder/Versuche/CO2)
relativ zum groessten Wert der Spalte ueber alle Schueler:innen -> auf einen
Blick "wer liegt vorn". Konto signiert (rot bei minus), CO2/Krankheiten
invers (rot = mehr). Helfer _liveMiniBar/_liveBarColor, colMax pro Spalte.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Tages-Balken neu kodiert (nach Thomas' Spec):
- Eine Farbe pro Simulation (simColor, stabil per Hash).
- Balkenhöhe = Maß für den Erfolg (mehr Sterne → höher) → Leistungen auf einen
Blick vergleichbar.
- Rahmen kodiert den Zustand: fertig gespielt = geschlossener dünner Rahmen ·
noch dran = rechts offener Rahmen · Abbruch = gestrichelt + ✖ am Ende.
- Beschriftung: 3-Buchstaben-Kürzel (eng) → Wort → Wort+Lektion (Platz).
- Legende entsprechend erneuert.
Datenbasis vorhanden: live.php summary liefert success (inkl. 'aborted'),
stars, completed pro Session. Offen für v2: „läuft noch"-Balken aus aktiven
live_sessions einblenden (Tag-View ist bisher assessments-basiert = Abschlüsse).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
teacher.html: Menü „Live" → „Ergebnisse" mit Unteransichten
Tag·Aktuell·Vergleich·Gesamt (alte Ergebnisse-Ansicht ist jetzt „Gesamt").
Neue Kennzahl Qualität (grafischer richtig/falsch-Balken) in Aktuell +
Vergleich + Weltküche-Zeile, Gerichte-Zähler (Fleiß), Labels entschärft
(„Kritisch" → Stark/Solide/Viele Fehler).
Weltküche: korrekte Artikel (der/die/das) für alle 70 Zutaten in
production-matrix.json; verdrehten Herkunfts-Satz + Heimat-Banner neu und
marktbewusst (Ukraine-Distraktor ehrlich erklärt), „man"-Konstruktionen
für Singular/Plural.
_scripts.php: renderPage() injizierte Favicon per strrpos ins letzte
</head> — das lag in teacher.htmls printBatchTickets-JS-String → SyntaxError
zerschoss das ganze Inline-Script auf /teacher. Fix: strpos (erstes </head>).
tourismusregion: neue Karte passstrasse in maps-custom.json (Route bergauf
136 Punkte, 41 Bauslots) aus Editor-Export.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- keine Vorbereiten/paused/Start-freigeben/Pause mehr — Aufgabe ist ab Vergabe
sofort startbar (paused:false), Card zeigt nur "Laeuft" + Beenden
- Schueler-Card immer "Jetzt starten" (kein Warte-Zustand)
- "Aufgabe beenden" jetzt ordentlicher Dialog (#modal-stopassign) statt confirm()
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Modal "Aufgabe erteilen": Frist-Buttons (Heute/Morgen/+1 Woche/Kein Limit),
Default +1 Woche, Tempo-Checkbox "Vorbereiten", Live-Zusammenfassung als
Bestaetigung, Button "Auftrag erteilen"
- Aktive Klassen-Aufgabe-Card: Sim-Bild + Status (Vorbereitet/Laeuft) +
Steuerung "Start freigeben" / "Pause" / "Beenden" direkt auf der Card
(Tempo-Start nicht mehr in der individuellen Freigabe)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- aktive Klassenaufgabe wird automatisch als Vergleichs-Modul vorgewaehlt
(Chip mit 📋 markiert, immer vorne)
- Aufgaben-Banner: begonnen X/N (aus matrix) · gerade aktiv A · Oe Fortschritt
- zeigt Aufgabe auch wenn noch niemand aktiv ist (mit Hinweis)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- _liveProgressPct/_liveMood: aus dem Live-State jeder Sim ableitbarer
Fortschritt (%) und Lage-Ampel (health/heuristik) -> modueluebergreifend
vergleichbar
- weltkueche: redundante "Gerichte" ersetzt durch Fortschritt-Balken + Lage-Ampel
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- LIVE_PRIMARY_FIELDS.weltkueche: Gericht/Herkunft/Zutaten/Gerichte/Fehlklicks
(statt Rohdaten-Dump aller State-Keys) — 5 Spalten, kein Quer-Scroll
- Idle/Pause: live.php Fenster 30s->2h (LIVE_IDLE_WINDOW_SEC); Aktuell zeigt
laenger inaktive Sessions als "pausiert" (⏸, grau) statt sie zu verlieren;
braucht-Hilfe + aktiv-Zaehler nur fuer wirklich aktive Sessions
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Live-Modi jetzt nur Tag / Aktuell / Vergleich (Cockpit-Toggle raus)
- Aktuell: Live-"braucht Hilfe"-Banner + rote Zeilen-Hervorhebung (Heuristik
gespiegelt aus live.php), Spectator per Zeilenklick bleibt
- Reflexionen als Block am Ende von Aktuell, gecacht gegen 4s-Refresh-Flackern
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Live-Tab direkt nach Uebersicht (tabs-Array + DOM synchron)
- Live-Modus-Default 'uebersicht' (Tag), Toggle-Reihenfolge Tag zuerst
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Datums-Picker (von/bis) jetzt auch im Modul-Detail-Modal; Aendern laedt die
Ansicht mit neuem Zeitraum und haelt Uebersichts-Cards synchron
- _modFilter global in localStorage persistiert (bleibt bis Aenderung)
- resetModDateModal ↺ setzt auf Schuljahresbeginn
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Wochen-Saeulengrafik:
- Pfeile Woche vor/zurueck (Kalenderwoche, view=activity&week_offset)
- Datum unter jedem Wochentag, halbierte + condensed Schrift
- Y-Skala links mit Anzahl, skaliert auf Max-Saeulenhoehe
- rendert auch bei leerer Woche (mit Hinweis) fuer die Navigation
Triage: alle 5 Cards immer sichtbar, leere mit "Aktuell niemand betroffen".
Module — Stand der Klasse:
- von/bis-Datumsfilter (Default bis=heute, von=Schuljahresbeginn 1. August)
- neuer view=mod_stats speist die Cards datumsgefiltert
- view=module auf student_results umgestellt (Datum+Score+JSON), from/to-Filter
wirkt auf Tabelle, Highlights, Champions, classStats; Zeitraum im Modal-Header
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- results.php view=today: heutige finale Laeufe (topToday) + vorher/nachher-Progress
je Schueler:in x Sim (aus student_results rekonstruiert) fuer Badge-Erkennung
- teacher.html: Sektion "Top Performers heute" (heutige Wertung, Sterne + Erfolg)
ersetzt Allzeit-Top; darunter "Neue Abzeichen heute" (badges.js, jetzt erfuellt
aber vor heute nicht)
- Wochen-Saeulengrafik: Sim-Titel klein in die Balkenabschnitte, hoehere Grafik
- Modul-Tabelle: Spielzeit-Spalte sortierbar (Quoten-Spalten schon sortierbar)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- renderRunsLineChart nutzt wieder SIM_METRICS statt highlights -> deckt auch
Module ohne Highlight-Def ab (weltkueche/fluss zeigten sonst nur Sterne);
Snapshot bei einem Durchgang via renderSimMetrics-Kacheln
- Modul-Tabelle: Ampelbalken auch fuer Durchgaenge, Spielzeit, Zuletzt
(mehr/aktueller = gruen) -> alle Spalten konsistent grafisch
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- renderModDetail: kleiner Ampelbalken je Kennzahl-Zelle, Werte spaltenweise
normiert, Richtung aus h.agg (gruen=positiv, weniger-ist-besser invertiert)
- Sterne-Zelle mit Ampelbalken (n/5)
- Verlauf-Button zeigt statt JSON eine Liniengrafik ueber die wichtigsten
Kennzahlen (eine Linie je Highlight-Spalte + Sterne, oben=besser, Legende
mit letztem Wert + Trendpfeil); Snapshot-Kacheln bei nur einem Durchgang
- sim-metrics.js: dir:'lo' fuer Kennzahlen wo weniger besser ist
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Modal max-width 640->1120px, Kachel-Grid dichter -> Kennzahlen einzeilig
- Werte UND Balken ampelgefaerbt (pct/pctInv/ratio), Sterne mit Ampelbalken
je n/5 -> Vergleich auf einen Blick
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- sim-metrics.js: kuratiertes Feld-Schema pro Sim (Sterne/Prozentbalken/
Verhältnis/Geld/Temperatur), technische Felder ausgeblendet, sauber benannt
- Drilldown zeigt Avatar als Bild (avatar:<slug>), Erfolg als Sterne,
Parameter als grafische Kacheln, Abzeichen-Sammlung pro gespielter Sim
- live.php student_runs liefert player_progress fuer die Abzeichen
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
live.php: student_runs=<id> liefert letzte Läufe (detail_json = Parameter) + Live-State
+ Recency. teacher.html: Klick auf Triage-Zeile öffnet Modal mit Erfolg/Zuletzt, Live-
Tätigkeit und den letzten Durchläufen samt geparsten Sim-Parametern (CO₂, Fehlklicks …).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Denkfehler behoben — eine Empfehlung reagiert auf das Zuletzt-Gesehene, nicht auf
einen Allzeit-Rückblick. live.php cockpit liefert jetzt recentErfolg (Ø letzte 3
Läufe), earlyErfolg (frühere Läufe), daysSince, recentPlays. Triage rechnet darauf:
>14 Tage weg → Nachfassen; recent schwach → Fördern; recent+viel → Begleiten; recent
stark, kaum gefordert → Fordern; recent > früher → Bestätigen. Neue Spalte „Zuletzt",
Legende erklärt: Erfolg = letzte Läufe, Verlauf = nur Historie. 4b-Daten mit
kontrollierter Recency neu (jede Gruppe besetzt).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>