2.7.0 (2026-02-11)
Features
- add multi-layer cache resilience, request deduplication, and observability (eaf9f9f)
- add status endpoint and nightly build metadata (7650974)
- Added Discord Button on the website (daf8fe4)
- Added Nightly indicator and switch to stable button on beamup (daf8fe4)
- bulk IMDb ratings from official dataset + modular tmdb refactor (3f56b96)
- cache warming on startup — pre-fetch genres, languages, countries, certifications in background (eaf9f9f)
- cast and crew search is now avilaible in stremio (ac43635)
- config cache with stampede protection — in-memory LRU (1000 entries, 5min TTL) with promise coalescing (eaf9f9f)
- enhanced /health endpoint — cache stats, throttle stats, config cache, metrics, degraded state (eaf9f9f)
- error-aware cache TTLs — cache failed TMDB lookups with type-specific TTLs (60s-30min) to prevent thundering herd (eaf9f9f)
- ETag conditional responses — return 304 Not Modified for unchanged manifest/catalog/meta data (eaf9f9f)
- graceful startup with degraded mode — critical vs non-critical init, Redis fallback to memory (eaf9f9f)
- IMDb rating & meta improvements inspired by aiometadata (928bb28)
- improve active filters UX & fix IMDb ratings streaming (eeec0b1)
- improve search, Stremio metadata quality, and catalog ratings (5f7622d)
- outbound TMDB token-bucket rate limiter — prevent 429 cascades under load (~35 req/s) (eaf9f9f)
- request and provider metrics tracking — per-endpoint latency, per-provider API stats, error counts (eaf9f9f)
- request deduplication — coalesce concurrent requests for same cache key into single API call (eaf9f9f)
- self-healing cache — auto-detect and remove corrupted cache entries (eaf9f9f)
- server: add regional language variants to language selector (25a551b)
- stale-while-revalidate at cache level — serve stale data while refreshing in background (eaf9f9f)
Bug Fixes
- add cache stats (keys, maxKeys, hits, misses, evictions) to MemoryAdapter for /health visibility (6307ba8)
- add LRU-style eviction when cache is full instead of throwing — flushes expired keys first, then evicts 10% with shortest remaining TTL (6307ba8)
- align discover filters with TMDB tv/movie params and UI (7338824)
- client: merge imported catalogs instead of replacing existing ones (6e1aa87)
- Fixed a Client side error causing crashes to safely handle null/non-array values. (867e7e4)
- Fixed Active Filters issues (43e06cc)
- honor release type with regional release dates (813bc35)
- IMDB dataset downloading (dae7642)
- improve Cinemeta rating diagnostics and reduce log noise (920a18c)
- increase memory cache maxKeys from 5000 to 50000 (configurable via CACHE_MAX_KEYS env var) (6307ba8)
- prevent metrics middleware from crashing server on route normalization failure (d2da824)
- reduce stale-while-revalidate grace window from 2x to 1.3x TTL to reduce memory pressure (6307ba8)
- require region for release type filtering and disable UI control without it (62e2319)
- resolve memory cache exhaustion (maxKeys exceeded) in production (6307ba8)
- respect TMDB Retry-After header on 429 responses (eaf9f9f)
- use AbortSignal.timeout for node-fetch v3 compatibility (b9d7298)