GODSIGH/js
type-two e4af0fb01d feat: Wave 7 — REAL live global shipping via aisstream.io
ais_bridge.py: a small daemon holding the aisstream.io websocket (free key,
server-side only), tracking every vessel heard (15-min freshness window) and
atomically writing ais_snapshot.json into the web root every 20 s. The
js/layers/ais.js layer polls that static file — no request-path server code,
identical under dev serve.py and prod nginx; rolling query bucket defeats CDN
caching. Verified locally: 15,844 live vessels within minutes of connect —
the Dover Strait separation lanes are visibly full of real traffic; click any
ship for name/MMSI/type/speed/course/status/destination (colored by type:
cargo green, tanker amber, passenger blue, fishing purple, anchored grey).
Live-only (hidden when scrubbed). Demo ships demoted to default-off; the
dormant browser-side AIS scaffold in ships.js stays inert (key would be
browser-exposed — the bridge supersedes it).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 11:29:00 +10:00
..
layers feat: Wave 7 — REAL live global shipping via aisstream.io 2026-07-30 11:29:00 +10:00
adsb-registry.js wave3.1: ADS-B OSINT layers (emergency squawks, rare-type hunter, shadow, radius focus) 2026-07-21 10:19:21 +10:00
config.js wave3: layer registry + generic GeoJSON factory (+ 4 new free layers) 2026-07-14 00:26:13 +10:00
lib.js pre-deploy: escape external feed strings in InfoBox HTML (ship-check) 2026-07-13 20:55:42 +10:00
main.js feat: Wave 7 — REAL live global shipping via aisstream.io 2026-07-30 11:29:00 +10:00
registry.js feat: Wave 6 OSINT4ALL sweep — TfL JamCams, InciWeb incidents, Radio Garden 2026-07-29 13:57:26 +10:00
solarsystem.js feat: Wave 6 OSINT4ALL sweep — TfL JamCams, InciWeb incidents, Radio Garden 2026-07-29 13:57:26 +10:00
ssdata.js feat: Wave 6 OSINT4ALL sweep — TfL JamCams, InciWeb incidents, Radio Garden 2026-07-29 13:57:26 +10:00
ui.js feat: Wave 7 — REAL live global shipping via aisstream.io 2026-07-30 11:29:00 +10:00