51 Commits

Autor SHA1 Nachricht Datum
Claude Dev
28a87f1bb5 fix: VLM-Bildanalyse Bugfixes (Prompt, UI, Logging)
- Fix 1: Claude-Prompt weist generische Natur-Objekte ab (forest, mountain etc.)
  Objects-Array nur fuer OSINT-relevante Infrastruktur, Rest in terrain/landscape_clues
- Fix 2: Freundliche UI-Meldungen bei leeren Objects, 0 Treffern, gefilterten Tags
  Button ausgegraut + Hinweis wenn keine Infrastruktur erkannt
- Fix 3: generate_queries gibt JSON statt HTTP 400 bei leeren Fragments
- Fix 4: Verbose Objekt-Match-Logging auf debug reduziert
- Fix 5: Verwaiste static/js/ui/overpass.js geloescht

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 23:15:54 +01:00
Claude Dev
6c86ee5e3f feat: 3D-Gebaeude Layer (OSM Buildings via Cesium Ion)
- Weltweite 3D-Gebaeude mit Hoehen aus OpenStreetMap
- Farbcodiert: Militaer (rot), Industrie (orange), Regierung (blau), Rest (grau)
- Toggle in Gruppe INFRASTRUKTUR
- Kostenlos via Cesium Ion OSM Buildings Tileset

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:19:30 +01:00
Claude Dev
1d64ad8d1f fix: NASA GIBS Imagery nutzt REST-URL statt KVP-Endpunkt
wmts.cgi mit times/clock funktionierte nicht -- Tiles wurden nicht geladen.
Jetzt gleicher Ansatz wie nightlights.js: Datum direkt in REST-URL eingebaut.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 21:54:48 +01:00
Claude Dev
4ad4f4ee44 fix: Gruppen-Toggle repariert (sauberer Code statt sed-Einzeiler)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 21:43:10 +01:00
Claude Dev
bc5fdd18df refactor: Layer-Panel mit einklappbaren Kategorien + ANSICHT in Bottom Bar
- 5 einklappbare Gruppen: ECHTZEIT, INTELLIGENCE, GEOINT, INFRASTRUKTUR, UMGEBUNG
- Jede Gruppe zeigt Aktiv-Zaehler (z.B. 2/3)
- Klick auf Header klappt Gruppe auf/zu (Chevron-Indikator)
- ANSICHT (STD/NVG/FLIR/CRT) in Bottom Bar verschoben
- SATELLITENBILDER-Dropdown an Panel-Oberkante (immer sichtbar)
- Fadenkreuz + Ortsnamen immer sichtbar (nicht in Gruppe)
- Reduziert sichtbare Zeilen von ~35 auf ~18

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 21:26:28 +01:00
Claude Dev
ab4288d328 feat: NASA Earthdata/GIBS Integration - Imagery-Switcher + FIRMS Layer
- imagery.js: WMTS-Support fuer NASA GIBS + 4 neue Quellen (MODIS Terra, VIIRS SNPP, GOES East/West)
- firms.js: Neuer VIIRS Thermal Anomalies Layer (375m, tagesaktuell, Braende/Industriewaerme)
- nightlights.js: NRT-Upgrade (dynamisches Datum statt hardcodiert 2024-01-01)
- index.html: Optgroups im Imagery-Select, FIRMS-Checkbox, Script-Tag
- app.js: FIRMS Toggle
- globe.css: dot-firms Farbe

Alle NASA-Daten kostenlos via GIBS WMTS, kein API-Key noetig.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 21:10:41 +01:00
Claude Dev
51e85b2572 feat: Praezisere Geolocation durch Koordinatenschaetzung + Feature-Erkennung
VLM-Schema:
- estimated_coordinates: Claude schaetzt Lat/Lon + Radius direkt
- identified_features: Konkreter Gewaessername, engste Region, Landmarken
- landscape_clues um water_characteristics erweitert

VLM-Prompt: Komplett ueberarbeitet
- Primaerziel ist jetzt Reverse Geolocation statt nur Objekterkennung
- Spezifische Anleitungen: Fluss-ID (Rhein vs Donau), Kiesfarbe, Uferform
- Explizite Aufforderung fuer Koordinatenschaetzung

