GODSIGH/js/layers
jing 0bbdb30719 feat: Military (ADS-B Exchange) layer — real unfiltered military aircraft
Wires John's paid ADS-B Exchange RapidAPI feed ($10/mo, ~10k req/month) into a
new layer showing the military traffic OpenSky/FR24 hide (C-17 "Reach" airlift,
tankers, the Area 51 "Janet" shuttle, etc.).

- serve.py: proxy/adsbx-mil injects the x-rapidapi-key/host headers SERVER-SIDE
  (key read from gitignored adsbxcredentials.json, never in the browser) and
  HARD-caches /v2/mil/ for 5 min — the quota guard: <=~288 upstream calls/day
  (~8.6k/month) no matter how many tabs poll. Stale-on-error; 503 if unconfigured.
- js/layers/military.js: BillboardCollection like the civilian layer but a
  distinct red; live-only (no history feed), 5-min poll matched to the cache.
  ADSBx altitude is FEET (→metres for Cesium). Emergency squawks (7500/7600/
  7700) highlight brighter+bigger and flip the HUD status to err. Click overlay
  shows type / tail / altitude / speed / squawk.
- config.js: adsbx block + militaryReal/militaryEmerg colours.

Verified in dev: proxy miss→hit (5-min cache, key not leaked), 412 military
aircraft render over CONUS, click RCH042 → C17 / 99-0062 / 34000ft / 424kt,
zero console errors. adsbxcredentials.json stays gitignored + server-side.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 23:07:40 +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
fires.js pre-deploy: escape external feed strings in InfoBox HTML (ship-check) 2026-07-13 20:55:42 +10:00
infra.js phases 2-5: satellite, aircraft, ship, infra & event layers 2026-07-13 12:25:51 +10:00
military.js feat: Military (ADS-B Exchange) layer — real unfiltered military aircraft 2026-07-13 23:07:40 +10:00
quakes.js pre-deploy: escape external feed strings in InfoBox HTML (ship-check) 2026-07-13 20:55:42 +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