- 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>
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>
- 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>
max-height + overflow-y auf .layer-panel, damit ANSICHT und SATELLITENBILDER erreichbar bleiben.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
UNIQUE-Constraint um source-Spalte erweitert, Globe schreibt
jetzt mit source=globe in token_usage_monthly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
get_current_user() selektierte organization_id nicht aus der DB,
daher wurde der Token-Tracking Block im VLM uebersprungen.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Usage-Daten (input/output/cache tokens, theoretische USD-Kosten)
werden jetzt wie beim Monitor aus der Claude CLI-Antwort extrahiert
und in token_usage_monthly geschrieben. Credits werden auf der
Lizenz abgezogen. Verwaltungsportal zeigt die Zahlen automatisch.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Kernproblem: Claude wurde durch Viewport-Position beeinflusst
(User schaut auf Sueddeutschland → Claude sagt Bayern)
Fixes:
- Viewport-Info wird NICHT mehr an VLM-Prompt uebergeben
- Stattdessen: Dateiname-Timestamp extrahiert (20231010_155544 → Datum)
- Sonnenstand fuer 3 Breitengrade berechnet und als Kontext mitgegeben
- Prompt: explizite Anweisung, sich NUR auf Bildinhalt zu stuetzen
- Bildaufloesung von 1500px auf 2500px erhoeht (mehr Details)
- Besseres Logging: Koordinaten, Gewaesser, Region
- 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
- 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
Bei Landschaftsbildern waren alle Tags gefiltert (0 Ergebnisse).
natural=peak, natural=wood etc. sind mit Region-BBox suchbar.
Nur building, highway, landuse bleiben als generisch gefiltert.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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>
- 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>
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>
- /api/auth/verify-code Endpoint entfernt
- generate_magic_code() entfernt
- E-Mail: Nur noch Anmelde-Link, kein 6-stelliger Code
- Login-Seite: Zeigt nach E-Mail-Eingabe Hinweis statt Code-Feld
- Magic Link Token-Verifikation via URL bleibt bestehen
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).
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.
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
OpenSky als Primary (alle Flugzeuge weltweit, ein Call).
Bei 429 Rate-Limit: automatischer Fallback auf airplanes.live
mit 14 Stuetzpunkten (Europa, USA, Nahost, Asien).
Cache 55s, Collector-Interval 60s.
965+ Flugzeuge auch bei OpenSky-Sperre.
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.
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.
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.
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.
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.
_findMonitorSummary prueft jetzt Globe._currentLageId.
Ohne Lage-Auswahl: keine Monitor-Summary im Popup.
_fetchMonitorContext nutzt die gewaehlte Lage-ID statt alle.