Download Latest Version Release v0.31.0 source code.zip (4.8 MB) Google Add to Preferred Sources
Home / v0.30.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-08-29 10.8 kB
Release v0.30.0 source code.tar.gz 2026-08-29 4.1 MB
Release v0.30.0 source code.zip 2026-08-29 4.7 MB
Totals: 3 Items   8.7 MB 0

Dispatcharr Release Notes - v0.30.0

✨ New Features

Per-User DVR Access Levels

  • Admins can set a single DVR Access level on the user Permissions tab: none, view, or manage. (Closes [#1535])
  • view (the default for standard users) allows channel-scoped listing and playback of recordings
  • manage is opt-in and unlocks the full DVR experience (recordings, recurring and series rules, stop/extend, metadata, artwork, and comskip). System comskip settings remain admin-only
  • Streamer accounts are excluded from DVR. The DVR nav item and manage actions in DVR / Guide follow the same gates

Per-User VOD Movie and Series Access

  • Admins can turn Movies and Series on or off independently on the user Permissions tab (Enable Movies / Enable Series). (Closes [#1188]) - Thanks @brendongl:
  • Both default on, so existing users keep access after upgrade
  • When a kind is disabled, that user no longer sees it in the web UI, REST catalog, or XC listings, and playback for that kind is blocked

Series Rules: Treat Untagged Episodes as New

  • An optional per-rule Treat untagged episodes as new switch for series rules in mode new, useful for guides that only mark repeats. - Thanks @v8eta:
  • Mode new still defaults to requiring an EPG <new/> tag
  • When enabled, programmes carrying neither <new/> nor <previously-shown/> are also treated as new
  • Programmes tagged <previously-shown/> stay excluded; an explicit <new/> still wins. Existing rules and default behaviour are unchanged
  • The rule editor preview matches what the scheduler would record

Original Air Date in DVR Fallback Filenames

  • When a programme has no usable season/episode, TV fallback path templates can include {original_air_date} from the EPG, normalized to YYYY-MM-DD. (Fixes [#1518]) - Thanks @nilleiz:
  • Missing metadata resolves to an empty value without substituting broadcast or recording dates
  • The placeholder is available only for the TV fallback template

Responsive Table Column Sizing

  • Channels and Streams tables share available width as ratios between content columns. Dragging a divider transfers space only to the adjacent column, with limits that scale to the table width. (Fixes [#1169])
  • Each table includes a reset-widths action. Channels prioritizes the Name column by default; Streams adapts its budget to visible columns

Auto Channel Sync: No Profiles

  • The per-group Channel Profiles control includes a No Profiles option. Sync still creates and updates channels but leaves profile membership entirely manual. - Thanks @raclo:
  • Clearing the selection keeps the historical default of assigning all profiles
  • Selecting one or more real profiles keeps the previous reconciliation behaviour

Empty Channel Profiles and Add to Profile

  • Creating a channel profile can Start empty instead of backfilling every channel. (Closes [#1080]) - Thanks @Veneziaisking:
  • Selected channels can be added to another profile from the Channels toolbar without changing the source profile

Persistent Table Working State (Per Tab)

  • Channels and Streams filters, sort order, and the Channels profile dropdown persist for the browser tab and restore when you navigate within that tab
  • Closing the tab clears them. Page size, column sizing, and column visibility remain stored across sessions as before

🔄 Changes & Improvements

VOD Navigation

  • Standard users with movie and/or series access enabled now see VODs in the sidebar (both flags default on)
  • /vods redirects to Channels when both are off. When only one kind is allowed, the type control is hidden and the catalog is locked to Movies or Series

Channel Profiles & Tables

  • Creating or duplicating a channel profile selects it in the Channels table (and remembers that choice for the tab)
  • Channels and Streams header actions are icon-only with tooltips (Edit, Delete, Add, Add to Profile, and related controls)
  • M3U and EPG source type filters clear when the tab closes (same pattern as other working table filters)

Dummy EPG Consistency

  • Custom dummy, fallback templates, and standard filler programmes now share one generation path for XMLTV export, the EPG grid, and XC single-channel EPG, so filler text and metadata stay consistent across those surfaces

Original Air Date Handling

  • Original air date is stored and exposed more consistently from XMLTV and Schedules Direct, so the programme API, UI Original Air, and exported <previously-shown start="..."> align across guide types

Docker, FFmpeg, and Comskip

  • The Docker base image is pinned to FFmpeg 8.1.2. Tracking ffmpeg:latest had moved to FFmpeg 9 / NVENC API 13.1, which breaks NVENC on legacy GPUs (for example Pascal) capped at older drivers
  • Comskip is built from current upstream instead of the distro package

Error Reporting

  • The frontend error boundary shows a diagnostic recovery panel with a copyable report. Stacks are decoded against a production sourcemap only when an error occurs and a report is requested

🐛 Bug Fixes

DVR & Series Rules

  • Fixed TV recording filenames losing season/episode after an EPG refresh replaced the programme row. Bookings keep S/E from the snapshot when the live guide row is gone. (Fixes [#1307]) - Thanks @v8eta
  • Fixed series rules double-booking when an identity-less recording later matched an identifiable listing after a small start-time nudge. - Thanks @v8eta
  • Fixed series rules scheduling a second recording when XMLTV nudges programme start/end between refreshes. - Thanks @v8eta
  • Fixed series rules resolving the wrong EPG copy when the same tvg_id exists on multiple sources, and rules that silently scheduled nothing when the channel used an override EPG. New rules pin a specific EPG source. (Fixes [#1529])
  • Fixed scheduling an in-progress programme leaving the recording stuck in Upcoming instead of starting immediately

Dummy EPG & Guides

  • Fixed custom dummy EPG leaving a channel empty until shortly before a dated event. Filler now runs from the current time (or export lookback) through the event and after
  • Fixed dummy EPG grid and XC endpoints ignoring channel name overrides and stream-based regex parsing, and ignoring export-window bounds for on-demand dummy programmes
  • Fixed dummy EPG fallback templates generating a full-day grid when a narrower export window was requested
  • Fixed XC short EPG returning (and building) a full multi-day dummy grid instead of honouring the requested limit
  • Fixed TV Guide showing stale or wrong channel logos after bulk-adding channels. (Fixes [#955])

Live Streaming & Player

  • Fixed the live web player stopping permanently on a transient network error; it now reconnects with backoff. (Fixes [#1566]) - Thanks @jstevenscl
  • Fixed live proxy failover sticking on the last backup after every stream was tried once. After a successful connection, rotation can wrap back to the first stream after a short cooldown. (Fixes [#310])
  • Fixed manual stream switches not clearing failover bookkeeping on the worker that owns the channel, so automatic failover could still skip streams marked tried

VOD & XC Playback

  • Fixed XC VOD playback returning 500 instead of 401/403 on bad credentials or blocked networks. - Thanks @brendongl
  • Fixed XC VOD episode streaming returning 500 for a stale or missing episode ID; missing episodes now return 404. - Thanks @jstevenscl

Channels, Logos & Auto Sync

  • Fixed Channels table crashing or getting stuck refreshing when stale client state contained invalid rows
  • Fixed deleting the currently selected channel profile crashing the Channels page
  • Fixed Auto Channel Sync failing or clearing logos when a provider supplies an oversized logo URL (for example embedded base64). Channel creation continues without a logo, and a valid existing logo is kept. - Thanks @raclo
  • Fixed uploading a logo with the same filename as an existing one silently keeping the old image. The UI now prompts to confirm overwrite; API clients get 409 unless overwrite=true. (Fixes [#330])
  • Fixed bulk channel creation and VOD import failing when provider-supplied logo names exceed 255 characters. (Fixes [#1470])
  • Fixed artwork URLs without a trailing slash returning the SPA HTML shell instead of the image (channel logos, VOD images, Schedules Direct posters). (Fixes [#1590])

Docker, Redis & Stability

  • Fixed busy Docker deployments failing new live streams with Too many open files while the UI and healthcheck still looked healthy. Web workers now raise their open-file limit after startup (default 65536, overridable with DISPATCHARR_NOFILE). (Fixes [#1554]) - Thanks @brendongl
  • Fixed Redis idle clients and connection pools accumulating open sockets under load; idle clients time out and pools are bounded
  • Fixed live-proxy background work starting in Celery and Daphne processes that do not serve streams
  • Fixed Celery Beat missing future recordings when /etc/localtime was bind-mounted from a non-UTC host
  • Fixed Comskip aborting on decoder init in Docker. It now runs with a single decoder thread, and failures log returncode, command, and stderr. (Fixes [#1251])
  • Fixed forgot-password Docker instructions omitting -it on docker exec, so changepassword could not accept interactive input. - Thanks @andreyan-andreev

EPG, Schedules Direct & Logging

  • Fixed Schedules Direct guide refresh silently dropping channels on transient API failures (false "up to date" or placeholder titles). Batched requests now retry with backoff
  • Fixed application log timestamps always showing UTC even when the UI display timezone differed. Logs now follow the configured display timezone. (Fixes [#1439]) - Thanks @nagelm

Login & UI

  • Fixed login always sending you to /channels instead of the page you originally requested, and flashing the login form on page load when a valid session already existed. (Fixes [#715], Fixes [#1526], Fixes [#1576])
  • Fixed VODs double-fetching the catalog on mount when page size or single-type access was still settling
Source: README.md, updated 2026-08-29