Vor Abschalten der Lehrplan-Instanz: 5 Modul-Detail-Wrapper, die
bisher untracked waren, werden gespeichert. Alle 3-Zeilen-Wrapper
auf den gemeinsamen Partial _partials/modul_detail.php:
- modul-busfahrt.php
- modul-energiemanager.php
- modul-eu-werkstatt.php
- modul-farmer.php
- modul-sonnensystem.php
_status.md mit vollem Crash-Recovery-Snapshot:
- 16 Module (11 aktiv, 4 geplant, 1 archiv)
- 14 Kompetenzen, 39 kompetenz_modules
- 144 Lehrplan-Anker (76 AT, 28 DE, 24 CH/LI)
- 130 Glossar-Begriffe (10 astronomie + 12 EU + 108 andere)
- Alle 11 aktiven Sims haben Lehrplan-Bezug
- Letzte 6 Commits dokumentiert
Inbox: keine offenen Nachrichten an lehrplan.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Live-State-Hook für 3D ist heute committed (e354a30). Status-Datei
überschrieben mit aktueller Bestandsaufnahme + Backlog (B-F).
Glossar-DB-Inbox-Nachricht von Logistik (02.05.) jetzt mit ge-trackt.
Klima-Instanz darf abgeschaltet werden.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Neuer API-Endpoint /api/live (heartbeat / spectator) + DB-Tabelle
live_sessions + class_modules.paused-Spalte
- Plattform-Live-Client (assets/js/live-client.js): Heartbeat,
Pause-Overlay, Spectator-Mode bei ?view=teacher
- ggs_inject_live() in _scripts.php als Helper, in alle 11 Sim-Wrapper
integriert
- Lehrer-Cockpit: tabellarische Klassen-Live-Ansicht pro Sim,
Pause-Toggle, blinkender Tab-Indikator wenn aktive Sessions
- Submit-Bug erschlagen: progress.php hat jetzt submit_assessment-
und reflection-Action; saves.php akzeptiert beide Key-Konventionen;
alle Direkt-Pfad-API-Files mit require_once-Bootstrap
- Avatar-Default: zufaelliger DALL-E-Avatar fuer neue Schueler:innen
- Admin-Styleguide-Seite mit Bildstil, Farb-Tokens, Layout, iPad-Pattern
- Klima 2D + 3D: GGS_LIVE_STATE-Hook, Klima 2D zusaetzlich skipResume
fuer Klassenaufgaben-Reset
- Test-Lehrer Jakob + 3 Schueler:innen lokal + auf Live angelegt
- Rundbriefe an alle Sim-Instanzen + Submit-Briefe an sonnensystem,
busfahrt, energiemanager + Glossar-Anfrage zu Grundriess
- Status-Uebergabe in _inbox/zentrale/_status.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Atlas-Auftrag aus _inbox/klima/2026-05-05-0140 — analog zum 2D-Hook,
plus 3D-spezifische Felder.
- game-3d.html: window.GGS_LIVE_STATE liefert {variant:'3d', tick, year,
level, phase, budget, population, co2, temp, floodedPct, seaLevelCm,
speed, measures, levelWon, tourism, hasShield, hasBeach, placing}.
Aufruf alle ~4s durch live-client.js, gepostet an /api/live.
- klima-3d.php: Live-Client-Script-Tag nachgezogen (war nur in
klima-2d.php). Wird wie üblich vor </body> injiziert.
Heartbeat → DB live_sessions, Lehrer-Cockpit zeigt Karten an mit
Live-Kennzahlen.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Auf der Lehrplan-Seite wurden in den "Simulationen zu diesem Bereich"-
Cards auch geplante Module (Energiemix, Erdbeben, Lieferketten) und
das archivierte Staustufen gelistet. Stimmt nicht mit den
existierenden Sims ueberein.
modStmt-SQL erweitert um Status-Filter:
AND mi.status IN ('aktiv','beta')
Verifiziert: Lehrplan-Seite zeigt jetzt 11 Module statt 15.
Sichtbar bleiben alle aktiven Sims (Busfahrt, EU-Werkstatt,
Energiemanager, Fluss, Heli, Klima, Klima-3D, Landwirtschaft,
Logistik, Sonnensystem, Stadt). Geplant + archiv sind raus.
Anker-Anzeige bleibt unveraendert: alle 144 Lehrplan-Anker bleiben
sichtbar, weil sie an Kompetenzen haengen, nicht an Modulen.
Auch wenn ein Modul geplant/archiv ist, bleibt der didaktische
Lehrplan-Bezug seiner Kompetenz wertvoll.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Auftrag von Thomas: Default-Filter überall auf Österreich, andere
Länder weiterhin wählbar.
Modul-Detailseiten (gemeinsamer Partial):
- Filter-Chip mit data-country=Country::current() bekommt Klasse
active server-seitig (statt "🌐 Alle Länder")
- Country.php in Partial eingebunden
- JS-Filter-Logik überarbeitet: bei konkretem Land werden NUR
anchor_type='fach' Anker streng nach Land gefiltert; übergreifende
Themen und andere Fächer bleiben sichtbar (sind primär aus dem
AT-Lehrplan abgeleitet, didaktisch land-agnostisch nutzbar)
- applyFilter() wird beim Page-Load mit dem aktiven Chip ausgeführt
Lehrplan.php:
- gleiche Filter-Logik gespiegelt (war vorher streng auch für
übergreifend/andere_fach)
- Default war schon Country::current(), bleibt unverändert
Verifiziert: alle 10 aktiven modul-*.php-Seiten zeigen AT als
Default-active, Lehrplan-Seite ebenfalls.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Tap auf eine Erfolgs-Badge öffnet einen kleinen Tooltip mit Titel +
Beschreibung. Verschwindet nach 4 s oder beim nächsten Tap außerhalb.
Position bevorzugt unter der Badge, mit Fallback nach oben falls unten
kein Platz.
- Default-Spalte 76 px, nur Icons 60x60 + grüner Ring für owned
- ℹ-Toggle oben → Spalte schiebt sich als Absolute-Overlay auf 280 px
(Desktop-Card-Variante mit Titel/Desc/Badges)
- Tap auf Karte: Bau-Flow + Auto-Collapse zur Icon-Spalte
- Querformat-Hinweis bei Portrait + Touch (📱 Bitte drehen)
- kw-card-detail-overlay (Center-Modal) entfernt — Thomas wollte das nicht
- viewport-fit=cover + dvh + safe-area schon vorher drin
Thomas möchte teacher.html-Tab "Ergebnisse" um Modul-Filter, Modul-
spezifische Spalten, Game-Over-Indikator und Fleiß-Übersicht erweitern.
Cross-modulare Lehrer-Seite → Atlas-Territorium. Ich liefere den
Klima-Block fertig:
- 12 entscheidende Erfolgs-Parameter mit JSON-Pfad in `results`
- Game-Over-Erkennung + Icon-Mapping (🏆/💸/🌊/🌫/🌡/⏸)
- Hinweis auf 2D/3D-Varianten-Trennung (optional)
- Fleiß-SQL-Skizze für duration_ms-Aggregation
Engine sendet alle Felder bereits — Atlas kann die JSON direkt parsen,
keine Modul-seitige Änderung nötig.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Keine pending Klima-Datei-Änderungen mehr. Mailbox seit 23.04. nicht
neu beschrieben. Atlas-Antwort liegt verarbeitet vor, Integrations-
Umbau wartet weiter auf Thomas-Go.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sicherheits-Commit, damit der Stand vor möglichem Shutdown gesichert
ist. App/pages/klima-2d.php war noch untracked, jetzt im Repo.
Restliche modified-Markierungen waren reine Line-Ending-Normalisierung.
Externer Plattform-Sweep hat in allen Klima-HTML-Files iPad-spezifische
Polish-Änderungen ergänzt:
- viewport-fit=cover in 2D / 3D / preview-sounds (Notch-Handling)
- 100dvh statt 100vh in plane-test + preview-sounds (dynamic viewport)
- Cockpit-Link in 3D-Endscreen auf '../../schueler' präzisiert
Inhaltlich keine Modul-Änderung von mir, nur Sicherung der externen
Edits, damit nichts verloren geht.
_status.md auf bereit-warte-auf-go gesetzt — Atlas-Antwort vom 23.04.
liegt vor (alle 6 Fragen beantwortet, End-Screen-Komponente verfügbar,
2D+3D parallel umbauen, Sammel-Commit-Subject vorgegeben). Klima-
Instanz ist arbeitsbereit, wartet auf Thomas-Go fürs Loslegen.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- lehrplan.php liest jetzt den Query-Parameter ?module=<id> und
filtert die Kompetenz-Cards auf die dem Modul zugeordneten
Eintraege (via kompetenz_modules)
- Modul-Fokus-Banner ueber dem Hero: Icon, Titel, "Zurueck zur
Simulation"-Link, "Alle Module anzeigen"-Link
- Hero-Titel + Meta-Description + <title>-Tag spiegeln den Fokus
- Ungueltige Modul-Slugs fallen stillschweigend auf Full-View zurueck
- Alle bestehenden Filter (country, theme) wirken weiterhin
gleichzeitig
Use-Case: Atlas' Template-Button 📚 Lehrplan in den Sim-Wrappern
zeigt aktuell auf /modul-<id>#lehrplan-bezug. Diese Seite dient als
Alternative/Fallback, falls jemand direkt auf lehrplan.php?module=X
landet.
Verifiziert:
- lehrplan?module=logistik 6 Kompetenzen (von 10)
- lehrplan?module=klima 1 Kompetenz
- lehrplan?module=fluss 2 Kompetenzen (Naturgefahren + Stadt)
- lehrplan?module=unknown 10 Kompetenzen (Full-View Fallback)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Sonderfall im Partial fuer MODULE_ID=klima: zwei CTAs
"2D starten" (primary) + "3D starten" (secondary), beide mit
level=1 als Default
- WebGL-Hinweistext unter den CTAs (dezent, iPad Gen 8 als Schwelle,
2D didaktisch identisch empfohlen)
- .md-device-hint CSS: fjord-Akzent, max-width 560px, 14px
Andere Module unveraendert — Single-CTA-Pfad bleibt Default.
Atlas' 19.04.-Toggle-Auftrag erledigt.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Logistik + Heli Wrappers von den Instanzen umgebaut:
- Mode-Check (free/teacher_started/locked) direkt aus DB
- Forced-Level-Start bei teacher_started
- Easy-Flag aus students.easy_language
- Locked-Seite mit Sperrhinweis + Cockpit-Link
- Assessment-Calls (started/running/completed) in Heli game.html
Atlas-Arbeit:
- teacher.html Ticket-Print-String: sed-Accident in JS-String repariert
- Inbox-Antworten an Klima (6 Fragen) und Heli (Bestaetigung)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- modul-regenwald.php, modul-erdbeben.php, modul-energiemix.php,
modul-lieferketten.php, modul-logistik.php (alle status=geplant)
- modul-klima-3d.php (aktiv, Atlas' Admin-Eintrag)
- Alle als 3-Zeilen-Wrapper auf dem gemeinsamen Partial
- Status-'geplant' zeigt automatisch Vorschau-Banner
("Modul ist noch in Entwicklung, Inhalte werden ergaenzt")
- Lehrplan-Bezug + Glossar-Chips + Metadaten sind sofort verfuegbar,
sobald Atlas' Admin-UI die Prosa befuellt
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- App/version.json mit Commit-SHA + Build-Datum
- App/assets/js/version-tag.js — rendert kleines Tag rechts unten
- Eingebunden in schueler, teacher, index, login, admin, profil
- Ermoeglicht Vergleich lokal vs. geograsim.at auf einen Blick
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Hart gesetztes RewriteBase /geograsim/App/ funktioniert nur lokal,
fuehrt auf der eigenen Domain geograsim.at zum Endlos-Redirect-Loop
(AH00124: 10 internal redirects). Ohne RewriteBase nutzt Apache den
Request-Pfad automatisch — funktioniert fuer alle drei Deploy-Ziele:
localhost/geograsim/App, staatsgeheimnis.at/geograsim, geograsim.at.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- _inbox/zentrale/2026-04-19-2200-klima-3d-v2-abschlussprotokoll.md:
vollständiges Abschlussprotokoll an Atlas mit Feature-Liste,
Commit-Kette, offenen Punkten (nicht von mir abhängig) und
Ideen-Ausblick für spätere Weiterentwicklungen.
- _status.md: session-geschlossen-Marker gesetzt, Verweis auf
Abschlussprotokoll.
- _inbox/glossar/2026-04-19-2130: status auf gelesen aktualisiert
(Atlas hat den Hinweis gesehen).
Klima-Instanz wartet bis zum nächsten Aktivierungs-Impuls.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- beachLifeCount(): base 8 + 14 wenn state.tourismMode + 4 pro Airport,
gedeckelt bei 40. Skaliert die Anzahl der Strandleben-Elemente an
die Tourismus-Aktivität (mehr Tourismus = mehr Menschen am Strand).
syncBeachLife() wird pro Frame gerufen, rebuildt aber nur, wenn sich
die Zahl wirklich geändert hat (O(1) Check bei Stabilität).
- Radwege: zurück zu gestrichelter Mittellinie (5 Striche × Periode
0.28). BIKE_SPACING auf exakt BIKE_LENGTH (1.4) gesetzt (vorher
0.92·BIKE_LENGTH), damit die Dashes nahtlos über Segment-Grenzen
weiterlaufen — Strich des nächsten Segments landet genau dort, wo
die Dash-Periode des vorherigen weitergeht.
- Ausrichtung bleibt via coastRotation: Radwege folgen weiter der
gleichen Ellipsen-Tangente wie das grüne Zone-Overlay beim
Platzieren, sind also parallel zur Küstenkurve.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Strandleben: 22 Stellen (vorher 12), fünf Typen statt drei:
Figur, Sonnenschirm, Handtuch, Liegestuhl (neu), Hund (neu).
Positionen über gleichmäßiges Winkel-Raster mit Jitter, damit die
Elemente rundum verteilt sitzen statt zufällig zusammen zu klumpen.
- makeBeachChair: angeschrägte Rückenlehne + Sitz + vier Beine in
wechselnder Stoff-Farbe.
- makeBeachDog: Körper + Kopf + Schnauze + Schwanz + vier Beinchen +
Ohren in zufälliger Fell-Farbe.
- _status.md: auf finalen V2-Stand überschrieben
- _inbox/zentrale/2026-04-19-2130-klima-3d-v2-abschluss.md: Bericht an
Atlas mit vollständiger Feature-Liste
- _inbox/zentrale/2026-04-19-2135-klima-3d-v2-lehrplan-nachtrag.md:
Nachtrag an Lehrplan (Modul-Detailseite um 2D/3D-Launcher erweitern)
- _inbox/glossar/2026-04-19-2130-klima-3d-v2-info-topics.md: Info an
Glossar (17 view-lokale INFO_TOPICS, keine DB-Änderung nötig)
3D V2 ist einsatzbereit — Thomas schließt heute ab, strukturierter
Browser-Regression-Test folgt in späterer Session.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Runway-Ausrichtung: coastRotation(airport.x, airport.z) statt
atan2(-dz, dx). Runway läuft jetzt parallel zur Küste an der
Airport-Position, also im rechten Winkel zur Radialen Richtung
Vulkan. Flug geht parallel am Vulkan vorbei, nicht durch ihn.
Greift in finalizeBuy und im syncMeasureMeshes-Force-Override.
- RUNWAY_Y von 0.50 auf 0.78 korrigiert: Plane-Räder stehen jetzt
exakt auf der Asphalt-Oberkante (airport.y + 0.56 Runway-Top +
0.22 Wheel-Offset = 0.78). Versank vorher sichtbar in der Bahn.
- Plane-Zyklus: neue Phasen, damit das Flugzeug nach der Landung
sichtbar bleibt statt zu verschwinden.
0-14: Parken am -X-Ende, Nase +X (sichtbar)
14-18: Takeoff +X
18-26: Climb-Out +X, Banking am Ende
26-76: unsichtbar (50 s Flugrunde)
76-84: Approach aus +X-Ferne, Nase -X
84-88: Landing-Roll +X → -X
88-92: Wenden am -X-Ende (Yaw-Interpolation π → 0)
92-110: Parken am -X-Ende, Nase +X (sichtbar, steht bereit)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Strandleben (beachLifeGroup): 12 winzige Figuren / Sonnenschirme /
Strandhandtücher am Küstenband (Terrain 0.20..0.55), Scale 0.55..0.90.
makeBeachFigure / makeBeachUmbrella / makeBeachTowel; buildBeachLife
wird von startGame und deserializeState gerufen.
- Radwege: 5 einzelne Stripes durch EINE durchgehende weiße Mittellinie
ersetzt (Box 1.4×0.006×0.05). Bei snap-Spacing 0.92 × BIKE_LENGTH
überlappen sich die Mittellinien benachbarter Segmente zu einer
visuell kontinuierlichen Linie entlang der Küstenbiegung.
- syncMeasureMeshes erzwingt für Airport-Meshes jetzt IMMER die
away-from-volcano-Rotation (auch für alte Saves, die noch mit
zufälliger Rotation gespeichert wurden). inst.rotation wird dabei
korrigiert, damit spätere Saves konsistent sind.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>