Commit Graph
229 Commits
Author SHA1 Message Date
euzuandGitHub c82169542f Fix/hls rewrite css fixes (#685)
* hls uri rewrite fixed
* source editor canvas pan delete icon fix
* css-fixes
* added epg smart match form to input
* staged input fix
* Disable wasm compression
2026-03-31 14:28:43 +02:00
euzuandGitHub bb82798457 Fix/local series episodes (#681)
* Local and provider series uuid generation fixed.
* fixed some local media issues
2026-03-29 15:13:00 +02:00
euzuandGitHub 9d35a9cbbe Sorce ordinal by category and channel index (#672)
* Sorce ordinal by category and channel index
* Parsing UserApiRequest from request body or query
* CSS stylings
* media tools refactoring
* xtream info parsing now number/string fields
2026-03-27 15:23:39 +01:00
euzuandGitHub bd98921fe1 Fix/logging local library schduled targets (#670)
* Reverted wrongly merged logging changes
* Metadata Classifier respects now configured content type
* Fixed hot reload scheduled target mix up
* logging post request
* Series Episode classifier fallback handling
2026-03-26 12:27:47 +01:00
jojo141185andGitHub 0a763247ff docs: major overhaul and structural refactoring of Tuliprox documentation #2 (#668)
* docs: overhaul introduction and architecture guide

- Rewrite index.md into a comprehensive Operator Manual
- Add detailed explanation of the System Architecture (Rust/WASM)
- Document core unique features: Session Holding, Grace Periods, and Shared Streams
- Add Metadata Enrichment details (TMDB, PTT, and FFprobe)
- Implement Mermaid sequence diagram for Network Flow Architecture
- Update documentation map with new link structure

* docs: refactor deployment guides into installation and build manuals

- Split deployment.md into installation.md and build-and-deploy.md
- Add comprehensive Docker Compose examples and volume explanations
- Document image variants (scratch vs. alpine) for DevSecOps best practices
- Expand on cross-compilation (MUSL, ARM, Windows) and WASM toolchains
- Add documentation for the "Docker Container Templates" ecosystem (Traefik, Gluetun, CrowdSec)
- Update CLI argument reference table
2026-03-25 22:31:21 +01:00
euzuandGitHub 2b8a4cb90f Fix/field hints (#666)
* Added missing field hints
* logger intiialization fixed
2026-03-25 09:12:03 +01:00
euzuandGitHub 2fccbb66e5 Fix/scheduled updates logger initialization zombie connections (#664)
* fix: Scheduler preserve forced_targets across config reloads.
hot reload could cause loosing scheduler task targets.

warn logs for:
- process_source: warns when all inputs are disabled for given targets
- process_sources: warns when no sources were processed at all

* Fix: Logger initialization

* Fix: TCP USER TIMEOUT for linux. If a client disrupts the connection, the tcp layer will hold it approx for 5-15 minutes. With this setting we can close in 30 seconds under linux
2026-03-24 23:24:57 +01:00
jojo141185andGitHub 2e1bb7204c docs: major overhaul and structural refactoring of Tuliprox documentation (#662)
Updated docs
2026-03-24 15:20:01 +01:00
euzuandGitHub 9aec9594aa Fix/ws protocol version stream measure hls entry stream table (#660)
* sidebar scrollable
* fixed metering values for stream table
* Using native linux approach for sysinfo
* fixed stream table hls display and actie connections
* shared stream reconnect bug fix
* foxed some rabbitai findings
* Fixed hls stream table prune
2026-03-22 13:19:01 +01:00
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 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
euzuandGitHub aeceecf534 Fix/stream table tech info (#651)
* Stream table Tech info fix
* Plalyist update messages local time fix in webui
2026-03-17 15:15:46 +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 d31c05463e refactored documentation (#645)
* refactored documentation
2026-03-15 10:15:08 +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
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
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 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
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 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
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 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 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 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
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 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
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 7f98d96ece Feature/timeshift request offset (#569)
Timeshift offset for epg requests
2026-02-08 14:27:58 +01:00
euzuandGitHub b2ec51580e Fixed a possible deadlock during update, Added epg_request_timeshift to api user (#568)
Fixed a possible deadlock during update
Added epg_request_timeshift to api user
2026-02-08 10:53:38 +01:00
euzuandGitHub 360c75dae7 Feature/fix tests (#561)
fixed some tests
2026-02-01 14:45:33 +01:00
knylbyteandGitHub 7bcb9c17c3 Bugfix/proxy auth (#557)
gitignore added debug directory and codex instructions STEPS.md
fix: preserve proxy auth across redirects
fix: fail when proxy client build fails
fix: keep no-redirect fallback policy
fix: drop auth headers on cross-origin redirects
fix: ignore NO_PROXY for redirect handling
Fix redirect fails proxy authentification
2026-02-01 13:37:49 +01:00
euzuandGitHub 748fca44b3 Feature/request timeout and web UI updates (#555)
* Idle timeout for requests implemented
* fix: user api path
* WebUI Added APi Proxy Config
2026-01-31 15:29:32 +01:00