Commit Graph

58 Commits

Author SHA1 Message Date
Adminator e941293d93 Klima: Glossar-Links via DB-Alias-Map + Graph-Overlay iPad-Höhe
- KLIMA_TO_DB_KEY mappt Klima-Slugs auf DB-key_slug
  (windpark→windenergie, solaranlage→photovoltaik,
  erneuerbar→erneuerbare-energie, kohlekraftwerk→fossile-brennstoffe)
- GLOSSAR_DB_KNOWN-Set für alle bekannten DB-Slugs
- resolveGlossarDbKey: liefert den DB-Key oder null; tote Links
  werden ausgeblendet statt ins Leere zu führen
- ggs-graph-zoom-card iPad: 78dvh statt max-height 400 px,
  damit SVG + Header reinpassen + safe-area-padding-bottom
2026-05-02 21:16:05 +02:00
Adminator 9c8d12c3cd Klima: iPad-Polish korrigiert — schmale Spalte mit Toggle (Modal raus)
- 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
2026-05-02 15:54:57 +02:00
Adminator d6d646ff05 Klima: iPad-Polish (5 Aufträge) + Glossar-Tote-Links gefixt
- Bau-Karten als Icon-Spalte am iPad mit Tap-to-Expand (kw-card-detail-overlay)
- Top-Bar slim: geograsim-Schriftzug ausgeblendet, Logo 32 px
- Sim-Titel einzeilig (font-size 13 px, ellipsis, max-width 200 px)
- Toaster-Cards ~50% kleiner am iPad
- Playlist als Icon-only (Select auf 38 px gestaucht)
- ggs-overlay-card lokal mit max-height 92dvh + safe-area-padding
- Owned-Cards bekommen grünen Ring (kw-card-owned)
- GLOSSAR ergänzt: ppm + megawatt (waren tote Links im Tutorial)
- Atlas-Mail raus für DB-Eintrag + glossar.php Anker-Logik
- Quittung an Logistik (kann deployen)
2026-05-02 15:25:37 +02:00
Adminator e61af43f9b Klima: Beitrag zur Lehrer-Ergebnisseite an Atlas
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>
2026-05-02 13:17:07 +02:00
Adminator f1b6fc0373 Lehrplan: Speicher-Snapshot — viewport-fit=cover + 100dvh + Status
- iPad-Verbesserungen vom Linter:
  meta viewport bekommt viewport-fit=cover (Safari Notch)
  body min-height nutzt 100dvh statt 100vh (dynamic viewport)
- _status.md: Save-Punkt fuer Crash-Recovery dokumentiert
- Inbox-Check: keine offenen Nachrichten an lehrplan

DB-Bilanz live: module_info 11, kompetenzen 11,
kompetenz_modules 21, lehrplan_anchors 108

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 07:57:56 +02:00
Adminator 0950f6fd4b Klima: Status-Datum aktualisiert (Instanz ruhend, abschaltbar)
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>
2026-04-29 07:57:02 +02:00
Adminator 8a8cbd1dfd Klima: Snapshot — pages/klima-2d.php nachgezogen + WIP-Cleanup
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.
2026-04-27 07:24:41 +02:00
Adminator fb8877cdf3 Klima: iPad-Polish übernommen + Status-Update
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>
2026-04-27 07:23:11 +02:00
Adminator 45d810bc08 Lehrplan: Status + Atlas-Meldung (Staustufen-Anker fertig) 2026-04-26 01:33:27 +02:00
Adminator 23e1aee579 Lehrplan: Staustufen-Modul — neue Kompetenz + 8 AT-Anker
- Neue Kompetenz: energieversorgung-speicherung
  ("Energieversorgung und Energiespeicherung", category=klima,
   Alter 10–14, sort_order 110)
- 8 neue AT-Anker:
  - 3 Fach (GW Sek I 2.1 / 3.6+3.13 / 4.1+4.3+4.10) mit
    Original-Zitaten zu erneuerbaren Energieträgern, alpiner
    Wasserkraft als Wirtschaftsstandort und Mensch-Umwelt-Beziehung
  - 3 Übergreifende Themen: Umweltbildung (BNE), Wirtschaftsbildung
    (Wirkungsgrade, Effizienz), Informatische Bildung (Smart Grids,
    Lastausgleich-Algorithmen)
  - 2 Andere Fächer: Physik (Energieerhaltung, Höhenenergie,
    Wirkungsgrad), Mathematik (Bedarfskurven, Bilanzen, %-Füllstände)
