GODSIGH/js/layers
jing 60ceb4a261 wave3.1: ADS-B OSINT layers (emergency squawks, rare-type hunter, shadow, radius focus)
All FREE via adsb.lol. New generic pieces:
- serve.py proxy/adsb/<path>: regex-allowlisted (SSRF-safe) adsb.lol v2 proxy
  with per-path 120s cache + upstream call-spacing (adsb.lol 429s on bursts;
  reservation slots space call *starts* without serializing network time),
  12s fail-fast timeout, stale-on-error
- js/layers/adsb-layer.js: generic {ac:[...]} billboard factory (parallel
  allSettled fetch, live/scrub/visibility gating, optional client-side filter)
- js/adsb-registry.js: emergency (sqk 7700/7600/7500, default-on, alerts red),
  rare-type hunter (filters the shared mil feed by ICAO type — 1 cached call,
  no per-type rate-limit), shadow (LADD+PIA, purple/pink)
- js/layers/radius.js: camera-driven 'all traffic within 250nm of view'
- verified live: all four render, worst-case simultaneous-enable ok, 0 errors

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 10:19:21 +10:00
..
adsb-layer.js wave3.1: ADS-B OSINT layers (emergency squawks, rare-type hunter, shadow, radius focus) 2026-07-21 10:19:21 +10:00
aircraft.js wave2: adversarial-review fixes (9 confirmed findings) 2026-07-13 17:16:24 +10:00
events.js phase 6: interaction polish + readability fixes 2026-07-13 12:32:04 +10:00
geojson-layer.js wave3: layer registry + generic GeoJSON factory (+ 4 new free layers) 2026-07-14 00:26:13 +10:00
infra.js phases 2-5: satellite, aircraft, ship, infra & event layers 2026-07-13 12:25:51 +10:00
military.js wave3: swap military feed to free adsb.lol (drop the paid RapidAPI dependency) 2026-07-14 00:15:28 +10:00
radius.js wave3.1: ADS-B OSINT layers (emergency squawks, rare-type hunter, shadow, radius focus) 2026-07-21 10:19:21 +10:00
satellites.js wave2: adversarial-review fixes (9 confirmed findings) 2026-07-13 17:16:24 +10:00
ships.js phase 7-8: adversarial-review fixes + README 2026-07-13 12:47:11 +10:00