Commit Graph
589 Commits
Author SHA1 Message Date
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
knylbyteandeuzu ba53629211 fix: format ipv6 dns targets correctly for http (#641)
fix:  format ipv6 dns targets correctly for http
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
euzuandGitHub 7f286f316c Fix: Input Type mismatch (#630)
* Fix: Input Type mismatch
2026-03-04 19:12:33 +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 34266e1bcd Feature/some fixes (#627)
* Staged input enabled
* Show default values in config
* tmdb release date fix
2026-03-03 17:54:32 +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
euzuandGitHub 86f0813b7c Feature/tmdb query (#615)
* Tmdb query matching
2026-02-26 21:45:55 +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 17df82f006 Sort Order (#600)
* Sort Order
* Frontend refactorings
2026-02-20 20:40:48 +01:00
euzuandGitHub fe6a35676c Feature/login background (#599)
* Login particle flow background
* Fixed initial input folder missing problem
2026-02-20 13:09:30 +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 688952821e fixed: probe_live was ignored. (#588)
Fix probe_live flag
2026-02-15 11:54:51 +01:00
euzuandGitHub 7b8bdaa49b Feature/stream probe (#585)
Stream probe
2026-02-14 17:52:35 +01:00
euzu 0b0738f1ca BPlusTree stress test disabled 2026-02-14 12:22:12 +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 9bd44284d0 DB optimizations (#572)
DB optimizations
2026-02-10 19:37:20 +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
euzuandGitHub 3a2d11284a Feature/timeshift request offset (#571)
Timeshift offset for epg requests
2026-02-09 11:55:05 +01:00
euzuandGitHub 7f98d96ece Feature/timeshift request offset (#569)
Timeshift offset for epg requests
2026-02-08 14:27:58 +01:00