BBox-Kaskade (Prioritaet):
1. EXIF-GPS (exakt)
2. estimated_coordinates + Radius (VLM-Schaetzung)
3. identified_features (Gewaesser/Region aus Matching)
4. estimated_location_type (grobe Region)
5. Weltweit (Fallback)

Regions-Mapping: 30+ neue Eintraege
- Deutsche Bundeslaender (NRW, Bayern, Hessen, etc.)
- Flussgebiete (Niederrhein, Oberrhein, Mosel, Elbe, etc.)
- Staedte (Duesseldorf, Koeln, Bonn, Neuss)

Frontend:
- Gruen hervorgehobene Koordinaten-Box mit Radius
- Identifizierte Features (Gewaesser, Region, Landmarken)
- Fly-To zur geschaetzten Position
2026-03-26 10:38:22 +01:00
Claude Dev
9709536036 fix: Suchbereich deutlich sichtbarer
- Kraeftigere Fuellung (0.15-0.25 statt 0.06-0.12)
- Explizite Kanten-Polylines (width 3, 90% Opazitaet)
- Aeusserer Glow-Rahmen als zweites Rechteck
- Horizontale Schraffur-Linien fuer taktischen Look
- Groessere Eckpunkte (8px, weisser Rand)
- Label: fett, 13px, mit Hintergrund-Box
- Sichtbar bis 12.000km Entfernung
2026-03-26 10:28:44 +01:00
Claude Dev
41a987f848 feat: Suchbereich visuell auf dem Globus umreissen
- Halbtransparentes Rechteck zeigt die Suchregion
- Eckpunkt-Marker + SUCHBEREICH-Label in der Mitte
- EXIF-GPS: Hervorgehobener Marker mit Punkt + Ring + Detailbox
- Kleine BBox (EXIF): staerkere Fuellung, nah sichtbar
- Grosse BBox (Region): schwache Fuellung, weit sichtbar + Kamera fliegt hin
- Backend: generate-queries gibt effective_bbox zurueck
- Reset raeumt alle Visualisierungen auf
2026-03-26 09:23:56 +01:00
Claude Dev
446b8b9228 feat: Globe-Suche nutzt jetzt EXIF + Region + Overpass kombiniert
- EXIF-GPS: Marker direkt auf Globus + Kamera fliegt hin
- EXIF-GPS als BBox (0.5 Grad Radius) fuer praezisere Overpass-Suche
- Region aus VLM/Landscape Clues als Fallback-BBox
- Statusanzeige zeigt alle genutzten Datenquellen
- Overpass-Ergebnisse werden mit EXIF-Marker kombiniert
2026-03-26 09:18:38 +01:00
Claude Dev
ea436a4338 fix: Nginx Upload-Limit + robuste VLM-Fehlerbehandlung
- client_max_body_size 15M fuer Globe Nginx (war default 1MB)
- proxy_send_timeout 120s fuer lange VLM-Analysen
- Frontend: Nicht-JSON-Antworten (z.B. Nginx 413) sauber abfangen
2026-03-26 09:13:14 +01:00
Claude Dev
c7cb19d584 feat: GEOINT-Toolkit mit 6 neuen Features
- EXIF-Extraktion: Automatische GPS/Kamera/Zeitstempel-Analyse bei Bildupload
- Sonnenstand-Rechner: Azimut, Elevation, Schattenverhaeltnis fuer beliebige Position/Zeit
- Reverse Geolocation: Erweiterte VLM-Analyse mit Landschaftsmerkmalen (Vegetation, Architektur, Strassen, Schilder)
- Nachtlichter: NASA VIIRS Black Marble Layer
- Hoehenprofil: Interaktives 2-Punkte-Tool mit SVG-Chart und Sichtlinienanalyse
- Funkmasten: Mobilfunkinfrastruktur via Overpass (zoomabhaengig)

