Commit Graph

299 Commits

Author SHA1 Message Date
Adminator abc8bf5149 Farmer: Markt + Erntejahr gleich breit/hoch nebeneinander (nicht mehr Vollbreite)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 15:39:49 +02:00
Adminator 54772180a2 Farmer-Feinschliff: Markt+Erntejahr gleich breit, Buch -> Plattform-Glossar
- farmer-side-status: Markt-Feld und Erntejahr-Button beide volle Box-Breite.
- Kaputte interne Fachinfo (openInfoModal) raus; Komponente ergaenzt den
  Glossar-Button (/glossar?module=farmer, neuer Tab).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 15:36:01 +02:00
Adminator 4cbdb6bbb1 Farmer: Klick-Blocker gefixt (updateMoneyDisplay-Crash) + Konsolidierung
ROOT CAUSE: #money-display aus Header entfernt, aber updateMoneyDisplay()
las es beim Boot ungeschuetzt -> null.textContent wirft -> Boot bricht ab
-> map.on('click') wird nie gebunden -> Sim unbedienbar. Jetzt null-safe.

Konsolidierung (Thomas-Wunsch): Jahr/Markt/Erntejahr-starten in die
Anbau-Versuch-Box (farmer-side-status) statt separater Jahr-Leiste;
Jahr-Badge aus der Pille raus. Anbau-Box wieder hoeher (top 64).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 15:31:33 +02:00
Adminator b835475ef7 Fix: schwebende Kopfzeile blockierte Karten-Klicks (Farmer unbedienbar)
Ursache: die transparente ggs-header ueber der Vollbild-Leaflet-Karte
fing alle Klicks ab -> Pflanzen unmoeglich. Fix zentral: Container
pointer-events:none, nur Bedienelemente pointer-events:auto (Karte
darunter bleibt bedienbar). Gilt fuer alle Karten/Canvas-Sims.

Farmer: Pille nach links (Vollbreite-Header, Steuerung rechts),
Leaflet-Zoom nach unten links verschoben.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 15:20:33 +02:00
Adminator ec746f250f Header-Komponente: Bespoke-Fixes (Logo-Verzerrung, Icon-Groesse, Glossar-Icon)
- Logo-Kreis resettet Padding/Border/min-height (Sim-eigenes a-Styling
  vererbte sich -> verzerrter Logo-Kreis).
- .ic-Groesse (20px) auch fuer Buttons/Links ohne .ggs-btn-ghost-Klasse
  (Lautsprecher/Hilfe rendeten riesig).
- Sim-interne Glossar-Buttons (glossar-btn u.a.) bekommen das Buch-Icon
  statt Emoji.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 15:07:09 +02:00
Adminator 6c2990aa5e Farmer-Header v2 nach Thomas-Feedback + Default-Musikplayer
- Header nach oben RECHTS (raus aus dem Leaflet-Zoom oben links),
  Geld-Anzeige entfernt (steht in linker Sidebar), Emoji aus Titel,
  Jahr als Badge in die Pille (Konsistenz mit Batch 1), Inter-Font.
- Jahr-Leiste + Anbau-Versuch-Spalte nach unten geschoben (unter Header).
- Komponente: wiederverwendbarer Default-Musikplayer (data-ggs-music,
  Klima-Tracks als Plattform-Standard) + Musik-Widget-Styling fuer Sims
  ohne design-system.css.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 15:02:18 +02:00
Adminator 7b1bdb8d1b ggs-header Batch 2 Start: Farmer + Komponenten-Vorruestung
- Komponente: Logo-Fallback (Kreis-Logo wenn Sim keins hat), Overlay-Modus
  (data-ggs-overlay fuer Vollbild-Canvas), generische Icon-Button-Optik fuer
  Aktionen ohne .ggs-btn-ghost-Klasse, Ton-IDs erweitert (audio-toggle/btnSound).
- Farmer als erstes Bespoke-Muster: ggs-topbar -> ggs-header, schwebende Pille
  (Fallback-Logo + Titel) + Geld-KPI + Icon-Buttons; interne Fachinfo bleibt
  (data-ggs-no-glossar).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 14:33:53 +02:00
