Commit Graph
429 Commits
Author SHA1 Message Date
euzuandGitHub a05b0536f5 Feature/stream meter (#659)
* Connection lock for shared stream fixed
* stream meter
2026-03-21 05:29:59 +01:00
euzuandGitHub 66915a306d Feature/rbac (#656)
* RBAC implementation
* Schedules config edit mode
2026-03-20 15:31:19 +01:00
euzuandGitHub dab98b8d39 fixed connection exhausted because of user priority handling (#655)
* fixed connection exhausted because of user priority handling
2026-03-19 16:51:18 +01:00
euzuandGitHub e367f1fe7c - Fix: resolve task database problem (#654)
- Fix: resolve task  database problem
- Fix: m3u parsing when staged input delivers virtual id
- provider id extraction from url refactored
- some optimizations for hashutils
2026-03-19 12:49:45 +01:00
euzuandGitHub 6909fa0f25 Fix/stream upstream error status (#653)
* stream upstream error diagnostics
* fixed config view forms because of yew hook changes
2026-03-18 19:20:36 +01:00
26f45700bf Fixed episode redirect extension (#652)
* Fixed episode redirect extension

* episode handling for redirect

* coderabbitai fixes

---------

Co-authored-by: euzu <euzu@proton.me>
2026-03-18 11:09:56 +01:00
euzuandGitHub bdf466c1a4 Fix/resolve probe custom aut error status code (#650)
* Added CACHEDIR.TAG file  for backup programs to skip cache dir.
* Fixed unneccassary task rescheduling
* Default custom auth failed http status response
2026-03-17 14:02:46 +01:00
euzuandGitHub 7df1c81683 Fixed some probe resolve problems (#647)
Fixed some probe resolve problems
2026-03-15 23:59:13 +01:00
euzuandGitHub f0459e7e14 Fix/hls connect m3u parsing probe resolve (#646)
* Fix HLS session handling and disable retry for adaptive segment requests
* Resolve / probe vod task uses last modified date
* Resolve expiration date in input form
* fixed m3u parsing
* fixed wasm opt for frontend build
2026-03-15 23:32:09 +01:00
euzuandGitHub 392bcbfdc2 Fix/resolve probe tasks (#644)
* Fixed issues with probe and resolve tasks
* hls and catchup session fixes
* fixed problem with grace and shared stream
- added fix for missing episode title
2026-03-15 08:32:18 +01:00
euzuandGitHub a429ee7256 Feature/stream table (#643)
* keep user table info in frontend when switched to custom video stream
* Fixed problems caused by yew upgrade because of UseStateHandle and UseReducerHandle PartialEq change.
* reformatted
2026-03-13 19:19:41 +01:00
euzuandeuzu 31438c64b2 Feature/optimizations (#642)
* - Refactored Shared-Stream hot path from Arc<Bytes> to Bytes (leveraging internal reference counting).
- Switched Metadata Trigger deduplication from Arc<Mutex<HashSet<_>>> to Arc<DashSet<_>> to reduce lock contention.
- Eliminated expensive key cloning in the InputMetadataUpdatesCompleted handler.
- Changed active_target_inputs to HashSet<Arc<str>> to avoid per-event to_string() allocations.
- Implemented bounded Cleanup-Queue (switched from unbounded to mpsc::channel(4096)) with a dedicated overflow path (try_send + async flush) to prevent uncontrolled memory growth.
- Optimized by_provider storage by switching from Vec<(addr, alloc_id)> to HashSet<(addr, alloc_id)>, reducing removal complexity from $O(n)$ to $O(1)$ average.
- Optimized ActiveConnectionInfo data layout by reordering fields (large fields first) to minimize padding and improve cache efficiency.

* Improve shared-stream reliability and align docs

- make shared connection registration fallible with rollback on failure

- guard shared broadcaster startup behind successful subscription

- optimize shared stream/provider key maps to Arc<str>

- add Tokio macros feature for runtime and dev dependencies

- harden build_resources.sh with fail-fast ffmpeg error handling

- clarify StreamError display messages with variant context

- sync README stream/custom-response sections with current behavior

* low_priority_preempted stream
* Keep custom TS timestamps monotonic across loops
- advance timestamp offset by stream duration on buffer wrap
- avoid resetting PTS/DTS to zero each cycle
- prevents players from treating looped custom streams as ended/corrupt
* low_priority_preemption custom video stream fix
* inc_version uses now main toml file
* Fixed some coderabbit issues
2026-03-13 15:17:20 +01:00
euzuandeuzu dc1e2d2168 Feature/build optimization (#640)
* Optimized build
* timeout secs for custom video response
* init custom video timeout on mode switch
* terminate immediately when custom video buffer is missing
* add provisioning missing-custom timeout regression test
* add missing-custom termination tests for all custom modes
* fix ts continuity handling for discontinuity and adaptation-only packets
* fix ts loop duration estimation to use min/max timestamps
* harden pes timestamp patching and normalize pid cc sequence
* Resource ffmpeg creation without B-Frames and short GOPs
* Discontinuity patch for transport stream buffer
* grace hold stream is now default true
* streaming fixes
2026-03-13 15:17:20 +01:00
euzuandGitHub e83cee401f Feature/user priority (#639)
* user connection priority over all aliases
* active client stream priority preemption
* Fixed paths override in read config
* Added custom video stream timeout settings
* Scheduler fix
2026-03-11 12:25:54 +01:00
knylbyteandGitHub c2fdf50642 Feature/dns resolver (#638)
* fix: log resolved provider URLs across stream flows

* fix: split request and provider-key stream logging

* fix: avoid consuming dns rotation in log preview

* test: cover https dns log preview rotation
2026-03-10 13:49:52 +01:00
euzuandGitHub f47d1ee2c3 Api User Priority (#637)
Added  Api User Priority
2026-03-09 17:12:46 +01:00
euzuandGitHub 497a75e0bb Feature/resolve probe fairness (#636)
* Added Resolve - Probe fairness to avoid probe starvation
* Added Probe setting to setup wizard
* Playlist sort order fix
2026-03-08 14:53:05 +01:00
euzuandGitHub 1dd090d9ec - Staged Input source selection (#635)
* Staged Input source selection
- batch input validation fix
* episode source ordinal fix
* playlist filter streaming
* Input validation fixed
2026-03-07 16:44:27 +01:00
euzuandGitHub 737d04d08b Feature/staged input and path improvements (#632)
* No template file not found error message
* Setup wizard improvmenets
* path improvements
* staged input fix
* path improvements
* Provider dns resolved ips now writing to a file instead of source.yml
* Playlist update hard kill after 1h
* matadata update tmdb fix
* Web UI fixes
* GeoIp update schedule
* batch:// prefix  for aliases
2026-03-06 17:29:42 +01:00
knylbyteandGitHub c5632d0c98 fix: log resolved request URLs instead of provider scheme (#631)
* fix: log resolved request URLs instead of provider scheme
* fix: resolve provider log URLs only when sanitization is enabled
* fix: trigger provider failover on http 407
* fix: documentation for provider failover trigger
* moved resolve url into debug statement to avoid building it when log level i not debug
2026-03-06 11:37:20 +01:00
euzuandGitHub 36dcd0ff12 rewrite resource urls for webui (#629)
* rewrite resource urls for webui
* fix for dbviewer
* added metadata update new field
2026-03-05 00:04:53 +01:00
knylbyteandGitHub 08db389f5e bugfix/dns resolver - web ui and resolved list (#626)
* fix: preserve provider dns.resolved order by provider URL sequence
* fix: preserve provider dns data on web ui source saves
* fix: keep provider source edits and dns resolved on ui save
* fix: preserve provider URLs during panel-api provisioning
* fix: prevent lost updates with config revision checks
* fix: honor disabled dns and track config context in input form
2026-03-03 19:35:31 +01:00
euzuandGitHub 765f8f72bc Feature/metadata update (#625)
- Metadata Updater fixes
- Input Form Provider Config
2026-03-02 19:56:22 +01:00
knylbyteandGitHub faac89325b feat: add provider DNS IP-connect, resolved persistence, and SNI-safe failover (#624)
* feat: add provider DNS IP-connect, resolved persistence, and SNI-safe failover
2026-03-02 12:24:05 +01:00
euzuandGitHub 4a36173796 XmlTv generator info contains now the server base url from api-user (#623)
XmlTv generator info contains now the server base url from api-user
2026-03-01 16:02:40 +01:00
euzuandGitHub f569c5de06 Feature/stats and streams page (#622)
* Configure Stats & Streams combine
* Stats and Streams view configurable combined or separated
2026-03-01 15:30:50 +01:00
euzuandGitHub dea26c5ef9 Fix: M3u playlist wrong picon url (#617)
* Fix: M3u playlist wring picon url
2026-02-26 22:09:37 +01:00
knylbyteandGitHub f8ae4c9d56 fix: use manual redirects only for http proxies and apply proxy setting to ffprobe subprocess (#612)
* fix: use manual redirects only for http proxies
* fix: sync panel api on manual playlist update
* fix: route ffprobe probes through configured proxy
* fix: handle non-unicode proxy env vars safely
* fix: serialize panel api sync and align sync naming
* fix: manually follow hls redirects when proxy is configured
* fix: align hls manual redirect with proxy scheme
* fix: emit playlist update failure when lock is closed
* fix: align probe and scheduler paths for upstream merge
* fix: remove playlist lock retry and name hls redirect limit
2026-02-26 20:36:01 +01:00
euzuandGitHub e8c908e8fd Feature/bplustree delete (#614)
* BPlustree remove implementation
2026-02-26 19:31:52 +01:00
euzuandGitHub 96a5512b65 TMDB retry fixed and added cooldown. (#613)
New Features

Background probing for Live streams with configurable interval; new input options to trigger probing and toggle background resolution.
Configuration Changes

metadata_update reorganized into grouped sections: log, resolve, probe, ffprobe, tmdb.
FFprobe controls moved under ffprobe.* and now require explicit time/size units; new live ffprobe settings.
Added metadata_update.tmdb.cooldown (default 7d) and grouped TMDB settings.
Bug Fixes

TMDB no-match cooldown to prevent endless requeues.
Documentation

README and UI help updated to reflect grouped metadata_update fields and explanations.
2026-02-26 14:41:02 +01:00
euzuandGitHub 3be0fa347f MetadatResolve hardening rerties after errors (#611)
* MetadatResolve hardening rerties after errors
2026-02-25 19:30:19 +01:00
euzuandGitHub 02989dd05f Fix: update_on_boot playlist update and metadata solver deadlock (#610)
- Fix: update_on_boot playlist update and metadata solver deadlock
- probe task release with grace time
2026-02-24 18:59:51 +01:00
euzuandGitHub 0db2af05f4 Feature/vod stick to provider (#609)
* Vod Seek provider selection fix
2026-02-24 16:03:39 +01:00
euzuandGitHub 43909f1a5d - Fixed telegram markdown escape (#606)
- Fixed telegram markdown escape
- Fixed sort order for episodes
- Fixed session stickyness problem for vod and series
- Fixed template resolution
2026-02-24 12:51:51 +01:00
euzuandGitHub cbb305c456 wrong account allocatoin vod/series
Was allocating the right XC account but sometimes still storing/reusing the old base stream URL (often the first batch account) for VOD/series sessions, especially around seek/reconnect. (#605)
That caused provider/account mismatch and possible single-connection resets.
2026-02-23 21:16:45 +01:00
euzuandGitHub d0ce95eb3c Fix/web UI save overrides templates (#604)
- WebUI save overrides templates
- Deadlock during playlist update and metadata background task
- Global templates like mappings
2026-02-23 17:00:11 +01:00
euzuandGitHub 9b742997b0 initial setup (#601)
Initial Setup Wizard
2026-02-23 11:46:21 +01:00
knylbyteandGitHub dedf6bb63b fix: set input.options defaults if input.options is none and normalize missing /live prefix for hls streams (#602)
fix: set input.options defaults if input.options is none and normalize missing /live prefix for hls streams
fix: document defensive options guard in config input prepare
fix: group configinputoptions methods in one impl
fix: document fallback semantics for configinput _or flag helpers
fix: restore false fallback for missing options in flag checks
2026-02-22 23:27:40 +01:00
euzuandGitHub f0121917eb Fix/rabbit (#596)
Fixed some rabbit.ai issues.
The PR standardizes and improves error handling and logging across playlist, EPG, and repository modules: it changes M3U iteration to continue on individual read errors, introduces async watcher tasks to await and log blocking-thread failures, adds temp-file cleanup and more descriptive disk/source error logs, and removes two noisy DB-viewer logs.
2026-02-18 09:04:40 +01:00
euzuandGitHub 815487e4f5 Fix/peristed m3u file invalid provider url (#595)
Fixed m3u playlist with  provider_config persistence as text file
Added probe_delay input option (default 2s); stream probing renamed “Stream Probing” and now covers live, VOD and series as a low‑priority background task.
2026-02-18 08:18:28 +01:00
euzuandGitHub ef26c6645c Feature/schedule local library scan (#593)
Schedule Local library scan

New Features

Scheduler now supports Local Library scans alongside playlist updates; schedules can trigger either task type.
Each schedule can specify a Type: PlaylistUpdate or LibraryScan (defaults to PlaylistUpdate).
UI

Schedule editor: new Type selector and TYPE column; Targets field shown only for PlaylistUpdate.
2026-02-16 15:47:44 +01:00
euzuandGitHub 0f55ff83eb deadlock during update through background probe (#591)
deadlock during update through background probe
2026-02-16 11:22:06 +01:00
euzuandGitHub dd7d3c6fe3 Target is updated after all resolve tasks finish (#590)
Target is updated after all resolve tasks finish
2026-02-15 17:31:14 +01:00
euzuandGitHub 7bc66a90df CSP inline style fixes (#589)
CSP inline style fixes
2026-02-15 15:40:43 +01:00
euzuandGitHub 7b8bdaa49b Feature/stream probe (#585)
Stream probe
2026-02-14 17:52:35 +01:00
euzuandGitHub 38813bb672 Feature/makefile ci and log with local time (#582)
- Add Makefile to simplify installing required tools
- Add CONTRIBUTING.md welcome new contributors
- Add fmt, lint, test tasks to makefile and update CONTRIBUTING.md
- Add CI workflow
-  Log with local date
2026-02-14 12:12:59 +01:00
euzuandGitHub dffa8a8873 shared stream between targets (#574)
shared stream between targets
2026-02-12 19:18:16 +01:00
knylbyteandGitHub 55ea77d8f2 feat: sort alias accounts descending and fixed sorting for csv batch (#573)
sort alias accounts descending and fixed sorting for csv batch (#573)
2026-02-12 18:50:40 +01:00
euzuandGitHub fc0f1f32aa Enhanced Metadata Resolution, Stream Analysis & Improved STRM-Output. Added connection priority management.
**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.
2026-02-12 15:06:57 +01:00
euzuandGitHub 555bc2cce1 Feature/provider config (#570)
New Features
- Automatic provider failover & rotation across multiple provider URLs with a provider:// scheme and capped retries
- Configurable failover redirect patterns to influence retry/failover behavior
UI

- New interface to view and edit failover redirect patterns in reverse proxy configuration

- Expanded docs covering Provider Failover & Rotation and enriched messaging templating
Reliability

- Improved URL resolution, error reporting and logging for more robust provider handling
2026-02-10 11:53:42 +01:00