Backend: data_geoint.py (EXIF, Sun, Elevation, Celltowers)
Frontend: GEOINT Tools Section im Layer Panel
2026-03-26 08:58:05 +01:00
Claude Dev
b9b76d2841 Fix: self -> VlmUI Reference in confirmAndSearch
self war nicht definiert, JS-Error verhinderte den Overpass-Aufruf.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 00:39:32 +01:00
Claude Dev
749c78b6a3 Fix: Region-BBox aus VLM-Analyse + generische Tags filtern
Wenn keine Viewport-BBox gesetzt ist, nutzt der Query-Generator die
VLM-Regionsschaetzung (z.B. Europa, Naher Osten) als grobe BBox.
70+ Regionen gemappt (DE/EN). Generische OSM-Tags (building, highway,
landuse) werden gefiltert um Overpass-Timeouts zu vermeiden.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 00:32:10 +01:00
Claude Dev
03b9abc991 Refactor: Overpass nur via VLM, Panel ersetzt rechte Sidebar
- Overpass-Toggle aus Layer-Panel entfernt (kein Standalone-Modus)
- Overpass-Panel und UI-Script entfernt
- VLM-Panel nach rechts verschoben, ersetzt Sidebar wenn aktiv
- Sidebar wird automatisch ein-/ausgeblendet bei VLM Toggle
- VLM ruft Overpass API direkt auf (kein Umweg ueber OverpassUI)
- Ergebnis-Zaehler im VLM-Panel statt separatem Overpass-Panel

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 00:24:51 +01:00
Claude Dev
72bae57519 Fix: VLM-Suche standardmaessig weltweit statt Viewport-BBox
Wenn man nicht weiss wo ein Bild aufgenommen wurde, macht eine
Viewport-Einschraenkung keinen Sinn. BBox ist jetzt optional per
Checkbox "Nur im sichtbaren Bereich suchen".

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 00:13:04 +01:00
Claude Dev
7be5edd983 Feature: Overpass Turbo + VLM-Bildanalyse
Overpass Turbo Integration:
- POST /api/overpass/query: OverpassQL-Proxy mit Caching, Rate-Limiting, Fallback
- GET /api/overpass/templates: 30 OSINT-Templates in 6 Kategorien
- Frontend: Query-Editor Panel mit Template-Browser, Viewport-BBox
- Layer: Nodes/Ways/Relations Rendering auf CesiumJS mit OSM-Tag InfoBox

VLM-Bildanalyse:
- POST /api/vlm/analyze: Bildupload -> Claude Code headless (Sonnet) -> GEOINT-Analyse
- POST /api/vlm/generate-queries: VLM-Erkennungen -> OverpassQL
- Frontend: Drag&Drop Upload, Zwei-Stufen-Workflow (Analyse -> Overpass-Suche)
- Bild-Resize (Pillow), asyncio Subprocess, Semaphore (max 1 parallel)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 00:03:01 +01:00
Claude Dev
bd2c274dd2 UI: Submenu eingerueckt + Punkte deutlich groesser
SUBMENU (Schiffstypen etc.):
- Links eingerueckt (28px padding-left + 12px margin)
- Gruene Linie am linken Rand zur Abgrenzung
- Leicht dunklerer Hintergrund
- Klar als Untermenue erkennbar

PUNKTGROESSEN (alle Layer nochmals ~60% groesser):
- Flugzeuge: 5/6/8px (war 3/4/5)
- Schiffe: 4/5/7px (war 3/4/5)
- Militaer: 8px (war 6)
- Katastrophen: 14px (war 10)
- Erdbeben: 8-20px (war 6-15)
- GDELT: 10px (war 7)
- ISS: 18px (war 14)
- AKWs: 10px (war 7)
- Satelliten: 3/5px (war 1.5/3)
- Cluster: +40% groesser
2026-03-24 23:49:17 +01:00
Claude Dev
8a24605323 Schiffstyp-Filter: Gleiche Groesse wie Hauptmenue
Checkboxen 16x16px, Dots 10px, Labels 13px, mehr Padding.
Identisch zum uebergeordneten Layer-Panel.
2026-03-24 23:46:42 +01:00
Claude Dev
2be1f6a37d UI Overhaul: Groessere Elemente, bessere InfoBox-Platzierung
PANEL (links):
- 240px breit (war 200px)
- Checkboxen 16x16px (war 12x12)
- Dots 10px (war 8px)
- Layer-Namen 13px (war 11px)
- Counts 12px (war 10px)
- Mehr Padding pro Toggle-Zeile