Adminator c913522a77 Kofferdetektiv: Kopfzeile schwebt ueber Vollbild-3D (schwarzer Balken weg)
#stage jetzt inset:0 (Canvas bis ganz oben), Header position:absolute
transparent darueber. Obere HUD-Pillen + Minimap + Karten-Button unter
die Kopfzeile geschoben (top 14->64, btn-map 166->216).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 14:20:36 +02:00
Adminator 502f271f36 Einheitliche Sim-Kopfzeile (Entwurf B) als Komponente + Lizenz-Datenmodell
- ggs-header.css/.js: schwebende Pillen-Kopfzeile aus vorhandenem
  .ggs-header-Markup (Kreis-Logo/Titel/Level als eine Pille, eigene
  SVG-Icons, Tempo-Panel links + Zustandsbutton, Musik-Panel unten,
  30% transparente Untermenues, Glossar target=_blank, Lehrplan raus).
  Enhance-Ansatz: Spiel-Logik (IDs/Klassen, data-speed) bleibt unberuehrt.
- Eingebaut in Klima 2D/3D, Fluss, Logistik (Auto-Tempo), Energiemanager,
  Kofferdetektiv 3D.
- admin-licenses.html: Datenmodell-Sektion (licenses-Tabelle, Lebenszyklus
  Generiert->Eingeloest->Zugewiesen, Beziehungen, Jahr->Schuljahr->Code).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 14:06:41 +02:00
Adminator 362aaba883 Feinschliff-Spalten + Kopfzeilen-Panels (Placement/Transparenz)
- teacher.html Aktuell-Spalten: Weltkueche '🏆 Punkte' (score), Fluss
  '👥 Einw.' + '🌾 Ernte' (population/food), Busfahrt '📍 Ø km' (avgTapKm).
  (Kofferdetektiv Items-% vertagt: Sim liefert live noch keine Item-Zahl.)
- admin-styleguide.html Kopfzeile: Untermenues 30% transparent (Blur);
  Tempo oeffnet links + bleibt offen, Musik klappt nach unten + schliesst
  nach Song-Auswahl; Toggle per Klick.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 13:04:32 +02:00
Adminator 88e3c09e5c Per-Sim leistung_pct: alle 14 Sims senden das eine Leistungs-% (0-100)
Jede Sim liefert jetzt selbst leistung_pct in GGS_LIVE_STATE UND im Submit
(Fundament fuer das einheitliche %-System) — kein Rueckrechnen aus Sternen
mehr, keine 0-3-Sonderfaelle. Formeln je Sim wie vereinbart:
- klima/fluss/kofferdetektiv/heli: = vorhandener 0-100-score
- weltkueche: richtige/(richtige+falsche)*100 (Fehler in %)
- busfahrt/fluggesellschaft: topoPunkte/(Auftraege*3)*100
- farmer: gewichteter totalScore; energiemanager: ausgegl./gesamt -15/Blackout
- eu-werkstatt: firstTry/Schritte -5/Muelleimer; sonnensystem: Erstversuch-Quote
- tourismustal: Ziele+Zufriedenheit+Natur gewichtet; tourismusregion: gewichteter score
- logistik: Kontostand->% (sendet erstmals eine Kennzahl, auch an /api/assessment)
Teacher _leistungPct + live.php extractScore bevorzugen bereits diesen Wert.
Additive Aenderungen, bestehende Logik/Sterne unveraendert; alle 15 Dateien
syntaktisch geprueft.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 12:35:56 +02:00
Adminator 539f6b012e leistung_pct-Fundament (Teacher+Backend bevorzugen) + Tempo-Button-Zustaende
- teacher.html _leistungPct: von der Sim geliefertes s.leistung_pct hat
  Vorrang, sonst zentrale Ableitung (Fallback).
- live.php extractScore: leistung_pct (0-100) hat Vorrang vor score/Sterne.
- admin-styleguide.html: Tempo-Button zeigt IMMER den Stand (1x/2x/8x Auto/
  Pause); Toggle-Verhalten (Panel bleibt offen bis erneutem Klick) beschrieben.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 12:31:23 +02:00
Adminator 7e1a7c5228 Kopfzeile: nur Entwurf B, eigene SVG-Icons, aufgeklappte Controls
- A und C entfernt, nur schwebende Variante B.
- Emojis raus -> eigene SVG-Icons im App-Stil (Home/Tempo/Musik/Ton/
  Neustart/Hilfe/Glossar) via <symbol>/<use>.