- kompetenz_modules: staustufen primär (energie), 3 sekundär
  (klimawandel, systemisches-denken, karten-navigation-alpen);
  energiemix bekommt rückwirkend energieversorgung-speicherung primär
- modul-staustufen.php Wrapper hinzugefügt (3-Zeilen-Pattern)
- Inbox-Status: gelesen

DB-Bilanz: module_info 11, kompetenzen 11, kompetenz_modules 21,
lehrplan_anchors 108

Quelle: .humanInput/StaustufenSimulator/Pflichtenheft.txt (Pumpspeicher-
Kaskade, 5-Tage-Prognose, Sek I, 10–14 J)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 01:32:38 +02:00
Adminator 79ac9dad84 Atlas: Deploy-Buendel vor Staustufen-Sprint
- Logistik: Musik-Player Playlist-Modus (5 Gruppen, 20 Tracks)
- Heli: End-Screen auf .ggs-endscreen, Mission-Bilder, Voice-Lines, Briefing-Audio
- Logistik: Layout-Tausch Auftraege+Fahrzeuge links, Karte rechts
- Logistik: Tier-1-Staedte ausgebaut, Auto-Timescale-Badge
- Logistik: Roadnet/Railnet Dijkstra-Routing, Balance-Updates
- Atlas: 5 Atlas-Inbox-Nachrichten (Cards-Pattern, DALL-E-Key, Musik-Playlists)
- Status-Updates Heli + Logistik

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 01:05:13 +02:00
Adminator f811437a35 Lehrplan: Status + Atlas-Meldung (Modul-Filter in lehrplan.php) 2026-04-24 09:26:51 +02:00
Adminator d37857f12a Lehrplan: ?module=X-Filter in lehrplan.php (Modul-Fokus-Banner)
- 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>
2026-04-24 09:26:03 +02:00
Adminator e300b12c38 Lehrplan: Status + Atlas-Meldung (Logistik-Anker + Klima-Toggle fertig) 2026-04-24 09:19:36 +02:00
Adminator 13833ef410 Lehrplan: modul-klima.php 2D/3D-Doppel-Launcher + Geraete-Hinweis
- 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>
2026-04-24 09:18:29 +02:00
Adminator c80f23a40c Lehrplan: 6 Logistik-Kompetenzen + 22 AT-Anker
- Neue kompetenzen: raeumliche-orientierung-europa, kartenkompetenz-
  logistik, wirtschaft-logistikverstaendnis, planungs-entscheidungs-
  kompetenz, verkehrserziehung-sicherheit, systemisches-denken
- kompetenz_modules: 6 Primaer-Zuordnungen zu logistik + 2 Sekundaer
  zu lieferketten (wirtschaft + systemisches-denken)
- lehrplan_anchors: 22 neue AT-Anker (13 Fach-GW-Zitate aus Lehrplan
  2023 Kompetenzen 1.3/1.6/2.6/2.8/2.3/3.6/3.13/3.14/3.17/4.4/4.6/
  4.8/4.10 + 5 uebergreifende Themen + 4 andere Faecher)
- Alle 23 Kernziele (lg-orient, lg-karte, lg-wirt, lg-plan, lg-verk,
  lg-sys) in den Anker-Titeln referenziert
- DB-Bilanz: module_info 10, kompetenzen 10, kompetenz_modules 16,
  lehrplan_anchors 100

Quelle: App/sims/logistik/kompetenzen.json (Pflichtenheft Kap 3.4),
integration-konzept.md Paragraph 7.4

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 09:18:18 +02:00
Adminator 239ddfb95a Atlas: Landing-Sprachregel + Waypoints + Platzhalter + klima-3d fix
- index.html: 'Sofort probieren' -> 'Simulation starten' (Lehrplan-Request)
- Landing-Klima-3D-Button auf klima-3d (statt game-3d.html)
- waypoints.sql aus lokaler DB regeneriert (152 Waypoints/15 Basen)
- Prod-Migration: easy_language-Spalte in students-Tabelle (additiv)
- Prod-Sync: geo_waypoints 70 -> 152, alle Heli-Missions-Ziele jetzt da
- module_info.klima-3d.page_url = 'modul-klima-3d' (Lehrplan-Hinweis)
- Lehrplan-Platzhalter-Detailseiten deployed: modul-klima-3d,
  modul-erdbeben, modul-energiemix, modul-lieferketten, modul-regenwald

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 01:14:26 +02:00
Adminator 2bd6a84435 Atlas+Instanzen: Phase B Integration — Wrapper-Mode-Check + Assessment
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>
2026-04-23 23:21:57 +02:00
Adminator c7e280c836 Klima: Instanz reaktiviert, Integrations-Auftrag quittiert
- Postfach geprüft: Atlas-Integrations-Auftrag (23.04.) + Level-Class-
  Rename (übersehen 19.04.) + Drama-Konvention (alt, erledigt).
