Explains that `vercel dev` is needed instead of `npm run dev` for
the API edge functions to work. Covers three deployment options
(Vercel, local with CLI, static frontend only) and platform notes
for Raspberry Pi/ARM users. Addresses #44.
- Add NASA FIRMS satellite fire detection map layer and panel
- Add temporal baseline anomaly detection (Welford's algorithm, Redis-backed)
- Wire signal aggregator with fires, temporal anomalies
- Remove 10 dead service files and unused markdown docs
- Deduplicate RSS feeds, clean up story templates
- Fix data freshness, status panel, and verification checklist
- Create og-image.png for social sharing meta tags
- Update README with signal aggregation, source tiering, edge architecture
- Bump version to 2.1.4
- Condense README from 3,896 lines to ~230 lines
- Move full documentation to docs/DOCUMENTATION.md
- Add social badges (stars, forks, license, last commit)
- Add 'Why World Monitor?' value proposition table
- Add Quick Start one-liner
- Use collapsible sections for data layers
- Add 'Support the Project' call to action
- Link to full docs throughout
- README: Title to "World Monitor v2", AI-powered description
- index.html: Title "Global Situation with AI Insights"
- All meta tags updated (og, twitter, JSON-LD)
- Added AI keywords and features
- Updated site.webmanifest with AI branding
The original documentation incorrectly described surge detection as
operator-count based. The actual algorithm uses:
- Baseline-based detection (2x historical activity = surge)
- Separate foreign presence detection for operators outside home regions
- Theater-based grouping with 48-hour baseline window
- Update version badge to 1.5.0
- Document CII Learning Mode (15-minute warmup with visual indicators)
- Add Entity Extraction System section (company/country/leader detection)
- Add Signal Context section ("Why It Matters" explanations)
- Expand Data Freshness with core vs optional sources
- Document Live News Stream optimizations (YouTube Player API, idle detection)
- Entity knowledge base with 45+ entities (companies, commodities, crypto, countries, people)
- Entity index for O(1) lookups by alias, keyword, sector, type
- News-to-entity matching for intelligent market-news correlation
- New signal type: explained_market_move (when news correlates with price action)
- Improved silent_divergence (only fires after exhaustive entity search)
- Per-signal-type TTL deduplication (6hr for market signals vs 30min default)
- README documentation for all new features and algorithms
- Add 'oil' and 'spending' as separate DataSourceIds in data-freshness
- Update oil-analytics.ts to report to 'oil' source
- Update usa-spending.ts to report to 'spending' source
- Add EIA and USASpending to StatusPanel API list
- Update README: version 1.3.8, new API dependencies, project structure
- Document EIA_API_KEY in optional API keys section
- Add Wingbits as tracked data source in data-freshness.ts
- Report Wingbits enrichment status to data freshness tracker
- Add Aircraft Enrichment section to README with classification algorithm
- Add Wingbits to API Dependencies and Optional API Keys
- Add wingbits.ts and wingbits.js to project structure
- Add acknowledgment for Yanal at Wingbits for API access
- Update version badge to 1.3.4
- Add live demo link and version badge
- Document OpenSky authentication requirements
- Add OpenSky credentials to API Dependencies table
- Update Roadmap with recent completed features
- Add NASA EONET API integration for storms, wildfires, volcanoes, floods
- Combine USGS earthquakes + EONET events under single NATURAL toggle
- Filter EONET earthquakes to avoid duplicates (USGS is more authoritative)
- Load both data sources in parallel for faster initial render
- Update help text, CSS layer attributes, and zoom thresholds
- Version bump to 1.3.0
Documents that this is a proof of concept with:
- Data completeness gaps without paid accounts (ACLED, OpenSky)
- AIS coverage bias toward European/Atlantic waters
- Some data sources blocking cloud providers
- Add Live News Streams section documenting 7 YouTube channels
- Add Politico, The Telegraph, Al Arabiya to news sources list
- Add LiveNewsPanel.ts to project structure
- Remove Congress Trades from StatusPanel feed list
- Update Data Export to mention CSV/JSON
Covers:
- Fork and clone workflow
- Code style conventions (TypeScript, architecture, security, performance)
- PR submission process with examples
- Good PR practices table
- Types of contributions welcome
- Review process
- Development tips for adding layers and proxies
Security fix: ACLED API token was embedded in client bundle
Changes:
- Create api/acled.js serverless proxy with token kept server-side
- Add 10-minute cache to reduce API calls
- Add rate limiting (10 req/min per IP)
- Return only needed fields to client
- Update protests.ts to use proxy instead of direct API calls
- Rename env var: VITE_ACLED_ACCESS_TOKEN -> ACLED_ACCESS_TOKEN
The token is now only accessible server-side (no VITE_ prefix).
- Add comprehensive Data Attribution section to README with proper
citations for all data sources (OpenSky, ACLED, GDELT, CoinGecko,
Yahoo Finance, USGS, FRED, Cloudflare Radar, etc.)
- Add Acknowledgments section crediting Reggie James (@HipCityReg)
for the original dashboard concept inspiration
- Fix OpenSky OAuth2 token endpoint URL (was using wrong endpoint)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>