| Name | Modified | Size | Downloads / 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, ormanage. (Closes [#1535]) view(the default for standard users) allows channel-scoped listing and playback of recordingsmanageis 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
newstill 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 toYYYY-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)
/vodsredirects 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:latesthad 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_idexists 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
409unlessoverwrite=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/localtimewas 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
-itondocker exec, sochangepasswordcould 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
/channelsinstead 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