INFOBOX (bei Klick):
- Links neben dem Panel platziert (254px vom Rand)
- 420px breit, max 60vh hoch, scrollbar
- Kollidiert nicht mit Panel oder Sidebar
- Groesserer Titel (14px), mehr Padding

PUNKTE AUF DEM GLOBUS:
- Flugzeuge: 3/4/5px (war 2/2.5/3)
- Schiffe: 3/4/5px (war 2/2.5/3)
- Militaer: 6px (war 4)
- Katastrophen: 10px (war 8)
- Erdbeben: 6-15px (war 4-10)
- GDELT: 7px (war 5)
- ISS: 14px (war 10)
- Cluster: +30% groesser

HEADER + FOOTER:
- Header 48px (war 44px)
- Footer 32px (war 28px)
- Titel 15px, Stats 12px
- Lage-Select + Suche groesser
2026-03-24 23:41:25 +01:00
Claude Dev
bfa74ec992 Militaerschiff-Datenbank mit Bildern + Klassifizierung
Neue Datei milship_db.py:
- MMSI-Laenderzuordnung (200+ Laendercodes)
- Schiffsklassen-Datenbank (Nimitz, Arleigh-Burke, Gorshkov,
  Type 052D, Queen Elizabeth, F125, Charles de Gaulle)
- Bilder aus Wikimedia Commons (frei lizenziert)
- Klassifizierung nach MMSI-Prefix + Schiffsname

Klick auf Militaerschiff zeigt:
- Foto der Schiffsklasse (wenn verfuegbar)
- Klassenname und Schiffstyp
- Herkunftsland (aus MMSI)
- MMSI, SOG, COG, Heading

API: GET /api/ships/military liefert alle Militaerschiffe
mit Klassifizierung und Bild-URLs.
2026-03-24 23:27:32 +01:00
Claude Dev
4b731823e6 Schiffsverkehr: Typ-Filter, Kurslinien, Dark Ships
SCHIFFSTYP-FILTER:
- 6 Kategorien: Tanker (rot), Cargo (orange), Passagier (gruen),
  Fischerei (blau), Militaer (magenta), Sonstige (grau)
- Einzeln ein-/ausblendbar via Checkboxen im Panel
- Farbkodierte Punkte nach Schiffstyp

KURSLINIEN-PROJEKTION:
- Zuschaltbar per Checkbox
- Zeigt 30min-Vorausprojektion basierend auf COG + SOG
- Farblich passend zum Schiffstyp, halbtransparent

DARK SHIPS ERKENNUNG:
- Backend erkennt Schiffe die >10min kein AIS-Update senden
- Positionshistorie (letzte 10 Positionen) gespeichert
- API-Endpoint: GET /api/ships/dark
- Verdaechtig wenn vorher aktiv (SOG>0.5) und jetzt still

Backend: ship_type aus AISStream MetaData gespeichert,
AIS-Typcode zu Kategorie klassifiziert (IMO Standard).
2026-03-24 23:21:06 +01:00
Claude Dev
b8d6ed9442 Sonnenterminatur + Zeitzonen-Overlay
SONNENTERMINATUR:
- Echtzeit Tag/Nacht-Grenze als orange Linie auf dem Globus
- Nachtseite als halbtransparenter schwarzer Schatten
- Basiert auf Sonnendeklination + UTC-Zeit
- Aktualisiert jede Minute

ZEITZONEN:
- 24 vertikale Linien (alle 15 Grad Laengengrad)
- Jede Zone zeigt aktuelle Uhrzeit (z.B. UTC+2 14:30)
- Labels bei Zoom (<8000km) sichtbar
- Aktualisiert jede Minute

