- vercel.json: add no-cache headers for / and /index.html so CDN never serves stale HTML
- main.ts: add vite:preloadError listener to auto-reload once on chunk 404s
- vite.config.ts: remove HTML from SW precache, add NetworkFirst for navigation requests
Add a new 'finance' site variant (finance.worldmonitor.app) following the
same pattern as the existing tech variant. Includes:
- Finance-specific RSS feeds: markets, forex, bonds, commodities, crypto,
central banks, economic data, IPOs/M&A, derivatives, fintech, regulation,
institutional investors, and market analysis (all free/open RSS sources)
- Finance-focused panels with trading-themed labels (Market Headlines,
Live Markets, Forex & Currencies, Fixed Income, etc.)
- Geographic data for stock exchanges (30+), financial centers (20+),
central banks (14), and commodity hubs (10) worldwide
- Four new map layers: stockExchanges, financialCenters, centralBanks,
commodityHubs with tier-based icons and zoom-dependent labels
- Map popup rendering for all finance marker types
- Variant switcher updated with FINANCE tab in header
- Search modal with finance-specific sources and icons
- Vite HTML variant plugin metadata for SEO
- Build scripts (dev:finance, build:finance, test:e2e:finance)
- Tauri desktop config for Finance Monitor app
https://claude.ai/code/session_01CCmkws2EYuUHjYDonzXEtY
Add skipWaiting, clientsClaim, and cleanupOutdatedCaches to workbox
config. Fixes NS_ERROR_CORRUPTED_CONTENT / MIME type errors when
users have a cached service worker serving old HTML that references
asset hashes no longer on the CDN after redeployment.
- Rename variant default from 'world' to 'full' across config files
- Replace all startups.worldmonitor.app references with tech.worldmonitor.app
- Add CARTO basemap tile caching to Workbox runtime config (basemaps.cartocdn.com)
- 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