- Logo (bildLogo.png) + Titel + Level in EINER Pille, alle Elemente 38px
  hoch, gleiche Hoehe (Hoehen-Mismatch behoben).
- Tempo (Segmente Pause/1x/2x/4x) und Musikplayer (Song-Dropdown + Play +
  Lautstaerke) zusaetzlich in aufgeklappter Version dargestellt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 11:40:50 +02:00
Adminator ce7bff3184 Drilldown-Metriken: schwarze Balken -> farbig + Sterne raus (sim-metrics.js)
bar() faerbte ueber ivm-CSS-Klassen, die im Schueler-Drilldown fehlen ->
Balken erschienen schwarz. Jetzt INLINE gefaerbt (ivmColor = _pctColor-Skala).
starsBlock (Heli Start/Landung) zeigt jetzt %+Balken statt Sterne.
pct/pctInv/ratio/money/temp/bool ebenfalls inline gefaerbt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 11:34:25 +02:00
Adminator 89d4d8587e Teacher-Fixes (Heli-Flugplan, Modul-Label) + Kopfzeilen-Entwuerfe
- teacher.html: Modul-Detail-Spalte 'Sterne' -> 'Leistung' (zeigt %-Balken).
  Heli 'Aktuell': neue Spalte 'Flugplan' (kumuliert Wegpunkt/Treffer/Fehlkl.),
  die drei Detailspalten bleiben, 'Gesamt' entfaellt (Leistung deckt es ab).
- admin-styleguide.html: neue Sektion 'Kopfzeile' mit 3 Entwuerfen
  (A durchgehend / B schwebend / C schwebend+halbtransparent), je als
  iPad- und Full-HD-Mockup ueber simuliertem Sim-Inhalt. Glossar target=_blank,
  Neustart drin, Lehrplan raus.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 11:28:03 +02:00
Adminator a4e57d7aa6 Cockpit-Triage + Sterne->%+Balken durchgaengig (teacher.html)
Cockpit (Uebersicht):
- Farben auf kanonische Palette (--ivg..--ivr = _pctColor-Hex); ivAmp-
  Schwellen auf 50/60/80/90.
- ivTriage neu: >=90 Fordern (kann alles) / 50-89 Laeuft gut /
  <50 & fleissig -> Begleiten / <50 sonst -> Foerdern. Bestaetigen entfaellt.
- Fleiss im Klassenvergleich (_fleissig = 0.5*Zeit + 0.5*Durchgaenge >= Schnitt),
  fuer HEUTE- und insgesamt-Triage. IV_META-Texte angepasst.

Sterne raus -> %+Balken (colorblind-freundlich):
- _pctBadge (Run-Karten) neu. Alle 7 Run-Karten + generische Sonnensystem-
  Karte auf %+Balken (Busfahrt/Flug rechnen /3). Heli Start/Landung/Gesamt-
  Spalten in Aktuell auf _pctBar. Spectator, Drilldown (ivStars,
  Top-Performers), fmtMetric, Heli-Detail: Balken bzw. %.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 10:17:05 +02:00
Adminator 3bc0f418be Bewertungs-Vorschau: EINE Skala-Darstellung + 4-stufige Triage
- Doppeldarstellung (Beispiel-Balken + Legende) zu EINER Tabelle
  zusammengefuehrt: Farbe + Bereich + Label + Beispiel-Balken je Zeile.
  Beispielwert = Bereichsschwelle (90/80/60/50), nicht willkuerlich.
- Triage jetzt 4 Felder an denselben Farbgrenzen:
  <50 Foerdern (Hilfe) / 50-79 Begleiten / 80-89 Laeuft gut /
  >=90 Fordern (herausfordern). Styleguide + Preview angeglichen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 02:51:50 +02:00
Adminator 0a6fa2172f Einheitliche Leistungs-Skala (%) + Farbcodes ueberall vereinheitlicht
- Schwellen NEU (Thomas): >=90 Dunkelgruen / >=80 Hellgruen / >=60 Gelb /
  >=50 Orange / <50 Rot. Sterne entfallen.
- teacher.html: _pctColor (kanonisch) — _tagTraffic + _liveBar + _liveBarColor
  delegieren jetzt alle daran (EINE Skala; 'niedrig-ist-gut' invertiert).
  Neu: _leistungPct(simId,state) = das eine 0-100-% je Sim (eigener Score
  oder abgeleitet), _pctBar (kompakt, schmal). Neue Spalte 'Leistung' in
  'Aktuell'. _liveMood aus _leistungPct (>=80 gut / >=50 mittel / <50) —
  deckungsgleich mit Triage Foerdern/Begleiten/Laeuft gut (50/80).