- _inbox/zentrale/2026-04-23-klima-reaktivierung-integrations-frage.md:
  Rückfrage an Atlas mit Anweisungs-Punkten (Reihenfolge, End-Screen-
  Komponente, Demo-Session-Pattern, Session-Mode-Var, Rename-Sammel-
  Commit, 2D/3D parallel?).
- _status.md: Status re-aktiviert-warte-auf-atlas, Blocker-Liste
  mit den 5 offenen Fragen.

Instanz wartet auf Atlas-Rückmeldung bevor Integrations-Umbau startet.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 23:19:55 +02:00
Adminator e9bcf983d8 Lehrplan: Status + Atlas-Meldung (Sprachregel + Platzhalter) 2026-04-23 23:18:28 +02:00
Adminator 3fe3864f68 Lehrplan: Platzhalter-Detailseiten fuer 6 weitere Module
- 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>
2026-04-23 23:17:17 +02:00
Adminator 478df47d9f Lehrplan: Sprachregel Lernarbeit durchgaengig
- CTA "Jetzt probieren" -> "Simulation starten" (modul_detail.php)
- simulationen.php: "Sofort probieren" -> "Simulation starten",
  Hero "ausprobieren" -> "direkt starten"
- Seed: Klima-Easy "Du spielst" -> "Du bist", "Das Spiel dauert" ->
  "Die Simulation geht"; Stadt long_desc "Spielmodul" ->
  "Simulationsmodul"; DB-Kommentar "Link zum Spielen" -> "Link zur
  Simulation"
- Hinweis: glossar.php hat noch "ausprobieren" (Glossar-Instanz)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 23:17:05 +02:00
Adminator 8455a96674 Atlas: Versions-Tag rechts unten auf allen Hauptseiten
- 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>
2026-04-23 18:06:42 +02:00
Adminator b356c79134 Atlas: Phase A Integrations-Konzept + Cockpit + End-Screen
- Integrations-Konzept dokumentiert (App/docs/integration-konzept.md)
- Module-IDs vereinheitlicht: sim-XX -> semantische IDs (klima/heli/fluss/logistik/...)
- class_modules um current_level + quiz_enabled Spalten erweitert
- modules.php liefert dynamisch aus module_info, inkl. forcedLevel, quizEnabled,
  play_url, dueDate; neuer Filter ?module_id=X fuer einzeln
- schueler.html Cockpit: komplett API-first, teacher_started-Sektion als
  Auftrags-Block, neue IDs, Sprachregel 4a (Starten statt Spielen)
- teacher.html: Hardcoded ALL_MODS entfernt, laedt dynamisch
- Design-System: .ggs-endscreen-Komponente fuer einheitliche Modul-Abschluesse
- index.html Landing-Links gefixt: App/modul-X -> modul-X, V1-HTMLs auf
  Front-Controller-Routen (fluss, heli-game, stadt)
- 6 Inbox-Auftraege an Instanzen (Klima/Heli/Fluss/Logistik/Lehrplan/Glossar)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 11:42:19 +02:00
Adminator b94658f57c Atlas: .htaccess RewriteBase entfernt — Multi-Domain-tauglich
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>
2026-04-23 10:31:07 +02:00
Adminator fc8996f064 Atlas: DSGVO-Tile-Proxy + Logistik-Phase-bis-8 + Sounds-Anleitung
Platform:
- OSM-DE als dritter Tile-Proxy-Provider (deutsche Beschriftungen)
- logistik.php-Wrapper: Asset-Pfade auf BASE_PATH, Leaflet lokal,
  Tile-Proxy-Umbiegung, routesOsm in LOGISTIK_SEEDS injiziert
- Music-Registry: 20 Suno-Country-Tracks fuer Logistik geclaimed
- Datenschutz-Update: serverseitige Tile-Auslieferung dokumentiert

Logistik (Instanz-Lieferungen, parallel):
- Phase 0 bis 8 inkl. Engine, Bahn-Dijkstra, Haefen,
  Container-Standkosten, Intermodal-Engine, Event-Engine,
  Hilfestufen, Minigame An-die-Rampe-Einparken,
  Analytics-Panel + End-Screen, Multi-Contract-Tour,
  Vehicle-first-Lademodus, Cargo-Icons
