Supersedes v1.19.0 / v1.19.1. If you installed either of those, update.
Changed: the game-thumbs logo tier is now opt-in, off by default
1.19.0 shipped game-thumbs base URL defaulting to the vendor's public instance. That opted every installation into a third-party service which then sees which fixtures you curate and whose uptime your guide's logos depend on. Nobody chose that — it was a default, and a capability worth having is not a dependency worth imposing.
The default is now blank, which disables the tier outright: no HTTP is issued to anyone, and a game with no SportsDB thumbnail falls straight through to the league badge exactly as it did before 1.19.0.
Nothing was removed. The 30 verified league slugs, the 27 alias mappings, the rate-limit pacing and ~80 tests all remain, and the tier works the moment you set a base URL. Self-hosting is the recommended way in — docker run -d -p 3000:3000 ghcr.io/sethwv/game-thumbs:latest, then point the setting at your own instance. That also escapes the public instance's 30 requests/minute cap.
What it costs when off, measured on the same live 23-game slate both ways: 7 channels keep a real SportsDB matchup thumbnail and 16 show a league badge, versus 23 real per-game images with the tier on. That trade is yours to make.
Everything else from 1.19.x still applies
- Tennis and golf events no longer match unrelated sports' channels. A tournament title's last token (
Open,Championship,Masters,Prix) was a keyword strong enough to match alone;Championshipmatched 383 of 22,137 real channel and stream names. Reported by a user whose WTA and ATP events were matching a darts channel and attaching ~140 unrelated streams. - MLS importance no longer reads ~0 all season. The season sweep was clamping itself to 7 days while the simulator needs the whole season. Games with nonzero importance went 9/18 → 18/18. The same change collapsed a ~300-request season fetch into 1.
- League badges for field-event sports (F1, NASCAR, PGA, UFC, ATP, WTA, boxing), which can never earn a head-to-head composite.
- The SportsDB API key can no longer reach a log call. It is a URL path segment, so the composed URL was key-bearing and was being logged through a redactor a static analyser cannot verify. It now logs a static endpoint label instead.
Tests: 3,654 → 3,776, zero failures, zero skips.