- Fix Al Jazeera RSS URL (feeds.aljazeera.com is dead, moved to www.aljazeera.com)
- Add 8 new RSS sources: DW, France 24, Euronews, DW Africa, RFI, Africa News,
NYT Africa, NPR — covering Germany, Europe, Africa, Cameroon region, and USA
- Filter WHO outbreak news and ticker feed to last 30 days (drops stale alerts
like 733-day-old WHO DONs)
- Fix ticker causing Chrome to crash: add will-change:transform and
contain:layout style for GPU compositing, reduce DOM nodes from 80 to 40
- Add badge styles for new source categories (DW, EU, Africa)
* Add zoom-aware symbology, fix globe popovers, expand geo coverage
Map rendering improvements based on user feedback:
- Globe markers now scale with camera altitude (onZoom hook)
- Priority-based visibility culls low-priority markers at world view
- Globe popovers use getScreenCoords for accurate positioning
- Flat map labels hidden at low zoom, revealed progressively
- Default globe altitude lowered from 2.5 to 1.8 for better fill
- Americas region zoom tightened to CONUS focus
Geographic coverage expansion:
- 4 new OpenSky air theaters: Caribbean, Gulf of Guinea, Cape Route, Horn of Africa
- Flight corridors now span Americas and Africa
- NOAA alerts extract centroid lat/lon from GeoJSON geometry
- EPA RadNet stations geocoded with hardcoded coords for 10 US cities
- ISS + Tiangong positions estimated from TLE orbital elements
- GDELT geoEvents() now called in briefing for mapped event points
- New legend entries: Weather Alert, EPA RadNet, Space Station, GDELT Event
* Fix null-safe coordinate checks and remove injected data blob
- Use `!= null` instead of truthy checks for lat/lon in noaa.mjs
and inject.mjs so valid 0-coordinates (equator/prime meridian)
are not silently dropped
- Reset jarvis.html `let D` back to null placeholder so generated
runtime data is not part of the PR diff
* Remove re-injected data blob from jarvis.html
Reset let D back to null — previous commit was correct but
inject.mjs build verification re-injected the payload.
RSS and GDELT ticker items now open the source article in a new tab
when clicked. Telegram/WHO items without URLs remain non-clickable.
Changes:
- Extract <link> from RSS feed items in inject.mjs
- Carry url field through fetchAllNews() and buildNewsFeed()
- Add data-url attribute and pointer cursor to clickable ticker cards
- Add delegated click listener to open articles in new tab
- Add interactive 3D globe (Globe.gl) with atmosphere, star field, and smooth rotation
- Add animated flight corridor arcs between air traffic hotspots and global hubs
- Add flat map toggle for classic D3 view
- Add CelesTrak as 27th intelligence source (satellite tracking, ISS, military constellations)
- Add Space Watch panel to dashboard
- Switch license from MIT to AGPL-3.0-only
- Update README with 3D globe screenshots, new source count, and license badge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- New source: apis/sources/space.mjs (no API key required)
- Tracks: recent launches, ISS, military sats, Starlink/OneWeb constellations
- Wired into briefing.mjs (27 sources), inject.mjs synthesis, and dashboard
- New Space Watch panel in left rail with military breakdown and signals
- New Satellites layer in Sensor Grid
26-source OSINT intelligence engine with live Jarvis dashboard,
auto-refresh via SSE, optional LLM layer (4 providers), delta/memory
system, and Telegram breaking news alerts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>