Commit Graph
509 Commits
Author SHA1 Message Date
knylbyteandGitHub 224c9f6f31 feat: add resilient shared HLS master playlists (#805)
* feat: add shared HLS master playlists and recovery
2026-08-01 12:50:52 +02:00
MaxPain99andGitHub 9cb8ea9aad fix: Flussonic/BitTV archive catchup routing and Streams panel stability (#807)
* feat: improve Flussonic/TiviMate M3U catchup and DVR playback

Unified catchup-type export, default Wink append template, leaked relative
DVR path recovery, session-based archive EPG reference, and panel archive
playback helpers for Flussonic-style origins.

* fix: Flussonic/BitTV archive Streams sticky panel and catchup routing

Prefer catchup-type for Flussonic detection, keep archive rows stable across HLS segments without immortal ghosts, scroll Active Streams list, and dedupe HLS chips.
2026-08-01 11:55:02 +02:00
euzuandGitHub 576e865239 xtream expiry date handling (#809)
* **New Features**
  * Added automatic Xtream account expiration refresh in server mode: periodic per-panel checks refresh missing/soon-expiring `exp_date`, persist updates with timestamped backups and atomic writes, and disable accounts reported as expired (no automatic re-enable).
* **Bug Fixes**
  * Improved configuration reload by batching pending write triggers with more reliable internal vs external write detection and better failure reporting.
  * Prevented arithmetic overflow in SSDP M-SEARCH delay calculation.
  * Hardened config backup handling and improved CSV alias batch expiration updates with more robust ACL preservation.
* **Documentation**
  * Updated `exp_date` guidance to describe the automatic Xtream expiration refresh behavior and persistence.
2026-07-30 14:57:54 +02:00
euzuandGitHub c47cf99f99 QOS compacting (#804)
- **New Features**
  - Added configurable QoS snapshot compaction to periodically reclaim storage from expired snapshots.
  - Compaction runs daily by default and can be disabled by setting the interval to `0`.
  - QoS config hot-reload now recognizes compaction interval changes.
  - Older saved snapshot checkpoints remain compatible with the new setting.
- **Documentation**
  - Updated configuration examples and reverse-proxy QoS documentation to include `compaction_interval_secs`, its default, and disable behavior.
2026-07-29 18:45:55 +02:00
euzuandGitHub 42e4c72608 STRM title/filename can now selected from header or metadata. (#803)
* **New Features**
  * Added a STRM export option to control whether generated folder/file names use media metadata or the processed title.
  * STRM naming now prefers the processed title by default; enabling the option switches to metadata-derived names.
  * Added a UI chip/tag and editor control for the setting.

* **Documentation**
  * Updated STRM configuration docs with the new option, its default, and its effect.
  * Added localization text for the setting in supported languages.

* **Tests**
  * Added/updated tests to verify filename behavior for videos and series with and without the option.
2026-07-29 16:01:24 +02:00
euzuandGitHub 4d8df8f534 M3u catchup fix (#794)
* **New Features**
  * Catch-up streams can now auto-detect whether to serve direct video or an HLS playlist.
  * Added archive-aware HLS session/identity handling and improved upstream user-agent propagation for manifests.
  * Enhanced M3U timeshift/archiving, including nested handling and native Flussonic archive support; Short EPG can advertise archive availability.

* **Bug Fixes**
  * Provider session headers now persist across retries and deferred-open scenarios.
  * Legacy HLS routing is now cache-aware; seek detection improvements.
  * Stalker errors now better redact sensitive URL details.
  * Fix: Preserve VOD client range requests

* **Tests**
  * Expanded coverage for probing, archive/timeshift resolution, header overlay rules, and related routing.
2026-07-27 15:13:10 +02:00
euzuandGitHub fa87a65c9f Feature/hls disable (#800)
* **New Features**
  * Added **Force MPEG-TS** / `disable_hls_streaming` for Xtream live streams, rewriting live `.m3u8` requests to `.ts`.
  * Added UI controls and option indicators, with localized labels in English, Arabic, and Russian.

* **Documentation**
  * Clarified MPEG-TS behavior and added an Xtream example configuration.

* **Bug Fixes**
  * Improved live-stream playback routing/extension handling and related permission-failure responses.
  * Refined provider allocation and grace-period handling for more consistent connection admission.
2026-07-23 15:37:14 +02:00
euzuandGitHub 78df42ff28 Added Mapping Stage fpr mapper. (#798)
* **New Features**
  * Added configurable mapping stages for `mapping.yml`: `processing` (default) and `after_epg`.
  * `after_epg` mappings now run after EPG enrichment and can react to enriched EPG fields.
* **Bug Fixes**
  * Stage-aware playlist mapping: if no mappings match, the source is left unconsumed.
  * Mapping directory merges now reject conflicting stages for the same mapping id and report both files clearly.
* **Documentation**
  * Updated mapping DSL and target `processing_order` docs to describe stage timing and guarantees.
* **Tests**
  * Added coverage for stage-restricted mapping behavior, merge conflicts, and AfterEpg timing.
2026-07-22 14:31:19 +02:00
euzuandGitHub fa514031d6 Fixed input form state (#797)
Bug Fixes
- Input forms now consistently update when switching between configured sources.
- Improved filter matching for captions/titles and more accurate type handling for live/video/series (including series-info variants).

New Features
- Mapping DSL now supports reading @input and @type as metadata sources, while rejecting assignments to them.
- Regex capture results are now more consistently exposed across captures (by index and name).

Tests
- Added WASM browser coverage for input switching and updated coverage for filter/mapping behavior.

Documentation
- Updated mapping DSL documentation and changelog to reflect @input/@type read-only behavior and capture access rules.
2026-07-22 11:18:46 +02:00
euzuandGitHub ab4031e567 Fix: Mapper counter reset (#795)
Bug Fixes
Fixed playlist counter assignments so values reset correctly during each refresh.
Corrected counter displays to consistently show their configured starting values.
Improved counter comparisons to detect changes in starting values accurately.
2026-07-21 11:21:34 +02:00
euzuandGitHub 9bb1c97d93 Added new EPG tags: Category, new, live (#793)
* Added new EPG tags: Category, new, live
2026-07-20 17:39:50 +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
knylbyteandGitHub c70fbc671e feat: hls content encoding support and shared session between different targets (#789)
* feat: key shared hls sessions by origin id
* feat: support hls content encoding
* fix: coderabbitai findings
* Fix: Custom headers are lost on provider://
In the manual redirect path, the abstract provider:// URL is compared against the resolved HTTP URL.
This causes the request to be marked as "scrubbed" before the first real redirect even occurs, stripping out headers like X-API-Key.
2026-07-15 10:40:30 +02:00
zachhideandGitHub 0cbe08b307 fix(strm): name every flat/tmdb movie version after the folder it lands in (#787)
* fix(strm): name every flat/tmdb version after the folder it lands in

Under `flat: true` the movie folder is deduplicated by TMDB id, but
`final_filename` was derived from each item's own provider title before the
folder-reuse branch. Providers routinely list the same film twice with the tag
written two ways, so the second listing landed in the first listing's folder
under a name that does not start with the folder name.

That is precisely the condition Jellyfin's Emby.Naming VideoListResolver checks
in IsEligibleForMultiVersion: the file name must start with the folder name, and
the remainder must be empty or start with '-', '_', '.', or a [bracketed] token.
Any ineligible file makes GetVideosGroupedByVersion return the folder's videos
ungrouped, so *every* file in it becomes a separate movie.

The first item to claim a flat folder now also fixes the file name for every
item that follows it into that folder. The existing add_quality_to_filename
suffix, or the existing [Version id#N] collision suffix when the qualities tie,
is what keeps the versions apart. Kodi and Emby shared the same defect and are
fixed with them.

* fix(quality): classify resolution from the frame, not its height alone

VideoResolution was bucketed from ffprobe's height only. Widescreen releases keep
the full raster width but encode fewer active lines, so a 2.40:1 film mastered at
1080p (1920x796) was tagged '720p HD', and a 2.40:1 UHD master (3840x1600) was
tagged '1440p QHD'.

Classify both axes and keep the higher tier. Height still decides on its own when
the width is missing, which also keeps anamorphic frames (1440x1080) correct.

* fix(strm): drop the category from flat movie file names

The category suffix was added to flat movie file names 'to avoid collisions',
but with folder reuse now naming files after their folder, the only files that
can collide are versions of the same movie -- same TMDB folder, same quality
string -- and the existing [Version id#N] pass already separates those.

It is not free: Jellyfin and Emby render whatever follows the folder name as the
version label, so the category was showing up in the version picker next to the
quality. Removing it makes the label read as the quality alone.

Items without a TMDB id keep the category, because it is what makes their folder
unique -- but they now carry it in the file name as well. Previously the folder
got '[Category]' while the file did not, so the file name did not start with the
folder name and version detection was broken for exactly those items.

* fix(strm): keep the version label when the writer truncates a long name

The [Version id#N] suffix is the only thing separating two versions that share a
base and a quality string, but it was appended last and the writer truncates the
file stem to 250 chars -- so for a long enough title the suffix was cut off, both
versions resolved to the same path, and the second silently overwrote the first.
The collision detector could not see it either, since it compares untruncated
names.

Trim the shared base to fit instead, so the label always survives. The 250-char
limit is now a named constant used by both the naming and the writing side.

Also hoist the per-item flag lookups out of the naming loop and drop a redundant
HashSet lookup (insert already reports whether the entry was present).

* docs: scope the no-tmdb category note to jellyfin/emby
2026-07-15 09:38:21 +02:00
euzuandGitHub 9c34d8e8ca feat: invert staged input connection flow and credentials inheritance (#779)
* feat: invert staged input connection flow
2026-07-13 12:43:25 +02:00
knylbyteandGitHub 18ae03ba1a feat: add EPG output normalization (#785)
* docs: document EPG output normalization

* feat: normalize EPG output
2026-07-11 09:59:23 +02:00
knylbyteandGitHub 9040940674 feat: ics to xmltv exporter (#784)
feat: ics to xmltv exporter
2026-07-10 14:53:33 +02:00
zachhideandGitHub ded3fd14e0 Case-insensitive EPG channel-id matching; stop lowercasing ids in parsers (#783)
Make EPG channel-id matching case-insensitive; stop lowercasing ids in parsers
2026-07-08 16:16:40 +02:00
euzu f0217191e5 fixed frontend compilation problem 2026-07-08 15:39:14 +02:00
knylbyteandGitHub dc49189f63 feat: add shared hls cache sessions (#782)
Shared HLS cache session feature and aligns the runtime, cache, provisioning, recovery, custom-response, and documentation paths with the new shared-session model.
2026-07-08 11:52:22 +02:00
euzuandGitHub 75178714c3 Fixed m3u playlist with urls containing query (#781)
- Improved M3U stream handling when providers lack configured credentials
- Enhanced URL extension extraction and stream container type resolution across HLS, XTream, and VOD formats
2026-06-22 20:02:09 +02:00
euzuandGitHub bfcd66ffcc Fix/catchup (#778)
* Fix: setting auth web_ui token_ttl_mins = 0 fixed.
* Fix: catchup
* New: added playlist update log view
* Fix: Landing Page
New: "Last Page"  added for Landing Page selection
2026-06-18 16:03:09 +02:00
euzuandGitHub 9e83d24864 Feature/optimizations (#777)
* perf: binary-search EPG programme lookup
Replaces the linear position() scan with a binary search via partition_point for EPG programmes. Reduces complexity to O(log p).
* perf: cache interned PlaylistItemType label
Avoids repetitive hash-map lookups during sorting and filtering. The five fixed labels are now interned once via OnceLock and returned as a cheap Arc clone.
* perf: avoid per-event String allocation in web-UI XMLTV parser
Uses borrowed Cow types instead of allocating a new String for every element name. Tracks the active text state using a small TextTag enum.
* perf: throttle per-chunk download control poll
Throttles the control_signal lock polling to a 200ms interval on multi-GB downloads to prevent CPU thrashing. Immediate actions (pause/cancel) remain guaranteed via control_notify.
* perf: pre-size filtered channel buffers in apply_filter_to_playlist
Pre-allocates the filtered channel vector based on the source group length. Eliminates step-by-step reallocations on large playlists.
* fix: surface playlist cache load failures instead of silent empty fallback
Replaces silent error swallowing with real error logging (distinguishing missing files from corruption) while preserving the empty fallback behavior.
* perf: remove redundant first drain loop in get_remote_content_as_file
Removes a dead, redundant loop. The stream body is now consumed only once, allowing the idle timeout to protect the transfer correctly.
* perf: back off instead of busy-spinning on empty client-stream chunks
Introduces a short Sleep backoff (Poll::Pending) when a provider sends continuous empty keep-alive chunks. Prevents the CPU from spinning hot.
* perf: make library orphan cleanup linear instead of O(n^2)
Reduces the complexity of cleaning up orphaned entries from O(n^2) to linear O(n). Loads the metadata library only once and pre-computes partitions.
* perf: indexed batched merge for series expansion instead of O(n^2) scans
Replaces expensive O(n^2) scans during series expansion with index-based batch processing. Builds temporary lookup indexes and merges groups linearly.
* perf: pre-size group flatten buffers to reduce reallocation churn
Pre-allocates target merge vectors and category indexes to eliminate repeated memory reallocations when flattening large target playlists.
* perf: stream custom provider playlist endpoint instead of materializing it
Switches from full in-memory materialization to lazy conversion and streaming of JSON/binary responses. Massively reduces the memory footprint.
* refactor: centralize InputType batch/family checks behind enum helpers
Moves scattered matches! checks for M3u/Xtream types into centralized enum helpers (is_batch(), etc.) to prevent logic drift.
* refactor: centralize XMLTV tag/attribute literals into named constants
Replaces hardcoded inline strings in the XMLTV parser with named constants (EPG_TAG_TITLE, etc.) as a single source of truth.
* refactor: derive GeoIpUpdateError Display/Error via thiserror
Replaces manual Display and Error implementations with the thiserror macro, allowing new error variants to self-document their formatting.
* refactor: attach per-cluster facts to XtreamCluster instead of scattered matches
Centralizes redundant API actions and collection name mappings directly onto the XtreamCluster struct instead of using scattered match blocks.
* refactor: centralize PlaylistItemType video/series classification
Introduces is_video() / is_series() on the enum to unify duplicate matches! checks across filters, probes, and tracking modules.
* feat: add per-stage summary logs to VOD/series resolve queueing
Adds a concise debug summary per processing stage (total counters and elapsed time) to make hot-path diagnostics easier without raising the log level.
* refactor: generate ItemField get/set from a single direct-field list
Uses a callback macro to synchronously generate both getter and setter blocks for directly-bound fields (Name, Url, etc.) from a single master list.
* refactor: derive input-type routing from a single capability descriptor
Bundles InputType behaviors (backends, connection rules) into a single capabilities() descriptor to prevent bugs when adding new variants.
* refactor: derive output-format routing from a single capability descriptor
Centralizes output format features (filter, EPG, and cache support) into a single TargetCapabilities descriptor instead of spreading logic across no-op match arms.
2026-06-15 14:09:31 +02:00
euzuandGitHub c2ff914506 Feature/custom video stream disable (#775)
* custom Video stream disable with configurable http status code
2026-06-09 16:53:09 +02:00
euzuandGitHub 41d716efb6 Feature/disk usage (#774)
* Added DiskUsage stats and Alert
- Fixed web_auth_disabled  bug
2026-06-08 19:29:45 +02:00
euzuandGitHub c1f0063e07 Feature/show local time (#773)
* Fixed sanitizing url scheme batch and provder
* local date in Stream history
* Fixed EPG programme time display to render in local timezone for improved readability.
* Improved stream history date range filtering to accurately use local date boundaries.
* Enhanced credential sanitization for stream URLs to properly mask sensitive information.
* Fix EPG path selection for mixed Xtream/M3U targets
* Fix EPG selection and complete Xtream series_info for input/custom requests
* Add configurable interner GC tuning
2026-06-08 11:55:51 +02:00
euzuandGitHub a2d9c1e076 Feature/user playlist range select and code deduplication (#772)
* refactored some code duplications
* User playlist editor shift+mouse selektion added
* added russion translation
2026-06-06 13:06:28 +02:00
euzuandGitHub 40adbe0d40 catchup handling fix, streaming fix (#771)
* catchup handling fix
2026-06-05 10:00:53 +02:00
Juanjo PresaandGitHub 585efcca47 feat: improve Trakt list curation matching (#747)
* feat: paginate Trakt list fetching

* feat: allow TMDB-only Trakt list matching

* chore: address Trakt review comments

* feat: add public Trakt charts

* fix: keep Trakt category clones distinct

* fix: avoid truncating Trakt chart ranks

* fix: keep Trakt series category episodes

* trakt improvements
2026-06-04 20:07:30 +02:00
euzuandGitHub 49573dd6b1 Feature/UI improvements (#770)
* catchup fixes

* feat(frontend): bookmarkable views via URL hash deep linking

Persist the active view to the URL hash so views are bookmarkable and
survive a page refresh. Restore the view from the hash on load, sync the
hash on navigation, and handle browser back/forward via a hashchange listener.

* feat(dev): add dev container for reproducible development

* feat(frontend): interactive multi-series metric sparklines on stats cards

* feat(frontend): aggregate status health banner with capacity breakdown

* feat(frontend): add guided empty states with hints

* chore(devcontainer): add gh CLI, dev tooling, cache volumes, and tasks

- Install GitHub CLI, git, build-essential, clang, lld, mold, jq
- Add cargo-watch, cargo-llvm-cov, cargo-deny, cargo-machete
- Persist cargo registry, target, and gh config via named volumes
- Fix volume ownership for the dev user in post-create

* chore(vscode): add tasks and launch configs for dev workflow

- tasks.json: backend/frontend dev servers, test, lint, fmt, coverage, deps checks, docs
- launch.json: CodeLLDB configs for backend and workspace tests

* a11y: add accessible labels to inputs and collapsed sidebar buttons

- Input: add aria_label prop, falling back to placeholder when no visible label
- Sidebar: pass translated hint + aria_label to collapsed-mode icon buttons

* feat(frontend): warn on unsaved config changes before page unload

* feat(frontend): handle session expiry with client-side logout

Schedule a client-side logout when the JWT expires, showing a
notification and returning the user to the login screen instead of
silently failing with 401s.

* chore(vscode): update tasks.json

* New Features

Session expiration detection with proactive logout warning
Real-time health status banner showing connectivity and provider status
Live metric sparklines for CPU, memory, and network usage
Deep-linkable views via URL hash with back/forward browser support
Enhanced empty states with guided messages across app sections

Improvements

Faster system metrics sampling (2-second intervals)
Archive and catchup-aware EPG handling for accurate program guides

* New Features

Session expiration detection with proactive logout warning
Real-time health status banner showing connectivity and provider status
Live metric sparklines for CPU, memory, and network usage
Deep-linkable views via URL hash with back/forward browser support
Enhanced empty states with guided messages across app sections

Improvements

Faster system metrics sampling (2-second intervals)
Archive and catchup-aware EPG handling for accurate program guides
2026-06-04 18:00:37 +02:00
euzuandGitHub 4e82330c6a Fix/code duplicates and UI improvements (#769)
* feat(ui): toast progress bar, pause-on-hover, and copy-details for errors

Add a countdown progress bar to auto-dismiss toasts, pause both the timer and bar on hover (resuming with remaining time), and a 'copy details' action on error toasts. Respects prefers-reduced-motion.

* feat(ui): confirm destructive download/recording cancel and remove

Route the download/recording cancel and remove actions through the shared ConfirmDialog (which focuses the safe Cancel button by default), matching the existing confirmation flow for user/target/RBAC deletes.

* feat(ui): runtime-discovered languages with manifest and RTL support

Load available UI languages at runtime from assets/i18n/index.json, add a toolbar language picker (shown when >1 language), persist the choice, and set document dir/lang for RTL languages such as Arabic.

* feat(ui): recoverable error boundary with per-view retry fallback

Add an ErrorBoundary component (context handle + use_error_boundary hook) that shows a recoverable fallback with a retry button instead of blanking a section. Wrap each main view and the API-user playlist individually so a failure in one view stays contained and the rest of the UI keeps working.

* fix(api): use async canonicalize in local file stream handler

Replace the blocking std path.canonicalize() in local_stream_response with tokio::fs::canonicalize().await so the async runtime is not blocked while resolving the local media file path.

* Add Escape-to-close keyboard support for popup menus

Popup menus now close on Escape in addition to outside mouse-down, improving keyboard accessibility.

* Use descriptive alt text for logo and channel logo images

Login and sidebar logo images now use the configured app title, and playlist channel logos use the channel title, improving screen-reader accessibility.

* Add explicit type=button to shared button primitives

IconButton and TextButton now render with type=button to prevent accidental form submission when used inside forms.

* Persist sidebar collapsed state and table page size

The sidebar collapsed/expanded state and the stream-history table page size are now saved to localStorage and restored on reload, matching the already-persisted theme preference.

* Debounce filter editor input parsing

The filter editor textarea no longer re-parses, previews, and emits the filter on every keystroke. The textarea stays responsive via an immediate value while parsing and change notifications are debounced (300ms).

* Show localized message in table empty state

Data/paged tables now render the No content label in their empty state instead of an icon with no text. Sticky headers were already present.

* feat(frontend): improve screen-reader support for sidebar and toasts

* fix(frontend): handle missing window gracefully in sidebar

* feat(frontend): cross-dissolve colors on theme switch

* feat(frontend): add card hover lift, button press feedback, animated chevrons

* Removed code duplicates
2026-06-02 11:16:03 +02:00
euzuandGitHub 3591515187 Issue-766 m3u catchup (#768)
* Issue-766 m3u catchup
2026-06-01 16:56:05 +02:00
euzuandGitHub 1900ca587f - Add tamper-proof provider resolve tokens for STRM links (#765)
- Add tamper-proof provider resolve tokens for STRM links
- Resolve provider:// URLs through a generic provider redirect API
- Allow STRM generation with either Xtream or M3U output
- Reject STRM-only targets because STRM needs a backing stream output
2026-05-28 23:41:40 +02:00
euzuandGitHub 4c5d966248 Reduce heap allocation (#764)
- Refactored PlaylistSource to avoid Box<dyn> whre possible
- Some other small heap allocation fixes
2026-05-28 17:58:41 +02:00
euzuandGitHub 523149d8ac Fix stream session problems (#756)
* Fix stream session problems
2026-05-11 19:27:04 +02:00
Juanjo PresaandGitHub a158b35091 feat: add media enrichment fact patch core (#752)
* feat: add media enrichment fact patch core
2026-05-11 14:41:01 +02:00
Juanjo PresaandGitHub 945308a65b feat: add Plex media-server catalog and playback baseline (#748)
* feat: add Plex media-server catalog baseline
* feat: add Plex media-server playback baseline
2026-05-11 13:38:06 +02:00
a63cbc043c feat: add media-server catalog facts foundation (#746)
* feat: add media-server catalog facts foundation
* feat: expand media-server catalog fact foundation
* chore: address media-server catalog review nits
* feat: materialize media-server series details
* chore: stabilize media-server orphan episode parent refs
* feat: serve media-server series info from target storage
* refactoring media server catalog

* refactoring media server catalog

* refactoring media server catalog

---------

Co-authored-by: euzu <euzu@proton.me>
2026-05-07 20:08:14 +02:00
euzuandGitHub 4bc2a928a3 Fix: Mapper chno (#751)
Fix: Mapper chno
2026-05-07 09:21:03 +02:00
euzuandGitHub b7cb1fb1c0 Feature/stream history paged table (#749)
- Added Paged Table
- BPlusTree range queries
- Paged stream history table
2026-05-06 17:07:28 +02:00
Juanjo PresaandGitHub 8a2e379f6d feat: add media-server input foundations (#742)
* feat: add remote media input foundations
* fixed macro variable names
* Added todo comment for source editor sidebar
2026-05-04 20:22:51 +02:00
Juanjo PresaandGitHub 15e4857d4c build: remove vendored OpenSSL dependency (#743)
* build: remove vendored OpenSSL dependency
* remvoed unnecessary comments and clippy fixes
2026-05-04 19:07:41 +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
knylbyteandGitHub 3875a1c89b Feature/ffprobe piped from reqwest (#734)
* fix: video and audio deserialization for db dump
* fix: resolve proivder feature for redirect mode
* fix: enable seek feature for ffprobe on large vod and series elements
* fix: keep seekable ffprobe probes bounded
2026-05-01 11:01:24 +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 5f2d2c8b50 Feature/stream display (#725)
* Added User comment to stream display
*Added EPG to stream display
* Added Stream display hide fields config
* fixed live/vod session ttl bug
2026-04-22 17:58:33 +02:00
knylbyteandGitHub 81ca391ac4 feat: add per-user output clusters (#722)
add per-user output clusters
2026-04-21 19:45:53 +02:00
euzuandGitHub 48eb5a8478 Connection admission state machine (#723)
Connection admission state machine
2026-04-21 15:21:51 +02:00
euzuandGitHub 7e20f92707 Stream session handling and template preparation (#721)
- Stream Session handling fixed
- Complex Template preparation and validation fixed.
2026-04-17 21:04:45 +02:00
euzuandGitHub 9eef3b24e0 Feature/filter resolve probe (#720)
* Filter for resolve
* Filter for probe
2026-04-17 11:57:43 +02:00