New Features
Added a /ready readiness endpoint with clear initializing, exhausted, and ready states.
Improved health-banner behavior for shared provider capacity, disabled providers, aliases, and idle fallback capacity.
Bug Fixes
Improved capacity calculations with shared provider grouping, overflow-safe totals, and empty-capacity handling.
Documentation
Documented liveness, readiness, and detailed status endpoints, including Docker and orchestrator usage.
* feat(parser): support tvg-type VOD/Series in M3U and synthesize SeriesInfo
- recognize tvg-type=movie|vod|video as Xtream VOD, series|episode as
Series, and live explicitly, taking precedence over extension inference
- for series rows, treat group-title as the show name and #EXTGRP only as
the default Xtream series category, keeping @Group mappable
- group series rows by category + show name and synthesize
SeriesStreamProperties/SeriesInfo via the existing Xtream series path
- extract SxxEyy from titles; generate deterministic u32 episode IDs;
use numeric tvg-id as series ID when available
- build docker with rust 1.95 (project requires rustc >= 1.95.0)
* fix(xtream): serve embedded seasons/episodes for M3U-synthesized SeriesInfo
M3U-synthesized SeriesInfo items carry their series details in
additional_properties but were not recognized by the stream info endpoint
(item_type is not local, no provider URL), so get_series_info returned an
empty array and IPTV clients showed no seasons/episodes.
Route items with embedded details through the local info-document path so
embedded seasons/episodes are serialized by to_info_document.
* fix(parser): normalize series category in M3U series-map key
Shared HLS cache session feature and aligns the runtime, cache, provisioning, recovery, custom-response, and documentation paths with the new shared-session model.
* Fix all markdownlint errors on README.md
* Add markdownlint to ci and makefile
* Fix all markdownlint errors on CHANGELOG.md
* Fix all markdownlint errors on CONTRIBUTING.md
* Fix all markdownlint errors on TODO.md
* Fix all markdownlint errors on docker/README.md
* Fix all markdownlint errors on docker/debug/HOWTO.md
* Fix all markdownlint errors on .github/ISSUE_TEMPLATE/bug_report.md
* Remove TODO.md
**Description:**
This PR introduces a major overhaul of how streams are analyzed and connections are managed. It integrates `ffprobe` for deep stream analysis, adds a background task queue for metadata resolution to prevent UI blocking, introduces a connection priority system, and adds support for Live TV probing.
### 🚀 Key Features
* **FFprobe Integration & Live TV Probing**:
* Automatically probes streams (VOD/Series **and now Live TV**) to determine resolution, codecs (HEVC/AV1), dynamic range (HDR/DV), bit depth, and audio channels.
* **Safe Probing**: Probing strictly respects the provider's `max_connections` limit.
* Docker images now include static `ffmpeg/ffprobe` binaries.
* **Smart Connection Management (Priority System)**:
* Introduced a priority system for connections to manage provider limits intelligently.
* **Preemption**: Users with higher priority can preempt (kick) lower priority connections when provider slots are full.
* **Background Queue**: Metadata resolution and stream analysis run as background tasks (Priority 0). They only run when connection slots are idle and yield immediately if a real user needs to stream.
* **Enhanced Metadata Resolution**:
* **Fallback Logic**: If a provider is missing the TMDB ID or Release Date, the system resolves them via the TMDB API.
* **Smart Title Cleaning**: Implemented a centralized cleaner to strip common IPTV prefixes before attempting metadata matches or generating filenames, significantly improving match rates.
* **Improved Output**:
* **Quality Tags**: Filenames in STRM files now include detailed tags (e.g., `Movie - [4K HEVC HDR].strm`).
* **Flat Grouping**: `flat: true` now correctly groups multi-version movies into single folders based on TMDB ID.
* **Global Series Date**: Ensures consistent series folder naming even if episodes have different years.
* New Features
Added for_each DSL construct for iterating over playlist item fields, with split() function support.
Added "genre" as a queryable and editable playlist item field.
Bug Fixes
Improved short EPG request handling with automatic default limits.
Fixed EPG timestamp formatting to use UTC consistently.
- Updated caching strategy in the GitHub Actions workflow to include additional paths and keys for cargo tools, dependencies, and frontend resources.
- Modified the build script to check if resources are already built before executing the build process, improving efficiency.
- Implemented cache handling for frontend builds and cross-compilation tools to optimize build times.
- Adjusted Dockerfile to improve layer caching by copying dependency files first and creating dummy source files for pre-building dependencies.
- Introduced a new stage in the Dockerfile to select binaries based on target architecture.
- Updated the build script to copy architecture-specific binaries for multi-platform support.