Commit Graph

4 Commits

Author SHA1 Message Date
Jon Torrez
987ed03f5d feat(webcams): add webcam map layer with Windy API integration (#1540) (#1540)
- Webcam markers on flat, globe, and DeckGL maps with category-based icons
- Server-side spatial queries via Redis GEOSEARCH with quantized bbox caching
- Pinned webcams panel with localStorage persistence
- Seed script for Windy API with regional bounding boxes and adaptive splitting
- Input validation (webcamId regex + encodeURIComponent) and NaN projection guards
- Bandwidth optimizations: zoom threshold, bbox overlap check, 1s cooldown
- Client-side image cache with 200-entry FIFO eviction
- Globe altitude-based viewport estimation for webcam loading
- CSP updates for webcam iframe sources
- Seed-meta key for health.js freshness tracking
2026-03-14 09:34:54 +04:00
Nicolas Dos Santos
6b2550ff49 fix(csp): allow cross-subdomain framing for Pro page variant switcher (#1332)
* fix(csp): allow cross-subdomain framing and add finance to frame-src

frame-ancestors 'self' blocked tech/finance variants from rendering
inside the Pro landing page iframe. Widen to *.worldmonitor.app.
Also adds missing finance.worldmonitor.app to frame-src.

Closes #1322

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(csp): remove conflicting X-Frame-Options and tighten frame-ancestors

X-Frame-Options: SAMEORIGIN contradicts the new frame-ancestors directive
that allows cross-subdomain framing. Modern browsers prioritize
frame-ancestors over X-Frame-Options, but sending both is contradictory
and gets flagged by security scanners. Remove X-Frame-Options entirely.

Also replace wildcard *.worldmonitor.app with explicit subdomain list
to limit the framing scope to known variants only.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Elie Habib <elie.habib@gmail.com>
2026-03-09 14:26:02 +04:00
Elie Habib
0d5f6a2386 fix(railway): move .dockerignore to docker/ to unblock Nixpacks builds (#1336)
.dockerignore at repo root excludes scripts/, docs/, and e2e/ from the
build context. Nixpacks (and/or Railway's build system) respects this
file, causing all seed cron services to crash with "Cannot find module
'/app/scripts/...'" at runtime.

Moving .dockerignore into docker/ (alongside the Dockerfile) means:
- Railway Nixpacks builds get the full repo (scripts/ included)
- GHA Docker builds use context: . with file: docker/Dockerfile,
  and Docker only reads .dockerignore from the build context root,
  so docker/ placement is harmless for GHA
2026-03-09 13:24:15 +04:00
Elie Habib
0787528584 fix(docker): move Dockerfile to docker/ to prevent Railway auto-detection (#1334)
Railway auto-detects Dockerfiles at repo root and uses them for ALL
services, even those set to NIXPACKS. This caused all seed services
(ais-relay, seed-gpsjam, etc.) to build nginx-only containers with
no node binary, breaking every Railway service.

Move Dockerfile and related files to docker/ subdirectory. Railway
only checks the repo root for Dockerfiles, so this prevents
accidental detection. GHA workflow updated with explicit file: path.
2026-03-09 12:43:57 +04:00