- admin-styleguide.html: neue Sektion 'Leistungs-Skala' (5 Stufen, %+Balken,
  Triage, CSS-Variablen).
- admin-lehrer-view.html: Schwellen/Triage/Preview auf neue Werte, Balken
  kompakt, Sterne-Hinweis raus.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 02:37:33 +02:00
Adminator c79ef691ad Lehrer-View-Uebersicht: Vorschau einheitliches Leistungs-% (Sterne raus)
- Vorschau-Karte: %+Balken-Standardanzeige, 5-stufige Farbskala,
  Triage-Felder (Foerdern/Begleiten/Laeuft gut) aus %xFleiss mit
  Grenzen = Farbgrenzen (50/65), damit Farbe<->Feld immer stimmen.
- Neue Spalte 'Leistung' je Sim: Vorschlags-Formel auf die Testdaten
  gerechnet (PERF), als pctBar + Triage-Chip. Busfahrt/Flug/Sonnensystem
  Naeherung (Rohwerte fehlen in Testdaten).
- Bewertungs-Block je Sim um 'Vorschlag %' (PROPOSED_PCT) erweitert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 02:25:35 +02:00
Adminator bf579310ed Lehrer-View-Uebersicht: Sterne- + Prozent-Formeln je Sim dokumentiert
- Globale Erklaer-Box: wie der Zeilen-% entsteht (live.php extractScore:
  Score sonst Sterne/5x100) + Uneinheitlichkeiten (0-3 vs 0-5 Sterne,
  rohe score-Werte, Weltkueche pro Gericht, Logistik sendet nichts) +
  Vorschlag 'ein System' (% = Wahrheit, Sterne abgeleitet, gleiche Schwellen).
- Pro Sim ein Bewertungs-Block mit exakter Sterne-Formel + Prozent-Herkunft
  (aus dem Sterne-Audit der Game-Files) inkl. Warnhinweisen.
- Tourismustal: Gaeste-Spalte auf gruen (Gesamtgaeste = Spielfaktor).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-25 01:24:05 +02:00
Adminator 691387c4d8 Admin: Lehrer-View Parameter-Ueberblick Schuelerleistung
Neue Referenzseite /admin-lehrer-view.html: pro Sim (14, der Reihe nach)
die 'Ergebnisse/Aktuell'-Tabelle mit Testdaten, gerendert mit der ECHTEN
Logik (LIVE_PRIMARY_FIELDS + Formatter aus teacher.html gespiegelt).
- Unter jedem Spaltentitel der State-Key (Spiel->Backend-Verkabelung).
- Spalten GRUEN, die nach Abschluss relevant bleiben (Ergebnis/Fortschritt/
  Identitaet), GRAU = nur live; je Sim Begruendungs-Liste der Grau-Spalten.
Verlinkt aus admin-sitemap.html.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-24 19:37:26 +02:00
Adminator 62e903a5ec Kofferdetektiv iPad-Performance: sicheres Buendel (Aufloesung + AA + GPU)
Nur auf Touch-Geraeten (Desktop unveraendert):
- Render-Aufloesung auf dpr 1.3 gedeckelt (dprCap-Helper) statt bis 2 —
  dpr 2 = 4x Pixel war der teuerste Posten.
- antialias aus (MSAA teuer auf Mobile), Retina-Dichte kaschiert Kanten.
- powerPreference:'high-performance' fuer die staerkere GPU-Pipeline.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-24 14:13:35 +02:00
Adminator 11c48817de Kofferdetektiv iPad: zwei feste Joysticks (immer 50% sichtbar)
Statt schwebendem Links-Joystick + Rechts-Wisch jetzt zwei feste,
halbtransparente Joysticks:
- links = Umsehen (Auge 👁), ratenbasiertes Drehen/Neigen in update()
- rechts = Bewegen (Fuß 🦶)
Touch wird dem naeheren Joystick im Fangradius zugewiesen (assign/stickVec).
Interaktions-Button (🧳) nach unten-mittig verschoben (kollidierte sonst
mit dem rechten Bewegungs-Joystick). Joysticks nur auf Touch sichtbar
(body.kd-touch).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-24 13:57:20 +02:00
Adminator 8ec005f889 EU-Werkstatt: Probierzuege (Karten rausziehen) erfassen + Sterne ehrlicher
Bisher konnte man Karten in Slots einsetzen und wieder herausziehen, bis
alle voll waren — erst dann wurde ausgewertet. Dieses Herumprobieren war
unsichtbar und senkte die Sterne nicht (5 Sterne trotz Trial-and-Error).

