Shared HLS cache session feature and aligns the runtime, cache, provisioning, recovery, custom-response, and documentation paths with the new shared-session model.
* 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
* 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
* 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>
* 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
- Fix: resolve task database problem
- Fix: m3u parsing when staged input delivers virtual id
- provider id extraction from url refactored
- some optimizations for hashutils
* 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
* 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
* 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
* 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
* 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
* 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
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.
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.