🎉 v2.13.2 — 2026-08-28
🐛 Bug Fixes
- Fixture gate no longer rejects real games when a stream uses a city-only label (
Milwaukee @ New York Mets), a shared abbreviation (HOU at NYM), or a bare-city alias — only full names count as exact identities now (#619) - College football now fetches FCS and Division II/III games alongside FBS, and no longer loses most of the FBS slate to an ESPN response cap (#625)
- Explicit league hints in a stream name override a cross-league identity veto (#619)
- Enforcement no longer deadlocks against the group processor's own transaction (30s stall + dropped writes every run) (#607)
- A failed event prefetch is no longer cached as an empty day (#605)
✨ New Features
- Share-safe support bundle export: redacted diagnostics with stream URLs, account names, credentials and tokens stripped — thanks @sethwv (#618)
- M3U account ID fallback with auto-healing for stale account references after a re-import (#628)
⚡ Enhancements
- Generation hot-path pass: matching, cache eviction, event prefetch and template resolution —
match_multi_league3.5x faster, template resolution 4.4x (#605) - Stream-list pages are fetched concurrently instead of 34 sequential requests (#610)
- Country resolver and team identity index are built once per run instead of once per group (~22s saved on large installs) (#609)
- ESPN requests send a curl User-Agent to avoid Akamai 403s — thanks @sethwv (#615)
🔧 Under the Hood
- Duplicate INFO logging cut from group resolution and template selection (#607)
- Dependency bumps: ruff 0.16.4, setup-uv 10.0.1, frontend minor/patch group