- game.html: reshufflesByStep/totalReshuffles; manuelles Herausziehen einer
  platzierten Karte zaehlt als Probierzug. Ein Schritt gilt nur ohne
  Probierzuege als 'sauber auf Anhieb' -> Sterne (firstTryHits/steps) und
  Treffsicher-Achievement spiegeln Trial-and-Error jetzt. Endbild zeigt
  '🔄 N Probierzuege'; Live-State + Submit tragen die Zahlen.
- teacher.html: needsHelp eu-werkstatt auch bei vielen Probierzuegen;
  '🔄 Probier'-Spalte in Aktuell; Run-Karte: Gesamt-Probierzuege +
  pro Schritt ('🔄 nach Probieren' statt 'auf Anhieb').

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-24 13:33:44 +02:00
Adminator 7de71b0e83 Energiemanager: Blackouts fuer Lehrer sichtbar machen
- game.html: bei Blackout sofort action:'blackout' an /progress feuern
  (setId/Tag/Block/Frequenz/Ursache, score:0) — Fehlversuch bleibt auch
  bei Set-Abbruch sichtbar, kein player_progress/Sterne.
- progress.php: neuer action:'blackout' -> eigene assessments-Zeile,
  KEIN XP/plays/best_stars.
- live.php: Blackout-Flag (event:'blackout') durch die Tag-Summary reichen
  (blackout/blackoutCount pro Session).
- teacher.html: needsHelp energiemanager (>=2 Blackouts oder Tag <4/8);
  Blackout-Spalte + '🔌 neu planen'-Status in Aktuell; Tag-Balken als
  🔌 Blackout kennzeichnen; Run-Karte: eigenes Blackout-Kaertchen +
  '🔌 N Blackouts'-Badge im fertigen Set.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-24 13:19:21 +02:00
Adminator b77f4ed912 Tag-Ansicht: student_results einbeziehen + Datum/Zoom-Verhalten
- live.php summary: fertige Laeufe aus student_results ergaenzt (dedupliziert gegen assessment/
  live) -> JEDER heutige Durchgang erscheint als Balken, egal ueber welchen Submit-Pfad.
- teacher.html: Ergebnisse-Tab/Menuewechsel setzt Datum auf HEUTE + Regler auf Auto zurueck;
  Datumswahl/Heute setzt Regler auf Auto; Auto-Zoom jetzt +/-1 h um die Aktivitaet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-24 09:33:32 +02:00
Adminator 868cdda276 Fluss-Endscreen: zwei Felder (Rueckmeldung -> Aktionen) + Badges nebeneinander
Feld 1 = Rueckmeldung (Sterne/Stats/Badges/Reflexion) mit "Weiter"-Button (erst nach
Reflexions-Antwort aktiv); Feld 2 = "Wie geht's weiter?" (Stufen/Erneut versuchen +
Zurueck zur Startseite). end-badges jetzt display:flex (nebeneinander statt gestapelt).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-24 09:19:10 +02:00
Adminator 9a1ee0fae1 Tag-Zeitachse: gestauchte Skala - Nacht 00-06 und Abend 21-24 je 1 Block, Tag 06-21 stuendlich
Regler UND Zeitachse/Balken nutzen dieselbe Stunde-Einheit-Abbildung (_hourToUnit/_unitToHour,
17 gleich breite Bloecke). Nacht-/Abend-Bloecke dunkel ohne interne Linien; Tag stuendlich
beschriftet + Trennlinien. Auto-Default rundet auf Block-Grenzen. Marker an den Block-Grenzen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 22:23:34 +02:00
Adminator 1e1c1238bd Stadt & Raumplanung auf 'geplant' (In Vorbereitung, nicht spielbar) in v3 + Prod-SQL notiert
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 21:51:58 +02:00
Adminator de104e915a Tag-Zeitstrahl: keine Trennlinien in den Nacht-Baendern (zusammengefasst)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 21:50:13 +02:00
Adminator 193c6dcc8f Tag-Zeitstrahl: 23 Stunden-Trennlinien + stuendliche Beschriftung + dunklere Nachtzeiten (00-01/20-24)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 21:48:33 +02:00
Adminator 74736a33aa Tag-Ansicht: Zeitfenster-Doppelschieberegler (00-24 Uhr, stuendlich) ueber der Tabelle
Default = Auto (erste bis letzte Aktivitaet, auf volle Stunden). Zwei Fader zum
Zusammenschieben (z.B. aktuelle Stunde). Balken werden aufs Fenster gekappt (overflow).
"Ganzer Zeitraum"-Reset zurueck auf Auto.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 21:42:27 +02:00
Adminator f7bf0f0901 Fix: alle heutigen Leistungen zaehlen (Ben) + Live-Session started_at bei Modulwechsel (Clara)
- live.php: ON DUPLICATE KEY UPDATE-Reihenfolge korrigiert (started_at VOR module_id), sonst
  wird der Modulwechsel nie erkannt -> Balken behielt alten Startzeitpunkt (Clara EU-Werkstatt seit 14:30).
