| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-03-17 | 11.8 kB | |
| Release v0.21.0 source code.tar.gz | 2026-03-17 | 3.0 MB | |
| Release v0.21.0 source code.zip | 2026-03-17 | 3.4 MB | |
| Totals: 3 Items | 6.4 MB | 0 | |
✨ New Features
TV Guide Program Enhancements
- TV Guide program cards now display richer metadata — Thanks @CodeBormen: (Closes [#1065])
- Season/episode badges (e.g.
S12E06) on program cards - Episode subtitles shown below the program title; falls back to the short description when unavailable
- Status badges:
LIVE,NEW,PREMIERE, andFINALEon both cards and the detail modal - Program detail modal: Click any program to view full details — poster, season/episode, subtitle, duration, categories, cast/credits, content rating, ratings, air dates, video quality, and links to IMDb and TMDB
- Real-time progress bars on currently-airing programs
- Channel name tooltip when hovering the channel logo column
DVR Enhancements
- Major DVR improvements across recording management, reliability, and metadata — Thanks @CodeBormen:
- Stop Recording: New Stop button ends a recording early while keeping the partial file for playback (distinct from Cancel). (Closes [#454])
- Extend Recording: Extend in-progress recordings by 15, 30, or 60 minutes without interrupting the stream.
- Inline metadata editing: Edit title and description directly in the recording details modal.
- Refresh artwork button: Manually re-fetch poster art from the recording card.
- Multi-source poster resolution: Artwork now queries EPG, VOD, TMDB, OMDb, TVMaze, and iTunes.
- Series rules for currently-airing episodes: Series rules now capture currently-airing episodes in addition to future ones. (Closes [#473])
- Search and filter controls added to the recordings list.
- Automatic crash recovery: Recordings stuck in "recording" status are automatically recovered when the worker restarts.
Account Expiration Tracking for M3U Profiles
- M3U account profiles now track and alert on subscription expiration dates:
- New Expiration column in the M3U accounts table shows the nearest expiration date per account, color-coded: red = expired, orange = expiring soon, white = OK. Hover for per-profile details.
- For Xtream Codes accounts, expiration dates are automatically synced from the provider. Non-XC accounts support manual date entry.
- Notifications are raised when an account is expiring within 7 days or has already expired, and are automatically cleared when the date is updated or removed.
Configurable Sidebar Navigation
- The sidebar can now be customized per user — Thanks @jcasimir:
- Reorder nav items via drag-and-drop in Settings → UI Settings → Navigation.
- Hide individual nav items using the eye toggle.
- A "Reset to Default" button restores the default order.
- Changes take effect immediately without a page reload.
Floating Video Player Improvements
- Title display: The channel, stream, or VOD title is now shown in the player header bar.
- Persistent state: Size, position, volume, and mute state are saved across sessions and restored on next open.
New Client Buffer Setting
- New Client Buffer setting in Settings → Proxy: new clients joining an active channel are buffered a configurable number of seconds behind live. Defaults to 5 seconds. Set to
0for no buffer.
Channel Table Has Stale Streams Filter
- New Has Stale Streams filter in the channel table highlights and filters channels containing stale streams (shown with an orange tint). — Thanks @JCBird1012
Next Highest Channel Numbering Mode
- A new Next Highest option is now available when creating channels from the Streams table (both bulk and single-stream). Selecting it assigns channel numbers starting one above the current highest existing channel number. (Closes [#1000]) — Thanks @JCBird1012
Column Sorting Enhancements
- Sort icons added to the Group and EPG columns in the Channels table, and the Group column in the Streams table. Click to cycle through ascending/descending/unsorted. (Closes [#854]) — Thanks @CodeBormen
🔄 Changes & Improvements
Dependency Updates
Djangoupgraded from 5.2.11 → 6.0.3 (see Security section)django-celery-beatupdated to ≥2.9.0
EPG
- The EPG source dropdown when assigning a channel now only lists enabled (active) EPGs, sorted alphabetically.
- EPG output no longer includes already-ended programs when no
daysparameter is specified.
Channels Page Layout
- Default Channels page splitter ratio changed from 50/50 to 60/40 (channels/streams) so all channel action buttons are visible without scrolling on 1080p displays.
Frontend Refactoring
- Various frontend components refactored for better maintainability and consistency. — Thanks @nick4810
🐛 Bug Fixes
DVR
- Fixed duplicate recordings being created for sessions scheduled more than one hour out. (Fixes [#940], [#641]) — Thanks @CodeBormen
- Fixed recordings failing to resume after transient network drops; recordings now reconnect automatically.
- Fixed recordings stuck in "recording" status after a worker restart not being recovered. (Fixes [#619], [#624])
- Fixed output file collisions when multiple recordings targeted the same filename.
- Fixed deleting a completed recording incorrectly terminating an active stream on that channel.
- Fixed recording card logos not displaying.
- Fixed poster artwork lookup producing incorrect results for channels with special characters in their name.
- Fixed the series modal incorrectly showing "No upcoming episodes".
- Fixed series rule deletion leaving orphaned recordings and stale Guide indicators. (Fixes [#1041])
- Fixed series rules dropping scheduled recordings for users in UTC-negative timezones after 4 pm local time. (Fixes [#1042])
- Fixed the recording detail modal crashing on load in production builds.
- Fixed the description field losing focus immediately when opened in the recording detail modal.
- Fixed comskip causing post-processing to fail on recordings with no commercials.
- Fixed season/episode badges overlapping on recording cards.
- Fixed the series rule modal showing a blank state instead of a delete option when the parent rule no longer exists.
- Fixed series rule creation returning a 500 error when stored rule data was corrupted. (Fixes [#1059]) — Thanks @CodeBormen
TS Proxy & Streaming
- Fixed clients getting stuck indefinitely when a stream fails to recover during failover. (Fixes [#1103]) — Thanks @cmcpherson274 & @CodeBormen
- Fixed ghost clients and channels stuck in the initializing state. (Fixes [#695], [#669]) — Thanks @CodeBormen
- Fixed connection slot leaks that could cause stream limits to be exceeded. (Fixes [#947]) — Thanks @CodeBormen & @patchy8736
- Fixed streams dying after 30–200 seconds in multi-worker deployments. (Fixes [#992], [#980]) — Thanks @PFalko
- Fixed audio sync issues on the client side when streams switch between sources. (Fixes [#1102]) — Thanks @cmcpherson274
- Fixed client lag recovery jumping clients too far forward in the buffer unnecessarily.
M3U & EPG
- Fixed memory leak during M3U/XC refresh causing 20–80 MB growth per refresh cycle. (Fixes [#1012], [#1053]) — Thanks @CodeBormen
- Fixed a crash when providers send invalid values for adult content flags. (Fixes [#1061]) — Thanks @JCBird1012
- Fixed M3U attributes (e.g.
tvg-logo) being silently dropped when values contained=characters. (Fixes [#1055]) — Thanks @JCBird1012 - Fixed XC stream refresh crashing when a provider returns streams with a null or empty name; affected streams are assigned a fallback name.
- Fixed 504 Gateway Timeout when saving M3U group settings on slower hardware (e.g. Synology NAS). (Fixes [#745]) — Thanks @nickgerrer
- Fixed EPG parsing dropping entire batches of programmes when a title exceeded 255 characters. (Fixes [#1039])
- Fixed currently-airing programs missing from EPG output immediately after a refresh.
- Fixed table flickering and instability during M3U imports. — Thanks @marcinolek
Docker & System
- Fixed container startup failure when
PUID/PGIDis set due to database folder ownership conflicts. Existing installations are migrated automatically on first startup. (Fixes [#1078]) — Thanks @CodeBormen - Fixed uWSGI segfaults on ARM64/Python 3.13 in dev and debug configurations. — Thanks @jcasimir
- Fixed spurious timezone-related warnings emitted during startup and record creation.
- Fixed several modular mode deployment issues — Thanks @CodeBormen:
- DVR recordings failed when
DISPATCHARR_PORTwas set to a non-default value. - Environment variables (e.g.
REDIS_HOST) were not available during the Redis readiness check. - Environment variable changes after a container restart could be silently ignored.
- Celery worker could hang indefinitely on startup if the web container was slow to start.
dbandrediscontainers now wait for actual health-check readiness before starting dependent services.- Added
host.docker.internalresolution support for Linux hosts. - Modular mode Redis flush now preserves Celery queue data. (Fixes [#1045])
- Fixed
debian_install.shfailures in non-UTF8 environments (e.g. minimal LXC containers), including PostgreSQL encoding issues and background tasks unable to locateffmpeg/ffprobe. — Thanks @marcinolek
UI & Navigation
- Fixed the single-stream channel creation modal not opening when clicking the channel-creation button on an individual stream row in the Streams table. — Thanks @JCBird1012
- Fixed duplicate error notifications being shown when a settings save failed.
- Fixed navigation order/visibility changes from one browser session overwriting changes made in another concurrent session.
- Fixed the "update available" notification persisting after upgrading to the notified version.
Floating Video Player
- Fixed the player getting stuck in resize or drag mode after releasing the mouse outside the browser window.
- Fixed the player being draggable entirely off screen, making the header and controls unreachable.
VOD
- Fixed a crash during VOD library refresh when a concurrent update caused a conflict during orphan cleanup.
🔒 Security
- Updated
flattedto 3.4.1, resolving a High severity unbounded recursion DoS vulnerability (GHSA-25h7-pfq9-p65f) - Updated
Djangoto 6.0.3 anddjango-celery-beatto 2.9.0 to address: - Moderate: Potential denial-of-service via
URLFieldon Windows (CVE-2026-25673) - Moderate: Potential incorrect permissions on newly created file system objects (CVE-2026-25674)