v2.2.0
Optional user accounts and TV casting join HTTP playback, W3U catalogues, sporting events, Telegram sources and built-in recordings, with simpler setup, LAN access and more reliable playback.
Added
-
Link a manually added AceStream to a TV channel directly in the form, or use Add and Link on a search result. Additions and links save together, with existing assignments protected.
-
Preview and schedule optional offline AceStream cleanup in Settings → Automation. Choose an offline-age threshold and repeat interval (14 days and weekly by default), keep linked streams unless explicitly included, and re-scrape affected enabled sources. Unknown status, checker outages and old status without new observations never qualify.
-
Link an event broadcaster once and apply it to every event from that source: the choice is saved as a broadcaster link, listed and removable under Events → Sources & retention, with a per-event override and an explicit "keep source broadcast" option.
-
Assign a whole W3U catalogue folder to a TV channel from its More actions menu, including subfolders such as HD/SD variants, creating the TV channel from the folder name when needed, and match every folder of a catalogue to TV channels in one previewed pass.
-
Open the playlist from the TV dashboard: a Playlist button shows the link with Copy, Download and QR code first, the same options as the Playlist page, and the link-formats editor, without leaving the dashboard.
-
Remove a source's streams when deleting the source (ticked by default, TV channels are kept) and clean up streams left behind by sources removed earlier from a reviewed list under Clean up removed sources.
-
Enable optional user accounts in Settings → Access. Create administrators and viewing accounts with separate permissions for channels, guides, events, recordings, playlists and casting; manage sessions and playback-only credentials, or choose public viewing and local IPTV access independently. Existing installations keep their previous access behavior until accounts are enabled.
-
Cast live streams to Chromecast and Google Cast-enabled Android TVs from the server, including from Firefox and Safari. Integrations → TV casting provides discovery, playback controls and optional H.264 compatibility conversion. Home casting works without accounts; remote server casting requires an account, permission and explicit opt-in. A separate browser-device picker is available over HTTPS in supported browsers (PR #298, PR #301).
-
Add TV Rioja and Sincroguía channel pages as optional EPG sources. Preview and apply event windows over exported XMLTV guides while preserving regular listings and original recording schedules. Regional parsing is adapted from @scarcraft1’s contribution in issue #233.
-
Record TV channels now or schedule a programme from its guide, edit start/end times, stop capture and browse recording history. Download preserved MPEG-TS originals or prepare MP4/AAC playback. Recording is opt-in with a persistent RECORDINGS_DIR; capacity checks, storage limits, protected files and optional retention keep capture bounded. Interrupted captures retain usable parts and may resume after restart. Scheduled starts run independently of maintenance; actual media arrival still depends on source startup.
-
Set up an installation by adding channel sources or choosing a built-in broadcaster, then optionally adding a programme guide and reviewing channel matches. Advanced connection settings are separate. First startup imports existing Docker/environment values into runtime-config.json beside the database; existing database preferences take precedence for settings they already own. Environment values seed the file once and later runtime edits require a restart. The README includes a setup prompt for ChatGPT and shell-enabled coding agents (PR #287, PR #295).
-
Define global import exclusions without deleting existing channels, and save catalogue searches for one-shot or opt-in scheduled additive imports. Preview decisions and track waiting, partial, excluded and unresolved outcomes.
-
Collect AceStream links from selected Telegram groups/channels through an optional user-account connection. Preview extraction, filter senders/topics, and recover progress after restart. Requires HTTPS or localhost, a separate admin token and encrypted session storage with an independent key. Playlist discovery and event/VOD interpretation remain separate.
-
Preview and import Wiseplay/W3U catalogues, browse folders and source details, and keep selected live streams refreshed. Live-channel imports require explicit review; event broadcasts can enter the shared Events preview. Unsupported websites and VOD remain visible with their limits.
-
Browse sporting events, review manual/JSON schedules or structured sports guides, follow events and choose compatible broadcasts. Map broadcasters explicitly, load optional artwork, refresh reviewed schedule URLs and configure separate event retention. Schedules stay separate from permanent TV channels; W3U entries support reviewed event imports; automatic W3U schedule extraction and Telegram event interpretation remain separate work.
-
Import HTTP and HLS playlist streams, including playback headers. Add official live channels from Atresmedia, Mediaset, Telemadrid and 7 TV La Rioja by adding their websites as sources.
-
Discover XMLTV guides from playlists, preview guide matches before applying them, and optionally automate unambiguous matches.
-
Send optional webhook or Gotify notifications when scrapes and channel checks finish.
-
Sync the bundled playback engine’s P2P port with a shared Gluetun forwarded-port file. Port changes restart playback; the dedicated checker keeps its own port.
-
Read version history offline and receive a notice when a newer stable release is published. Updates remain manual: pull the new Docker image and recreate the container, or update your native installation yourself.
Improved
-
Live TV defaults to online streams for both TV channels and Streams. Offline sources stay in the library for scheduled checks, returning channels appear automatically, and browsing or status refreshes preserve the current player. Turn off Online only to try unchecked streams or reveal offline backups.
-
Review similar station names alongside exact TV-channel matches, search the suggestions, select exact matches together and choose one target per stream. Similar names never enter automatic matching; different numbered feeds and explicit country conflicts remain separate.
-
Configure the existing Hide stale or repeatedly failing sources tuner option from Integrations → Media servers, without editing the API setting directly.
-
Browse Live TV through one list with a TV channels, Streams and Events toggle: every TV channel with its current and next programme in a single scrolling list, all streams 50 at a time with an Online only switch, today's and tomorrow's events with Watch for linked broadcasters, and the playing channel's sources as visible chips under the player.
-
Move W3U catalogues into Scraper as the W3U catalogues tab (old links redirect) and Events into the Manage group, leaving Watch with TV dashboard, Live TV and Recordings.
-
Let TV casting follow app access when accounts are off, so the public HTTPS address lists TVs like the LAN address; set CAST_REQUIRE_HOME_NETWORK=true on the container to keep the home-network check. Visitors outside the home never supply the receiver address through their own request.
-
Send a channel directly to a discovered TV from Send to player, alongside VLC and Kodi, without opening the web player first. Network settings are also available under Settings → Network after setup.
-
Name and rename scraper sources, select built-in broadcasters without finding their URLs, and filter AceStream channels by their scraper, broadcaster, catalogue or import source. W3U catalogue details link to the channels they imported (PR #290).
-
Apply shared exclusion and import rules to lists, W3U selections, Telegram messages, saved searches and manual additions. Additive imports preserve existing channel names, assignments and source ownership; manual additions retain the explicit exclusion override (PR #296).
-
Manage WARP host and network exclusions, service startup, automatic connection and IPv4 preference from the WARP page. Startup changes explain when a container restart is needed (PR #299).
-
Reuse unchanged Docker engine and service layers across application updates, and split player and data-grid frontend bundles so unrelated pages do not load them immediately (PR #294, PR #299).
-
Add separate backend/frontend coverage reports and optional local quality feedback for contributors, alongside built-image checks across supported Docker flavours and architectures (PR #288, PR #292).
-
Choose football competitions before fetching Fútbol en la TV schedules, and save a 5–300-second timeout for event-source previews and refreshes.
-
Browse the seven-day TV guide directly in Live TV without starting playback, and schedule a selected programme using its exact guide times. Recording requires an enabled assigned stream. The Docker builder includes a matching persistent recording-folder mount.
-
Filter AceStream channels by Any, Linked or Not linked to a TV channel, and clear the selection with the other filters (PR #270).
-
Import reviewed schedules from Fútbol en la TV (WOSTI Spain) and OpenFootball, with saved sport, competition and team interests and a day-by-day agenda. Prefer unambiguous TV broadcaster links over EPG matches; date-only fixtures keep their kickoff unknown (PR #269).
-
Open the project’s Ko-fi support page from the README or navigation menu (PR #272).
-
Choose the preferred stream order within each TV channel using drag handles, keyboard arrows or move buttons, then save or cancel. Saved preferences guide eligible tuner sources and curated playlists while preserving playback-failure fallback. Contributed by @Devs-Alv in PR #267.
-
TV dashboard shows live reports and the nearest saved events, with Following and browser-saved sport, competition and team interests. Open an event directly to view its broadcasts.
-
Open each integration from its own menu category: Public address, Web player, TV casting, Remote players, Media servers and Telegram now have dedicated setup pages.
-
Land on a TV dashboard with current app playback, channel and stream inventory, and time until the next content updates. Service controls, storage, diagnostics and full scheduled-job history now live in System status.
-
Configure tuner startup budgets for slow sources. Direct-engine startup now respects the remaining player or tuner budget, including time spent waiting for an engine slot.
-
Resume overdue scheduled work after startup, prioritize older and unchecked streams fairly, and pause catalogue checks during app-owned playback.
-
Preserve imported catalogues on assignment conflicts, search by stream ID, and import ZeroNet links while keeping custom gateway prefixes.
-
Keep selected hosts outside WARP with explicit host exclusions. Unknown public-client routing still needs separate configuration.
Fixed
-
Link event broadcasters to TV channels that have no country set, such as "DAZN F1" or "Eurosport 1", while two known and different countries still never match.
-
Apply every selected playlist group filter instead of only the last one, and keep group names that contain commas working.
-
Allow normal account sign-in over HTTP at a private LAN server address, including private Docker bridge/NAT connections, without browser approval codes. Detect Docker proxy peers automatically for new installations while preserving existing overrides. Public addresses retain their separate access restrictions.
-
Find TVs through a bounded local-network scan when Docker blocks multicast, recognize older Android TV responses and recheck known receivers so reachable TVs do not disappear when cached discovery entries expire. Opening the private LAN address can rediscover them after a restart.
-
Launch and wait for Android TV Cast receivers, describe HLS transport correctly and buffer at least 20 seconds of complete media before starting a Cast session. Buffering uses media duration rather than assuming equal segment lengths; original video remains the default.
-
Preserve Unicode passwords during sign-in and refresh account/casting preferences after saves without discarding unsaved changes. Account transitions clear stale protected views and keep playback credentials separate from administrative credentials.
-
Follow Telegram accounts to the correct data centre during login, read a selected forum topic's own messages for previews and catch-up, and recognize AceStream share links containing content_id (PR #284).
-
Give HTTP tuner probing enough data to detect late-arriving audio, report classified FFmpeg failures without leaking signed URLs, and release disconnected HTTP relays promptly (PR #286).
-
Serve 7 TV La Rioja master playlists through the application relay instead of redirecting clients to its CDN (PR #281).
-
Restore catalogue browsing with an empty search, make event-source refresh/removal controls work consistently and show conservative programme-guide associations without replacing event source details (PR #282).
-
Revalidate the application HTML after image updates so reused Docker timestamps do not leave browsers running an old interface; retain long-lived caching for versioned assets.
-
Update Python and JavaScript dependencies, rebuild bundled IPFS and Acexy with a patched Go toolchain, and ship WARP's headless tools without its unused desktop UI. Refresh AMD64 engine CA certificates and remove obsolete bundled dependency copies while preserving legacy engine loading and ZeroNet DHT compatibility (PR #297, PR #300).
-
Show actionable API errors, including missing recording storage, instead of replacing them with generic server-error text.
-
Prevent interrupted Firefox requests from crashing pages during navigation, and keep guide pagination valid while loading.
-
Restore native DNS resolution and connectivity monitoring for bundled ARM engines with a matching bionic DNS adapter. ARM64 native lookups and connectivity were verified; ARMv7 still needs real-hardware validation, and this does not establish infohash playback or performance gains (issue #253, PR #275).
-
Select the highest advertised HLS tuner resolution and offer optional Plex Desktop compatible stereo AAC/LATM audio while preserving video. This option uses additional CPU; verification with the reported Plex installation remains separate (PR #265).
-
Decode gzip-compressed HLS responses even when an upstream ignores the requested identity encoding, fixing affected Telemadrid playback (PR #274).
-
Preserve Sec-Fetch-Mode through playlist import, playback and export, restoring 7 TV La Rioja checks where its CDN requires the header (PR #276, issue #235).
-
Log saved setting names without their values so webhook tokens and other setting secrets do not appear in those log messages (PR #277, issue #41).
-
Resolve AceStream Search results to content IDs before adding or playing them, fixing streams that passed Check broadcast but failed with “failed to load content”. If previously added results still fail, add them again from Search and reassign TV channels to the corrected entries.
-
Play imported HTTP/HLS and broadcaster streams in the browser without an AceStream engine, including freshly resolved Atresmedia links. Select audio and text subtitle tracks in the player.
-
Play assigned HTTP/HLS and broadcaster sources through the Plex/Jellyfin tuner, including channels with no AceStream source. Verify HTTP media independently of the engine, refresh broadcaster links on opening, and try compatible HTTP or AceStream alternatives when startup fails. By default HTTP input is repackaged as MPEG-TS without re-encoding; the optional Plex audio compatibility setting converts audio.
-
Stop browser playback cleanly after terminal HTTP failures and provide bounded, masked source diagnostics. Audio and subtitle selections remain independent between viewers; subtitles default to Off.
-
Respect the configured application port in containers, update bundled Kubo to 0.43.1, and report optional service states more accurately.
-
Improve session cleanup, disconnect handling and HLS segment handling during playback.
Thanks
- @scarcraft1 for guide discovery, notifications, HTTP/HLS sources, playback reliability, scheduling, ARM DNS investigation, Telegram fixes (PR #284), HTTP relay fixes (PR #286) and shared import handling (PR #296); @Devs-Alv for import safety, stream search, ordering and channel filters.
- Thanks to @dcablop391, @Filipedls, @francisjurado74-creator, @atabel, @P10Ms, @illienkist, @tomandocubatas and @ParronS3 for ideas, diagnostics and bug reports.
Before upgrading
-
Accounts remain optional. Keep access.db and access.required with the persisted configuration and back them up consistently; catalogue exports and catalogue recovery do not contain or reset account protection. Enabling accounts on an API_TOKEN installation requires explicit migration: the old token becomes playback-only, and administrative scripts need new header credentials. Account storage uses its own access_0001 migration.
-
For local HTTP sign-in and TV discovery, open the server's private LAN IP. The TV must also be able to reach the application address, including its published port. HTTPS is still required for public account access and browser-device casting. Server casting works from Firefox; not every TV supports Google Cast. Casting prepares a deeper live buffer and can use more temporary player storage; recording playback is not castable yet.
-
Recordings remain disabled until you configure persistent storage and enable them in Automation. Back up the recording folder and database together. Video is preserved without re-encoding, so browser support depends on its codec; originals remain downloadable. Linux multi-architecture and hardware DVR qualification remains outstanding.
-
Once runtime-config.json exists, change migrated runtime options through the app, including Settings → Network and WARP, or through the setup connection settings; alternatively edit the file while stopped. Environment changes no longer override those options. Keep the database directory writable and backed up; ports, mounts and credentials remain deployment settings.
-
Back up persistent configuration and the database. Startup applies schema migrations using the existing backup and recovery process, including channel ID kind (20260928_1200) and HTTP stream URL/headers (20261021_1200), W3U catalogues (20261022_1200), sporting events and maintenance (20261023_1200 / 20261023_1300), their combined migration revision (20261023_1400), Telegram source progress (20261023_1500), preferred stream ordering (20261026_1200), import exclusions (20261027_1200), saved searches (20261027_1300), recording history and stable guide identities (20261028_1200), named sources (20261030_1200), and reviewed event-guide overlays (20261030_1300).
-
Preserve Telegram session storage and its independent encryption key when moving an installation; ordinary database/configuration backups do not include account sessions or keys.
-
HTTP tuner playback requires FFmpeg, included in the container images. Native installations must provide the documented FFmpeg capabilities. Source codec compatibility still depends on the media server/client; switching sources after playback starts normally requires the client to reconnect.
-
Legacy environment aliases remain supported. ARMv7 engine runtime remains experimental. Full Wiseplay compatibility, broader website resolvers, automatic Telegram/W3U event interpretation and movies/series navigation remain follow-up work.
Detailed changelog from release PR #207
The notes above are the canonical changelog shipped with v2.2.0. The expanded details below come from release PR #207, with its historical merge/CI status updated and later completed features reflected. The release targets application commit The PR description credited these 25 community PRs as of its October 28 reconciliation. Later contributions are also credited in the canonical changelog above:
PR #207 merged into main at The #253 reference covers the native ARM DNS correction in #275; #266 covers the merged Search playback correction in #268. The other references cover notifications, M3U guide discovery/export, container port configuration, bundled Kubo, startup budgets, HTTP/HLS imports, regional broadcasters and Gluetun forwarding respectively.
Back up the database and persistent configuration before upgrading. Startup applies Alembic migrations through the existing backup/recovery path, including channel-ID kind ( Back up Legacy environment aliases remain supported. Native installations need the documented FFmpeg capabilities for audio/subtitle playback; container and isolated CI builds use the manifest-defined FFmpeg. Physical ARMv7 runtime and live VPN-provider forwarding remain separately scoped validation.
The canonical “Before upgrading” section above also covers later recording, source, guide-overlay and account-store migrations.
180f544.
Expand the full feature details, contribution credits, scope limits and upgrade notes
Included changes
zero://, missing-site bootstrap and bare JSON.
ACESTREAM_GLUETUN_PORT_FILE synchronizes a validated, debounced port through the bundled playback-engine supervisor. Port changes interrupt playback; UI Stop remains authoritative and the checker stays independent. Explicit WARP host exclusions partially address #93. Bundled changelog history works offline; newer stable-version notices are per browser and updates remain manual.
Further changes included in the release
/, System status at /system, independent integration setup pages, upcoming/followed events and browser-saved interests, compact changelog access and Ko-fi support links. Legacy navigation redirects remain.
/setup wizard and versioned runtime-config.json beside SQLite. Environment values seed 31 reviewed options only when the file is first created; subsequent changes use the wizard/file and require restart. Credentials, commands, ports and mounts remain deployment inputs. Fresh installations contain no default catalogue.
Contributors and acknowledgements
Issues addressed in PR #207
180f544c140f2f0361c386ebd395dcf366ae343d. Its release description identified the following completed issues:
Scope limits and follow-up work
scraper-outpace image flavor.
Additional upgrade and validation detail
20260928_1200), HTTP URL/headers (20261021_1200), W3U catalogues (20261022_1200), sports/maintenance (20261023_1200 and 20261023_1300), the combined migration revision (20261023_1400) Telegram progress (20261023_1500), preferred stream ordering (20261026_1200), import exclusions (20261027_1200) and saved searches (20261027_1300). Telegram session recovery also depends on its protected independent encryption key; follow the Telegram storage documentation.
runtime-config.json with the database directory. After first creation, environment edits no longer override its migrated options; use the wizard or edit the file while stopped, then restart. Ports, mounts and credentials remain deployment settings.
Full comparison · Canonical changelog · Installation and upgrade