Alle Features der ersten Tabelle nun implementiert.
2026-03-24 23:07:24 +01:00
Claude Dev
fd9e6558db 5 neue Layer: Militaerflug, Seekabel, Infrastruktur, ISS Tracker
MILITAERFLUGVERKEHR (adsb.lol /v2/mil):
- ~254 Militaerflugzeuge weltweit in Echtzeit (rot)
- Callsign-Labels bei Zoom (RCH=USAF, GAF=Luftwaffe etc.)
- Klick zeigt: Callsign, Registration, Typ, Hoehe, Squawk
- 20s Refresh

SEEKABEL (TeleGeography):
- Untersee-Glasfaserkabel als cyan-Linien auf dem Globus
- ~500+ internationale Kabelverbindungen
- Geopolitisch relevant (Sabotage, Abhoerung)

INFRASTRUKTUR (OpenStreetMap Overpass):
- 348 Kernkraftwerke weltweit (gelb mit Orange-Rand)
- Militaerflughaefen (rot)
- Labels bei Zoom (<500km)
- 24h Cache (statische Daten)

ISS TRACKER (Open-Notify API):
- Echtzeit-Position der ISS (roter Punkt, 420km Hoehe)
- 5s Refresh, prominentes Label
- Klick zeigt Details

Backend: data_military.py, data_infra.py (2 neue Dateien)
Frontend: military.js, cables.js, infra.js, iss.js (4 neue Dateien)
2026-03-24 23:05:43 +01:00
Claude Dev
324f42e4a7 Satellitenbilder-Switcher: 9 Imagery-Quellen
Dropdown im Layer-Panel unter SATELLITENBILDER:
- Cesium Ion (Standard, photorealistisch mit Terrain)
- Esri World Imagery (hochaufloesend, 0.3-1m)
- Sentinel-2 2024/2023/2022/2020/2018 (ESA Copernicus, historisch)
- OpenTopoMap (topographische Karte)
- OpenStreetMap (Referenz)

Sentinel-2 historisch ermoeglicht Vorher/Nachher-Vergleiche:
z.B. Waldbraende, Ueberschwemmungen, Infrastruktur-Veraenderungen.
Alle Quellen kostenlos, kein API-Key, volle CORS-Unterstuetzung.
2026-03-24 21:53:48 +01:00
Claude Dev
e8a9e49dba Neue Features: Regenradar, Ortssuche, City-Links, Fadenkreuz
REGENRADAR (RainViewer):
- Weltweit Niederschlagsradar als Overlay, kostenlos, kein API-Key
- 5min Refresh, 60% Transparenz

ORTSSUCHE (Nominatim/OpenStreetMap):
- Suchfeld im Header, Ergebnisse als Dropdown
- Klick fliegt zur Position
- Deutsche Ergebnisse

CITY QUICK-LINKS:
- 12 strategische Staedte als Schnellnavigation unter dem Header
- Berlin, Washington, Moskau, Peking, Tokio, London, Paris,
  Teheran, Kiew, Jerusalem, Taipei, Hormuz

FADENKREUZ + RANGE RINGS:
- Zuschaltbar im Panel
- Horizontale/vertikale Linie + 3 konzentrische Ringe
- Gruener taktischer Stil
2026-03-24 21:48:29 +01:00
Claude Dev
01be1d5a81 Fix: Erdbeben + Katastrophen mit Namen in Sidebar
Alle Entities haben jetzt name-Property:
- Erdbeben: "Erdbeben M5.2 bei Tokio"
- Waldbraende: "Waldbrand: Moreau River Wildfire"
- Stuerme: "Sturm: Tropical Cyclone 28P"
Sidebar zeigt sie als einzelne aufklappbare Eintraege.
2026-03-24 14:48:20 +01:00
Claude Dev
be585590be OSINT Monitor Toggle entfernt — automatische Integration
Kein separater OSINT Monitor Layer mehr im Panel.
Bei Lage-Auswahl im Header passiert automatisch:
1. Monitor-Standorte werden auf dem Globus angezeigt (rote Punkte)
2. Katastrophen-Klick zeigt passende Monitor-Artikel zum Ort
3. Keine Lage = keine Monitor-Daten