- results.php view=today: liefert todayScores (Pro-Schueler-Aggregat aus student_results, zuverlaessig).
- teacher.html HEUTE-Triage: fertige Laeufe aus student_results + laufende aus Summary zusammengefuehrt;
  Totalversagen heute (<40) -> Foerdern. Ben (klima 36) erscheint jetzt korrekt in Foerdern.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 15:21:04 +02:00
Adminator cc83493055 Lehrer-Live: idle-pausierte gelten in Aktuell als pausiert (nicht aktiv) + Tag-App-Symbol immer sichtbar
- Aktuell: paused beruecksichtigt jetzt __idlePaused/__paused (heartbeatet trotz Pause weiter)
  -> kein Widerspruch mehr "navigiert UND pausiert" (Klara).
- Tag: App-Symbol als immer sichtbares Overlay am Balkenstart, auch bei winzigem Balken (darf ueberstehen).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 15:11:20 +02:00
Adminator abbc0580c5 Heli M17: A10-Tauern-Zielpunkt auf Tauerntunnel-Nordportal (lag 7km noerdlich im Gebirge)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 15:07:51 +02:00
Adminator be7d9fce1a Empfehlung: 6. Karte 'Laeuft gut' in gleicher Form (volle Liste mit Balken) statt Kompakt-Streifen
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 15:05:08 +02:00
Adminator da1e6e6e87 Weltkueche: correct_for im Spiel scharfgeschaltet (V3)
ING-Build kopiert jetzt v.correct_for -> der bestehende Heimat-Branch (ing.correct_for[heimat])
liefert die kuratierten Zweit-Laender: mehl->Ungarn, majoran->DE, safran->Iran, feta/lamm->
Bulgarien (statt Gravitations-Schaetzung). Datenkonsistenz geprueft (Moussaka feta/lamm).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 14:50:13 +02:00
Adminator bc468272ba Heli M10: A2-Baden-Zielpunkt zurueck auf die A2-Linie (DB-Wert lag daneben); Prod-SQL ergaenzt
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 14:36:26 +02:00
Adminator 4976582400 Heli Routenplanung: Timing-basierte Wertung (3 Stufen) + Bonus vor rotem Hint
Pro Wegpunkt: 2=Treffer VOR der roten Einblendung (Bonus) · 1=waehrend der 10 s · 0=danach.
computePlanStars() aus Ø-Timing (5/4/3/2/1); Fehlklick-Abbruch bleibt 0. wpRevealAt merkt
Reveal-Zeitpunkt, onPlanClick klassifiziert. Bonus im Endbildschirm + Assessment (planBeforeRed).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 14:32:02 +02:00
Adminator bf5b026b46 Heli-Wegpunkt-Fix: Prod-SQL persistent im Repo (Live-DB hat gleiche Luecke)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 14:04:32 +02:00
Adminator 77023ff7a3 Heli: fehlende Wegpunkte-Datenluecke behoben + Routing-Score = Klick-Genauigkeit
- 5 Wegpunkte fehlten in geo_waypoints (bodensee_bregenz/kaiser_kufstein/felswand_raetikon/
  schlucht_mellau/maria_saal) -> Missionen M5/M7 u.a. hingen nach dem vorletzten WP. In v3-DB
  eingespielt; Prod-SQL in .dontDeploy (Live-DB gleiche Luecke). waypoints.js: maria_saal ergaenzt.
