Commit Graph
2641 Commits
Author SHA1 Message Date
euzuandGitHub e703c8dd87 fix: honor explicit Flussonic HLS catchup-source with bounded archive… (#887)
* **New Features**
  * Added support for bounded Flussonic HLS catch-up playback when an explicit source is configured, with valid start times and durations of up to seven days.
  * Bounded archive playlist resources now inherit missing query parameters from their source while preserving values provided by child resources. Cross-origin URLs remain unchanged.
* **Bug Fixes**
  * Rewritten Flussonic catch-up output now uses the rewritten mode without retaining the original catch-up type or provider token.
2026-09-30 10:41:54 +02:00
euzu 59e0f242ab ci: bump version v3.3.127 v3.3.127 2026-09-30 07:03:47 +00:00
euzuandGitHub 92346301c1 Fixed: tmdb error stops pipeline processing (#886)
* **Bug Fixes**
  * Playlist publication now continues when optional content curation is unavailable or encounters service, credential, request-limit, or certificate issues.
  * In these cases, regular catalog content can still be published to supported outputs and saved to the cache. Curation-specific views are omitted when they cannot be prepared.
  * Empty playlists continue to be rejected by the regular publication process.
2026-09-30 09:02:32 +02:00
euzu 67515b120e ci: bump version v3.3.126 v3.3.126 2026-09-27 08:25:35 +00:00
euzuandGitHub 305587f40b fix: retry unstarted streams on an available provider alias (#885)
* **Bug Fixes**
  * Playback retries can use another available provider when playback has not started, helping requests proceed if the initially selected provider is unavailable.
  * Once playback has started, retries continue using the same eligible provider to preserve playback continuity.
  * Provider selection follows the same rules for regular playback and forced reopens, reducing unnecessary provider pinning before media begins.
  * Series episode URLs can resolve to the correct account-specific playback address.
2026-09-27 10:23:35 +02:00
euzu de577f6773 ci: bump version v3.3.125 v3.3.125 2026-09-27 07:43:45 +00:00
eb24e51a65 test(curation): cover post-merge admission contracts (#881)
* test(curation): cover post-merge admission contracts

Add regression coverage for the merged TMDB/Trakt behavior and correct the stale first-page changelog wording. Keep all existing tests and production code unchanged.

* test(curation): isolate admission fixture from environment proxies

Use the existing no_proxy test-client pattern at the fixture boundary. Preserve the missing TMDB transport, both catalog policies and all assertions; no production transport changes.

---------

Co-authored-by: Juanjo Presa <juanjop@gmail.com>
Co-authored-by: euzu <euzu@proton.me>
2026-09-27 09:42:49 +02:00
euzu 11efe7a24e ci: bump version v3.3.124 v3.3.124 2026-09-26 16:57:25 +00:00
euzuandGitHub 278bf41d2c Fix/stalker (#884)
* **New Features**
  * Stalker playback resolves channel links on request, using available channel commands and falling back to the stored command when needed.
  * If a portal rejects a session, playback retries once after reconnecting.

* **Bug Fixes**
  * Reading playlists or resolving playback for a different portal identity no longer replaces the published catalog or clears its refresh checkpoint.
  * A failed channel playback no longer prevents other published channels from remaining available.

* **Documentation**
  * Updated Stalker playback guidance to describe on-demand link resolution and session recovery.
2026-09-26 18:56:17 +02:00
euzu 3e1bb60551 ci: bump version v3.3.123 v3.3.123 2026-09-26 15:05:04 +00:00
725917f12b Fix/policy trusted destinations (#883)
* fixing resource url problem

* fix(resources): classify resource destinations per hop and keep the proxy in the fetch path
A resource URL is classified (public / non-public / local) before it reaches a client, and every
redirect hop is classified and fetched again: non-public hops connect directly, public hops go
through the configured proxy, local hops are refused. Adds the public no-redirect resource client,
a process-wide destination memo, and regression tests for the redirect and Web UI paths.

* fix(resources): classify resource destinations per hop and keep the proxy in the fetch path
A resource URL is classified (public / non-public / local) before it reaches a client, and every
redirect hop is classified and fetched again: non-public hops connect directly, public hops go
through the configured proxy, local hops are refused. Adds the public no-redirect resource client,
a process-wide destination memo, and regression tests for the redirect and Web UI paths.

---------

Co-authored-by: euzu <euzu@proton.me>
2026-09-26 17:03:09 +02:00
euzu cfc78fd64a ci: bump version v3.3.122 v3.3.122 2026-09-25 06:23:11 +00:00
euzuandGitHub 2c07d52b93 Fixed max user connection screen when grace granted (#880)
* **Bug Fixes**
  * Improved live-stream session handling during instant grace periods, including when a session has not yet been created.
  * Corrected connection-limit and eviction tracking so active streams remain eligible for eviction even when their session record is unavailable.
  * Improved reliability when switching between live channels under connection limits.
* **Improvements**
  * Updated staged M3U overlays for Xtream providers: staged groups determine selected categories and channels, while unmatched categories remain available. Provider categories with no usable staged channels are retained.
* **Documentation**
  * Clarified how staged Xtream and M3U playlists affect provider categories and channels.
2026-09-25 08:22:11 +02:00
euzu 0d60a54d3e ci: bump version v3.3.121 v3.3.121 2026-09-24 16:11:17 +00:00
euzuandGitHub ffd4316535 Updated the Stalker input handling.
Updated the Stalker input handling. Profile decoding now accepts JSON numbers or numeric strings for status and max_connections, while rejecting malformed values. Bootstrap handling now stops on a decode error or HTTP 429, preserving the useful error instead of cycling through more recipes.


* **Bug Fixes**
  * Improved compatibility with provider profiles that represent numeric fields as strings, while rejecting invalid values.
  * Handshake requests now stop retrying when rate-limited or when responses cannot be decoded; HTTP 429 responses are reported immediately.
  * Rate limits encountered while fetching profiles also stop further retries.
2026-09-24 18:10:08 +02:00
euzu 688806da01 ci: bump version v3.3.120 v3.3.120 2026-09-24 15:38:40 +00:00
Juanjo PresaandGitHub 0d4f113c54 feat: add TMDB Trending target curation (#872)
- add target-wide TMDB Trending discovery for movie/TV and day/week, bounded by an optional `limit` (default 100, range 1–500) of unique remote references before local matching
- compose concrete Trakt and TMDB sources under one target curation policy while retaining legacy `output[].trakt` compatibility
- match only positive TMDB IDs of the same media kind and preserve existing catalog identities, series closure, and Xtream alias behavior
- require every active selector to complete before target IDs, writers, caches, or watches can change
- preserve the YAML-owned block through Source Editor operations and add TMDB setup/failure documentation and application Credits attribution
- validate complete decoded pages under independent request, selector, and shared target-batch budgets, using a configured TMDB-only HTTP profile with certificate/hostname verification and no redirects or replays
2026-09-24 17:36:34 +02:00
euzu 06e2b35009 ci: bump version v3.3.119 v3.3.119 2026-09-23 22:52:04 +00:00
fc51a3acd4 staged m3u to xtream fix (#877)
* staged m3u to xtream fix

* staged m3u to xtream fix

* staged m3u to xtream fix

* fixed race some conditions

* fixed race some conditions

* fixed race some conditions

* fixed race some conditions

* fixed race some conditions

---------

Co-authored-by: euzu <euzu@proton.me>
2026-09-24 00:51:12 +02:00
euzu e6ceddec9a ci: bump version v3.3.118 v3.3.118 2026-09-23 20:47:10 +00:00
179982f08f deadlock fixes: (#878)
- 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>
2026-09-23 22:44:33 +02:00
euzu 211e305650 ci: bump version v3.3.117 v3.3.117 2026-09-22 14:53:13 +00:00
8fa8a3601b feat: add target-wide curated catalog selection (#864)
* test: characterize target curation transition

* refactor: model complete curation outcomes

* feat: configure target-wide curation projection

* feat: apply target-wide curation selections

* docs: explain target-wide Trakt curation

* fix: preserve source-less Trakt policy edits

* target wide curaton selection

* target wide curaton selection

---------

Co-authored-by: Juanjo Presa <juanjop@gmail.com>
Co-authored-by: euzu <euzu@proton.me>
2026-09-22 16:52:11 +02:00
euzu 2297b3700a ci: bump version v3.3.116 v3.3.116 2026-09-22 13:04:15 +00:00
euzuandGitHub 2adc18adbc resource policy trusted destinations (#875)
* **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.
2026-09-22 15:02:22 +02:00
euzu fbc1e669fe ci: bump version v3.3.115 v3.3.115 2026-09-22 10:23:40 +00:00
euzuandGitHub 6ffddc259a Provider pinned failover (#873)
- **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.
2026-09-22 12:21:52 +02:00
euzu 3ffdfc2018 ci: bump version v3.3.114 v3.3.114 2026-09-19 08:19:20 +00:00
euzuandGitHub 6a567d264e Feature/connection handling (#869)
* **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.
2026-09-19 10:17:23 +02:00
euzu c2a636282c ci: bump version v3.3.113 v3.3.113 2026-09-15 11:38:51 +00:00
euzu 97779c54d5 bumped version to 3.3.112 2026-09-15 13:37:54 +02:00
euzu 37d2732cf9 ci: bump version v3.3.111 2026-09-15 10:52:14 +00:00
euzuandGitHub fa5d3237f1 added docker ulimits, .env support, ptt fix (#867)
- **New Features**
  - Added automatic `.env` loading for secrets and environment variables, with custom file paths and existing-environment precedence.
  - Added a `--env-file` option and a sample environment configuration template.
  - Increased Docker file descriptor limits for improved reliability under high connection counts.

- **Bug Fixes**
  - Fixed title parsing for multi-byte UTF-8 characters, preventing crashes and incorrect volume extraction.

- **Documentation**
  - Added guidance for `.env` configuration, Docker usage, restart requirements, and resolving file descriptor exhaustion.
2026-09-15 12:51:09 +02:00
euzu 2833fba738 ci: bump version v3.3.110 v3.3.110 2026-09-14 14:51:48 +00:00
33ed942c16 feat(update): add per-cluster quality safeguards (#855)
* feat(update): add per-input actions and pipeline transparency

Squash feature/cluster-update-quality onto upstream/develop.

Include request-local update policies, persisted input and cluster status, library rescan and target rebuild integration, and the update-card view. Align the M3U request regression with the existing Force capability.

* del(build): temporary dev changes

* fix(update): address playlist review findings

* fix(update): rename Shows to Series

* Playlist update refactor

* Playlist update refactor

---------

Co-authored-by: euzu <euzu@proton.me>
2026-09-14 16:44:23 +02:00
euzuandGitHub a25801e906 Add Cargo.toml for curation in Dockerfile 2026-09-11 08:07:10 +02:00
euzuandGitHub 8a4f78cbcd Add curation Cargo.toml to Dockerfile 2026-09-11 08:06:13 +02:00
euzu da9c03a688 ci: bump version v3.3.109 v3.3.109 2026-09-09 18:44:09 +00:00
145b082a4f refactor: extract source-neutral playlist curation (#860)
* refactor: extract source-neutral playlist curation

* fix: keep curation matches within media kind

---------

Co-authored-by: Juanjo Presa <juanjop@gmail.com>
2026-09-09 20:40:53 +02:00
euzu 019fb7fde2 ci: bump version v3.3.108 v3.3.108 2026-09-05 16:00:37 +00:00
Juanjo PresaandGitHub 079c5c7a10 fix: require a user-supplied Trakt client ID (#859)
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
2026-09-05 17:59:25 +02:00
euzu 89d45c5657 ci: bump version v3.3.107 v3.3.107 2026-09-05 15:15:55 +00:00
806dd574d3 User Agent (#861)
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>
2026-09-05 17:14:49 +02:00
euzu 3a3b178807 ci: bump version v3.3.106 v3.3.106 2026-09-05 08:19:50 +00:00
euzuandGitHub 70daecb9a3 epg programme id (#858)
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.
2026-09-05 10:18:32 +02:00
euzu 1970796de9 ci: bump version v3.3.105 v3.3.105 2026-09-04 13:47:53 +00:00
euzuandGitHub bdb845c09e fix HLS cache race and session reservations (#857)
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.
2026-09-04 15:46:28 +02:00
euzu 5b27080f82 ci: bump version v3.3.104 v3.3.104 2026-09-04 08:51:01 +00:00
euzuandGitHub c592411409 Fix/provider priority (#856)
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.
2026-09-04 10:49:45 +02:00
euzu d673b47c88 ci: bump version v3.3.103 v3.3.103 2026-09-03 16:02:58 +00:00