- Actively drop the hyper connection future (`drop(conn)`) on forced socket close to abort active stream bodies immediately.
- Introduce `SocketCloseState` (Open / Closing) in `ConnectionManager with per-socket oneshot channels to ensure targeted signal delivery and prevent premature provider release on repeated kicks.
- Remove user entries atomically under a single write lock in `ActiveUserManager`.
- Explicitly drop shared stream register locks before async teardown.
- Remove duplicate provider cleanup on serve loop termination.
- Add lifecycle integration tests and unit tests for kick idempotency, dropped receivers, and Closing-state provider retention.
Co-authored-by: euzu <euzu@proton.me>
* **New Features**
* Added a Resource Policy editor for each input, supporting trusted hostnames and private network ranges.
* Resource URLs now retain their source input and use authenticated links where supported.
* Resource caching is scoped to the policy authorizing access.
* **Bug Fixes**
* Invalid or unsupported resource values are safely discarded.
* Redirects and destination addresses are rechecked against the applicable policy.
* **Breaking Changes**
* Private DNS destinations require approved hosts and networks; private IP literals require an approved network.
* Input and alias names must be non-empty and globally unique.
- **New Features**
- Added assertions for verifying which provider account handled the latest request.
- Enabled provider-affine playback to fall back to another available provider when the pinned provider is unavailable.
- **Bug Fixes**
- Improved provider fallback handling, origin request tracking, and session updates.
- Preserved session headers when fallback stream setup fails and refreshed them after successful fallback.
- **Tests**
- Added coverage for provider-pool failover, account reuse, limits, rejection handling, and eviction behavior.
* **New Features**
* Added an opt-in runtime liveness watchdog with diagnostics, health status, and optional automatic restart.
* Added configurable stream cleanup capacity and eviction re-entry protection.
* Expanded configuration and UI access for users with playlist or user permissions, with safer data sanitization.
* Added testkit scenarios and reporting for playback, admission, provider limits, sharing, and VOD behavior.
* Added support for experimental-branch Docker builds.
* **Bug Fixes**
* Improved provider prioritization, shared playback capacity, cleanup, reconnect handling, and concurrent client behavior.
* Fixed playlist parsing for declared media types.
* Release links now use the configured destination.
remove the bundled Trakt Client ID and every fallback to it while keeping the compatible trakt.api.api_key field
trim supplied Client IDs, reject blank/header-invalid values before request construction, and skip only optional Trakt curation with one target-scoped warning
translate Trakt 401/403/404/429 responses explicitly, distinguish list/chart 404s, and preserve partial success across configured sources
disable the checked-in Trakt example until an explicit Client ID is configured and update docs and Source Editor terminology
New Features
Added an option to append a stable, numeric stream index to upstream User-Agent headers.
Stream indexes remain consistent throughout a playback session, including manifests, segments, reconnects, seeks, and provider failover.
Added a configuration checkbox for enabling the feature.
Documentation
Documented the new configuration option, including session behavior and restart handling.
Added English, Arabic, and Russian translations for the setting.
Co-authored-by: euzu <euzu@proton.me>
New Features
Programme icons are now captured when importing XMLTV electronic programme guides.
Programme icons are preserved when combining programme data from multiple sources.
Exported XMLTV guides now include programme icon information when available.
Icon URLs are rewritten consistently when URL rewriting is enabled.
Bug Fixes
Public resource requests now avoid following redirects and validate destinations before fetching.
Resource caching behavior is now correctly applied according to the request type.
Compatibility
Existing guides and legacy programme data remain supported when no icon is provided.
Bug Fixes
Live playback sessions now receive unique session identifiers, preventing parallel playbacks from being conflated.
Improved media segment caching under high write activity to prevent competing operations from interfering with capacity recovery.
Provider reservations now remain independent for different channel variants, preventing one playback from reusing or taking over another’s reservation.
Bug Fixes
Improved provider capacity management and reservation handling for shared connections.
Added support for excluding providers during connection allocation.
Improved grace-period expiration and concurrent access handling.
Preserved reserved capacity during fallback and preemptive allocations.
Chores
Improved unused-dependency checks and command configuration.
Removed unused dependencies across multiple components.
Added exceptions for dependencies used indirectly through macros or renamed packages.
Tests
Added coverage for provider reservations, fallback allocation, grace-period expiry, and concurrent grace access.
New Features
Added target-specific bouquet filtering with whitelist and blacklist modes for Live, VOD, and Series groups.
Added an in-context bouquet editor with search, selection controls, status indicators, reset, and streaming previews.
Targets are managed by name, with saved selections available through the Source Editor.
Improved stream alias resolution and provider failover behavior.
Bug Fixes
Existing playlists are preserved when refreshes produce no usable items.
Empty playlists are no longer published.
Configuration changes now recover more safely from persistence failures.
Documentation
Updated feature and configuration documentation and added translations.
* Fix M3U alias credential rewriting on provider fallback
Rewrite opaque authentication query parameters when stream allocation
switches from the primary M3U provider to an alias.
Support unambiguous cross-key mappings such as token to api_key while
preserving unrelated query parameters and rejecting ambiguous mappings.
Add regression coverage for URL rewriting and provider allocation.
* Fix M3U alias credential rewriting on provider fallback
Rewrite opaque authentication query parameters when stream allocation
switches from the primary M3U provider to an alias.
Support unambiguous cross-key mappings such as token to api_key while
preserving unrelated query parameters and rejecting ambiguous mappings.
Add regression coverage for URL rewriting and provider allocation.
New Features
Added translated labels for notification events in English, Arabic, and Russian.
Added plan summaries, inheritance and override indicators, filter notices, and unlimited-value labels to proxy user forms.
Radio button groups can now wrap responsively on smaller screens.
Bug Fixes
Creating a new user list no longer retains the previously selected user.
Improved plan defaults, trial status handling, and form stability when switching plans or refreshing server lists.
UI Improvements
Improved responsive sizing and overflow behavior across tables, panels, lists, and user-management views.
Improvements
Electronic Program Guide (EPG) channels now follow playlist ordering in the web interface and generated XMLTV files.
Channels not included in the playlist appear after referenced channels for more consistent results.
EPG ordering remains consistent across supported playlist formats.
Build and frontend output are more consistent across different development environments.
New Features
Added separate processing and persistence filters, with empty/non-empty checks and expanded filter fields.
Added persistence-stage filter controls in target settings.
Added clear_invalid_epg_ids, preserving playlist entries while clearing unresolved EPG IDs; the legacy setting remains supported.
Added safer, atomic source configuration updates that preserve comments and formatting.
Bug Fixes
Null-like Xtream and Stalker values are now handled correctly.
Duplicate credential warnings provide clearer details.
Bug Fixes
Preserved comments and formatting in sources.yml when saving panel and account-expiration updates.
Kept inline templates intact while applying configuration updates and sanitization.
Improved persistence reliability for updated source configurations.
New Features
Added a target option to require valid EPG programme data for live entries.
Entries without matching EPG data are filtered out when enabled; non-live entries remain unaffected.
Added support for configuring this option in the target editor, with localized labels and explanations.
Documentation
Documented the new setting, including its default behavior and handling when no EPG source is available.