15 Commits

Author SHA1 Message Date
Elie Habib
91c9982a41 fix: stabilize E2E tests and fix InvestmentsPanel event delegation
- InvestmentsPanel: replace per-element listeners (destroyed by debounced
  innerHTML) with event delegation on stable this.content
- IntelligenceGapBadge: null guard on context.actionableInsight for
  environments where i18n is not initialized
- keyword-spike test: restructure headlines so spike term appears
  mid-sentence (isLikelyProperNoun skips index-0), add initI18n
- investments-panel test: add pollUntil helper, re-query DOM elements
  after debounced render cycles
- map-harness tests: increase WebGL harness init and poll timeouts,
  relax golden screenshot pixel diff threshold
2026-02-20 13:16:56 +04:00
Elie Habib
54f1a5d578 test: add coverage for finance/trending/reload and stabilize map harness 2026-02-17 19:22:55 +04:00
Elie Habib
8c8fb0ae0a fix: resolve P2 reload guard and harness assertion drift 2026-02-17 12:25:34 +04:00
Elie Habib
a78a072079 fix(deploy): prevent stale chunk 404s after Vercel redeployment
- 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
2026-02-17 11:30:58 +04:00
Elie Habib
5382e79ac7 fix(finance): keep data panels and add desktop finance map layers 2026-02-17 09:06:35 +04:00
Elie Habib
071836d390 chore: move test harnesses from root to tests/ 2026-02-15 19:22:40 +04:00
Elie Habib
5facae7105 feat: add cyber threat map layer with Feodo Tracker + URLhaus integration
Plot live botnet C2 servers, malware distribution nodes, and malicious IPs
on the globe using free abuse.ch APIs (Feodo Tracker + URLhaus).

- Vercel edge API with triple-layer caching (Redis → memory → stale fallback)
- IP geolocation via ipwho.is + ipapi.co (HTTPS-compatible with Edge runtime)
- Severity-based color coding (critical=red, high=orange, medium=amber, low=yellow)
- Feature-gated behind VITE_ENABLE_CYBER_LAYER=true env var
- Frontend circuit breaker, data sanitization, 10min auto-refresh
- Tauri desktop support: 3 new secret keys (URLHAUS, OTX, AbuseIPDB)
- Full test suite (6 unit tests), e2e harness updates, popup + tooltip rendering
2026-02-15 16:52:24 +04:00
Elie Habib
3d16f3c4e1 perf: reduce idle CPU from pulse animation loop
- Add 60s startup cooldown to suppress pulse during initial data hydration
- Consolidate pulse lifecycle into syncPulseAnimation() across all setters
- Replace static predicates (h.level=high, c.maxSeverity=high) with dynamic-only
  checks: recent news, recent ACLED riots (<2h), breaking hotspots
- Exclude GDELT riots from pulse gating (noisy, not actionable)
- Reduce pulse interval from 250ms to 500ms (halves layer rebuild rate)
- Pause pulse when render is paused (country brief overlay)
- Add latestRiotEventTimeMs to MapProtestCluster with raw protest fallback
- Add Playwright tests for startup cooldown and lifecycle start/stop/GDELT exclusion
2026-02-15 15:17:07 +04:00
Elie Habib
3c46110632 test: guard cluster cache initialization and document checks 2026-02-13 07:59:00 +04:00
Elie Habib
1716278538 Fix hotspot overlay sync path and harden map harness regressions 2026-02-13 00:34:19 +04:00
Elie Habib
2b6add1f0d fix(map): reproject overlay clusters on pan and harden e2e visual determinism 2026-02-12 18:00:54 +04:00
Elie Habib
b0e829a84c test(e2e): add variant and pan reprojection regression checks 2026-02-12 17:37:21 +04:00
Elie Habib
0697eeba3a test(e2e): add deterministic per-layer visual baselines 2026-02-12 13:21:45 +04:00
Elie Habib
302f3fba03 Expand Playwright map coverage across full and tech layer sets 2026-02-12 12:57:47 +04:00
Elie Habib
a8a648bfd9 Add Playwright map harness smoke tests for layer regressions 2026-02-12 12:34:42 +04:00