Flow: Lage waehlen -> Monitor-Daten laden -> Katastrophen
zeigen ortsspezifische Artikel beim Klick.
2026-03-24 13:50:20 +01:00
Claude Dev
e992953616 Lage-Dropdown: Nur aktive Live-Monitorings 2026-03-24 13:45:18 +01:00
Claude Dev
c7004e4366 Exakte Ort-Artikel-Zuordnung + Lage zentriert im Header
Monitor-Feed liefert jetzt pro Standort die vollstaendigen Artikel:
Headline, Quelle, URL, Inhalts-Auszug, Datum.
Keine globale Summary mehr, keine Proximity-Heuristik.

Klick auf Waldbrand USA -> zeigt US-Waldbrand-Artikel
Klick auf Kenia -> zeigt Kenia-Ueberschwemmungs-Artikel
Klick auf Erdbeben -> zeigt naechsten passenden Artikel

Lage-Auswahl zentriert in der Header-Leiste.
2026-03-24 13:41:39 +01:00
Claude Dev
91fdd806bd Fix: Ortsspezifische Monitor-Infos statt globale Summary
Klick auf Waldbrand in USA zeigt jetzt US-Waldbrand-Headlines.
Klick auf Ueberschwemmung in Kenia zeigt Kenia-Headlines.
Nicht mehr die globale Lage-Summary fuer alle Standorte.

Logik: Naechsten Monitor-Standort zur Klickposition suchen (5-Grad-Radius).
Wenn gefunden: dessen ortsspezifische Headlines anzeigen.
Wenn nicht gefunden: globale Lage-Summary als Fallback.
2026-03-24 13:38:43 +01:00
Claude Dev
a3b4890f1e Fix: Lage-Auswahl startet Monitor-Layer automatisch
Bei Auswahl einer Lage im Header:
- Monitor-Layer wird automatisch gestartet (Checkbox aktiviert)
- Daten der gewaehlten Lage werden sofort geladen
- Katastrophen-Layer aktualisiert Monitor-Kontext
Bei Abwahl: Monitor-Layer wird gestoppt

Kenia und andere Naturkatastrophen-Standorte erscheinen jetzt
sofort auf dem Globe wenn Naturkatastrophen-Lage gewaehlt wird.
2026-03-24 13:35:25 +01:00
Claude Dev
16d4edc7bf Fix: Katastrophen-Summary nur aus ausgewaehlter Lage
_findMonitorSummary prueft jetzt Globe._currentLageId.
Ohne Lage-Auswahl: keine Monitor-Summary im Popup.
_fetchMonitorContext nutzt die gewaehlte Lage-ID statt alle.
2026-03-24 13:32:47 +01:00
Claude Dev
0944b12e2d Lage-Auswahl im Header + dynamischer Monitor-Feed
Dropdown in der Top-Leiste zeigt alle oeffentlichen Lagen.
[L] = Live-Monitoring, [R] = Recherche.
Immer nur eine Lage aktiv. Bei Auswahl:
- OSINT Monitor Layer zeigt nur Daten dieser Lage
- Klick auf Katastrophen zeigt Summary dieser Lage
- Sidebar zeigt Punkte dieser Lage
Ohne Auswahl: kein Monitor-Overlay.
2026-03-24 13:30:52 +01:00
Claude Dev
65a30e0d06 Rechte Sidebar + Monitor-Feed nur Naturkatastrophen
SIDEBAR (neu):
- Aufklappbare Uebersicht aller aktiven Datenpunkte rechts
- Suchfeld filtert alle Eintraege
- Sektionen: OSINT Monitor, Katastrophen (auffaecherbar)
- Flug/Schiff/Satelliten als Zaehler
- Klick auf Eintrag fliegt zur Position
- Ein-/ausklappbar per Pfeil-Button am rechten Rand

MONITOR-FEED FIX:
- Nur Lage 45 (Naturkatastrophen international) wird abgefragt
- Keine anderen Lagen mehr im Globe sichtbar
2026-03-24 13:29:43 +01:00
Claude Dev
27516b1a8a Bidirektionale Monitor-Verbindung + Klick-Zusammenfassungen
GLOBE -> MONITOR (Auto-Push):
- Alle 10min werden NASA EONET + USGS M4.5+ Erdbeben
  automatisch als Artikel in die Naturkatastrophen-Lage (ID 45) gepusht
