v2.5.1
koala73/worldmonitorv2.5.1Feb 20, 2026by github-actions[bot]
AI Summary
A performance and security-focused update featuring bot protection, IndexedDB caching, Brotli compression, and the integration of the USNI fleet tracker.
Key Highlights
- Add bot protection middleware and robots.txt to reduce API abuse
- Add IndexedDB-backed persistent API caching
- Add Brotli-first API compression for sidecar and nginx
- Integrate USNI fleet tracker and add parser tests
- Refactor to reduce Vercel costs by extending API cache TTLs
New Features
- Abort in-flight fetch requests on panel destroy and page hide
- Integrate USNI fleet tracker
- Add Brotli precompression for static assets
- Track missing backend feeds in data freshness
- Add Linux-safe fallback when DeckGL WebGL2 is unavailable
Full Release Notes
## What's Changed - release: v2.5.1 — batch FRED, parallel UCDP, partial cache TTL, bot middleware - fix: derive cache headers from partial flag on cache hits & widen Load failed filter - fix: use per-entry TTL for UCDP fallbackCache to expire partial results in 10m - fix: harden API routes, batch FRED requests, and sanitize tooltip HTML - perf: add bot protection middleware and robots.txt to reduce API abuse - refactor: extract duplicate layerToSource mapping to LAYER_TO_SOURCE config constant - perf: reduce Vercel costs — extend API cache TTLs and skip non-code builds - fix: shared fetch abort isolation and USNI vessel augmentation - fix: stabilize E2E tests and fix InvestmentsPanel event delegation - fix: add Sentry noise filter for Android WebView bridge errors - fix: suppress maplibre-internal TypeErrors in Sentry beforeSend - refactor: replace innerHTML with programmatic DOM via h() hyperscript - feat: abort in-flight fetch requests on panel destroy and page hide - fix: update Sentry noise filters for Safari fullscreen and deck.gl null id - perf: move inline panel styles to panels.css, loaded once via main.css (PERF-012) (#154) - perf: split i18next, sentry, and panels into separate chunks - fix(sidecar): deduplicate Vary header tokens with appendVary helper - fix: use graph edges for infra cascade capacity instead of hardcoded 0.1 - Add IndexedDB-backed persistent API caching - fix: widen SW globIgnore to exclude all ML JS chunks - feat: integrate USNI fleet tracker and add parser tests - Add Brotli-first API compression for sidecar and nginx - Track missing backend feeds in data freshness - fix: scope videoId and isLive to same videoDetails block - fix: harden map fallback and add regression coverage - Debounce panel content updates to reduce rerenders - Add build-time Brotli precompression for static assets - Fix deep-link polling retries and timeout error - Handle per-cluster render failures in NewsPanel - docs(runtime): document local-only API boundary - Add Linux-safe fallback when DeckGL WebGL2 is unavailable - fix: update Sentry noise filters for CSP regex and truncated loads - fix(pwa): disable default navigateFallback in generated SW - fix(pwa): prevent stale HTML precache regression - fix(runtime): block cloud fallback for local-only api routes - chore: update package-lock.json - perf: add will-change hints to animated elements for GPU compositing - perf: add CSS contain: content to .panel for layout isolation - fix: internationalize verification checklist labels - chore: sync package-lock.json version to 2.5.0 - fix: replace hardcoded English strings with i18n t() calls - perf: tree-shake unused locale files from initial bundle - feat: pre-render critical CSS skeleton in index.html for instant perceived load - chore: sync package-lock.json with package.json version - Fix setInterval clock leak in startHeaderClock() - fix: implement live-stream detection in youtubeLivePlugin dev middleware - fix: replace Polymarket prod proxy with local Vite middleware plugin - fix: add Desktop app (Linux), LLMs settings, and live webcams to bug report template **Full Changelog**: https://github.com/koala73/worldmonitor/compare/v2.5.0...v2.5.1