- lg-routes-osm.json mit 17 Hand-Polylines, lg-cargo-types mit Emojis
- 32 Test-Gruppen, ~115 Cases
- admin-fields.json fuer Admin-UI-Integration

Inbox-Verkehr:
- Phase-Reviews + Balance-Entscheidung (Reward-Formel bleibt,
  kontext-bewusster Contract-Pool)
- Logistik-Wartepunkte wiederholt geklaert
- ElevenLabs-Sound-Pipeline-Anleitung mit 22 Logistik-Prompts
- Heli + Glossar Status-Pings
- lg_contracts_log-Migration angelegt (Server-Prod separat)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 08:15:00 +02:00
Adminator eac686ee1a Atlas: Tile-Proxy + Leaflet lokal — DSGVO-Sanierung fuer Kartendienste
- Leaflet 1.9.4 (CSS + JS + 5 Marker-Images) lokal unter
  App/assets/vendor/leaflet/ statt via unpkg.com/Cloudflare
- Neuer PHP-Endpunkt App/php/tile-proxy.php mit Disk-Cache, liefert
  OSM- und CARTO-Kacheln serverseitig aus; Browser kontaktiert keinen
  Drittanbieter mehr
- Whitelist (osm, carto), Zoom 3-18, 30 Tage Browser-Cache, ETag +
  If-Modified-Since, sauberer User-Agent fuer OSM-Policy
- Cache-Pfad: APP_ROOT/data/tiles lokal, via .env TILE_CACHE_DIR
  auf Produktions-Volume /var/www/html/geograsim/data/tiles
- Heli (heli.php + heli-game.php), Logistik (logistik.php), Routes-
  Dev-Tool und admin-levels.html alle auf Proxy umgestellt
- Datenschutzerklaerung: alter Google-AdSense-Passus (falsch, nicht
  im Einsatz) entfernt, neuer Abschnitt zur serverseitigen
  Tile-Auslieferung mit Rechtsgrundlage Art. 6 Abs. 1 lit. f DSGVO
- .gitignore: App/data/tiles ausgeschlossen
- .env.example: TILE_CACHE_DIR + OpenAI/ElevenLabs dokumentiert

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 00:53:43 +02:00
Adminator 3885c83294 Atlas: Logistik-Gerüst + Heli-Fix + Waypoints-Regen + Level-Picker
- Neues Modul 'Logistik Europa': module_info-Eintrag, Landing-Card,
  PHP-Wrapper (logistik.php, modul-logistik.php), Engine-Skelett mit
  Enums + Helpern (travelCost, latePenalty, Bonus, Dijkstra,
  Polyline-Interpolation), Test-Harness, Kompetenzen-Draft,
  5 Seed-Dateien (locations, vehicle-types, cargo-types, railnet,
  contract-templates), 3 Level-Einträge in game_levels, Phase 0 durch
  die Logistik-Instanz geliefert und Atlas-Review bestanden
- Heli-Fix: heli-game.php mit BASE_PATH (production-sicher) +
  Asset-Pfad-Injection, geo_waypoints-Tabelle per Seed-Script
  auffindbar gemacht
- Waypoints-Regen-Tool: regen-waypoints-sql.php synchronisiert
  waypoints.sql aus DB (70 Einträge)
- Design-System: .ggs-level-grid / .ggs-level-card als Standard
  gepromotet (Klimas Muster, iPad-hover-safe)
- Inbox-Nachrichten: Kickoff-Briefings für Heli und Logistik,
  Asset-Map für Heli, DALL-E-Pipeline-Anleitung, Koordinations-
  nachrichten an Fluss, Klima, Glossar, Lehrplan

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 20:43:48 +02:00
Adminator 3931a701e1 Klima 3D V2: Abschlussprotokoll — Session geschlossen
- _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>
2026-04-19 15:45:38 +02:00
Adminator af9ecf6b22 Klima 3D: Strandleben tourismus-reaktiv + Radweg-Dashes durchgehend
- 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>
2026-04-19 14:53:20 +02:00
Adminator ce0164264f Klima 3D V2: Session-Abschluss — Strandleben komplett + Berichte
- 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>
2026-04-19 14:49:04 +02:00
Adminator 59d45e419d Klima 3D: Runway senkrecht zum Vulkan + Plane bleibt sichtbar + korrekte Höhe
- 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>
2026-04-19 14:38:42 +02:00
Adminator b77a453306 Klima 3D: Strandleben winzig + Radweg-Mittellinie durchgehend + Airport-Sync
- 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>
2026-04-19 14:33:09 +02:00
Adminator e221f14f5c Klima 3D: Flugzeug fliegt nase-vorwärts + Banking in der Kurve
Aus plane-test.html-Kalibrierung bestätigt: Flugzeug soll Nase in
airport-lokalem +X halten, Bewegung in +X. updateSinglePlane
komplett neu:

- Parken am -X-Ende der Runway (vorher +X)
- Takeoff rollt -X → +X (vom Vulkan weg, da airport.rotation.y =
  atan2(-dz, dx) das +X in die Away-Richtung dreht)
- Climb-Out in +X-Richtung
- Ab der zweiten Climb-Hälfte bankt es leicht (rotation.z wächst)
  zeigt Seitwärts-Kippen in die Kurve bevor es verschwindet
- Approach kommt aus -X-Ferne zurück, Banking löst sich auf
- Landung in +X-Richtung (wie Takeoff)
- Taxi zurück zur Parkposition: unsichtbar (Teleport OK)

Nase-Ausrichtung: rotation.y = airport.rotation.y (kein π-Offset mehr
— entspricht der Test-Seite). Pitch für Start/Landung, Roll für
Kurvenmanöver.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:29:12 +02:00
Adminator 96fb75ffdf Klima 3D: Flugzeug-Test-Seite + Airport-Ausrichtung vom Vulkan weg
- Neue Datei: App/sims/klima/plane-test.html
  Three.js-Sandbox mit dem makePlane-Mesh, Slidern für rotation.x/y/z,
  Achsen-Helper (X rot, Y grün, Z blau), großem roten Pfeil als
  Bewegungsrichtung (+X), "Flug simulieren"-Button und "Werte kopieren".
  Thomas kann damit die korrekte Flug-Rotation finden und zurückmelden.
- Airport-Ausrichtung: finalizeBuy überschreibt die zufällige
  placementRotation bei id='airport' mit atan2(-dz, dx) zum Vulkan —
  Runway (lokales +X) zeigt nun IMMER vom Vulkan weg, Start und
  Landung über Ozean statt Bergflanke.
- airportLocalToWorld: Vorzeichen an Three.js-Konvention angeglichen
  (x_w += lz·sinR, z_w -= lx·sinR), damit rotierte Airports ihre
  internen Offsets korrekt in Welt-Koordinaten übertragen.
- Plane-Zyklus: +60 s Grund-Offset entfernt, Flugzeug ist bei
  Airport-Bau sofort sichtbar (Phase 0 = parken auf der Runway).

Test-URL: http://localhost/geograsim/App/sims/klima/plane-test.html

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:22:34 +02:00
Adminator 665e86d485 Klima 3D: Musik-Reset, Szene 10% tiefer, Drohnen-Toggle
- ggsMusicResetToDefault: neuer Helper springt auf den ersten Track im
  Dropdown. Wird in startGame aufgerufen, damit Drama-Musik aus dem
  Endscreen eines vorherigen Durchgangs nicht ins neue Level hinüber-
  läuft (erklärt, warum 'Drama im laufenden Spiel' lief).
- camera.lookAt: von (0, 0.5, 0) auf (0, 2.8, 0) angehoben → Insel
  rutscht im Bild ~10 % nach unten, oben mehr Himmel/Dunst-Wolken.
- Drohnen-Toggle 🚁 im Header: neuer droneEnabled-Flag. Aus =
  Auto-Orbit ist dauerhaft gestoppt (nur Maus-Drag bewegt Kamera).
  Ein = Idle-Timeout resumed wie bisher. Button zeigt aktiven
  Zustand über opacity + .active-Klasse.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:13:47 +02:00
Adminator 21cc33e36b Klima 3D: Wolken kleiner + deutlich mehr Variation
- makeCloud: Opacity pro Wolke gewürfelt (0.45..0.80), Bump-Anzahl
  2..6 statt 3..5, Bump-Radien 0.45..1.15 statt 0.9..1.8 (halb so
  groß). Spacing zwischen Bumps variiert stärker.
- 5 Wolken-Instanzen (vorher 4), Parameter-Ranges breiter:
  - Höhe 5..9 (vorher 6.5..8.3)
  - Scale 0.35..0.85 (vorher 0.75..1.20) — kleiner + mehr Streuung
  - Speed 0.5..1.9 (vorher 0.8..1.4)
  - Z-Start 2..12, Z-End -14..-22 (stärker versetzt)