- Monitor verifiziert und erstellt Zusammenfassung
- Duplikat-Check verhindert doppelte Eintraege

MONITOR -> GLOBE (Klick-Summaries):
- Katastrophen-Layer holt Monitor-Daten beim Start
- Klick auf Katastrophe/Erdbeben zeigt:
  1. Ereignis-Details (Typ, Ort, Magnitude)
  2. Monitor-Zusammenfassung (wenn Lage in der Region existiert)
- Naechsten Monitor-Punkt im 5-Grad-Radius gesucht
- Summary gekuerzt auf 600 Zeichen, Markdown bereinigt
2026-03-24 13:27:36 +01:00
Claude Dev
2422cdce45 Fix: disasters.js neu geschrieben (Syntax-Fehler durch Patch)
Sauberer Neuschrieb: NASA EONET + USGS Erdbeben kombiniert.
Syntax verifiziert.
2026-03-24 13:20:45 +01:00
Claude Dev
3d3a6d93d6 Monitor-Layer: Klick zeigt Zusammenfassung + Headlines
Bei Klick auf Monitor-Standort erscheint Info-Panel mit:
- Ortsname, Land, Kategorie (farbkodiert)
- Artikelanzahl
- Bis zu 3 relevante Headlines
- Lage-Zusammenfassung aus dem Monitor (gekuerzt, Markdown bereinigt)
- Aktualisierungszeitpunkt der Lage
2026-03-24 13:18:10 +01:00
Claude Dev
68387f89fd OSINT Monitor Layer + Erdbeben in Katastrophen zusammengefuehrt
MONITOR LAYER (neu):
- Neuer Top-Layer "OSINT Monitor" im Panel
- Zeigt geoparsete Standorte aus Monitor-Lagen auf dem Globus
- Farbkodiert: rot=Hauptgeschehen, orange=Reaktionen, blau=Beteiligte
- Labels mit Ortsname + Artikelanzahl bei Zoom
- 2min Refresh, GeoJSON vom Monitor Public API

KATASTROPHEN (erweitert):
- Erdbeben-Layer in Katastrophen integriert (kein separater Toggle mehr)
- Laedt NASA EONET + USGS parallel
- Erdbeben als farbige Punkte (rot=frisch, gelb=alt) mit M-Label
- Katastrophen-Toggle zeigt jetzt alles: Waldbraende, Vulkane,
  Stuerme, Fluten UND Erdbeben
2026-03-24 13:11:34 +01:00
Claude Dev
07574d3c8f Fix: Kamera-Zoom bei Klick nicht mehr zu nah
Cluster-Klick Distanzen erhoeht: far 2.000->4.000km, medium 500->1.500km.
trackedEntity auf undefined gesetzt vor selectedEntity (verhindert Auto-Tracking).
2026-03-24 12:57:08 +01:00
Claude Dev
9b4ea4cd28 Neue Features: Satelliten-Orbits, Naturkatastrophen, Visual Modes
SATELLITEN (CelesTrak TLE):
- Raumstationen (ISS), GPS, Galileo, Wetter, Erdbeobachtung, Starlink
- Echtzeit-Positionsberechnung aus Kepler-Elementen (2s Update)
- Orbitbahnen als leuchtende Linien (Stationen, GPS, Galileo)
- Farbkodiert nach Gruppe (rot=Station, orange=GPS, blau=Galileo)

NATURKATASTROPHEN (NASA EONET):
- Waldbraende, Vulkane, Stuerme, Fluten, Erdrutsche, Eis
- Farbige Punkte mit Emoji-Labels
- Klick zeigt Details und Quellen

VISUAL MODES:
- STD: Standard-Ansicht
- NVG: Nachtsicht (gruener Monochrom-Filter)
- FLIR: Thermal-Ansicht (invertiert, Infrarot-Look)
- CRT: Retro-Monitor (Scanlines, Vignette)

