- Extract close price arrays from Yahoo Finance chart API for indices/commodities
- Switch CoinGecko crypto fetch to /coins/markets endpoint with 7d sparkline data
- Render inline SVG sparklines color-coded green/red by price direction
- Fix Vite dev proxy for CoinGecko (was hitting root instead of /api/v3/simple/price)
- Add endpoint=markets support to CoinGecko edge function
Transform HTML meta tags (title, description, keywords, OG, Twitter, JSON-LD)
based on VITE_VARIANT during build. Tech Monitor now has distinct branding
focused on AI/tech industry tracking.
- Add __APP_VERSION__ define in vite.config.ts
- Create vite-env.d.ts for TypeScript declaration
- Replace hardcoded version in App.ts with dynamic value
- Add types for military flights, vessels, and clusters (MilitaryFlight,
MilitaryVessel, MilitaryFlightCluster, MilitaryVesselCluster)
- Create military-flights.ts service with OpenSky Network API integration
for tracking military aircraft (fighters, bombers, tankers, AWACS, etc.)
- Create military-vessels.ts service leveraging AIS stream to detect
military/government vessels (carriers, destroyers, submarines, etc.)
- Add comprehensive military callsign patterns and aircraft type database
in config/military.ts (US, NATO, Russia, China callsigns)
- Add known naval vessel database with carrier strike groups
- Implement military hotspot detection for strategic regions (Taiwan Strait,
South China Sea, Persian Gulf, Black Sea, etc.)
- Add map rendering for military flights and vessels with operator-specific
colors, aircraft type icons, and flight track trails
- Add CSS styles for military markers with pulsing animations for
interesting activity
- Integrate into App.ts with 2-minute refresh for flights, 5-minute for vessels
- Add OpenSky and ADS-B Exchange API proxies in vite.config.ts
- Updated api/fred-data.js serverless function to use FRED API with
server-side API key (via FRED_API_KEY env var)
- Removed hardcoded API key from frontend code
- Frontend now calls /api/fred-data without exposing the API key
- Updated vite proxy config for local dev
IMPORTANT: Add FRED_API_KEY to Vercel environment variables!
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix economic panel mounting selector (.main → .main-content)
- Add circuit breaker error state to panels (red header on failure)
- Switch FRED to official API with API key (fixes bot protection 404)
- Fix GDELT proxy order (specific /api/gdelt-geo before /api/gdelt)
- Fix click handler violation with requestAnimationFrame
- Add panel error state CSS styling
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Switch FAA endpoint from defunct soa.smext.faa.gov to nasstatus.faa.gov
- Parse FAA NASSTATUS XML response (single call instead of per-airport)
- Fix Yahoo Finance 429 rate limiting with smaller batches and backoff
- Add conditional API loading based on layer toggle settings
- Load data only when corresponding layer is enabled
- Trigger data load when layer is toggled on
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implement hybrid flight delay monitoring with FAA ASWS API for US airports
and computed delays for 75 global airports across Americas, Europe, APAC,
MENA, and Africa regions.
Features:
- Real-time FAA data for US airports (official, free API)
- 75 monitored airports globally with coordinates
- Severity levels: normal, minor, moderate, major, severe
- Delay types: ground stop, ground delay program, departure/arrival delays
- Color-coded markers with pulsing animation for major/severe
- Popup with airport details, delay reason, and source
- 10-minute refresh interval
- URL state persistence for flights layer
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rename AIS layer to "Shipping" throughout UI for clarity
- Add local WebSocket relay server to proxy aisstream.io data
- Fix cable-activity.ts NGA warnings array handling bug
- Add ws package for relay server
- Improve Shipping service logging and error handling
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add ~120 nuclear power plants and facilities worldwide (was only 11)
- Fix map projection to fill width and allow vertical panning
- Set default zoom to 1.5 for better initial view
- Increase GDELT protest threshold to 200+ reports
- Fix localStorage merge for new layer defaults
- Fix nuclear facility coordinates (South Texas, Laguna Verde)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Features:
- ACLED API integration for verified protest/riot data with precise coordinates
- GDELT GEO 2.0 API for real-time global event coverage (no auth required)
- Multi-source deduplication and validation scoring
- Severity classification (high/medium/low) based on fatalities and event type
- Protest markers with type-specific icons (riot, strike, demonstration)
- Popup with source info, actors, tags, and nearby intel hotspots
- 15-minute refresh interval matching GDELT update frequency
Data sources:
- ACLED: 200+ countries, daily updates, geocoded to city level
- GDELT: 15-min updates, sentiment analysis, global coverage
Requires VITE_ACLED_API_KEY and VITE_ACLED_EMAIL for full coverage
Falls back to GDELT-only mode if ACLED not configured
- Integrated official NGA Maritime Safety Information API
- Real navigation warnings for cable operations worldwide
- Coordinate parsing from warning text (DMS and decimal formats)
- Cableship name extraction (CS, M/V, CABLESHIP patterns)
- Automatic matching to nearest known undersea cable
- Severity detection (fault vs operational warnings)
- Ship status detection (on-station vs enroute)
Data source: https://msi.nga.mil/api/publications/broadcast-warn
- Extended search modal to cover pipelines, cables, datacenters, nuclear facilities, irradiators
- Added trigger methods to MapComponent for all searchable entity types
- Auto-enables relevant map layer when selecting search results
- Added ⌘K search button to header with styling
- Expanded pipeline data to 88 real operating pipelines globally
- Fixed type errors and simplified pipeline status handling
- Changed FRED URL to use /api/fred proxy path
- Added FRED proxy to vite.config.ts and proxy.ts
- Refactored sequential fetching to use Promise.all for 7x speed improvement
- Fixed TypeScript types for async map
- Added 10 official government RSS sources to gov category
- Added source tier rankings for government sources (Tier 1-2)
- Updated proxy mappings for new government domains
- Remove feeds with no working RSS: Reuters, White House, Treasury,
Anthropic, Google AI, DeepMind, OpenAI, CSIS, CFR, Brookings
- Replace with working alternatives:
- AP News via RSSHub
- VentureBeat for AI news
- Foreign Policy for think tanks
- Google News RSS searches for AI, gov, think tanks, defense
- Clean up unused proxy mappings