What's Changed
- fix: sentry triage + SW POST method for PostHog ingest (#246)
- fix: correct Vietnam flag country code in language selector (#245)
- fix: layer help, SW ingest routing, toggle colors, v2.5.5 (#244)
- Fix Linux rendering issues and improve monospace font fallbacks (#243)
- fix: reduce dedup coordinate rounding from 0.5° to 0.1° (~10km) (#235)
- feat: Upstash Redis shared caching + cache key contamination fixes (#232)
- Format Rust code and fix Windows focus handling (#242)
- Update .env.example (#228)
- docs: add community guidelines (contributing, code of conduct, security) (#226)
- fix: shorten vercel.json ignoreCommand to fit 256-char limit
- Fix Vercel build failure when previous deploy SHA is missing (#225)
- fix: add missing showRetrying method to Panel base class (#224)
- chore: bump version to 2.5.4
- chore: add TODO for Yahoo Finance cloud relay fallback
- fix(market): harden Yahoo Finance resilience and UCDP retry logic
- fix(analytics): proxy PostHog through own domain to bypass ad blockers
- chore: add docs/internal/ to .gitignore
- fix(settings): skip API key re-verification when no keys were changed
- fix(ucdp): add negative cache, version cache, and stale-on-error fallback
- fix(i18n): add cable health evidence key to all locales
- Add cable health scoring via sebuf InfrastructureService (#220)
- fix(api): sanitize og-story level input (#219)
- fix(csp): allow PostHog scripts from us-assets.i.posthog.com
- fix: restore API-key gate and block fallback on config import failure (#218)
- Fix deployment build: make WORLDMONITOR_API_KEY optional (#217)
- Add PostHog analytics with privacy-first design (#216)
- fix: registration via direct Convex call + compact WM tab layout
- fix: World Monitor tab first, registration proxy, empty key guard
- feat: redesign settings World Monitor tab + sidecar RSS proxy + v2.5.3
- feat: API key gating for desktop cloud fallback + registration (#215)
- perf(rss-proxy): increase CDN cache TTL to reduce origin invocations
- feat(feeds): add native-language feeds for th, vi, tr, pl, ru locales and Australian coverage
- fix: remove dead /api/opensky fallback route (closes #212)
- fix(crypto): serve stale prices on CoinGecko failure instead of $0
- fix(feeds): replace dead RSS endpoints with Google News fallbacks
- feat(crypto): add XRP (Ripple) to crypto panel
- fix(relay): add in-flight request dedup for OpenSky and RSS endpoints
- feat(i18n): add Thai and Vietnamese localization
- security: escape user-facing strings in innerHTML template literals
- fix: harden OpenSky auth flow and proxy fallback
- fix: sentry triage — noise filters and formatOilValue NaN guard
- fix(sidecar): preserve request body on cloud fallback (#209)
- fix(sidecar): preserve Request body semantics in ipv4 shim (#205)
- perf: faster panel loading — instant flat render, higher concurrency (#206)
- docs: expand README with proto-first API, cable health, OG images, and production hardening
Full Changelog: v2.5.2...v2.5.5