351 Commits
Author SHA1 Message Date
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
euzuandGitHub d116b7d51e Feature/bouquet editor (#854)
New Features

    Added target-specific bouquet filtering with whitelist and blacklist modes for Live, VOD, and Series groups.
    Added an in-context bouquet editor with search, selection controls, status indicators, reset, and streaming previews.
    Targets are managed by name, with saved selections available through the Source Editor.
    Improved stream alias resolution and provider failover behavior.

Bug Fixes

    Existing playlists are preserved when refreshes produce no usable items.
    Empty playlists are no longer published.
    Configuration changes now recover more safely from persistence failures.

Documentation

    Updated feature and configuration documentation and added translations.
2026-09-03 17:59:54 +02:00
euzuandGitHub 99e5044599 Feature/refactor (#848)
* **New Features**
  * Added HLS live and catch-up playback for archived streams, manifests, segments, and provider failover.
  * Improved playlist processing with filtering, renaming, mapping, EPG handling, favourites, watch groups, staged overlays, and disk-based processing.
* **Documentation**
  * Added guidance for environment variables, credentials, password hashes, and authentication secrets.
* **Changes**
  * Removed target editing from the target menu; refresh and delete remain available.
* **Bug Fixes**
  * Improved recovery when cached playlist data is unreadable and strengthened archive stream URL handling.
2026-08-31 01:20:31 +02:00
euzuandGitHub 9ec775b35b Feature/multi crate (#837)
Refactored to multi crate project
2026-08-27 15:36:23 +02:00
euzuandGitHub 1afbe7cca5 health check fix (#832)
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.
2026-08-22 18:52:19 +02:00
euzuandGitHub 16d32d1298 DVR Feature (#819)
feat: complete DVR and improve streaming, security, configuration, and UI

Complete the Digital Video Recorder subsystem and add a broad set of
reliability, security, streaming, configuration, processing, and Web UI
improvements across Tuliprox.

DVR:

* complete live recording and provider-aware VOD download support
* add recording queue, workers, scheduling, and recurring recording rules
* add conflict detection and capacity-aware scheduling
* add pause, resume, retry, edit, cancel, and delete workflows
* add recording quotas and configurable retention policies
* add crash recovery and startup reconciliation
* add durable lifecycle notifications with per-channel retries
* add DVR health monitoring and diagnostic tooling
* add secure access to recordings, thumbnails, and subtitles
* add WebSocket notifications for recording and rule changes
* add Web UI management for recordings, rules, progress, and task state
* add RBAC, configuration, documentation, and i18n support

Streaming and HLS:

* fix shared-stream idle handling and release dead provider streams correctly
* stop tee streams when both client and cache consumers are gone
* cancel provisioning probes when client streams terminate
* fix transient HLS origin work accounting and intermittent 503 responses
* make stream buffer byte limits configurable
* make shared subscriber idle timeout configurable
* make initial HLS manifest wait timeout configurable
* add configurable TS chunk packet count
* add configurable HLS refresh failure backoff
* centralize redirect limits and retry jitter handling
* improve provider DNS refresh behavior and failover tuning
* preserve UTF-8 characters in catchup templates
* improve stream history validation and persistence error handling

Security:

* use constant-time credential comparisons
* harden library and media path handling against traversal and symlink escapes
* only trust forwarded client IP headers from configured trusted proxies
* redact credentials and sensitive URL data from logs
* reject invalid authentication status-code configuration
* deny users with unresolved plans or invalid content filters
* improve authentication error handling across proxy and HLS endpoints

Configuration and reliability:

* prevent invalid api-proxy.yml reloads from terminating the running server
* fully validate API proxy configuration before persisting changes
* log configuration and EPG cleanup failures instead of silently discarding them
* keep the last valid configuration active after failed hot reloads
* align backend and shared media-server validation
* remove duplicated path and normalization logic
* improve DNS-store recovery and Windows rename fallback handling
* reject invalid duration, timestamp, and numeric conversions safely
* fix playlist bouquet save error handling
* fix provider record update detection
* fix cache boundary handling
* improve startup and persistence failure diagnostics

Filtering, search, sorting, and processing:

* add field-scoped playlist explorer search
* centralize shared stream-history search field definitions
* extend the filter DSL with string, set, and numeric operators
* add EPG ID, channel number, and detected quality as filterable fields
* add filter dry-run preview API with match statistics and samples
* report filter syntax errors with line and column information
* add natural numeric-aware sorting
* add quality-aware channel deduplication
* add accent-independent deduplication
* move natural sorting and quality detection helpers into shared code
* persist explorer search-field selection across reloads

User plans and content access:

* add reusable API user plans for capability tiers
* support inherited cluster and connection limits with per-user overrides
* add plan-level and user-level content filters
* enforce content filters across Xtream, M3U, direct playback, resource access,
  stream info, short EPG, categories, and XMLTV
* add trial plans with automatic expiry and Trial status
* add plan selection and content filtering to the user editor
* add full plan management to the API configuration Web UI
* migrate the API user database to schema V7 with plan and filter persistence

Web UI and accessibility:

* add live logging console to the stats page
* improve login error handling and prevent duplicate authentication requests
* add keyboard navigation to tabs, menus, tables, and search
* add ARIA roles, labels, validation state, and live-region feedback
* add confirmation dialogs for destructive actions
* add unsaved-change warnings and Ctrl/Cmd+S shortcuts
* add loading, progress, empty, and in-flight states across views
* improve dropdown and single-selection behavior
* add clipboard and credential-copy helpers
* persist table pagination and explorer search preferences
* improve error recovery when UI context providers are unavailable
* remove multiple panic-prone unwrap and browser API paths
* replace remaining hardcoded UI strings with translation keys

Maintenance:

* resolve backend and frontend compiler and Clippy warnings
* update packages and test fixtures
* consolidate duplicated helpers and validation logic
* improve documentation for configuration, filters, plans, DVR, and REST APIs
* add and update tests for migrations, filters, deduplication, sorting,
  configuration, streaming, and accessibility behavior
2026-08-21 14:50:12 +02:00
euzuandGitHub f8e8941929 Feature/stalker (#780)
New Features

- Added first-class Stalker/Ministra portal support, including live, VOD, series, playback-link refresh, and bulk EPG ingestion.
- Added Stalker configuration and batch/CSV support in the Web UI.
- Added playlist preview and playback handling for Stalker inputs, with support for partial refreshes.
2026-07-20 14:58:06 +02:00
euzuandGitHub 5b49ea58d8 BPlusTree refactoring / optimization (#792)
* BPlusTree refactoring / optimization
New Features
- Added streaming JSON/CBOR “try” array responses that stop at the first failure, with coalesced HTTP chunking for smoother delivery.
- Introduced B+Tree v3 persistence (with v2→v3 migration) including verified atomic updates, snapshots, compaction, and batch operations.
- Updated playlist/index streaming to use sorted-index acceleration with corruption-safe fallback.

Bug Fixes
- Corrupt/unreadable Library databases now surface repository errors instead of appearing empty.
- Playlist/lineup/EPG/Xtream/M3U streaming now propagates per-entry failures correctly (including improved counting/early-stop behavior).

Documentation
- Updated README and changelog to reflect the B+Tree v3 format and migration behavior.
2026-07-17 17:56:29 +02:00
knylbyteandGitHub a63e6e4ca5 docs: updatet docker templates and added iptv-org-epg template (#790) 2026-07-15 12:52:16 +02:00
Juanjo PresaandGitHub f967c8a8e9 Remove Plex STRM export style (#740)
* Remove Plex STRM export style
* Address STRM removal review feedback
* test: cover STRM TMDB marker variants
* docs: add Plex STRM breaking change note
2026-05-04 12:52:06 +02:00
euzuandGitHub eb2a017fa3 Network access restriction for api user (#728)
* Network access restriction for api user
* Fixed strm provider:// url bug
2026-04-23 21:15:59 +02:00
euzuandGitHub 48eb5a8478 Connection admission state machine (#723)
Connection admission state machine
2026-04-21 15:21:51 +02:00
euzuandGitHub 02ac40f592 Feature/provider url selection strategy (#712)
* Input provider url selection strategy
* CVD friendly theme
* Fix: HLS Stream session info  duration and total trasferred data
2026-04-10 11:32:56 +02:00
euzuandGitHub 222a480d6b Feature/soft limits (#701)
- Soft User limits
- Stream history fixes
- No content explanations
- User disconnect reasons
2026-04-03 20:11:06 +02:00
euzuandGitHub 9ce3e7a313 Feature/download (#700)
- Download manager
- Stream history fixes
- Stream history docs updated
2026-04-03 16:23:15 +02:00
euzuandGitHub 6c32deb4c3 Stream History (#667)
Stream history qos
2026-04-02 20:03:49 +02: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 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
euzu 321f6e9357 fixed docker files 2026-03-13 16:12:43 +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
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
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
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 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
Jorben van der WalandGitHub 7ac008095a Fix spelling error in README. (#598) 2026-02-19 19:44:27 +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 7bc66a90df CSP inline style fixes (#589)
CSP inline style fixes
2026-02-15 15:40:43 +01:00
Marco FranssenandGitHub 0a5615f3d0 Fix config format (#587)
default config, readme, changelog fixes
2026-02-15 11:46:13 +01:00
euzuandGitHub 7b8bdaa49b Feature/stream probe (#585)
Stream probe
2026-02-14 17:52:35 +01:00
Marco FranssenandGitHub 3958ff5f12 Markdownlint (#584)
* 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
2026-02-14 15:13:11 +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
euzuandGitHub 2d0ac6f957 Feature/sort epg playlistexplorer normalization fix (#543)
* Fixed series sort issues
* Playlist explorer copy to clipboard functons implemented
* Epg time fix
* grace period hold stream option added.
* Fixed group and mapper normalization
* Image cache validity for browsers set to 4 hours. Responding now  last modified and cache header.
2026-01-27 18:33:16 +01:00
knylbyteandGitHub 59297a8185 feat: set patch version and create major or minor releases full automatically (#542)
set version automatically during builds
2026-01-27 00:16:40 +01:00