324 Commits

Author SHA1 Message Date
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
Adminator db9ed43407 Lehrplan: 4 Modul-Detailseiten + lehrplan.php + simulationen.php + 78 Anker
- Gemeinsamer Partial App/pages/_partials/modul_detail.php
- modul-klima/fluss/heli/stadt als 3-Zeilen-Wrapper
- lehrplan.php: Filter Land/Thema/Typ, TOC, URL-Persistenz
- simulationen.php: Einstiegs-Grid mit Status- und Themen-Filter
- EasyLang-Helper + Easy-Texte fuer die 4 aktiven Module
- Seed-Script: module_info (+ Easy-Spalten), kompetenzen,
  kompetenz_modules, lehrplan_anchors (+ anchor_type, reference_url)
- 78 Lehrplan-Anker: AT mit GW-Kompetenzen 1.9/2.1/4.2 etc.,
  13 uebergreifende Themen, andere Faecher (Bio, Chemie, Physik,
  Mathematik, GSP, Bewegung+Sport); DE 10 Bundeslaender-Quellen +
  DGfG; CH Lehrplan 21 (RZG, NT, MA, MI, WAH, ERG, BNE); LI LiLe
- iPad-First: Touch-Ziele >=40px, :active-Feedback, Breakpoint 900px
- Inbox: Konventionen (Instanz-Name, iPad, Leichte Sprache,
  _status.md, Git-Commits) umgesetzt

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 00:05:12 +02:00
Adminator dfb9e80664 Klima: Engine extrahiert + 2D refactored + Drama-Track + Bugfixes
- engine.js als headless Single Source of Truth (KlimaEngine)
- game-2d.html nutzt engine (-515 Zeilen Duplikation)
- rising-pressure.mp3 als Drama-Slot, Auto-Switch bei kritischem State
- state.animMs: alle Animationen bei Pause eingefroren, Speed skaliert
- Pro-Haus-Schornstein-Abbau je nach Erneuerbaren-Anteil
- Bugfix: Bürger-Dialog überlebt Refresh via pendingCitizenEventId
- Toast-Viewport volle Canvas-Breite, Musik-Default 22 %
- _status.md Konvention eingeführt, Inbox-Nachrichten erhalten
2026-04-18 23:50:17 +02:00
Adminator b2721d759c Klimawaechter 2D: Canvas-Fix + alle Massnahmen sichtbar + Vulkan flacher
- Canvas-Fix: min-height:450px + overflow:visible (Canvas war unsichtbar)
- Neue Renderer: Radwege (Fahrraeder), Mangroven, Sand-Aufschuettung,
  Kohlekraftwerk, Flughafen (mit fliegendem Flugzeug), Wolkenimpfung
- Vulkan: flacher (120→95), breiter, weiter im Hintergrund
- Eiskegel: breiter, deckt braune Raender komplett ab

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 10:29:37 +02:00
Adminator 00df599197 fluss.html: Performance-Fixes (distToRiver Cache, eventLog Cap)
- distToRiver: Distance-Cache pro Tick statt O(ROWS) pro Tile pro Frame
- eventLog: Gekappt auf 50 Eintraege
- Reduziert CPU-Last von ~300k Berechnungen/sec auf ~5k/sec

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 08:38:43 +02:00
Adminator b06aa025c1 Login-Frontend + Lehrer-Dashboard + Stadt-Simulation komplett
- login.html: Schueler-Login (Klassencode+User+PW) + Lehrer-Login/Register
- teacher.html: Vollstaendiges Dashboard (Klassen, Schueler, Module, Stats)
- stadt.html: Komplette Simulation mit 27 Kachel-Typen + Kennwerten
- tile-test.html: Spital-Sackgassen gefixt
- PHP-Pages fuer alle neuen HTML-Seiten

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 08:37:08 +02:00
Adminator 33fae37838 User Management + Didaktisches Handbuch + Stadt-Editor + Emoji-Kacheln
User Management (Backend):
- schema-v2.sql: students, licenses, student_results, activity_log Tabellen
- auth.php: Lehrer-Registrierung/Login, Schueler-Login, Status-Check
- classes.php: CRUD fuer Klassenverwaltung (mit Join-Code-Generator)
- students.php: Schueler erstellen (einzeln + Batch), bearbeiten, loeschen
- modules.php: Modulfreigabe pro Klasse (locked/free/teacher_started)

Didaktisches Handbuch:
- handbuch.html: Vollstaendiger Lehrpersonen-Guide
- 6 Module detailliert beschrieben (Lernziele, Kompetenzen)
- Vor/Nach-Fragen fuer jede Simulation
- Empfohlener Unterrichtsablauf (45-min-Einheit)
- Differenzierungshinweise, Bewertungsempfehlungen

Stadt-Editor:
- stadt-editor.html: Funktionierendes 8x8 Raster mit Kachel-Platzierung
- 15 Emoji-Gebaude-Kacheln (Kirche, Moschee, Wohngebiet, Fabrik, etc.)
- Spielplatz: Rutsche+Karussell statt schwebende Koepfe
- Hochhaeuser: 6 Gebaeude in 2 Reihen

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 01:52:55 +02:00
Adminator 32ed869f23 Simplify: PHP page dedup, secure UUID, input validation, remove redundant headers
- pages/*.php: 11 files reduced to 1-liners via shared renderPage() helper
- Session: UUID generation uses random_bytes() instead of mt_rand()
- Session: logout cookie uses same security options as create
- API saves: size limits on key (100) and data (500KB)
- API sessions: displayName capped at 64 chars
- API: removed redundant Content-Type headers (Response::json handles it)
- API dashboard: replaced SELECT * with explicit columns

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 16:54:43 +02:00
Adminator f22c5ebbfe Stand 2026-04-13: PHP/MySQL Infrastruktur, Flussmanagement, Stadt-Prototyp
- PHP/MySQL Backend (XAMPP + Produktionsserver)
- Front-Controller, API-Endpunkte, Session-Management
- Flussmanagement-Simulation (Echtzeit, Punkt-basierter Fluss)
- Stadt & Raumplanung (Prototyp, Top-Down Kachelsystem)
- Klimawaechter 3D: Deiche kleiner, Baeume kippen, Budget angepasst
- persistence.ts: Dualer Speicher (localStorage + Server-API)
- 6 Unit-Test-Dateien fuer bestehende Simulationen

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 16:43:42 +02:00