π License
- Teamarr is now AGPL-3.0-only (releases before v2.18.0 were MIT). New CONTRIBUTING.md with contributor terms, and the app footer links to the exact build's source (#832, #776)
β¨ New Features
- Managed team channels β opt-in per Team EPG team: Teamarr creates and keeps a persistent Dispatcharr channel in a dedicated numbering range, attaches matching streams only during game windows, and keeps the team guide bound between games β thanks @sethwv (#810, #826)
- Bulk-set managed channels β select rows on Team EPG and use the new Managed Channel action (#844)
- F1 race feeds β per-driver onboard, pit-lane, tracker and timing channels on the exception-keyword engine; roster harvested from ESPN each cache refresh, default Ignore until you opt a driver in; GP-less Apple TV / F1 TV stream shapes bind by roster or timestamp (#245)
- Exception keywords match EPG programme titles too, not just stream names β thanks @lpukatch (#829, #841)
{conference_abbrev}wildcard for channel group and profile patterns; patterns with an unresolved conference token are skipped instead of producing a junk group β thanks @lpukatch (#777, #816)- NCAA lower divisions are opt-in per league (D-II/D-III, and women's volleyball Non-D-I) β thanks @lpukatch (#811, #812)
β‘ Enhancements
- Hockey moves to Bell Media: CHL, OHL, WHL, QMJHL, AHL and PWHL now come from the TSN widget API; a v96 migration rewrites saved team selections and retires HockeyTech-keyed managed channels, which are recreated on the next run β thanks @sethwv (#827)
- ESPN fetches the D-1..D+1 event window in one ranged scoreboard call instead of three (#808)
- Failure reasons are more honest:
event_beyond_window(the stream's date is past your look-ahead) andfixture_league_not_subscribed(both teams share a league you haven't subscribed) replace misleading verdicts β thanks @lpukatch (#791, #796)
π Bug Fixes
- Extracted team names are refined against the known team index before scoring, so competition labels, network suffixes, venue tails and pipe metadata stop poisoning matches (#799)
- Exception keywords never fire on a word the matched event is named with β a
Spanishkeyword no longer drops the Spanish Grand Prix (#803) - Racing single-event matching needs a series or session word; cycling "Grand Prix" streams stop attaching to the F1 weekend (#804)
- Stan Sport's
Olympiakos Piraeusmatches ESPN'sOlympiacosβ thanks @lpukatch (#845, #846) - City translations apply to provider team names too: NΓΌrnberg, Hannover, Sevilla, KΓΈbenhavn match again β thanks @lpukatch (#797, #798)
- Bare club names that exactly equal a different team (
Roma) no longer veto real fixtures β thanks @lpukatch (#789, #794) - Custom-regex league captures resolve to league codes instead of filtering valid streams as
league_not_includedβ thanks @lpukatch (#820, #824) - Two-letter team codes (
TB vs DET) parse as separator sides β thanks @lpukatch (#821, #823) @ <date>tails are no longer read as a game separator β thanks @lpukatch (#787, #792)- Nine more common-word abbreviation codes stopworded (day, sun, red, old, may, big, top, pay, run) β thanks @lpukatch (#788, #793)
- NFL schedule prefixes are stripped from matchup streams β thanks @sethwv (#783, #784)
- Generated preview prose uses the article and plural verb only for plural mascots (
The Bills visit the Dolphins,Arsenal visits Chelsea) β thanks @lpukatch (#785, #815) - No-schedule filler no longer renders an empty next-game line; idle overrides render independently β thanks @sethwv (#837, #838)
- Bell Media team logos restored β thanks @sethwv (#839, #840)
- Media-server refresh toast progress simplified β thanks @sethwv (#786)
- Date-dependent Dayton short-code test fixtures no longer expire β thanks @lpukatch (#813, #814)