Fühlt sich jetzt mehr wie natürliche Dunst-Schwaden an, weniger
synchron.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:10:46 +02:00
Adminator 0fe4377deb Klima 3D: Heli pro Airport, Flugzeug, Flut-Tönung, Graph-Top-Verlust
- Airport-Fahrzeuge: pro Flughafen eigener Heli + Flugzeug, in
  airportVehicles-Map verwaltet, über syncMeasureMeshes mit-synchronisiert.
  Phasen-Offsets per Airport-Index, damit mehrere Flughäfen nicht
  synchron laufen.
- Heli: landet jetzt korrekt auf dem H (padLocal aus userData statt
  hardcoded, inkl. LIFT-Korrektur). Alle ~3 Zyklen (deterministisch)
  Vulkan-Runde statt Airport-Kreis — Radius 9 um VOLCANO_X/Z.
- Flugzeug (makePlane, low-poly Cessna): 110-s-Zyklus — parkt am
  Runway-Anfang, Takeoff-Roll, Climb-Out nach -X, 50 s unsichtbar
  (Reise), Approach, Landing-Roll, Taxi. Propeller dreht.
- Wolken: Höhe auf ~7 abgesenkt (Vulkan-Gletscher-Höhe), fühlen sich
  jetzt wie Dunst um den Kegel an statt Himmels-Schleier.
- Flut-Tönung: applyFloodTintAll lerpt Material-Farben aller Mesh-
  Füße, die unter ocean.position.y liegen, Richtung Dunkelgrau und
  kippt sie bis 0.12 rad. Wirkt auf Maßnahmen + Dorf + Citizen-Strand.
- Graph-Top = verloren: neu endLevel(false, 'co2-top' | 'temp-top')
  wenn state.co2Ppm ≥ 700 oder state.currentTemp ≥ 19. Endscreen
  bekommt passende Icons (🌫 / 🌡) und Titel.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:08:04 +02:00
Adminator c7b3636815 Klima 3D: Baumfäll-Animation + Solar-Kauf-Hinweis
- Blackout fällt Bäume jetzt sichtbar: Baum kippt um (easeOut), Totenkopf
  erscheint nach 1.8 s darüber, nach 3.2 s fadet alles weg. Animation
  hängt an state.animMs → Pause friert ein. Totenkopf als Canvas-Texture
  auf einem Billboard-Plane.
- simulateTick vergleicht Forest-Count vor/nach engine.tick; orphaned
  Meshes werden aus placedMeshes gepullt und an fallenTrees übergeben,
  damit syncMeasureMeshes sie nicht voreilig entfernt.