4 neue Dateien: satellites.js, disasters.js, visualmodes.js,
data_satellites.py, data_disasters.py
2026-03-24 12:50:04 +01:00
Claude Dev
7b13829d7f Zoom-adaptive Darstellung: Cluster bei Uebersicht, Details bei Zoom
Flugverkehr + Schiffsverkehr:
- Weit (>5.000km): 5-Grad-Raster-Cluster mit Anzahl-Labels
- Mittel (1.000-5.000km): 2-Grad-Raster-Cluster
- Nah (<1.000km): Einzelne Punkte, Klick zeigt Details

Cluster: Punktgroesse proportional zu sqrt(Anzahl), weisses Count-Label.
Klick auf Cluster zoomt rein. Klick auf Einzelpunkt zeigt Info.
Kamera-Listener reagiert auf Zoom-Aenderungen (20% Schwelle).
2026-03-24 12:35:50 +01:00
Claude Dev
d3c1de9d5d Flights+Ships: PointPrimitiveCollection statt Entity API
Entity API (6.500+ Objekte mit Point+Label+Description) war zu schwer.
PointPrimitiveCollection ist WebGL/GPU-beschleunigt im CLIENT-Browser
und kann hunderttausende Punkte fluessig darstellen.

Klick-Details ueber ScreenSpaceEventHandler mit naechstem-Punkt-Suche.
Kein Server-GPU noetig — alles rendert im Browser des Users.
2026-03-24 12:33:11 +01:00
Claude Dev
7015a9e512 Flights+Ships: Alle Daten dargestellt, Clustering, Status-Anzeige
Flights: OpenSky liefert 6.500+ global, korrekte Hoehenkonvertierung
(ft->m), Cesium Entity-Clustering bei 30px/5min, Labels nur < 800km.
Status-Text zeigt Anzahl nach Laden.

Ships: Entity-Clustering aktiviert (25px/5min), Labels nur < 300km.
Status-Text zeigt Anzahl.

Beide Layer zeigen jetzt ALLE Daten komplett — Ukraine, Belarus,
Nahost, Afrika, Russland, China alles enthalten.
2026-03-24 12:29:39 +01:00
Claude Dev
6f4c5ab3a6 Ladebalken bei Layer-Aktivierung + Ortsnamen-Rendering verbessert
- Animierter Ladebalken unter jedem Layer-Toggle bei Datenabruf
- Status-Text (Lade Daten.../Fehler beim Laden)
- Fetch-Wrapper: nur 401 redirected zum Login, nicht 403
- Ortsnamen: minimumLevel, tileWidth/Height, LINEAR Texture-Filter
  fuer konsistente Schriftgroessen beim Laden
2026-03-24 12:22:21 +01:00
Claude Dev
01f0b375e7 Ortsnamen standardmaessig aktiv 2026-03-24 12:19:57 +01:00
Claude Dev
cbb6596513 Fix: Ortsnamen-Layer, InfoBox bei Klick, globale Flugabdeckung
Ortsnamen: Esri World Boundaries als zuschaltbarer Imagery-Layer.
InfoBox: CSS-Ausblendung entfernt, Dark-Theme Styling.
Flugverkehr: Batch-Groesse 3, Pause 3s, zufaellige Reihenfolge —
alle Regionen bekommen Daten statt nur Europa.
2026-03-24 11:44:13 +01:00
Claude Dev
785c9b1e9e Alle Layer standardmaessig deaktiviert beim Start
Keine Checkbox vorausgewaehlt, keine Layer auto-gestartet.
Nutzer aktiviert gewuenschte Layer manuell.
2026-03-24 11:39:28 +01:00
Claude Dev
bbf6c3d54b Fix: Marker durch Globus-Rueckseite sichtbar
disableDepthTestDistance entfernt — Punkte werden jetzt korrekt
vom Globus verdeckt und nur auf der sichtbaren Seite angezeigt.
2026-03-24 11:35:20 +01:00
Claude Dev
e946d9d52e Fix: Marker-Schleifen bei Globus-Bewegung
CLAMP_TO_GROUND durch NONE ersetzt bei Schiffen, Erdbeben, GDELT.
CLAMP_TO_GROUND verursacht Positionsneuberechnung gegen Terrain
bei jeder Kamerabewegung, was zu sichtbarem Mitschleifen fuehrt.
2026-03-24 11:33:31 +01:00