- GGS_LIVE_STATE score: Routing zaehlt jetzt Klick-Genauigkeit (richtige/alle) statt Fortschritt
  -> kein roter Tag-Balken mehr am Planungs-Anfang (0 Klicks = grau, nicht rot).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 14:03:53 +02:00
Adminator aaa40e9f1a Heli Aktuell: letzten Einsatz in der Auftragswahl behalten
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>
2026-08-23 13:57:57 +02:00
Adminator 0d9481cae2 Tag-Ansicht: pausierte Zeiten bleiben als Verlauf stehen (verschwinden nicht mehr)
live-client loggt Pausen-Spannen (__pauseSpans: {s,e}), live.php reicht sie durch,
renderLiveSummary zeichnet jede als bleibendes halbhohes Segment im Tag-Balken
(offene/laufende Pause blinkt). Fallback fuer Sim-Pause via phase bleibt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 12:53:07 +02:00
Adminator 0d765961af Idle-Pause fuer Heli funktionsfaehig + iframe-aware Interaktionserfassung
- Interaktionen aus gleich-origin iFrames (Heli-Start/-Flug/-Landung) zaehlen jetzt
  (periodisches _hookFrame), plus postMessage {type:'ggs-activity'} + __GGS_LIVE__.ping().
  Aktives Steuern gilt nicht mehr faelschlich als idle.
- EVENTS erweitert (keyup/touchmove/pointermove). Heli in IDLE_PAUSE_SIMS aufgenommen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 12:50:30 +02:00
Adminator 7986bb2eb6 Heli: Treibstoff kann leer werden (1★-Takeover) + Live-Score fuer Tag-Farbe + Aktuell-Status/Phase
- start.html: Sprit-Floor 0.05->0; Treibstoff-leer loest Chefpilotin-Takeover aus (stars:1)
- game.html: GGS_LIVE_STATE liefert progressiven score (Routing/Start/Landung/Gesamt) -> farbige Tag-Balken
- teacher.html: Phasen-Map + Status-Spalte fuer mission/briefing/unterwegs (kein leeres "...")

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 12:48:26 +02:00
Adminator 6dfcf4d57f Idle-Pause vorerst NUR in Klima (per-App-Freischaltung)
Die plattformweite Idle-Pause stoerte passive/iframe-Phasen (Heli-Flug: aktiv gesteuert,
aber Steuerung im iframe/Halte-Taste zaehlte nicht als Interaktion -> Fehlpause).
Jetzt Allowlist (klima/klima-3d) bzw. window.GGS_IDLE_PAUSE=true. Andere Apps: keine
Auto-Pause, bis sie dort einzeln getestet + die Interaktionserfassung angepasst ist.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 12:27:01 +02:00
Adminator 0532327e6a Heli: Onboarding-Zurueck-Button + Routen-Card-Sicherheitsnetz (ohne Ton)
- Onboarding: "Zurueck"-Button (ab Schritt 2, prevHeliOnboarding)
- Routenplanung: planInstruction-Card erscheint garantiert auch ohne Ton / bei
  Audio-Ladefehler (Fallback + Timeout-Netz); bleibt bis zum Wegpunkt-Fund stehen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 12:25:08 +02:00
Adminator 5d79fa3c3a Klima: Flut-Bewertung ans 40%-Spielziel angeglichen
Flut-Score (End- + Live-Score in game-2d/3d) = max(0, 25*(1-Flut/50)): 0% volle 25 Pkt,
40% noch ~5 Pkt, erst ~50% gegen 0 (statt 0 schon ab 31%). Lehrer-Geflutet-Ampel gruen
<25 / gelb <=40 / rot >40. Klima-Stimmung nutzt jetzt den (fairen) Score.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 12:19:41 +02:00
Adminator c9eb0e7764 Cockpit: "Empfohlene Aktivitaet fuer dich" zweigeteilt - HEUTE (oben) + insgesamt (darunter)
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>
2026-08-23 12:16:10 +02:00
Adminator 3c28794012 Tag-Ansicht: pausierte Laeufe als halbhoher weiterlaufender Balken
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>
2026-08-23 12:02:27 +02:00