Echte Fotos (Thomas, Egerton/Kenia Feb 2024): versunkenes Ranger-Haus im gestiegenen
Nakuru-See + Klimabücher-Regal der Universitätsbibliothek. Zeigt: Klimawandel ist nicht
nur Meeresspiegel — auch ein 1.700 m hoher See in Afrika steigt und verschluckt Wald/Häuser
(40→68 km² 2010–2020, ~80.000 Familien vertrieben; UNEP/Egerton University). Standard + Leichte Sprache.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Kapitel-Kopf: alte Links (Modulseite/Simulation/Glossar/Lehrplan) raus, stattdessen
einheitliches App-Menü je Rolle (Schüler: Module/Erfolge/Schulbuch/Profil; Lehrer:
Cockpit/Schulbuch; öffentlich: Simulationen/Schulbuch), Schulbuch aktiv
- Modus je Rolle: Schüler:in → Schüler:innen/Leichte Sprache (Default Schüler:innen,
Lehreransicht gesperrt, auch bei ?lehrer=1); Lehrperson → +Lehreransicht (Default Lehrperson)
- teacher.html: Menüpunkt "📖 Schulbuch" ergänzt
- buch.php-Übersicht: gleiches rollen-Menü statt "← Zu den Simulationen"
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Erste Nennung je Begriff im Standard-Zweig per g() verlinkt (blockabfertigung,
verordnung/richtlinie, deich, eisschild, strommix, kerosin, halbschatten, taiga,
fruchtfolge, synergie … über 10 Kapitel). Kein g() in Leichter Sprache.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Die Kapitel banden glossar-tooltip.js ein, riefen aber nie init() auf → alle
Fachbegriffe waren unterstrichen, aber ohne funktionierenden Tooltip (tote Links).
Init auf DOMContentLoaded ergänzt (lädt alle Glossar-Begriffe, apiBase=BASE_PATH/php/api).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- POST-Handler aktion=loeschen: entfernt Upload-Datei + Thumbnail-Cache
- Schutz: kein Pfad-Ausbruch, .note.txt nicht löschbar, hinter PIN, PRG-Redirect
- ✕-Overlay-Button auf jedem Thumbnail, JS-confirm vor dem Löschen
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 13 Kapitel: alle Fachbegriffe per g()-Tooltip verlinkt, fehlende Begriffe als
vollwertige Glossar-Einträge angelegt (short/text + Leichte-Sprache-Felder,
glossar:-Querverweise, ohne Bild — Bild-Batch folgt)
- Modul-Mappings vervollständigt: jeder Buch-Begriff erscheint auf glossar?module=<sim>
(kofferdetektiv erstmals gemappt, 31 Begriffe; klima auf beide module_ids)
- Ergänzende Erklärsätze im Buch, wo Begriffe bisher nur genannt wurden
- glossar.php: Chip „📖 Zum Schulbuch-Kapitel" bei aktivem Modul-Filter (BUCH_LINK-Map,
klima-3d → buch-klima)
- SQL idempotent (INSERT IGNORE, Mappings per key_slug-Subquery, keine harten IDs):
App/Don_t_Deploy/2026-07-15-buch-glossar-*.sql
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Hochgeladene Fotos erscheinen als Thumbnail-Raster beim Slot (110px, GD-generiert
mit EXIF-Orientierung, gecacht in uploads/buch-fotos/.thumbs)
- Klick öffnet Overlay in groß (Esc/Klick/✕ schließt); auch eingebaute Slot-Fotos klickbar
- Auslieferung nur über die Seite hinter der PIN (?img=/?thumb=); Ordner bleibt gesperrt
- Notizen werden als 📝-Zeile beim Slot angezeigt
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Uploads und Slot-Liste nur nach PIN-Eingabe; falsche PIN mit Meldung,
POST-Uploads ohne Cookie werden ebenfalls von der Schranke abgefangen.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Parst buchBild()-Slots live aus allen buch-*.php (92 Slots, bleibt automatisch synchron)
- Pro Slot: Beschreibung, Status (eingebaut/wartend/gesucht), Thumbnail, Multi-Upload
(JPG/PNG/HEIC/WebP, max 40 MB) + Notizfeld; Sonstiges-Slot für freie Fotos
- Uploads nach uploads/buch-fotos/<sim>/, per .htaccess gesperrt (Originale mit GPS
nie öffentlich); PRG-Redirect, Dateityp-/Größen-Validierung
- App/uploads/ in .gitignore
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Kostenwahrheit als Lernmoment statt Fussnote: Nach dem Erst-Bau von
Lift/Gondel/Hotel/Beschneiung/Bushaltestelle erscheint (Event-Pacing)
je einmalig ein Kosten-Check: Info mit echtem AT-Beispiel + Schaetzfrage
(mehr/weniger). Richtig = +2.000 Euro Bank-Bonus, falsch = nur die
Aufloesung. Verifizierte Zahlen: Leppleskofel-6er 12 Mio. (Dolomiten-
stadt), Patscherkofelbahn 58 geplant -> 83,2 Mio. bezahlt (Stadt Ibk),
WKO-Hotelrichtwerte 220-270k/Zimmer, Schneekanone 27-35k + 1 Mio./
Pistenkm, Ski Arlberg Tageskarte 81,50. Erster Check traegt den
Modell-Hinweis (Preise verkleinert, Verhaeltnisse stimmen).
Antwortrichtungen gemischt (3x mehr, 2x weniger). Quiz-Karten sind
Entscheidungen -> immer modal, auch im Audio-Modus.
Schulbuch Seite 2: Daten-Box 'Was kostet das wirklich?' + Meta-Aufgabe D
(Modellkompetenz) + Quellen 8-12. Modulseite: Vereinfachungs-Hinweis
in long_desc (SQL lokal+prod).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Schulbuch-Quellenverzeichnis: interner Dateipfad (QUELLEN.md) entfernt -
gehoert nicht in ein Schuelerdokument.
- Tagesbericht: Malpunkt (Mittelpunkt) statt x als Multiplikationszeichen -
oesterreichische Schulschreibweise (neue Dauerregel: +, -, Malpunkt,
: fuer Division in allen schueler-sichtbaren Rechnungen).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Neues Format /buch: pro Sim ein Schulbuch-Kapitel, lehrplankonform,
druckbar (A4), mit Glossar-Tooltips, echten Daten aus QUELLEN.md und
Sim-Mechanik-Kaesten. Zwei Versionen aus einer Quelle: Schueler:innen
(Sachtext + Mechanik-Referenz + gestufte Aufgaben A/B/C) und Lehrperson
(?lehrer=1: Verlaufsvorschlag Doppelstunde, didaktische Hinweise,
Stolpersteine, Erwartungshorizonte, Cockpit-Tipps). Foto-Slots mit
konkreten Vorschlaegen: echtes Bild unter assets/img/buch/<sim>/<slug>.jpg
ablegen ersetzt den Platzhalter automatisch. Pilot: Kapitel Tourismustal
(Opener + 5 Seiten + Quellenverzeichnis).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Bau-Ablehnung erklaert jetzt immer auch die Bauregeln des Gebaeudes
(Toast: Grund + Beschreibung, 7 s).
- Lehrer-Schalter fuer den Vorlese-Modus: class_modules.audio_info
(Migration, Default AN) + modules-API set_audio_info + Toggle auf der
Modul-Karte im Cockpit (Vorlesen an/aus) + Wrapper injiziert
TT_FEATURES.audioInfo + Sim blendet den Umschalter aus und erzwingt
Lese-Modus, wenn gesperrt.
- Bus zeigt bei Rueckfahrt sein Heck: Heckscheibe + rote Ruecklichter,
Tuer/Spiegel richtungsabhaengig.
- Bikepark-Flowtrails: 3 Stufen hangAUFwaerts (gleiche Richtung wie
Lift-Pisten).
- Info-Button an jedem Bauwerk im Baumenue: erklaert Wirkung, Kosten,
Lage-Regeln und Lehrplan-Wissen VOR dem Bau.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sim nach App/sims/tourismustal umgezogen (Source of Truth), game.html mit
Injection-Marker. Neu in der Sim: 5 Sommergebaeude (Bikepark mit Flowtrails,
Hochseilgarten, Fahrradverleih als Verstaerker, Aussichtsplattform,
Erlebnisspielplatz), Rettungsstation mit Notarzthubschrauber, Ausbau-
Bauanimation, Event-Pacing, Schulden-Notbremse (Bank-Zwangsverkauf),
Berater-Tipps (Ruecklagen), Sommer-Trend-Mechanik (Serfaus-Effekt) und
Wissens-Bausteine mit echten DACH-Tourismusdaten (QUELLEN.md).
Plattform: PHP-Wrapper mit base-Tag + Session-Mode, Modul-Detailseite,
module_info (beta) + Glossar (14 Begriffe inkl. Leichter Sprache + Quellen)
+ Lehrplan-Anker AT/DE/CH an neuer Kompetenz tourismus-raumentwicklung.
Lehrer-Backend: Benchmark-Formel, Live-Cockpit-Spalten, needsHelp-Heuristik,
Modul-Highlights. Strategie-Testharness (tests/strategien.mjs) belegt:
Panzer-Rush wird liquidiert, Ruecklagen zahlen sich aus.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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>
- 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>
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.
- 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>
- Treibhauseffekt-Slider (CO2-ppm 200..800 -> Temperatur-Anomalie via IPCC-Faustformel, Moleküle füllen Atmosphäre dynamisch, Thermometer visualisiert ΔT)
- Windrad-Höhenslider (0..260 m, 7 Vergleichsobjekte Mensch..modernes Windrad leuchten je nach Schieberstellung auf)
- Methan-GWP-Waage (CO2-Schale variabel 1..60 kg, Waage kippt physikalisch bis bei 28 kg Balance erreicht ist)
- kWh-Rennen: Fahrzeuge fahren jetzt von rechts nach links (plattformunabhängige Emoji-Orientierung), Animation auf 6,5s verlangsamt
- Watt-Leiter: neue gemeinsame Infografik (log-Skala 1 W..1 GW mit 6 Haushalts- und Kraftwerks-Beispielen), verknüpft mit watt/kilowatt/megawatt
- CSS für Slider-Experimente (.ge-gh-*), Waagen-Animation, Windrad-Highlighting
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>