- Toast-Card pro Tick mit Holz-Fäll-Meldung (🪓 'Bewohner:innen fällen N
  Bäume zum Heizen'), klickbar auf INFO_TOPICS.blackout.
- Solaranlage-Kauf: Toast mit Strom-Leistung (+1 MW) und Wartung
  (2 Mio €/Jahr), analog zum Gründach-Hinweis.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:01:13 +02:00
Adminator f0fd54f458 Klima 3D: Wolken, kleineres Airport-Plateau, Pause-Zeichen zentral
- Wolken am Himmel: 4 Dunst-Gruppen (je 3-5 Kugeln, transluzent), ziehen
  vom +X Rand über die Insel Richtung Vulkan (−X, −Z-Drift). Eigene
  Phase, Höhe, Zyklusdauer pro Wolke. updateClouds in updateAmbient.
- Airport-Plateau: von 3.4×1.55 auf 2.55×1.25 geschrumpft, nach +Z
  versetzt (0.28). Endet knapp innerhalb der Runway, deckt aber
  Terminal + Heli-Pad weiter ab.
- Pause-Zentrum: neue Card mit ▶-Symbol in der Mitte der Szene, sichtbar
  bei state.speed === 0. Klick startet 1×-Speed. Glas-Optik, animation
  bei Einblendung. Sync via updatePauseCenter in renderUI und bei jedem
  Speed-Klick.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 13:58:22 +02:00
Adminator 9a8ce64d09 Klima 3D: Gründach-Kauf erklärt Wohnraum-Effekt
Jede Maßnahme hebt engine-seitig die Population-Obergrenze um 5 % der
Start-Bevölkerung (computePopulationGrowth.capBonus). Beim Gründach
machen wir das didaktisch explizit sichtbar: Toast-Card beim Kauf weist
auf neue Wohnungen, zuziehende Einwohner:innen und Touristen + höhere
Steuer-Einnahmen hin. infoKey=green_roof_info macht die Karte klickbar.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 13:55:08 +02:00
Adminator 3836b29c5d Klima 3D: Radweg-Snap, Start-Bäume, Krisen-Toasts, Airport-Plateau, Sand-Fixes
- Radwege: snappen an bestehende Pfade an (Distanz 2.2, Spacing 92 %,
  leicht überlappend). Rotation am NEUEN Mittelpunkt via coastRotation,
  Kette folgt so der Küstenbiegung statt starre Linie.
- Start-Wald: 3 Bäume bei startGame pre-seeded (forest.instances mit
  starter-Flag). Engine-Blackout-Logik fällt sie bei Stromausfall.
  Toast 'Du startest mit 3 Bäumen ...' am Level-Start, klickbar auf
  INFO_TOPICS.blackout.
- updateCrisisMusic: Edge-Detection pro Kriterium (Budget/Temp/Flood),
  jeweils Toast-Card beim Übergang ins Kritische. Merker in startGame
  zurückgesetzt.
- Airport: Plateau-Sockel (3.4×0.20×1.55 + dünne helle Oberkante), alle
  Bauten um LIFT=0.24 angehoben. Hebt Airport sichtbar aus dem Terrain,
  kein Versinken am Hang mehr. Heli-Pad-Offset folgt nach.
- Sand-Aufschüttung (Bau-Maßnahme): zurück zum reinen Lathe-Kegel
  (Plattform + Gras raus). Kleiner, zurückhaltender Sand-Hügel wie
  ursprünglich V1.
- Citizen-Event 'Strand aufschütten' (citizen-tourism): neuer
  syncCitizenBeach → breiter flacher Sand-Streifen vorne am Ufer,
  parallel zur Küste. Nur sichtbar wenn state.hasSandBeach gesetzt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 13:53:48 +02:00
Adminator 64bb9356b0 Klima: 3D V2 fertig + PHP-Wrapper + Sprachregel + Lehrplan-Notiz
- App/sims/klima/game-3d.html neu (~4800 Z.): Three.js-Szene via KlimaEngine.
  Phasen A-D durch (Gerüst, Terrain + Vulkan + Ozean + OrbitControls,
  12 Mesh-Factories, Raycaster + Placement-Ghost + Zonen-Overlay).
  Ambient: Flughafen 2x mit Heli-Landezyklus auf H-Pad, drei Boote + Yacht,
  Start-Dorf mit Rauchfäden, Vulkan-Schutzwall, Mangroven-Sterben grau,
  Radwege am Küstenband, Ketten-Bau, Experten-Modus mit 17 Info-Cards.
  Sprachregel 4a angewandt (Arbeitsstand statt Spielstand etc.).
- App/pages/klima-3d.php neu: PHP-Wrapper analog zu klima-2d.php, teilt
  sich module_info und game_levels, separate Save-Slots (ggs-save-klima-3d).
- _inbox/klima/_status.md überschrieben.
- _inbox/zentrale/2026-04-19-1700-klima-3d-v2-fertig-modul-toggle.md:
  Bitte an Lehrplan um 2D/3D-Launcher auf modul-klima.php.

V1 (App/game-3d.html) bleibt unberührt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 13:46:49 +02:00
Adminator 7c95a99612 Atlas: Landing-Diff eingebaut (Card-Split "Mehr erfahren" + "Sofort probieren")
- FREE-Sektion: 4 Cards mit Zwei-Button-Muster
  (Klima-3D, Fluss, Heli, Stadt — Reihenfolge nach Masstab abnehmend)
- LOCKED-Sektion: 5 Cards analog mit "Mehr erfahren" + "Anmelden"
- Neues CSS: .sim-btn-primary/secondary/disabled, .sim-card-cta
- Heli aus LOCKED in FREE verschoben (hat module_info aktiv)
- Quelle: Lehrplan-Diff 2026-04-19 09:45

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:57:19 +02:00
Adminator 9a61f55cb1 Atlas: Infrastruktur + Team-Konventionen + Sprachregel Lernarbeit
- Design-System (assets/css/design-system.css) mit 21 Komponenten,
  iPad-Responsive-Breakpoints, Touch-Ziele 36px, Music-Player,
  Glossar-Tooltips
- Templates (sims/template.html + student/teacher-Dashboard)
- Docs: module-interface.md (inkl. 4a Sprachregel, 4b Leichte Sprache,
  4c iPad), content-architecture.md, crash-recovery.md, music-registry.md
- Admin-Infrastruktur: admin-modules.html + api/admin-modules.php
  (Titel, Emoji, Bild, Status, Dauer, Alter pro Modul)
- Inbox-System: _inbox/README.md + _status.md fuer Atlas + Briefings
  an Klima, Glossar, Lehrplan, Fluss
- Zentrale SFX-Pipeline (scripts/generate-sounds.py)
- DALL-E-Bilder: 8 Badges + 5 Glossar-Repraesentationsbilder (Querformat)
- Logo + Inter-Font lokal
- PHP-APIs: admin, glossar, levels, licenses, progress, waypoints,
  assignments, profile, tickets
- Spielsprache entfernt (admin-modules, admin-levels, schueler)
- Landing-Page-Bearbeitungen (Boote sichtbarer, Button-Hintergrund)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:51:14 +02:00
Adminator 2136bbbe62 Glossar: Windrad-Experiment entfernt (redundant mit SVG-Grafik)
Der Windrad-Höhenslider war redundant mit der bestehenden
windrad-groessenvergleich.svg, die denselben Sachverhalt als
statische Vergleichsgrafik bereits zeigt. Entsprechend aus der
Registry und dem Code entfernt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 01:14:16 +02:00
Adminator 22f5e9b686 Glossar: 3 weitere Experimente + Watt-Leiter-Infografik
- 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>
2026-04-19 00:52:39 +02:00
Adminator a425ce31e6 Glossar: Komplettpaket (28 Eintraege, 19 SVGs, 5 DALL-E-Bilder, iPad, Experimente)
- Mindmap mit Force-directed Layout (pages/mindmap.php) + Cross-Links
- 28 Eintraege im Fachartikel-Stil mit 113 Quellen + Inline-Referenzen [^n]
- Leichte-Sprache-Version fuer alle 28 Eintraege (short_easy, text_easy, examples.text_easy)
- 19 Infografiken (12 neu): co2-Keeling, klimawandel-Temp, kohlenstoff-Kreislauf, fotosynthese, energiemix-AT, methan-GWP, photovoltaik, wasserkraft, kipppunkt, biodiversitaet-LPI, permafrost, treibhausgas-GWP + bestehende (treibhauseffekt, ppm, windrad, albedo, fossile, kwh, co2-fussabdruck)
- 5 DALL-E-Reprasentationsbilder im Querformat (nachhaltigkeit, klimaneutralitaet, erneuerbare-energie, emissionen, pariser-abkommen)
- Alphabetische Sprungnavigation A-Z mit Buchstabenbannern
- Lightbox-Vollbild auf allen Infografiken mit expliziten SVG-Dimensionen (Safari/iPad-Fix)
- Easy-Sprache-Toggle pro Card mit localStorage-Persistenz
- 4 interaktive Experimente: kWh-Rennen, ppm-Finder, albedo-Slider, CO2-Fussabdruck-Rechner
- iPad-Optimierung: Touch-Ziele >=38px, Hover in @media (hover), touch-action
- Modul-Metadaten aus DB-Tabelle module_info (keine Hardcodes)
- Cache-Buster auf JS-Asset
- Schema-Erweiterung: glossar_sources, examples.text_easy

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 00:48:29 +02:00
Adminator 003eeeb9f7 Lehrplan: Landing-Diff an Atlas + Glossar-Bedarf + Status
- Nachricht an Atlas: kompletter Code-Block pro FREE-Sim-Card mit
  Card-Split "Mehr erfahren"/"Sofort probieren" inkl. CSS, plus
  Muster für LOCKED-Cards
- Nachricht an Glossar: Begriffs-Wunschliste für Fluss (Priorität 1),
  Heli (Priorität 2), Stadt (Priorität 3), später geplante Module
- _status.md: Arbeitsblock-Abschluss dokumentiert
2026-04-19 00:12:20 +02:00
Adminator 7deec2a26d Lehrplan: Country-Helper + Landeinstellung live
- App/php/lib/Country.php: Kaskade session → classes → teachers →
  cookie → 'AT', Helper current()/flag()/label()/allCountries()
- App/php/api/country.php: GET + POST /api/country
- country-Spalten in teachers, classes, student_sessions (idempotent)
- Native-<select>-Picker im Header aller öffentlichen Seiten
  (modul-*.php, lehrplan.php, simulationen.php)
- Footer-Links "Andere Länder: 🇨🇭 🇩🇪 🇱🇮"
- lehrplan.php liest Default-Filter jetzt aus Country::current()
- iPad-freundlich: Native Select gibt Wheel-Picker auf iOS,
  Touch-Ziel >=40px

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 00:09:43 +02:00