github Pharaoh-Labs/teamarr v2.12.0
v2.12.0 — Multi-Server Push, Smarter Date Parsing & Pattern Tester Truth

latest release: v2.12.1
6 hours ago

Highlights

Multi-server media push. All three media-server integrations — Channels DVR, Emby, and Jellyfin — now support any number of servers, and every configured server refreshes in parallel after each generation. One Dispatcharr can feed the whole family: every DVR gets the same channels and EPG, refreshed concurrently, and one offline server never delays the rest. (#381, #471)

Date patterns finally work the way you meant them. A custom date regex now describes how your source formats dates, not a literal value: Teamarr learns the format from the whole group before matching (one 16/07 proves the source is day-first, so 05/07 parses as July 5 — not May 7), (?P<day>…)/(?P<month>…)/(?P<year>…) component groups declare the format explicitly, and a misread date can no longer silently zero out a group's matching. Date rejections now report date_mismatch instead of a generic "no event found". (#456, #474)

Pattern Tester tells the pipeline's truth. The tester still highlights instantly in the browser, but every stream now also gets a verdict badge from the real Python extraction pipeline — green when teams/dates/times actually extract, amber listing what the pipeline would reject, with invalid-pattern errors and the learned date format surfaced. (#458)

New Features

  • Multi-server Channels DVR EPG push — server list with per-server M3U source + XMLTV lineup (#381)
  • Multi-server Emby & Jellyfin guide refresh with per-row credentials and connection tests (#471)
  • All media-server refreshes run in parallel after generation (#471)
  • Pattern Tester pipeline-truth verdicts via a real backend extraction endpoint (#458)
  • GET /api/v1/stats/homepage — flat KPI endpoint for gethomepage dashboard widgets, with a documented copy-paste widget config (#463)
  • Group-name pattern binding + rename resilience for M3U source groups, with stale-source re-bind suggestions and live match preview (#450)

Enhancements

  • Date-format learning + declared component-group date patterns; trusted dates gate with ±1-day timezone tolerance, unverified dates rank instead of veto (#474)
  • Template variable picker: inline descriptions, examples, and insert affordance (#459)
  • Template editor Assignments tab — see where a template is used and quick-assign (#461)

Bug Fixes

  • Custom regex named team/fighter groups return correct captures when patterns have extra unnamed groups; year-less numeric dates parse (#456)
  • EPG-matched streams no longer captured by stream_type ordering rules (#448)
  • Generation History timestamps stored as UTC and served with offset — no more UTC times in the UI (#444)

Under the Hood

  • Steps 5b–5d unified into one parallel media-server refresh phase; schema v82/v83 fold scalar server settings into JSON lists with per-row secret masking (#471)
  • Bounded regex digit runs in date/time normalizers (CodeQL polynomial-ReDoS) (#458)
  • Legacy 1.x upgrade support removed; README refreshed (#446)

Full Changelog: v2.11.1...v2.12.0

Don't miss a new teamarr release

NewReleases is sending notifications on new releases.