Home Documentation Installation Guide

Installation Guide

Complete guide to installing xOTT Panel on your dedicated server. Covers system requirements, automated setup, and initial configuration.

Prerequisites

Before installing xOTT Panel, ensure your server meets these requirements:

Clean Installation Recommended: We recommend a fresh Ubuntu LTS installation to avoid port conflicts and dependency issues.

Hardware Requirements

  • 4 CPU cores recommended for a small installation
  • 4GB RAM minimum; 8GB or more recommended
  • 20GB SSD minimum, plus space for recordings and VOD
  • 1Gbps network recommended; size bandwidth for aggregate stream bitrate

Operating System

  • Ubuntu 22.04, 24.04, or 26.04 LTS
  • A currently supported Ubuntu LTS release is recommended
  • Root or sudo access required
  • TCP 5847 for initial panel access
  • TCP 5848 only for direct separate HTTP streaming
  • TCP 80/443 only when using managed HTTP/HTTPS or a reverse proxy

Installation Steps

Follow these steps to install xOTT Panel on your server:

1

Get Your License Key

Before installing, you need a valid license key:

  • Go to Sign Up and create an account
  • Login to your Dashboard
  • Purchase a license
  • Copy your License Key
2

Run the Installer

Download the latest xOTT Panel installer:

wget https://xottpanel.com/downloads/xott-installer.sh

Make the installer executable and run it:

chmod +x xott-installer.sh
sudo ./xott-installer.sh
3

Wait for Installation

The automated installer will set up:

  • Node.js runtime environment
  • PostgreSQL database
  • FFmpeg and media tools
  • Python dependencies
  • Systemd service
Installation Complete! xOTT Panel is now installed and running. Access the web interface at http://your-server-ip:5847

Post-Installation

After installation, complete these steps:

1

Access the Panel

Open your browser and navigate to:

http://YOUR_SERVER_IP:5847
2

Login with Default Credentials

Use the default admin credentials:

  • Username: admin
  • Password: admin
Security Warning: Change your password immediately after first login!
3

Verify License Status

Go to Settings → License and verify your license is active

Updates & Backups

xOTT is designed to update existing installations without wiping service accounts, streams, viewers, outputs, or database records.

Use update mode for existing servers: When the installer asks for the installation mode, choose the update option for an existing xOTT installation. Fresh install mode is only for new servers or intentional rebuilds.
1

Create or Verify a Backup

Before major updates, open Management → Database and create a backup. The Database page also supports restoring from server-side backups or an uploaded backup file.

2

Run the Installer

Download the latest installer and run it on the existing server:

wget https://xottpanel.com/downloads/xott-installer.sh
chmod +x xott-installer.sh
sudo ./xott-installer.sh
3

Verify After Update

After the service restarts, verify login, services, active streams, outputs, viewers, XUI mappings, and database health from the Management pages.

Uninstallation

If you need to completely remove xOTT Panel from your server, follow these steps:

Warning: This process will permanently delete all data, including channels, movies, series, and user accounts.
1

Stop and Disable Services

Stop the running services to ensure files can be safely removed:

sudo systemctl stop xott
sudo systemctl disable xott
2

Remove Application Files

Delete the application directory and service configurations:

sudo rm -rf /opt/xott
sudo rm /etc/systemd/system/xott.service
sudo systemctl daemon-reload
3

Remove Database

Drop the PostgreSQL database and user (optional):

cd /tmp && sudo -u postgres psql -c "DROP DATABASE xott_db;"
cd /tmp && sudo -u postgres psql -c "DROP USER xott_user;"

Troubleshooting

Common issues and solutions:

?

Service Not Starting

Check the service status:

sudo systemctl status xott
?

View Logs

Check real-time application logs using journalctl:

sudo journalctl -u xott -f

Need Help?

If you encounter any issues:

Changelog

Release history for xOTT Panel.

v1.6.64

v1.6.64 — MonoMax and Live Playback Reliability September 2026

  • New MonoMax integration — Added pairing-first and password authentication, rotating token refresh, linear channels, live and upcoming events, proxy support, and protected DASH playback without exposing VOD.
  • Time-aware live fragment recovery — Live segment retries are now bounded by fragment lifetime so transient CDN failures refresh the manifest promptly instead of leaving playback behind the live edge.
  • Stronger fMP4 audio continuity — Direct passthrough now validates complete audio renditions and track timelines atomically, preventing partial video-only publication, silent intervals, and corrupted output after representation changes.
  • Safer live-edge synchronization — Expired media fragments and small timeline offsets recover without long retry stalls while VOD retains its established full retry policy.
v1.6.63

v1.6.63 — Distributed Runtime State and Registration Reliability September 2026

  • Accurate distributed stream status — Healthy streams running on workers now repair stale controller records automatically, preventing successful starts from remaining incorrectly marked inactive.
  • Race-safe worker reconciliation — Worker inventory cleanup now revalidates current ownership before stopping an apparent orphan, protecting newly placed and restarted streams from stale reconciliation snapshots.
  • Seamless website registration — New accounts receive a secure session immediately and continue directly to the member dashboard without a second login.
  • Reliable registration responses — Account creation completes independently of verification-email delivery, with bounded mail timeouts preventing successful registrations from appearing to fail.
v1.6.62

v1.6.62 — Live Streaming Reliability and IZZI Go September 2026

  • New IZZI Go integration — Added authenticated linear channels and live/upcoming events with production-compatible browser login, account refresh, proxy support, and no VOD exposure.
  • Reliable IZZI Go playback — Added safe OTT device provisioning, persistent event mappings, Widevine initialization handling, and correct single-use authorization renewal for uninterrupted channel and event starts.
  • Stronger fMP4 audio continuity — Protected active audio initialization files during track transitions and corrected normalized-fMP4 audio timing to prevent missing audio, overlap, and synchronization drift.
  • Smarter upstream resilience — Coordinated provider rate-limit cooldowns across downloads and recovery while preserving stoppable waits and preventing partial video-only publication after audio failures.
  • Accurate worker recovery — Complete output, advanced, HLS, and restart settings now survive worker recovery, while unavailable runtimes no longer retain stale running status, PID, bitrate, or resource metrics.
  • Safer automatic recovery — Added bounded restart circuits for throttling and deterministic DRM failures, multi-initialization-data key acquisition, rational frame-rate metadata, and source-poll diagnostics for intermittent ingest stalls.
v1.6.61

v1.6.61 — Services Page Hotfix September 2026

  • Services page restored — Restored the missing interface dependency used by service output settings, preventing the Services page from rendering a blank screen.
  • Valid browser metadata — Production builds now include the application manifest and reference the packaged xOTT logo, eliminating the manifest parsing error and missing icon requests.
  • Stronger release validation — Frontend builds now fail on undefined runtime symbols so this class of page-breaking regression is detected before packaging.
v1.6.60

v1.6.60 — Automatic Output Selection and Faster On-Demand Starts September 2026

  • Automatic output selection — Auto mode chooses native low-overhead fMP4 for DASH/CMAF sources and compatible MPEG-TS for transport-stream HLS without adding provider requests or startup probes.
  • Consistent format controls — Automatic and explicit output choices persist across individual streams, batch edits, service defaults, event slots, restarts, and worker execution.
  • Faster on-demand cold starts — Initial video and selected-audio downloads overlap within strict bounds while decryption, muxing, timestamps, and playlist publication remain ordered.
  • Safe concurrent startup — Controller-wide request, memory, and lookahead budgets prevent simultaneous cold starts from overloading main servers or workers and fall back cleanly to serial processing.
  • Stronger session transitions — Manifest, URL, cookie, and generation checks discard superseded startup media so refreshed provider sessions cannot publish stale bytes.
  • Improved startup diagnostics — Duration-only timing spans identify provider preparation, engine admission, worker initialization, media acquisition, and publication delays without recording private playback data.
v1.6.59

v1.6.59 — Streaming Engine Efficiency and Runtime Reliability September 2026

  • Lower live DASH overhead — Expired Period history and oversized timelines are bounded before parsing, while repeated template, query, DOM, and DRM metadata work is reused safely.
  • More efficient direct fMP4 — Validated media fragments use vectorized zero-copy layouts, atomic publication, and reusable initialization fingerprints without weakening timeline or encryption safeguards.
  • Reduced DRM processing pressure — Initialization and media buffers are written directly for decryption instead of allocating and copying a combined high-bitrate fragment.
  • Shared MPEG-TS efficiency gains — DASH parsing and encrypted-fragment I/O improvements also reduce avoidable CPU and memory pressure for MPEG-TS outputs before their required remux stage.
  • Stronger runtime lifecycle — Media probes are bounded and terminated reliably, while panel restarts own and clean up every descendant process to prevent orphaned work.
  • Reliable recovery state — Pre-update recovery snapshots remain available when needed, failed recoveries are retained for retry, and healthy runtimes reconcile stale database status safely.
v1.6.58

v1.6.58 — Reliable fMP4 Settings September 2026

  • Reliable fMP4 settings — Stream settings now persist as one atomic envelope, preventing stale Library data from reverting selected fMP4 output or direct passthrough after start or restart.
  • Truthful fMP4 runtime state — Stream metrics distinguish configured fMP4, active direct passthrough, and a safe normalized fallback for clearer diagnostics across main and workers.
  • Complete settings consistency — Library editing now carries advanced and output settings consistently, while failed persistence blocks an unsafe start or restart instead of silently using old configuration.
v1.6.57

v1.6.57 — Distributed Delivery and Fubo Stability September 2026

  • Reliable worker updates — Redundant trigger recovery, protected updater execution, truthful failure reporting, and restart-aware verification prevent workers from remaining silently on an older version.
  • Consistent HTTP and HTTPS deployment — Disabling HTTPS now updates generated output URLs, removes stale managed worker configuration, and preserves the selected public protocol across updates.
  • Stable Direct Origin delivery — Controller URLs remain permanent while expiring signed tickets are refreshed inside relayed playlists, preventing periodic playback restarts in downstream panels.
  • Cleaner runtime and proxy state — Terminal stream rows are repaired safely and event records no longer appear in linear stream proxy assignments.
  • More reliable Fubo playback — Direct egress changes are honored, SSAI segment templates resolve correctly, and stale advertisement history is bounded to prevent repeated frames and excessive manifest processing.
  • Lower overload overhead — Repeated host-threshold warnings are rate-limited instead of generating per-stream log storms during high load.
v1.6.56

v1.6.56 — Multi-Audio Playback and Startup Recovery September 2026

  • Reliable multi-audio playback — Distinct audio renditions sharing a language remain separate across codec groups, preserving selected tracks and resolving blocked startup on affected channels.
  • Improved Dolby audio in CMAF — Codec-aware filtering and initialization correct AC3/E-AC3 handling without transcoding, including compatible primary-audio output.
  • More accurate stream health — Main and worker status checks detect incomplete startup even when video continues advancing, instead of presenting the output as healthy indefinitely.
  • Bounded startup recovery — Confirmed startup failures follow existing recovery limits; downloaded bytes alone no longer reset consecutive startup-failure counters.
  • Safe output lifecycle handling — Replacement CMAF outputs receive a fresh startup allowance, while completed startup and older-worker compatibility are preserved.
v1.6.55

v1.6.55 — Streaming Efficiency and Reliable Live Delivery September 2026

  • Smoother live delivery — Temporary audio gaps no longer send established streams back into startup waits, preventing false playlist-unavailable responses on main and worker-hosted streams.
  • Faster MPEG-TS processing — Optimized packet continuity processing reduces streaming overhead while preserving output continuity.
  • More efficient encrypted HLS startup — Playback validates selected rendition candidates instead of probing the full catalog, with fresh checks on session refresh and key changes.
  • Accurate track selection — Explicit video ID and index choices are respected alongside existing quality and audio preferences.
  • Improved cold-start handling — Longer bounded initial waits avoid premature retries on slower sources while preserving complete audio/video buffering and shared readiness checks.
  • Lifecycle-aware readiness — Genuine restarts and replacement CMAF outputs still require fresh startup buffers; rolling buffer health and rate-limited timeout diagnostics remain available.
v1.6.54

v1.6.54 — On-Demand Startup and Output Continuity September 2026

  • Improved on-demand buffering — Cold live starts wait for a small complete audio/video buffer before releasing playback, reducing exposure to incomplete startup output.
  • Streamlined startup requests — Brief attempt-local HLS playlist reuse and overlapping initialization/media downloads reduce repeated requests while respecting session and expiry boundaries.
  • Stronger worker startup readiness — Concurrent viewers share readiness checks, disconnected requests detach safely, and stale worker generations cannot satisfy startup readiness.
  • Reliable HLS redirects — Relative child-playlist URLs now resolve against the final response URL after redirects.
  • Stable saved output URLs — Starting saved service streams after account replacement reuses their existing identity, preserving original HLS and M3U links.
v1.6.53

v1.6.53 — Runtime Logging Reliability September 2026

  • Self-healing runtime logs — xOTT now detects incompatible log ownership at startup, preserves the affected file, and creates a safe writable replacement automatically.
  • Crash-resistant logging — Asynchronous file transport errors can no longer terminate the panel or worker; affected categories transparently fall back to systemd journal output.
  • Safer log storage — Runtime log paths now honor the configured log directory and initialize every rotating destination with restrictive permissions before application startup.
  • Isolated regression tests — Test logging and settings resolution no longer touch production log or database paths.
v1.6.52

v1.6.52 — Account Replacement Reliability September 2026

  • Seamless account replacement — Editing both the username and password now safely migrates the existing service account instead of creating a disconnected duplicate.
  • Stable Library outputs — Saved streams retain their stream identity, settings, DRM data, and existing HLS and M3U URLs when credentials are replaced.
  • Complete assignment continuity — Account proxy, SmartDNS, delegated access, downloads, recordings, event slots, and auto-start rules follow the replacement account automatically.
  • Safer credential validation — Replacement credentials are verified before migration, encrypted auto-login data is refreshed atomically, and stale account sessions are cleaned up.
v1.6.51

v1.6.51 — Dynamic DASH Playback Stability September 2026

  • Dynamic DASH continuity — Multi-period streams now preserve stable period identity and advance cleanly across rolling manifest updates.
  • Reliable live-edge handling — Completed periods retain their final fragment while only the open live period applies a safety holdback, preventing repeated frames and boundary gaps.
  • Controlled manifest recovery — Concurrent refreshes are coalesced and expired-fragment recovery is rate-aware, reducing transient 404/429 storms, stalls, and unnecessary restarts.
  • Long-running Fubo stability — SSAI transitions now wait for completed fragments and recover without recursive refresh churn for smoother sustained playback.
v1.6.50

v1.6.50 — Playlist Control and Provider Reliability September 2026

  • Flexible M3U outputs — Global metadata controls, optional service prefixes, consistent formatting, and direct downloads now cover Library, Viewer, Service, and Event playlists.
  • Cross-page bulk selection — Select all matching streams across pagination in Stream Table and Library without losing the selection while navigating pages.
  • Accurate worker connection bitrate — Active Connections now reports measured or stream-derived bitrate when viewers are served through load-balancer workers.
  • DAZN session reliability — Serialized token renewal and stable controller-worker proxy affinity reduce recurring authentication, manifest, and long-running playback interruptions.
v1.6.49

v1.6.49 — Stream Lifecycle and Events Performance August 2026

  • Reliable stream lifecycle — Serialized start, restart, and stop ownership prevents duplicate runtimes and stranded stream processes.
  • Faster Active Events — A dedicated live-state endpoint keeps event monitoring responsive without reloading the full catalog.
  • Efficient worker monitoring — Batched stream-state polling reduces controller overhead and worker communication while preserving accurate status.
  • Stronger worker recovery — Improved runtime observability and race handling keep controller and worker state aligned.
v1.6.48

v1.6.48 — Worker Placement Reliability August 2026

  • Race-free worker starts — Newly started worker streams are revalidated against current assignments before orphan cleanup can act.
  • Safe orphan cleanup — Generation fencing, authoritative ownership checks, and confirmation grace protect active streams while removing genuinely stranded runtimes.
  • Reliable on-demand events — Stable event-slot playback remains on its assigned worker throughout startup without false lifecycle interruption.
v1.6.47

v1.6.47 — Load Balancer Continuity August 2026

  • Reliable worker continuity — Assigned streams remain authoritative through worker restarts and transient runtime transitions without becoming falsely unavailable.
  • Self-healing load balancing — Stranded worker assignments are detected, recovered, and verified against a real runtime instead of stale database state.
  • Accurate stream status — Starting, restarting, running, and error states now reflect the actual controller or worker process throughout recovery.
  • Resilient reconciliation — Generation fencing, bounded recovery operations, preserved worker capabilities, and orphan cleanup improve long-running stability.
v1.6.46

v1.6.46 — Live DASH Stability August 2026

  • Stable live DASH ingest — Already-published source segments are consumed promptly, keeping output synchronized with the live edge.
  • Reliable SSAI playback — Bounded catch-up reduces expired fragments, discontinuity churn, buffering, and unnecessary stream recovery.
  • Safe format compatibility — MPEG-TS, fMP4, HLS, DRM, audio selection, and VOD throttling retain their existing behavior.
v1.6.45

v1.6.45 — Live Status & Event Reliability August 2026

  • Provider session recovery — Expired authentication is refreshed automatically while rotated request headers, cookies, tokens, and registered account identity remain synchronized.
  • Accurate dashboard events — Event and active-event cards now use the shared catalog and authoritative main/worker runtime state.
  • Smooth stream statuses — Streamstable, Library, and Active Events consistently display Starting, Running, Restarting, and Stopping transitions.
  • Effective UI intervals — Dashboard, stream tables, monitoring, and server pages now honor their configured refresh rates.
  • Reliable live polling — Visibility-aware, non-overlapping refresh cycles prevent stale responses and request buildup.
v1.6.44

v1.6.44 — Live Playback Continuity August 2026

  • Stable live playback — Prevents repeated media fragments when DASH providers refresh overlapping live windows.
  • Reliable session refresh — Rotating signed CDN parameters no longer cause previously emitted video to be processed again.
  • Safe provider compatibility — Functional media parameters, timeline changes, and genuine source transitions remain fully supported.
v1.6.43

v1.6.43 — License Fix & Account Reliability August 2026

  • License fix — Improved activation, renewal handling, and status consistency across the panel.
  • Clearer account details — License Management now presents plan, expiry, features, product, and customer information accurately.
  • Payment reliability — Purchase and renewal workflows now validate completed orders consistently before fulfillment.
  • Security and maintenance — Improved administrative session handling, website security policy, and cleanup of obsolete compatibility code.
v1.6.42

v1.6.42 — Worker Visibility & Startup Reliability August 2026

  • Accurate worker visibility — Stream Table and Library now reflect recovered worker runtimes instead of treating the controller's empty local runtime map as authoritative.
  • Reliable startup hydration — Controller metadata loads before optional startup services and self-heals on the first streams request if initialization was interrupted.
  • Race-free schema initialization — Output-token and access schemas now initialize once without concurrent trigger recreation, deadlocks, or partial controller startup.
  • Atomic stream metadata — Concurrent starts and refreshes publish complete metadata snapshots and automatically perform a final pass when batch mutations arrive during a load.
v1.6.41

v1.6.41 — Fast Stream Operations & Worker Recovery August 2026

  • Faster stream operations — Start and restart actions now use warm resource metrics, bounded DRM preparation, and readiness-driven cleanup instead of fixed delays.
  • Worker restart recovery — Graceful worker updates and restarts automatically restore continuously running streams that remain assigned by the controller.
  • Generation-safe recovery — Signed controller authorization and exact generation fencing prevent stale worker snapshots from resurrecting stopped or reassigned streams.
  • Reliable runtime reconciliation — Pending restorations remain visible during recovery, while idempotent stop handling and synchronized database flags eliminate false stop errors and zombie running states.
v1.6.40

v1.6.40 — Event Delivery Performance & Reliability August 2026

  • Event-slot playback performance — Stable event playlists and media assets now resolve through bounded read-only snapshots instead of repeating database work for every player request.
  • Immediate output consistency — Slot assignments, output settings, dynamic rules, and token rotations invalidate playback state immediately while concurrent refreshes remain safely coalesced.
  • Controller Relay reliability — Reduced controller data-plane contention keeps event playback responsive and prevents viewer traffic from degrading panel operations.
  • Efficient diagnostics — High-frequency HLS requests bypass access logging and repeated slow-query notices are aggregated to prevent log amplification under load.
v1.6.39

v1.6.39 — Events Performance & Service Reliability August 2026

  • Faster Events workspace — Cached event snapshots render immediately while provider updates refresh safely in the background, eliminating repeated waits during navigation and automatic refreshes.
  • Efficient event operations — Consolidated configuration reads, shared initialization, and bulk slot preparation substantially reduce database work on large event installations.
  • Reliable service discovery — Explicit service capabilities prevent unsupported event requests while preserving compatibility with established service integrations.
  • My5 refresh reliability — Authentication now recovers when an assigned proxy refuses the provider's sign-in endpoint, with clearer session errors and durable token renewal.
v1.6.38

v1.6.38 — Event Delivery & Italian DTT August 2026

  • Stable weekly event slots — Optional ISO-week assignment locks keep league-based event URLs mapped consistently through the week while still filling newly available empty slots.
  • Reliable on-demand events — Stable event-slot URLs now wait for playable media during cold starts, return retryable failures when startup cannot complete, and correctly coordinate on-demand with automatic start rules.
  • Zappr Italian DTT — A new anonymous live service provides compatible national and HbbTV channels with HLS, DASH, ClearKey, renewable resolver URLs, logos, proxies, and delivery fallbacks.
  • Anonymous service reliability — Adult TV Channels now resolves the provider's current renewable signed streams safely and recovers through redundant live sources.
v1.6.37

v1.6.37 — fMP4 Stability & Settings Reliability August 2026

  • Long-run fMP4 stability — Coordinated media epochs and immutable segment identities prevent stale cached media after restarts, codec changes, and source timeline resets.
  • Broader player compatibility — A selectable compatible CMAF mode muxes the primary audio track for applications that do not reliably support separate HLS audio renditions.
  • Reliable audio continuity — Stable rendition identities and bounded recovery keep audio synchronized through temporary source gaps and manifest refreshes.
  • Consistent stream settings — Output and advanced settings now remain synchronized across the panel, database, controller, restarts, and worker nodes.
v1.6.36

v1.6.36 — Worker Recovery & fMP4 Audio Continuity August 2026

  • Reliable worker recovery — Independent liveness monitoring restarts unresponsive worker control processes while preserving fenced stream recovery.
  • Bounded failure handling — Distributed restart circuits, honest runtime states, and protected manifest polling prevent retry storms and misleading running status.
  • Stable fMP4 audio — Harmless provider bitrate metadata changes no longer reset audio rendition playlists or cause extended mute periods on strict players.
  • Safe media compatibility — Genuine codec changes remain protected while monotonic timestamp validation continues across compatible fMP4 init refreshes.
v1.6.35

v1.6.35 — fMP4 Playback Reliability August 2026

  • Broader player compatibility — Video and audio are published as synchronized HLS renditions for reliable fMP4 playback across more applications and devices.
  • Long-run audio/video synchronization — Live media timelines remain monotonic across manifest refreshes and provider representation changes.
  • Complete audio continuity — Output waits for advertised audio renditions and refreshes safely instead of creating silent playback gaps.
  • Safe streaming recovery — Stale media fragments are discarded without corrupting active playlists, while MPEG-TS behavior remains unchanged.
v1.6.34

v1.6.34 — Anonymous Live Services & Account Reliability August 2026

  • New anonymous live services — Added channel catalogues for Hochu.tv and Adult TV Channels with no account or login required.
  • Renewable public playback — Nested players, signed HLS sessions, required request context, and delegated Catcast streams are resolved safely at stream start and refresh.
  • MAXtv account visibility — MAXtv Croatia now uses the universal .tokens account format and automatically migrates earlier private JSON sessions.
  • Reliable account storage — Empty application data-path settings are repaired during installation and updates so service logins persist in the directory monitored by xOTT.
v1.6.33

v1.6.33 — Stream Start & Session Reliability August 2026

  • Reliable service restarts — Refreshed provider session headers, user agents, cookies, and TLS context now follow the new manifest into controller and worker restarts.
  • Settings-preserving starts — Single, Library, restart, and batch start operations now load the complete saved settings envelope without reverting HLS or advanced output choices.
  • Clear upstream failures — DASH manifest requests now detect HTTP authentication and availability errors immediately instead of retrying non-XML responses until timeout.
  • Safer diagnostics — Restart logging reports useful session metadata without placing full signed manifest URLs in system logs.
v1.6.32

v1.6.32 — Streaming Engine Performance August 2026

  • Lower streaming overhead — Optimized transport-stream processing and media conversion paths reduce CPU usage while preserving output compatibility.
  • Efficient worker operation — Consolidated runtime logging, monitoring, and disk checks eliminate avoidable per-stream process overhead.
  • Long-run stability — Bounded media caches, self-cleaning timers, and leaner manifest handling keep memory usage predictable at higher stream counts.
  • Reliable media continuity — Improved timestamp and continuity handling maintains stable playback across native TS and fragmented MP4 inputs.
v1.6.31

v1.6.31 — Stream Settings & Service Outputs August 2026

  • Reliable batch settings — Mass edits now apply only the settings intentionally changed while preserving every untouched stream configuration.
  • Service output controls — Service-wide stream defaults are explicitly opt-in and include complete placement, HLS, FFmpeg, restart, and resource controls.
  • Event output reliability — Stable event URLs now support on-demand startup, correct inactivity handling, worker placement, and persistent per-stream overrides.
  • Accurate playlists — Disabled event outputs are enforced consistently and service linear playlists contain only channels saved to the Library.
v1.6.30

v1.6.30 — Worker Placement Reliability August 2026

  • Worker placement integrity — Keeps controller-owned placement policies intact when worker runtime state is synchronized, preventing assigned streams from falling back to Main.
  • Distributed proxy continuity — Preserves controller-assigned proxy and SmartDNS routing metadata across worker status updates and stream recovery.
  • Accurate stream visibility — Distributed stream tables now retain the effective proxy and server information reported by the active worker.
v1.6.29

v1.6.29 — Load-Balancing Reliability August 2026

  • Load-balanced playback — Prevents egress-bound provider sessions from being placed on incompatible workers and avoids stalled output.
  • Stream health and recovery — Detects frozen HLS timelines, refreshes failed sessions, and restores distributed streams safely after updates or restarts.
  • Accurate server visibility — Stream tables now report the server actually running each stream, including Main and unavailable states.
v1.6.28

v1.6.28 — Service Account Access August 2026

  • DGO account access — Adds first-class device pairing, regional activation, automatic rotating-token renewal, and reliable playback authorization.
  • Sling subscriber access — Adds device pairing and refreshable sessions so paid channel lineups remain available without browser CAPTCHA interruptions.
v1.6.27

v1.6.27 — Live Playback Reliability August 2026

  • DAZN live events — Eliminates recurring freezes, frame drops, and skipped action by processing rolling live timelines efficiently and keeping audio aligned.
  • Hulu compatibility — Updates live playback requests, proxy location handling, bounded retries, and safe error reporting for reliable channel startup.
v1.6.26

v1.6.26 — Service Playback Stability August 2026

  • Fubo stability — Reduces redundant live manifest traffic, handles upstream rate limits safely, and renews long-running sessions reliably.
  • Movistar Plus compatibility — Restores channel startup with the provider's current playback-session response.
v1.6.25

v1.6.25 — Load-Balancing Monitoring August 2026

  • Active connection visibility — Shows client playback for both controller relay and direct worker origin delivery, including the serving server.
v1.6.24

v1.6.24 — Load-Balancing Recovery August 2026

  • Worker recovery — Restores streams safely after a worker restart and strengthens high-load process handling.
v1.6.23

v1.6.23 — Load-Balancing Reliability August 2026

  • Worker control stability — Prevents signed worker control checks from being throttled during high stream counts.
v1.6.22

v1.6.22 — Load-Balancing Reliability August 2026

  • Worker control reliability — Orphaned worker streams are reconciled safely and completed stop actions no longer report false failures.
v1.6.21

v1.6.21 — Load-Balancing Reliability August 2026

  • Worker reconciliation — Safely detects and removes orphaned worker stream processes after interrupted restarts or stale commands.
v1.6.20

v1.6.20 — Polsat Box Go August 2026

  • Polsat Box Go — Rebuilt linear TV and live-event integration for the current provider API.
v1.6.19

v1.6.19 — Load-Balancing Reliability August 2026

  • Load-balancing policy save reliability — Optional worker limits now remain unset when left blank.
v1.6.18

v1.6.18 — License Fix August 2026

  • License fix — Restored reliable panel and worker license activation and validation.
v1.6.17

v1.6.17 — Library Visibility Fix August 2026

  • Library visibility fix — Saved linear channels with compound provider IDs now remain visible after Library reloads.
v1.6.16

v1.6.16 — Events and Playback Reliability August 2026

  • Events reliability — Added centralized event discovery with request deduplication, resilient caching, normalized status and identity, and bounded concurrent loading.
  • Event auto-start — Manual and service-default auto-start choices now persist server-side and continue across browser sessions and application restarts.
  • Event integrations — Improved service capability detection, event-slot assignment, playlist metadata, and XUI event import validation.
  • Fubo playback reliability — Corrected automatic session renewal for long-running channels.
  • Batch settings safety — Mass edits now apply only the controls explicitly modified by the user.
v1.6.15

v1.6.15 — Discovery+ Playback Fix August 2026

  • Discovery+ playback fix — Corrected DRM key processing for protected channels and videos.
v1.6.14

v1.6.14 — Live Audio Stability August 2026

  • Live audio stability fix — Corrected synchronization and continuity for streams with offset audio segments.
v1.6.13

v1.6.13 — DASH Audio Alignment August 2026

  • DASH audio alignment — Audio tracks are retained when providers use bounded half-segment timeline offsets.
  • HLS audio output — Improved segment pairing prevents valid audio from being omitted during muxing.
v1.6.12

v1.6.12 — DRM Proxy Validation August 2026

  • DRM proxy validation — Assigned proxies are now applied consistently during stream validation.
  • Manual stream startup — Proxy-protected DASH streams now pass preflight checks correctly.
v1.6.11

v1.6.11 — Discovery+ Channels August 2026

  • Discovery+ channels — Available linear channels are now discovered and listed correctly.
  • Discovery+ playback — Updated playback requests restore manifest and DRM retrieval.
  • Worker stream status — Proxy usage is now reported correctly for streams running on worker nodes.
v1.6.10

v1.6.10 — Viewer Event Playlists August 2026

  • Viewer event playlists — Assigned service events now generate correctly in protected viewer M3U outputs.
  • Access filtering — Viewer account assignments are resolved reliably when building event playlists.
v1.6.9

v1.6.9 — ESPN Playback Reliability August 2026

  • Event discovery — Live and upcoming ESPN events are now found consistently across all service sections.
  • Playback fix — Ad-supported ESPN event playback now uses the provider's supported request mode.
  • Service diagnostics — Stream startup failures now show clearer provider and DRM error details.
v1.6.8

v1.6.8 — On-Demand Reliability August 2026

  • Manual stream startup — On-demand streams saved from the Library now start correctly when requested.
  • Inactivity handling — Streams now stop after the configured timeout when media is no longer being watched.
  • Settings persistence — On-demand mode can now be disabled reliably from stream settings.
v1.6.7

v1.6.7 — CPU Monitoring Accuracy August 2026

  • CPU monitoring accuracy — Monitoring and Server pages now report live CPU usage instead of the average since boot.
  • Metric consistency — Controller and worker dashboards now use the same delta-based host CPU measurement.
v1.6.6

v1.6.6 — Reliability Improvements August 2026

  • Proxy test reliability — Tests now finish predictably when a proxy or notification service is unavailable.
  • Event diagnostics — Invalid service responses now return a clear error instead of an ambiguous data warning.
  • Database health accuracy — Index health now uses PostgreSQL validity state to avoid false degraded reports.
v1.6.5

v1.6.5 — Service Authentication Fix August 2026

  • Service authentication fix — Restored the correct pairing action on affected service cards.
  • Release validation — Service metadata is now verified during packaging.
v1.6.4

v1.6.4 — License Fix August 2026

  • License fix — Improved license activation and validation reliability.
  • Stability — General stability improvements.
v1.6.3

v1.6.3 — Worker License Recovery July 2026

  • Worker license recovery — Updated media nodes restore their signed license proof after startup instead of remaining in a stale offline state.
  • Worker status reliability — Controller heartbeat and version reporting remain available throughout local runtime recovery.
v1.6.2

v1.6.2 — Worker Reinstall Reliability July 2026

  • Worker HTTPS reinstall completion — Successful certificate and Nginx provisioning no longer ends with a false remote-install failure.
  • Worker heartbeat recovery — Media nodes continue reporting to the controller when local initialization needs recovery, preventing false offline status.
v1.6.1

v1.6.1 — Managed Worker HTTPS July 2026

  • Managed worker HTTPS — Add and reinstall workers can provision a validated domain, restricted Nginx origin, and Let's Encrypt certificate directly from the server page.
  • Reliable worker reinstalls — Existing worker endpoint and command identity are preserved until reinstall and HTTPS provisioning complete successfully.
v1.6.0

v1.6.0 — Worker Status Reliability July 2026

  • Worker license reliability — Concurrent validation checks are coordinated so valid worker licenses remain active during bursts of stream activity.
  • Worker update status accuracy — Controller health checks now retain worker protocol and capability data, eliminating false Update required warnings on current workers.
v1.5.99

v1.5.99 — Update and Restore Reliability July 2026

  • Update version reliability — Runtime and footer versions now come directly from package metadata, update notifications only appear for genuinely newer releases, and release builds abort when required version references are inconsistent.
  • Backup restore compatibility — PostgreSQL backup restores now safely normalize newer psql restrict directives when restoring onto supported older PostgreSQL installations.
v1.5.98

v1.5.98 — Live Streaming Reliability July 2026

  • ViX live continuity — Signed manifests now refresh before expiry, rotating authentication no longer re-imports overlapping segments, and authentication-only renewals preserve the active timeline to prevent timestamp rollbacks and unnecessary discontinuities.
  • CANAL+ NL and SolcoTV playback — Updated entitlement and playback negotiation so entitled live channels receive usable manifests and DRM data instead of generic service unavailable errors.
v1.5.97

v1.5.97 — MGM+ Library Save Fix July 2026

  • MGM+ Library saves — MGM+ provider channel IDs are no longer mistaken for saved Library record IDs, so channels now open in create mode and save correctly.
  • Library edit identity — Stream updates now require an explicit Library edit context, preventing catalog IDs from triggering unintended update requests.
v1.5.96

v1.5.96 — Service Management and Login Metadata Fixes July 2026

  • Service search and pagination — Service cards can be searched by name, are sorted consistently, and support selectable 12, 24, and 48 item page sizes.
  • Service lifecycle controls — Administrators can disable and re-enable integrations without deleting scripts, account tokens, saved streams, or configuration.
  • Bulk service actions — Administrators can select a page of services and enable, disable, or delete the selected scripts in one operation.
  • MGM+ login dialog — The AWS WAF Token field is refreshed from current service metadata whenever the login dialog opens.
  • Service metadata cache — Application updates now invalidate older browser metadata caches so newly added login fields appear immediately.
v1.5.95

v1.5.95 — MGM+ Login Verification Hotfix July 2026

  • MGM+ login verification — The service login dialog now displays the AWS WAF Token field required for initial MGM+ device linking.
  • Service login metadata — Production packages now retain service-defined browser-verification and multiline credential fields.
v1.5.94

v1.5.94 — CANAL+ Full HD and Service Reliability July 2026

  • CANAL+ Full HD playback — CANAL+ now prefers PlayReady and selects the service-provided Full HD representation and matching content keys when available.
  • DRM-aware stream lifecycle — Service-selected DRM now remains consistent through initial startup, batch startup, key refresh, automatic recovery, and recording workflows.
  • UPC Slovakia token hygiene — Background service discovery no longer creates a phantom default account token file.
v1.5.93

v1.5.93 — Unified CANAL+ and MGM+ Live TV July 2026

  • Unified CANAL+ service — One CANAL+ integration now supports France and Poland with country-aware device pairing, account discovery, live channel catalogues, signed DASH manifests, and Widevine playback.
  • CANAL+ proxy isolation — French and Polish accounts support independent account-level proxies across pairing, authentication, refresh, manifest, certificate, licence, and optional stream-segment traffic.
  • MGM+ live TV — Added MGM+, MGM+ Hits, MGM+ Marquee, and MGM+ Drive-In with authenticated sessions, live metadata, DASH playback, Widevine licensing, and session heartbeat handling.
v1.5.92

v1.5.92 — Distributed Delivery and Service Reliability July 2026

  • Direct worker media delivery — Stable controller playlist URLs now redirect viewers to signed worker-origin URLs, keeping stream bandwidth off the controller while preserving existing M3U and XUI links.
  • Network-aware load balancing — Placement now accounts for measured ingress and egress, capacity limits, active reservations, node health, CPU, memory, stream count, drain state, and configurable fallback behavior.
  • Licensed worker nodes — Every worker requires its own active worker license, with secure installation and remote activation, heartbeat validation, expiry enforcement, and panel status visibility.
  • F1TV feed expansion — Events now include provider-published alternate channels and driver onboard feeds with stable feed identities and dedicated playback routing.
  • Viaplay account persistence — Successful logins use XOTT's standard account token filename, migrate legacy hashed state automatically, and preserve the detected active service region.
  • Movistar long-running playback — Rotated authorization is persisted and session manifests renew before expiry so channels recover without becoming stuck after extended uptime.
  • SOCKS proxy readiness — PySocks is bundled and verified during installation and update, preventing services from failing with missing SOCKS dependencies.
  • Max playback reliability — Max reuses its paired device identity and retries transient signed-manifest CDN failures.
  • Accurate Max errors — Missing subscription packages are reported as account entitlement errors instead of being incorrectly labelled as geo-blocking.
v1.5.91

v1.5.91 — XUI Event Preservation Clarity July 2026

  • Explicit preservation control — Mass event imports now visibly default to keeping existing XUI configuration for previously imported events.
  • Safe refreshes — Server trees, bouquets, startup modes, and advanced settings are retained while the XOTT source, event title, and logo refresh.
  • Clear new-stream placement — Server, bouquet, and startup controls are labelled for new streams so they cannot be mistaken for overwrite settings.
v1.5.90

v1.5.90 — XUI Mass Event Reliability July 2026

  • Canonical event URLs — Mass imports now use the same persistent XOTT output identity as normal event streams, preventing mismatched and non-playing XUI sources.
  • Configuration preservation — Existing server trees, bouquets, startup modes, and advanced stream flags remain unchanged unless placement overwrite is explicitly selected.
  • Event ordering — LIVE events import first, followed by upcoming events in chronological order.
  • Event artwork — Single and mass event exports populate the XUI stream icon from validated provider artwork while retaining an existing icon when artwork is unavailable.
  • Queue reliability — Ordered queue persistence and corrected status handling prevent completed or retrying bulk jobs from becoming stuck.
v1.5.89

v1.5.89 — Vodafone Account Persistence July 2026

  • Account discovery — Successful Vodafone TV Portugal logins now use the standard account token filename and appear immediately on the Services card.
  • State migration — Existing authenticated sessions stored under the former hashed filename migrate automatically without losing device or playback credentials.
  • Login integrity — Preliminary device bootstrap state stays hidden until authentication completes, preventing failed logins from creating phantom accounts.
v1.5.88

v1.5.88 — Vodafone Runtime Reliability July 2026

  • Vodafone TV Portugal — Authentication now uses a bundled standalone device-authentication helper and no longer requires Node.js on customer servers.
  • Release integrity — The helper is compiled and WebCrypto-tested during every release build.
  • Installer coverage — Fresh installs and in-place updates deploy, permission, and validate the helper before completing.
  • Compatibility — Development environments retain a controlled Node.js fallback while production consistently prefers the isolated runtime.
v1.5.87

v1.5.87 — Playback Continuity and New Services July 2026

  • Playback continuity — Roku and equivalent server-side-inserted HLS streams now preserve every valid media segment throughout provider cue ranges, preventing downstream XUI starvation and recurring restarts.
  • Streaming safety — Cue metadata remains diagnostic only, while genuine HLS discontinuities and timestamp-reset recovery continue to protect decoder continuity.
  • New services — Added Tennis TV, F1 TV, NBA, Vodafone TV Portugal, and multi-region Viaplay integrations with their supported live channel, event, manifest, pairing, and Widevine workflows.
  • Service maintenance — Updated My5 authentication and playback handling for the provider's current API behavior.
v1.5.86

v1.5.86 — Peacock and Service Reliability July 2026

  • Peacock — Authentication, channel, event, manifest, and Widevine actions now use bounded verified requests, canonical event IDs, and standardized xOTT metadata.
  • Account safety — Normal Peacock polling no longer refreshes or rewrites authentication state, while password-bearing and stateful POST requests are never replayed automatically.
  • Reliability — Action-aware service-script deadlines prevent a stalled provider from leaving the Events page loading indefinitely.
  • Security — Peacock tokens are stored atomically with private permissions and sensitive authentication and DRM logging has been removed.
v1.5.85

v1.5.85 — Transport Stream Continuity July 2026

  • Fix — MPEG-TS PID continuity counters now remain continuous across generated HLS segment boundaries, preventing strict downstream ingest systems from interpreting each boundary as packet loss.
  • Playback — Remuxed Roku, Xumo, Samsung TV Plus, and equivalent HLS sources no longer develop recurring restarts or corrupted audio from transport-stream continuity resets.
  • Reliability — A live CDN segment that expires with HTTP 403 after output has started is now skipped and refreshed safely, while initial entitlement, location, and header failures remain fatal.
v1.5.84

v1.5.84 — MPEG-TS Timestamp Stability July 2026

  • Fix — MPEG-TS sources with absolute or discontinuous PTS are now normalized to a monotonic local HLS timeline, preventing downstream players such as XUI from restarting or stalling at source timestamp jumps.
  • Reliability — TS passthrough remains available for genuinely local continuous sources, while unsafe timestamp timelines are automatically normalized through FFmpeg.
v1.5.83

v1.5.83 — XUI Hierarchical Assignment Preservation July 2026

  • Fix — Updating an existing XUI stream now preserves the complete server tree, including parent-child relationships and multiple assigned servers.
  • Fix — Existing per-server on-demand or always-on startup settings and their checks are restored after the update.
v1.5.82

v1.5.82 — XUI Update State Preservation Fix July 2026

  • Fix — MPEG-TS HLS segments now retain a continuous cumulative timestamp timeline, preventing playback stalls at segment boundaries.
  • Fix — Existing XUI updates now reload and reassert the current server tree and bouquet assignments when no placement is selected.
v1.5.77

v1.5.77 — XUI Event Export Preservation July 2026

  • Fix — Existing XUI event updates now preserve their assigned server and advanced stream settings, including Generate PTS and Allow recording.
v1.5.76

v1.5.76 — Audio & Streaming Stability July 2026

  • Fix — Separate DASH audio tracks are now retained and included in generated HLS output.
  • Fix — MPEG-TS timestamp handling now preserves audio/video sync while preventing large source timestamps from causing latency, memory growth, and FPS instability.
  • XUI — New stream and event exports now default to on-demand startup mode, while updates preserve the existing XUI mode unless changed.
v1.5.75

v1.5.75 — Event Views & Playback Reliability July 2026

  • Events — Available events can now switch between responsive card and compact list views, with the preference retained per browser.
  • Fix — ITVX Widevine playback now returns content keys in XOTT's required CDM format instead of failing after successful license acquisition.
  • Fix — Updating an existing XUI stream with an upcoming event now preserves its current source URL and aborts safely if that source cannot be read.
v1.5.74

v1.5.74 — XUI Export Control & UPC Account Discovery July 2026

  • XUI — Event exports can preserve an existing stream's server assignment or explicitly target a selected XUI server.
  • XUI — Event exports can preserve the existing startup mode or explicitly select on-demand or always-running behavior.
  • Events — Exported XUI titles now place the event name before its date and configured-timezone start time.
  • Fix — UPC Slovakia now uses XOTT's canonical account token filename and automatically migrates existing logins so accounts remain visible after sign-in.
v1.5.73

v1.5.73 — XUI Event Mapping Reliability July 2026

  • Fix — XUI event replacement now saves its local event-to-stream mapping reliably after the upstream stream update succeeds.
  • Reliability — First-time replacements of existing XUI streams now create or update their mapping atomically.
  • Events — Exported XUI event titles now include the event start date, time, and configured xOTT timezone.
v1.5.72

v1.5.72 — XUI Category Stream Lookup July 2026

  • Fix — XUI existing-stream replacement now queries the selected category directly instead of filtering only the first paginated page of streams.
  • Reliability — Large XUI installations now return the complete set of matching replacement streams for the selected category.
v1.5.71

v1.5.71 — Recovery, Services & XUI Reliability July 2026

  • Safety — Database restore now performs versioned preflight validation, streamed uploads, SQL checks, capacity checks, safety snapshots, automatic rollback, migrations, and preserves the active administrator and license state.
  • Services — Added Cytavision, FloSports, UPC Slovakia, and Viki integrations, with refreshed ITVX authentication and playback handling.
  • Fix — XUI existing-stream replacement now lists only streams in the selected category and validates the replacement target server-side.
  • Fix — Separate listener routing now permits direct refreshes of the Streams and Stream Library panel pages while keeping playback routes isolated.
v1.5.70

v1.5.70 — Secure Server & Streaming Listeners July 2026

  • Security — Separate streaming listeners now expose only read-only playback routes while panel IP restrictions remain isolated to administration traffic.
  • Fix — Direct HTTP deployments now generate domain-and-port output URLs and clear stale streaming-domain overrides that could publish unreachable links.
  • Reliability — Secure deployment verifies the native listener and managed Nginx streaming route before reporting completion.
  • Documentation — Added a complete Server Settings guide covering domains, listener modes, HTTPS, Cloudflare, UFW, administrator CIDRs, and worker nodes.
v1.5.69

v1.5.69 — StarHub MediaCorp Playback July 2026

  • Fix — StarHub MediaCorp channels now preserve the final tokenized Broadpeak manifest URL so relative DASH segments remain on the authorized playback host.
  • Playback — Channel 5 HD was verified through manifest resolution, Widevine key acquisition, encrypted segment download, and successful 1080p decryption.
v1.5.68

v1.5.68 — StarHub Device Login Recovery July 2026

  • Fix — StarHub TV+ now reuses its persistent registered-device identity so normal username and password logins do not consume a new account device slot.
  • Improvement — New StarHub browser registrations are labeled XOTT and device-limit recovery can safely replace only the XOTT registration owned by the same installation.
  • Safety — Recovery never removes mobile, tablet, set-top-box, or unrelated browser devices, and clean installations receive an actionable device-limit error when no authorized recovery token exists.
v1.5.67

v1.5.67 — StarHub TV+ Integration July 2026

  • Feature — StarHub TV+ now supports password login through the current OAuth PKCE flow, persistent token storage, and automatic primary and Nagra token renewal.
  • Feature — Channel and sports-event discovery is subscription-aware, returns normalized artwork and scheduling metadata, and keeps event content out of the linear channel catalog.
  • Playback — Native StarHub channels now use authenticated playout URLs, Nagra SSM session setup, Widevine certificates and licenses, canonical kid:key CDM output, and guaranteed session teardown.
  • Playback — MediaCorp channels now use their dedicated manifest and Widevine authorization path while preserving the standard xOTT manifest and CDM contracts.
v1.5.66

v1.5.66 — Enterprise Streaming and Playback Reliability July 2026

  • Feature — Separate admin and streaming listeners now provide strict route isolation, configurable bind addresses, public playback URL rebasing, and managed HTTPS streaming domains.
  • Security — Admin CIDR controls, fail-closed access enforcement, hardened systemd services, Nginx and firewall reconciliation, DNS validation, and rollback protection strengthen production deployments.
  • Improvement — Worker-node and load-balancer deployments now preserve controller-hosted playback, validate signed worker routes, restrict worker firewalls, honor custom ports, and use tighter request-signature windows.
  • Fix — All4 and My5 DASH channels now extract Widevine PSSH data from MPDs and return canonical manifest and license fields for reliable CDM startup and playback.
v1.5.65

v1.5.65 — UK Live Service Updates July 2026

  • Fix — Plex live channel discovery now uses the current lineup API and returns the complete available channel catalog with working HLS manifests.
  • Fix — All4 live channels now use the current Channel 4 discovery and simulcast APIs with validated Widevine DASH playback.
  • Feature — My5 now supports Cognito account login, automatic refresh-token renewal, authenticated live-channel discovery, signed Cassie requests, encrypted response handling, and Widevine playback.
v1.5.64

v1.5.64 — Service Playback and Recording Fixes July 2026

  • Fix — Kayo Sports credential login now uses a browser identity consistent with its Chrome TLS fingerprint, preventing false CloudFront 403 blocks on valid Australian proxies.
  • Fix — Setanta live DASH events with duration-based SegmentTemplates now generate current video and audio segment windows for reliable playback.
  • Fix — Event recordings now preserve playable video, audio, and subtitle tracks while excluding SCTE-35 and timed-ID3 data streams that MP4 cannot mux.
v1.5.63

v1.5.63 — HLS Muxed Audio Manifest Fix July 2026

  • Fix — HLS master playlists with muxed audio renditions no longer crash stream startup with ERR_INVALID_URL.
  • Fix — MLB.TV live event playback now starts from signed HLS manifests that declare default audio without a separate URI.
  • Improvement — HLS stream selection now ignores non-fetchable audio/subtitle renditions defensively.
v1.5.62

v1.5.62 — MLB.TV Event Cards Hotfix July 2026

  • Fix — MLB.TV events now emit explicit LIVE/UPCOMING flags and ISO schedule times so the Events page no longer falls back to generic EVENT status.
  • Fix — MLB.TV event cards now populate Image and Logo fields from MLB media thumbnails or team-logo fallbacks.
  • Improvement — MLB.TV events now filter completed, postponed, and cancelled games out of the active events list.
v1.5.61

v1.5.61 — MLB.TV Service Rework July 2026

  • Improvement — Rebuilt MLB.TV service login and playback around the current Okta OAuth and MLB GraphQL session APIs.
  • Feature — Added MLB.TV schedule events and entitled linear channel manifests using the universal xOTT service-script format.
  • Fix — MLB.TV event manifests now use date-specific game IDs to avoid postponed/rescheduled gamePk mismatches and return signed HLS playback without CDM.
v1.5.60

v1.5.60 — ViX DASH SegmentList Playback July 2026

  • Fix — Added DASH SegmentList parsing so ViX/Lura DASH-only channels such as Bandamax generate live HLS segments instead of an empty playlist.
  • Fix — Preserved explicit ViX SegmentURL and init-segment token URLs during DASH parsing so CDN-signed media requests are not polluted with manifest-only query parameters.
  • Improvement — Encrypted DASH live streams now handle explicit SegmentURL MPDs in the same playback path as SegmentTemplate DASH streams.
v1.5.59

v1.5.59 — ViX DASH Playback & Service Updates July 2026

  • New — Added Kayo Sports service support with channel/event discovery, token import fallback, and Widevine playback handling.
  • New — Added Setanta Sports event service support with scheduled-event discovery, token refresh, and Widevine playback handling.
  • Fix — Paramount events now load again after provider rail/API changes while keeping linear channels clean.
  • Fix — ViX login now supports browser token import for proxies where PerimeterX blocks server-side password login.
  • Fix — ViX DASH-only channels now emit the standard Widevine CDM fields so encrypted MPEG-DASH channels such as Bandamax start with valid keys instead of an empty playlist.
  • Improvement — Custom service uploads, VOD detection, and the service-script tutorial now better cover Python services, cookies/tokens, pairing, anonymous services, events, and Widevine/PlayReady actions.
v1.5.58

v1.5.58 — Service Integrations & Custom Script Support July 2026

  • New — Added Kayo Sports service support with channel/event discovery, token import fallback, and Widevine playback handling.
  • New — Added Setanta Sports event service support with scheduled-event discovery, token refresh, and Widevine playback handling.
  • Fix — Paramount events now load again after provider rail/API changes while keeping linear channels clean.
  • Fix — ViX login now supports browser token import for proxies where PerimeterX blocks server-side password login.
  • Improvement — Custom service uploads, VOD detection, and the service-script tutorial now better cover Python services, cookies/tokens, pairing, anonymous services, events, and Widevine/PlayReady actions.
v1.5.57

v1.5.57 — Recording Automation & Event Auto-Start Control July 2026

  • New — Scheduled recordings can now auto-start their source stream before the recording window.
  • New — Event cards can be individually armed for auto-start when they become live.
  • New — Service Outputs can pre-arm upcoming events for auto-start by default per service.
  • Fix — Worker stream processes now have a global memory guard to restart runaway workers before they pressure the server.
  • Improvement — Recordings now expose auto-start, pre-start, source-started, and stop-after-complete state in the UI.
v1.5.56

v1.5.56 — Categories & Recordings July 2026

  • New — Library categories can now be created directly while saving streams.
  • New — Added a Recordings area for scheduled, active, completed, failed, and cancelled recordings.
  • New — Added channel recording actions from the Library and event recording actions from Events.
  • Improvement — Recordings are tracked in the database and can be cancelled, deleted, and downloaded from the UI.
v1.5.55

v1.5.55 — Domain Setup Completion Fix July 2026

  • Fix — Domain and HTTPS setup now completes on packaged installs without requiring a system node binary.
  • Fix — The setup helper now writes xOTT domain settings using Python, matching the installer runtime dependencies.
  • Improvement — Re-running Domain & HTTPS setup after a certificate is issued now cleanly updates settings and restarts xOTT.
  • Improvement — UI domain setup status no longer reports failure after successful certificate deployment due to a missing node command.
v1.5.54

v1.5.54 — Domain & HTTPS Setup July 2026

  • New — Added UI-driven domain and HTTPS setup from the Server settings panel.
  • New — Added automated Nginx and Let’s Encrypt setup through a root-owned systemd helper.
  • Improvement — Generated M3U, viewer, XUI, and worker controller URLs now honor the configured public domain.
  • Improvement — Worker node installs now default to the configured controller domain while keeping direct internal worker communication by default.
v1.5.53

v1.5.53 — Fox One Pairing Service July 2026

  • New — Added Fox One service support using device pairing as the only authentication flow.
  • Fix — Fox One playback now fetches and sends the required platform and home location metadata before manifest requests.
  • Fix — Fox One paired accounts now refresh through the correct Fox account token endpoint.
  • Improvement — Fox One channels, live events, and HLS manifests were verified against the live service flow.
v1.5.52

v1.5.52 — DirecTV Playback Content ID Fix July 2026

  • Fix — DirecTV live channel CDM now uses the playback contentRef or authorized feedId when it differs from the channel ccid.
  • Fix — DirecTV channels like USA Network HD no longer send the channel ccid as the Widevine contentID when the playback session is bound to another feed.
  • Improvement — DirecTV manifest logs now identify when the playback content ID differs from the channel ccid.
  • Improvement — DirecTV manifest/CDM handoff keeps PSSH, play token, and feed/content ID aligned for session-bound licenses.
v1.5.51

v1.5.51 — XUI Output URL Identity Fix July 2026

  • Fix — XUI stream export now preserves existing JSONB output identities instead of generating a fresh invalid o_ output id.
  • Fix — XUI stream_source now prefers the current tokenized xOTT HLS output URL when available.
  • Fix — Saved stream JSONB settings returned by PostgreSQL are now parsed correctly when already delivered as objects.
  • Improvement — XUI exports now use the same public HLS output identity shown in xOTT stream metadata.
v1.5.50

v1.5.50 — Samsung TV Plus Startup Restart Guard July 2026

  • Fix — Custom engine streams that fail at startup before producing HLS output are now quarantined instead of auto-restarting forever.
  • Fix — Samsung TV Plus sources with forbidden media segments now surface as broken source errors instead of repeatedly restarting workers.
  • Improvement — Restart attempts are only reset after a restarted custom engine proves it has produced output.
  • Improvement — Startup failure logs now include segment and download counters to make source-side playback failures easier to diagnose.
v1.5.49

v1.5.49 — XUI Bouquet and ffprobe Stability Fixes July 2026

  • Fix — XUI bouquet assignment is now verified and repaired after create_stream and edit_stream operations.
  • Fix — Packaged builds now resolve ffprobe from the install directory or system PATH instead of /snapshot/bin.
  • Fixffprobe spawn failures now reject metadata analysis instead of crashing the xOTT service.
  • Improvement — XUI bouquet repair keeps selected bouquets in sync through bouquet_channels when the API response omits persistence.
v1.5.48

v1.5.48 — XUI Export URL and Server Mapping Repair July 2026

  • Fix — XUI.ONE exports now normalize streams_servers.parent_id to match panel-created streams.
  • Fix — XUI server assignment is verified and repaired after create_stream and edit_stream operations.
  • Fix — XUI exports now prefer the canonical saved HLS playlist URL when outputId and playlistUrl differ.
  • Improvement — Opaque HLS output identity now preserves legacy IDs while promoting the working playlist ID.
v1.5.47

v1.5.47 — XUI Server Mapping Repair July 2026

  • Fix — XUI.ONE exports now normalize streams_servers.parent_id to match panel-created streams.
  • Fix — XUI server assignment is verified and repaired after create_stream and edit_stream operations.
  • Improvement — Added a fallback XUI mysql_query repair when the API accepts a stream but omits server mapping.
v1.5.46

v1.5.46 — XUI.ONE Server Tree Assignment Fix July 2026

  • Fix — XUI.ONE stream exports now send server_tree_data as JSON so streams are attached to the selected server.
  • Fix — XUI export server placement was verified against XUI.ONE 1.5.12 streams_servers mappings.
  • Improvement — Retained server_id normalization and compatibility aliases for XUI metadata variants.
v1.5.45

v1.5.45 — XUI Server Assignment Compatibility July 2026

  • Fix — XUI exports now normalize get_servers metadata to use the real server_id for placement.
  • Fix — Stream and event exports now submit additional XUI server assignment fields for panels that ignore server_tree_data alone.
  • Improvement — XUI export modal now prefers server_id when building the server dropdown selection.
v1.5.44

v1.5.44 — Slot-Aware XUI Event Bulk Export July 2026

  • New — Added bulk XUI export for selected active events.
  • Improvement — Event XUI exports now refresh service slot assignments once per service and preserve stable slot URLs during batch export.
  • Fix — Event start defaults now respect Service Outputs settings instead of overriding them with hardcoded client defaults.
  • Fix — DGO token refresh now accepts the browser local-storage id_token and refresh_token format more reliably.
v1.5.43

v1.5.43 — Bulk XUI Stream Export July 2026

  • New — Added bulk XUI export for selected Stream Library channels.
  • New — Bulk XUI export now reuses the existing XUI server, category, and bouquet placement controls.
  • Fix — Bulk XUI export reports per-stream success and failure results without hiding partial exports.
v1.5.42

v1.5.42 — Service Event Thumbnail Fixes July 2026

  • Fix — Stan events now expose thumbnails through the standard Image field used by the Events page and event M3U outputs.
  • Fix — Stan image extraction now handles alternate artwork payload shapes from sports/event rails.
  • Fix — Netflix MSL playback requests now preserve the refreshed mastertoken sequence after handshake.
v1.5.41

v1.5.41 — XUI Metadata Compatibility Fix July 2026

  • Fix — XUI metadata loading now accepts raw Admin API list responses from get_servers, get_categories, and get_bouquets.
  • Fix — Opening the XUI export modal no longer fails with Invalid response format from XUI on panels that return raw metadata payloads.
  • Fix — XUI bouquet metadata is normalized consistently for keyed-object and array API responses.
v1.5.40

v1.5.40 — XUI Export Placement Fix July 2026

  • Fix — XUI stream exports now require and send a valid server assignment instead of silently defaulting to server 1.
  • Fix — XUI exports now include category and bouquet placement using panel metadata so streams appear in the expected XUI tree.
  • New — XUI export dialog can load and select servers, live categories, and bouquets directly from the linked XUI panel.
v1.5.39

v1.5.39 — Sky Sport Now NZ Playback Stability July 2026

  • Fix — Sky Sport Now NZ playback now treats signed CDN 403 segment responses as expired media and refreshes the service manifest instead of restart-looping.
  • Fix — Sky Sport Now NZ now advertises a short session manifest refresh interval and safety window for its short-lived Akamai tokens.
  • Fix — Service manifest refresh scheduling now supports short-lived signed URLs without forcing a 30-second minimum delay.
v1.5.38

v1.5.38 — Sky Sport Now NZ Channel Classification Fix July 2026

  • Fix — Sky Sport Now NZ linear channels now use stable channel IDs and type=channel so they appear in the Streams table instead of the Events page.
  • Fix — Sky Sport Now NZ manifest refresh resolves each channel ID to the current liveEventId before playback.
  • Fix — Sky Sport Now NZ events now filter out TV Guide linear channel entries while keeping real event rows.
v1.5.37

v1.5.37 — Sky Sport Now NZ Support July 2026

  • New — Added Sky Sport Now NZ service support with password login, device pairing, live channels, events, VOD, and Widevine playback.
  • Fix — DASH parsing now honors Representation-level BaseURL entries so Sky Sport Now NZ init and media segments resolve correctly.
  • Fix — Sky Sport Now NZ extracts Widevine PSSH from DASH init segments and passes required DRM license headers.
v1.5.36

v1.5.36 — SolcoTV Playback Fix July 2026

  • Fix — SolcoTV playback now requests Canal+ NL manifests with the web-client smartLib setting so CDN media segments authorize correctly.
  • Fix — SolcoTV BBC One HD and other standard channels no longer stall after manifest startup with segment 401 errors.
v1.5.35

v1.5.35 — Batch Library Save Fix July 2026

  • Fix — StreamsTable Save Selected now saves every selected stream to the Library instead of only opening the first stream.
  • Fix — Batch library saves preserve each stream's own name, manifest URL, and DRM keys while applying shared library metadata.
v1.5.34

v1.5.34 — Paramount+ and Max Pairing Fix July 2026

  • Fix — Paramount+ and Max device pairing workers now start correctly from encrypted service deployments.
  • Fix — Pairing completion now surfaces worker startup failures and activation timeouts instead of leaving the Services modal stuck waiting.
  • Fix — Paramount+ and Max pairing workers now preserve the selected authentication proxy during activation polling.
v1.5.33

v1.5.33 — BBC iPlayer Live HLS Fix July 2026

  • Fix — BBC iPlayer live channels now prefer clear HLS manifests over BBC's DASH Number-template manifests to avoid startup stalls.
v1.5.32

v1.5.32 — TOD Events and BBC Anonymous Fixes July 2026

  • Fix — TOD events now publish live/upcoming flags, thumbnails, metadata, and event playback manifests using the correct PPV request type.
  • Fix — BBC iPlayer now advertises anonymous access, returns success for no-auth activation, and applies the selected proxy to VOD catalog requests.
v1.5.31

v1.5.31 — StreamLocator DoH Transport Fix July 2026

  • Fix — Scoped StreamLocator DoH now uses direct RFC8484 DNS-message POST so production installs no longer silently fall back to normal DNS.
  • Fix — TOD PSSH/CDM manifest fetch now keeps the StreamLocator-routed endpoint instead of forcing the token-bound IP family.
v1.5.30

v1.5.30 — TOD Akamai Manifest Fetch Fix July 2026

  • Fix — TOD CDM now receives the exact stream manifest URL from startup instead of creating a second playback URL.
  • Fix — TOD PSSH extraction now honors Akamai token IP-family binding to avoid IPv4/IPv6 mismatch 403 errors.
v1.5.29

v1.5.29 — TOD DRM PSSH Handoff Fix July 2026

  • Fix — TOD DRM startup now calls the service CDM flow when the manifest has a license URL but no inline PSSH.
  • Compatibility — TOD CDM can now refetch the manifest and extract PSSH itself before license acquisition.
v1.5.28

v1.5.28 — TOD curl_cffi SmartDNS Fix July 2026

  • Fix — TOD now applies scoped SmartDNS to curl_cffi requests using libcurl resolve entries in encrypted runner deployments.
  • Diagnostics — TOD logs the curl_cffi scoped SmartDNS host-to-IP resolution used for login, manifest, and license calls.
v1.5.27

v1.5.27 — StreamLocator DoH Fix July 2026

  • Fix — StreamLocator scoped DoH now decodes and validates percent-encoded dns-query URLs before saving or applying them.
  • Compatibility — TOD login now defaults to a curl_cffi impersonation profile supported by older Python 3.8 deployments.
v1.5.26

v1.5.26 — Live Multi-Audio Stall Fix July 2026

  • Fix — Live streams with default multi-audio selection no longer stall when one alternate audio rendition is missing or out of sync.
  • Compatibility — ESPN and DirecTV event starts now preserve default track behavior while allowing video plus matched audio to keep advancing.
v1.5.25

v1.5.25 — ESPN Unlimited License Fix July 2026

  • Fix — ESPN Unlimited Widevine licensing now uses the regular ESPN playback license endpoint for BAM Edge slide manifests, resolving content-key.invalid-linear-key errors.
  • Compatibility — ESPN CDM includes an ESPN-only retry from the channel license endpoint to the regular endpoint for existing stale manifest handoffs.
v1.5.24

v1.5.24 — ESPN Unlimited Playback Fix July 2026

  • Fix — ESPN Unlimited events now resolve BAM playback using source playbackId when Watch Graph returns an empty source URL.
  • Fix — ESPN direct-auth live events no longer fail early with a missing source URL before reaching the BAM Edge playback flow.
  • Compatibility — ESPN manifest resolution now matches the SlyGuy playback-id path for ESPN Unlimited airings.
v1.5.23

v1.5.23 — ESPN Widevine PSSH Fix July 2026

  • Fix — ESPN CDM no longer sends an empty Widevine PSSH after a media-manifest probe fails.
  • Fix — ESPN CDM can build a valid Widevine PSSH from DASH default_KID data when cenc:pssh is absent.
  • Fix — ESPN CDM handoff now passes real script-provided PSSH values through start, refresh, and recovery paths.
v1.5.22

v1.5.22 — ESPN CDM Manifest 403 Fallback July 2026

  • Fix — ESPN CDM no longer aborts when Akamai rejects direct media-manifest PSSH probing with HTTP 403.
  • Fix — ESPN CDM now falls back to a generic Widevine PSSH when the script has a valid license token but no manifest PSSH.
  • Fix — ESPN live events can continue license acquisition without relying on forbidden tokened media-manifest fetches.
v1.5.21

v1.5.21 — ESPN HLS CDM Refresh Fix July 2026

  • Fix — ESPN HLS playback refresh now uses the resolved airing id CDM handoff instead of the generic PSSH manifest fetch path.
  • Fix — ESPN HLS key refresh no longer passes PSSH to CDM, preventing 403 manifest fetch failures during live playback.
  • Fix — ESPN refresh CDM now reads license URLs from both top-level and Drm metadata fields.
v1.5.20

v1.5.20 — ESPN CDM Auth Recovery Fix July 2026

  • Fix — ESPN CDM now re-resolves by event id whenever license authorization headers are missing, even if PSSH was supplied by the caller.
  • Fix — ESPN stream recovery now uses the same resolved airing id CDM handoff as normal stream start.
  • Fix — ESPN recovery no longer passes tokened media manifest URLs to CDM unless no valid content id is available.
v1.5.19

v1.5.19 — ESPN CDM Handoff Fix July 2026

  • Fix — ESPN stream start now passes the resolved airing id into CDM instead of relying on stale UI ids.
  • Fix — ESPN CDM now uses the id re-resolve path during stream start so license authorization headers are restored before key requests.
  • Diagnostics — Added sanitized ESPN CDM handoff logging for content id, PSSH presence, and manifest URL usage without exposing tokens.
v1.5.18

v1.5.18 — ESPN Linear Manifest CDM Fix July 2026

  • Fix — ESPN CDM now re-resolves live events by id before falling back to stale media manifest PSSH fetches.
  • Fix — ESPN media manifest URLs are normalized to HTTPS to avoid Akamai 403 responses on linear DASH/HLS paths.
  • Fix — ESPN PSSH fields are emitted and consumed with common aliases so stream start passes inline PSSH reliably.
v1.5.17

v1.5.17 — ESPN CDM Start Header Fix July 2026

  • Fix — ESPN CDM now applies the account authorization token to manifest PSSH fallback requests when manifest headers are missing or incomplete.
  • Fix — ESPN stream-start CDM calls now pass event/channel type through to match direct CDM action behavior.
  • Safety — The PSSH retry remains inside the ESPN service script and does not change the generic streaming engine behavior for other services.
v1.5.16

v1.5.16 — ESPN CDN PSSH Header Fix July 2026

  • Fix — ESPN CDM PSSH fallback now fetches ESPN CDN manifests with the authorized playback headers needed to avoid 403 responses.
  • Fix — ESPN-only CDM calls now receive manifest URL and manifest headers when PSSH must be recovered from playback data.
  • Safety — License-only DRM fallback is scoped to ESPN so other services keep the previous PSSH plus license URL requirement.
v1.5.15

v1.5.15 — ESPN Encrypted CDM Fallback Fix July 2026

  • Fix — ESPN encrypted releases now re-enter manifest resolution through runner.py during CDM fallback instead of looking for a raw ESPN.py file.
  • Fix — ESPN CDM fallback now preserves channel/event type when resolving missing PSSH from a fresh manifest.
  • Improvement — Batch DRM startup now matches live startup by allowing service CDM actions to resolve PSSH from license-only manifests.
v1.5.14

v1.5.14 — DRM PSSH Fallback Fix July 2026

  • Fix — Live DRM startup now allows service CDM actions to discover PSSH when the manifest only provides a license URL.
  • Fix — ESPN paired events no longer fail early when Widevine PSSH is absent from the manifest response.
  • Improvement — Stream recovery uses the same CDM fallback path for refreshed DRM service manifests.
v1.5.13

v1.5.13 — ESPN DRM Startup Fix July 2026

  • Fix — ESPN DRM manifests now expose the universal CDM fields required by live event startup.
  • Fix — ESPN CDM requests now carry the BAM playback authorization token when resolving Widevine keys.
  • Improvement — ESPN HLS Widevine PSSH detection now covers both media keys and session keys.
v1.5.12

v1.5.12 — ESPN Pair Worker Fix June 2026

  • Fix — ESPN account pairing now starts its background activation worker correctly from encrypted service deployments.
  • Fix — ESPN pairing completion now reports worker startup failures and activation timeouts instead of waiting forever.
  • Improvement — Release package and lockfile versions are bumped consistently across root, server, and client packages.
v1.5.11

v1.5.11 — Pairing Hotfix June 2026

  • Fix — Services page pairing controls now tolerate stale or malformed service metadata without crashing the app.
  • Fix — ESPN universal Pair Device now uses ESPN account device activation consistently with the pairing completion action.
  • Improvement — Service metadata and login instructions are normalized before rendering to protect older cached installs.
v1.5.10

v1.5.10 — ESPN Pairing & StreamLocator Activation June 2026

  • Feature — StreamLocator account activation can now log in, activate the VPS IP, and save the discovered DoH URL as a scoped SmartDNS server.
  • Feature — Scoped SmartDNS assignments now load real services, accounts, and streams dynamically, with removable scoped servers and assignment chips.
  • Improvement — ESPN now follows the universal xOTT action contract with device pairing, SlyGuy-style BAM playbackId resolution, and CDM support while keeping username/password and cookie login disabled.
v1.5.9

v1.5.9 — Scoped SmartDNS & StreamLocator DoH June 2026

  • Feature — Scoped SmartDNS now supports service, account, and stream assignments without changing the server-wide network DNS.
  • Feature — StreamLocator DNS-over-HTTPS resolver URLs can now be saved and used for scoped service scripts, manifest fetching, and segment downloads.
  • Improvement — SmartDNS routing now follows the existing proxy precedence model, keeping proxy traffic isolated while applying DNS only to direct scoped requests.
v1.5.8

v1.5.8 — SolocoTV CDM Support June 2026

  • Feature — CANAL+ NL / SolocoTV now supports the standard CDM action with Widevine license exchange.
  • Improvement — SolocoTV manifest output now exposes license URL, PSSH, certificate, and CDM metadata in the common xOTT service format.
  • Fix — SolocoTV service certificates are normalized before pywidevine privacy-mode setup, and all service actions were verified through proxy-backed account data.
v1.5.7

v1.5.7 — TOD Proxy Consistency & Fubo Refresh June 2026

  • Fix — TOD manifest and PSSH requests now keep using the configured proxy consistently, matching the service-level proxy contract.
  • Fix — TOD channel manifest URLs append Akamai CDN tickets with the correct query separator.
  • Fix — Fubo scheduled token refresh now discovers token files stored under the scripts directory and can re-login with saved credentials when refresh tokens expire.
v1.5.6

v1.5.6 — TOD TV Now Channel Discovery June 2026

  • Fix — TOD linear channel discovery now uses the current TV Now page so Sports, Series, Movie, News, Kids, and other channel rails are returned.
  • Fix — TOD event discovery continues to use the Live page for live and upcoming sports events.
  • Fix — TOD login, refresh, channels, events, and channel manifest workflows were verified with proxy-backed access.
v1.5.5

v1.5.5 — Stable Library Outputs & Worker Metadata June 2026

  • Fix — Saved Library stream output IDs are now preserved across saved-source starts, restarts, failures, and app restarts.
  • Fix — Library sync is now non-destructive; provider/script channel misses mark streams as missing instead of deleting saved rows.
  • Fix — Inactive saved streams now expose persisted manifests and DRM keys for metadata/recovery workflows.
  • Improvement — Server bandwidth cards now separate interface traffic from XOTT streaming input/output capacity.
  • Fix — Worker node metadata now exposes original manifest URLs and DRM keys, and worker update status/version refreshes automatically.
v1.5.4

v1.5.4 — Live DASH Refresh De-Duplication June 2026

  • Fix — Live DASH refresh now applies the live-status guard before track selection, preventing DGO transient VOD flags from selecting stale periods.
  • Fix — DASH segment de-duplication now keys real media URLs first so repeated period metadata cannot reprocess already-written segments.
  • Fix — DGO/DSPORTS+ streams now avoid duplicate segment output after SSAI period refreshes.
v1.5.3

v1.5.3 — Live Multi-Period DASH Stability June 2026

  • Fix — Live multi-period DASH streams now follow the newest playable period instead of freezing on stale duplicated tracks.
  • Fix — DASH segment tracking is now period-aware to prevent repeated period segment numbers from being treated as already processed.
  • Fix — Live DASH period changes now trigger safe HLS discontinuities and timing baseline resets for SSAI period rotation.
v1.5.2

v1.5.2 — Worker Node Metrics and Metadata Bridge June 2026

  • Fix — Worker-node streams now report live runtime metrics back to the controller for the Streams table.
  • Fix — Metadata modals now fetch selected and available track metadata from the assigned worker node when a stream is running remotely.
  • Improvement — Server page now exposes worker node app versions clearly and update commands report reliable status/version references.
v1.5.1

v1.5.1 — Library Bulk Import and Duplicate Streams June 2026

  • Improvement — Library now supports bulk manual stream import from JSON/o11 cfg, M3U/M3U8, and TXT files with automatic name, URL, and DRM key detection.
  • Improvement — Bulk-imported Library streams can be saved without starting or imported and started sequentially.
  • Improvement — Library streams can now be duplicated into a prefilled copy with source URL, keys, metadata, and settings preserved under a fresh stream identity.
v1.5.0

v1.5.0 — Live DASH Companion Audio Stability June 2026

  • Fix — Live DASH streams now reject timestamp-mismatched companion audio before muxing, preventing wrong-audio/video-only segment bursts.
  • Fix — Live DASH now waits briefly for selected audio to catch up instead of emitting transient video-only segments during provider audio hiccups.
v1.4.99

v1.4.99 — OQEE/Proxad CMAF DRM Payload Fix June 2026

  • Fix — OQEE/Proxad DASH DRM streams now repair mismatched fragment sgpd/seig encryption metadata before mp4decrypt, resolving green-screen/corrupt playback.
  • Fix — CMAF init segments with zeroed tenc KIDs or wrong IV sizes are patched from the media fragment encryption description before decryption.
v1.4.98

v1.4.98 — OQEE/Proxad DRM Decryption Fix June 2026

  • Fix — OQEE/Proxad DASH DRM streams now pass the matched key to Bento4 by track ID as well as KID, resolving invalid decrypted fragments and FFmpeg sub-sample encryption errors.
  • Fix — Manual DRM streams with single-track CMAF fragments now decrypt more reliably when provider init metadata exposes zeroed or unusable tenc KIDs.
v1.4.97

v1.4.97 — CosmoteTV & SportEurope Playback Reliability June 2026

  • Fix — CosmoteTV login now validates the real SSO ticket/profile flow and no longer saves fake successful sessions from WAF cookies.
  • Fix — CosmoteTV now respects configured proxies across login, refresh, channel, playback, manifest, and license requests.
  • Fix — SportEurope live events now use the current web-player API instead of the obsolete asset-token flow that returned SERVICE_UNAVAILABLE.
  • Fix — SportEurope Mux playback now includes the required player Origin and Referer headers so signed HLS manifests authorize correctly.
v1.4.96

v1.4.96 — Worker Node & DirecTV Reliability June 2026

  • Fix — Worker-node starts now reconcile controller stream state immediately so remotely running streams appear active in Streamstable.
  • Fix — Failed controller persistence now stops the remote worker process, preventing ghost stream counts and orphaned playback.
  • Fix — DirecTV signed-manifest replacement is queued and applied atomically without clearing active track selections during playback.
  • Improvement — DirecTV audio alignment, selected-track DRM probing, and daily key rotation now recover in place before requiring a restart.
v1.4.95

v1.4.95 — Fubo Channel & Proxy Reliability June 2026

  • Fix — Fubo channel discovery now restores the authenticated device identity, session, cookies, and selected proxy across subsequent account actions.
  • Fix — Fubo channel failures now return structured authentication and subscription errors instead of silent empty results.
  • Improvement — Fubo token refresh supports rotated refresh tokens and stores account state atomically with owner-only permissions.
v1.4.94

v1.4.94 — Saved Library Source Recovery June 2026

  • Fix — Saved service streams now fall back to their persisted Library manifest and DRM keys when provider authentication or service scripts fail.
  • Improvement — Library fallback starts preserve the original stream identity and settings while bypassing the unavailable provider account.
v1.4.93

v1.4.93 — Spectrum TV Full Playback Support June 2026

  • New — Spectrum TV now supports automatic email/password authentication without manual browser bootstrap.
  • New — Spectrum TV live channels, DASH manifests, Widevine licensing, and proxy-aware playback are fully supported.
  • Fix — Spectrum authentication now migrates legacy device verification into PiNxt and automatically recovers through refresh token, device verifier, or credential relogin.
v1.4.92

v1.4.92 — Proxy, Manual Stream & Library Reliability June 2026

  • Fix — Account and stream proxy assignments now persist correctly across both proxy-management entry points.
  • Fix — Failed stream starts no longer corrupt channel names, and transient account streams are cleaned up without deleting saved Library entries.
  • Improvement — Password, cookie, credential-update, and device-pairing flows now support an optional request-scoped authentication proxy.
  • Improvement — Manual streams can use the full stream-settings workflow and can be saved to the Library without starting.
  • Improvement — Saved service streams expose editable manifests and DRM keys, survive account removal, and automatically reattach and sync when the account is restored.
v1.4.91

v1.4.91 — License Renewal Warning June 2026

  • Improvement — The app now warns customers when their license is within 3 days of expiration so they can renew before service interruption.
v1.4.90

v1.4.90 — Monitoring and Stream Placement Update June 2026

  • Fix — Server page bandwidth now uses the same live input/output measurements as Monitoring, removing upload/download inconsistencies between pages.
  • Improvement — Monitoring active connections now shows a total counter and paginates large connection lists.
  • Improvement — Streams, library, and active events tables can optionally show the server or worker node currently running each stream.
  • Fix — Movistar playback now forwards authenticated CDN headers to the engine and reports explicit CDN proxy rejections instead of failing later on invalid manifest HTML.
v1.4.89

v1.4.89 — Live Event Duration Fix June 2026

  • Fix — HLS playlists now reject implausible probed TS durations and keep EXTINF aligned to the source segment duration, preventing live event players from buffering on false long segments.
v1.4.88

v1.4.88 — Live Event Pacing Fix June 2026

  • Fix — Live DASH event streams now pace HLS output at media duration instead of publishing catch-up batches as fast as CPU allows, reducing player buffer churn.
  • Fix — Live DASH audio-only edge windows no longer force stream re-selection, preventing repeated discontinuities during DAZN-style event manifests.
v1.4.87

v1.4.87 — Service Worker Engine Fix June 2026

  • Fix — Service stream manifest refresh callbacks now work through worker IPC, allowing DirecTV/DGO/Vix-style service engines to actually run outside the main API process.
  • Performance — Multi-stream HLS generation is isolated from the main HLS/API server for eligible service streams, reducing parent-process CPU pressure and playback stalls.
v1.4.86

v1.4.86 — Worker Engine Default June 2026

  • Performance — Eligible streaming engines now run in worker processes by default, keeping the main API/HLS server responsive under multi-stream load.
  • Fix — Monitoring connection updates now respect the configured log level instead of writing raw stdout logs during normal playback.
v1.4.85

v1.4.85 — Live HLS Catch-Up Fix June 2026

  • Fix — Live HLS catch-up batches now drain immediately instead of being paced in real time, preventing missed upstream playlist windows and 40-50 second PTS gaps.
  • Performance — Opaque HLS output URLs now cache output-id resolution to avoid database lookups on every playlist and segment request.
v1.4.84

v1.4.84 — Live HLS Segment Drop Fix June 2026

  • Fix — Live HLS streams no longer drop part of the current media-playlist window as stale backlog, preventing PTS jumps and frozen gaps on DirecTV-style sources.
  • Fix — Live HLS batch output is paced across the full inspected live-edge window instead of writing only the newest subset in bursts.
v1.4.83

v1.4.83 — Live HLS Stability Fix June 2026

  • Fix — Live HLS streams that publish multi-segment batches are now paced at media duration so output advances steadily instead of bursting then starving players.
  • Fix — Background track metadata capture now reads active engine metadata directly and avoids public self-calls that could fail auth and add startup load.
v1.4.82

v1.4.82 — HLS Delivery Database Pressure Fix June 2026

  • Fix — Local HLS playback now skips per-segment worker assignment misses when no streams are assigned to load-balancer nodes.
  • Fix — Worker assignment lookups now use longer negative caching and coalesce concurrent misses to reduce database pressure during playback.
  • Fix — On-demand HLS checks now cache repeated non-on-demand misses instead of querying the database on every playlist request.
  • Fix — Public HLS on-demand resolution now uses a short cache to reduce repeated database lookups under multi-client playback.
v1.4.81

v1.4.81 — Live HLS Playback Stability June 2026

  • Fix — HLS asset requests now cache worker assignment lookups to prevent per-segment database pressure during playback.
  • Fix — Live HLS segments are written atomically so players cannot read zero-byte or partially-written segment files.
  • Fix — Live master-playlist refresh now preserves the previous video selection when a transient provider response returns an empty media playlist.
  • Fix — Segment range races now return clean client responses instead of generic 500 errors that amplify VLC/FFmpeg retries.
v1.4.80

v1.4.80 — Load Balancer Worker Orchestration June 2026

  • Feature — Added worker-node load balancing orchestration for running stream workloads across eligible servers.
  • Feature — Added global, service-level, and stream-level placement policies with node/group targeting and fallback controls.
  • Feature — Added worker capacity controls including max streams, CPU/memory thresholds, weights, groups, tags, and drain mode.
  • Security — Worker commands use signed controller-to-node authentication while the main server remains the public HLS output endpoint.
v1.4.79

v1.4.79 — DirecTV Live Stability June 2026

  • Fix — HLS stale-output recovery is now monitor-confirmed and no longer restarts streams from playlist/API read requests.
  • Fix — Live media playlist fetches use longer timeouts and DirecTV startup can continue video-first if an audio variant is temporarily slow.
  • Fix — Stream startup failure cleanup now preserves existing HLS output during restart attempts.
  • Fix — DRM stream key replacement is serialized per stream to prevent stale or duplicated DirecTV keys from concurrent saves.
v1.4.78

v1.4.78 — Live HLS Restart Race Fixes June 2026

  • Fix — Restart fallback paths now pass HLS output preservation through the streaming-engine adapter, including worker-mode cleanup.
  • Fix — HLS playlist writes now use unique atomic temp files so old engine cleanup cannot delete a replacement engine's in-flight playlist.
  • Fix — Live manifest refresh now preserves the last valid video selection if a transient refresh returns an invalid empty selection.
  • Stability — DirecTV and other live HLS streams are protected against restart collisions that caused playlist rename failures and restart loops.
v1.4.77

v1.4.77 — Live HLS Restart Stability June 2026

  • Fix — Custom engine restarts now preserve HLS output files and wait for the processing loop before cleanup, preventing playlist rename races.
  • Fix — Worker-mode engine stops now receive the same restart-preservation options as inline engines.
  • Fix — HLS master playlists now lock live status only after the selected media playlist is loaded, preventing false live-to-VOD flips.
  • Stability — DirecTV and other live HLS streams are less likely to enter stale playlist restart loops during manifest refreshes.
v1.4.76

v1.4.76 — Private HLS Output Links June 2026

  • Feature — Stream HLS output links now use stable opaque output IDs instead of exposing service account or stream key details.
  • Compatibility — Existing legacy HLS links remain supported while new stream, viewer, service-output, global-output, and XUI URLs use the private output format.
  • Security — Output identity resolution is centralized and persisted in stream metadata so customer-facing links no longer reveal internal stream identifiers.
  • Fix — Event M3U exports now stop guessing old public stream paths when a managed output URL is unavailable.
v1.4.75

v1.4.75 — Load Balancer Nodes June 2026

  • Feature — Added worker load balancer node orchestration so streams can run on external nodes while the main server remains the centralized controller.
  • Feature — Added load balancer server installation flow with signed controller-to-node command authentication.
  • Security — Worker nodes inherit protected runtime delivery with encrypted service scripts, license enforcement, and restricted node-only API access.
  • Fix — Vix live streams now refresh session manifests and DRM authorization more reliably during runtime restarts.
v1.4.74

v1.4.74 — DirecTV Activation Token Recovery June 2026

  • Fix — DirecTV CDM now detects expired activation tokens, forces account re-login, refreshes playback authorization, and retries key retrieval once.
  • Fix — DirecTV device identity cookies are now cached per account instead of sharing one identity across all accounts.
  • Diagnostics — DirecTV activation and license failures now include sanitized response snippets to make account-token issues visible.
  • Stability — DirecTV accounts can recover CDM keys after activation-token expiry even when channel listing still works.
v1.4.73

v1.4.73 — DirecTV Restart Recovery June 2026

  • Fix — DirecTV manifest probing now uses the configured service HTTP client and proxy path when choosing primary or fallback manifests.
  • Stability — Active transient service streams are retained after failed restart refreshes so recovery can retry instead of dropping the stream from active state.
  • Fix — Stream status database updates no longer hit the enum/text parameter conflict that could leave active state stale.
  • Compatibility — DirecTV now marks refreshed manifests with the generic SessionManifest service contract so restart refresh stays engine-neutral.
v1.4.72

v1.4.72 — DASH Query Token Preservation June 2026

  • Fix — DASH segment URLs now preserve provider manifest authentication query parameters even when segments already include their own query string.
  • Stability — Tokenized DASH streams avoid CDN 403 loops caused by dropping signed MPD query parameters during segment URL resolution.
  • Compatibility — Query propagation remains generic and still excludes manifest-only query parameters such as manifest-params.
v1.4.71

v1.4.71 — Streams Route Refresh Fix June 2026

  • Fix — Browser refresh on /streams and /streams/library now serves the React app instead of being treated as a protected HLS request.
  • Fix — HLS token validation on /streams is now scoped to real /hls/ asset paths only.
  • Stability — Stream output URLs remain protected while dashboard UI routes no longer show Invalid or missing HLS token.
v1.4.70

v1.4.70 — DirectTV DAI Fallback & Stream Name Guard June 2026

  • DirectTV — Stream authorization now prefers non-DAI manifests and automatically falls back to DAI only when required.
  • DirectTV — Added optional dai_enabled=true/false service-script parameter for controlled manual testing.
  • Fix — Generic stream-name recovery now blocks numeric-only fallback IDs such as NowTV 206/209 from replacing real display names.
  • Stability — DirectTV suspended-account token responses now fail clearly instead of being stored as usable login sessions.
v1.4.69

v1.4.69 — DirectTV Stream Table Recovery June 2026

  • Fix — DirectTV streams that stop after running no longer fall back to UUID/resource-id names in the streams table.
  • Fix — Stream restart now validates stale active-stream names and recovers the display name from database or service manifest output.
  • Fix — Stream status updates now cast the database enum explicitly and keep nested streamData status and active fields synchronized.
  • Stability — Unsaved stopped streams keep DB-backed metadata while existing HLS output directories are still visible.
v1.4.68

v1.4.68 — DAZN Orphan Event Cleanup June 2026

  • Fix — Transient DAZN event streams that disappear from the provider schedule no longer remain stuck in active-stream restart loops.
  • Fix — RaiPlay live manifests now advertise and auto-refresh expiring session URLs so Rai 1 does not restart on stale tend tokens.
  • Fix — DAZN curl_cffi impersonation now uses a target compatible with older and newer Ubuntu installs, avoiding unsupported firefox133 login failures.
  • Fix — Stream database status now keeps nested streamData status and active fields synchronized so active tables and dashboard counts do not read stale JSON state.
  • Cleanup — Unsaved inactive orphan streams are removed from runtime restart state instead of retrying expired manifests indefinitely.
v1.4.67

v1.4.67 — DAZN Header Token Cleanup June 2026

  • Fix — DAZN streams now replace stale dazn-token request headers instead of accumulating expired tokens across restarts and saved settings.
  • Stability — Expiring service manifest URLs still refresh before CDN expiry, and refreshed service headers are pushed into the running stream session.
  • Diagnostics — Service manifest refresh scheduling now logs skip reasons so token-refresh failures are visible instead of silent.
v1.4.66

v1.4.66 — Service Manifest Token Refresh June 2026

  • Fix — DAZN and other service-script streams with expiring manifest tokens now refresh the manifest URL before CDN expiry instead of restarting every few minutes.
  • Stability — Refreshed service manifest URLs are pushed into the running custom engine through the manifest update path, forcing an immediate reparse without waiting for stream failure.
  • Cleanup — Service manifest refresh timers are tied to stream lifecycle and are cleared on stop, restart, and failed-stream cleanup.
v1.4.65

v1.4.65 — Kick Worker Refresh Fix June 2026

  • Fix — Kick live streams now push refreshed HLS URLs into worker-mode engines through IPC instead of only updating the parent stream record.
  • Stability — Social-live refresh now forces an immediate manifest reparse and track reselection so expired nested Kick media playlists are replaced before 403 errors.
  • Proxy — Kick/Youtube social-live refreshes now reuse the stream's assigned proxy when re-resolving the original source URL.
v1.4.64

v1.4.64 — Kick Live Restart Stability June 2026

  • Fix — Kick live streams now re-resolve the original Kick channel URL before automatic restarts instead of looping on expired HLS manifests.
  • Stability — Kick live streams now refresh their resolved manifest every two minutes and push the fresh URL into the running engine instance.
  • Fix — Manual stream restart now reloads sourceProvider/sourceUrl metadata and re-resolves social-live sources before starting.
  • Compatibility — Python 3.8 installs now pin curl-cffi to the yt-dlp-compatible 0.7.1 range while newer Python installs use the modern curl-cffi stack.
v1.4.63

v1.4.63 — Kick Live Stream Support June 2026

  • Feature — Manual live streams now support Kick live channel URLs through the same yt-dlp resolver flow used for YouTube live.
  • Fix — Saved and restarted manual live streams now preserve original sourceProvider/sourceUrl metadata for reliable re-resolution instead of reusing stale manifests.
  • Stability — Kick resolution now uses browser impersonation with curl-cffi support installed through the app Python requirements.
  • Compatibility — Existing YouTube live URL handling and backward-compatible youtubeUrl metadata remain supported.
v1.4.62

v1.4.62 — DAZN Playback GEO_BLOCKED Recovery June 2026

  • Fix — DAZN linear playback no longer treats channel asset ids as event ids during manifest startup.
  • Fix — DAZN playback requests now use the same Firefox-style browser/TLS flow as the recovered login path.
  • Diagnostics — DAZN playback 403 responses now log the upstream response body excerpt before failing.
  • Verification — DAZN 1 linear manifest, live event manifest, and Widevine CDM key retrieval were validated through the configured Italian proxy.
v1.4.61

v1.4.61 — DAZN Login and Linear Channels Recovery June 2026

  • Fix — DAZN login now uses the current browser SignIn payload shape with a fresh web device id and profiling session id.
  • Fix — DAZN authentication requests now use the Firefox-style TLS/browser flow required by the current DAZN auth edge.
  • Stability — DAZN token refresh now sends the current browser brand headers and short device id extracted from the active token.
  • Fix — DAZN linear channels now appear again by accepting current Linear:* / Live TV rail tiles instead of filtering them as event feeds.
  • Verification — DAZN login, token refresh, events retrieval, and 17 linear channels were validated through the configured Italian proxy.
v1.4.59

v1.4.59 — Live HLS Refresh Cadence May 2026

  • Fix — Live HLS refresh cadence now polls at half the source target duration, capped at 3 seconds, instead of waiting a full target duration plus jitter.
  • Fix — DirectV-style 6-second split HLS outputs avoid 10-12 second playlist holds and multi-segment burst writes that strict downstream inputs can treat as disconnects.
  • Stability — Live HLS no-new-segment retries now wait 1 second so playlists advance closer to the upstream cadence.
  • Safety — The companion audio/subtitle refresh resilience from v1.4.58 remains active while video refreshes stay strict.
v1.4.58

v1.4.58 — Live HLS Companion Refresh Stability May 2026

  • Fix — Live HLS master-playlist refreshes no longer fail the whole cycle when a selected audio or subtitle media playlist stalls.
  • Fix — DirectV-style split video/audio HLS outputs cap live media-playlist waits so one slow proxy response cannot freeze Flussonic input.
  • Stability — Live video remains strict, while optional companion audio/subtitle tracks are preserved or skipped during transient refresh failures.
  • Safety — The previous live throttle correction remains active and non-live backlog throttling remains unchanged.
v1.4.57

v1.4.57 — Live HLS Throttle Correction May 2026

  • Fix — Live HLS outputs no longer throttle themselves based on retained playlist history, preventing delayed updates after the first few minutes.
  • Fix — DirectV-style live HLS outputs now avoid artificial half-segment sleeps that caused Flussonic inputs to go down while xOTT still showed running.
  • Stability — Live playlist updates stay paced by the source cadence instead of holding for several polls and then jumping multiple segments.
  • Safety — Non-live backlog throttling remains available; the change is scoped to live streams only.
v1.4.56

v1.4.56 — Live HLS Cadence Stability May 2026

  • Fix — Live HLS refresh timing now accounts for processing time so outputs do not batch updates behind the source cadence.
  • Fix — Muxed HLS and fMP4 passthrough segment counters now update consistently for stream health and monitoring.
  • Stability — DirectV-style HLS outputs stay closer to the upstream live cadence for external restreamers such as Flussonic.
  • Safety — Existing stale HLS recovery remains active for genuinely frozen playlists.
v1.4.55

v1.4.55 — Live HLS Health Recovery May 2026

  • Fix — Live HLS outputs now detect stale playlists and stop serving frozen media as healthy live streams.
  • Fix — Stale live playlists now trigger stream recovery automatically instead of leaving downstream encoders on old segments.
  • Fix — Active stream status now reflects HLS output health so the dashboard does not show dead outputs as running.
  • Safety — fMP4 master playlists are checked through their child media playlist to avoid false stale detection.
v1.4.54

v1.4.54 — Service Session Auto-Recovery May 2026

  • Fix — Service token refresh now supports encrypted customer scripts and generic token formats instead of scanning only plaintext Python scripts.
  • Fix — Expired authenticated service sessions can re-login once using encrypted account credentials before retrying manifest, CDM, or refresh actions.
  • Fix — NowTV login now persists the fresh user token expiry immediately so proactive refresh can run before playback tokens expire.
  • Fix — App restart recovery now refreshes per-session service manifests and keys before starting streams that require fresh manifests on restart.
v1.4.53

v1.4.53 — HLS fMP4 Passthrough Safety May 2026

  • Fix — fMP4 passthrough now correctly allows muxed HLS Widevine media playlists such as compatible DirecTV outputs instead of treating them as DASH.
  • Safety — fMP4 passthrough falls back to FFmpeg remux for split audio/video DRM sources and multiple audio renditions that are not broadly HLS-player compatible.
  • Fix — fMP4 passthrough audio rendition filenames now use unique stable track keys to prevent same-language audio tracks from colliding.
  • Safety — fMP4 passthrough clears old media segments when init data changes so playlists never mix fragments with the wrong init segment.
v1.4.52

v1.4.52 — Event Slot Assignment Window May 2026

  • Feature — Event Slots now support a configurable assignment window so services can map only today's events or the next N days.
  • Fix — Event Slot assignment now respects the configured app timezone and stops filling stable slots with far-future events.
  • Feature — Streams settings now expose guarded fMP4 passthrough for compatible DASH/fMP4 streams.
  • Safety — Event Slot URLs, rules, and stable stream keys remain unchanged while assignments rotate inside the selected window.
v1.4.51

v1.4.51 — Event Cleanup and Peacock Login Diagnostics May 2026

  • Fix — Peacock login failures now surface the actual upstream auth code instead of a misleading missing-cookie message.
  • Fix — Dashboard active-stream counts now exclude event workers so live channels and events stay separated.
  • Fix — Event refresh now reconciles stale active event workers after provider schedules change.
  • Fix — DAZN temporary event feeds are filtered out of the linear channel list.
v1.4.50

v1.4.50 — DAZN Event Stability Fix May 2026

  • Fix — DAZN live events now keep a safer live-edge buffer to reduce periodic event-only freezes.
  • Fix — DASH audio/video pairing now normalizes audio timelines too, preventing event mux gaps when segment numbers drift.
  • Fix — DASH live orphan audio is retained until matching video arrives instead of being discarded too early.
  • Fix — Custom audio selections now match stored Bandwidth metadata as well as legacy Bitrate metadata.
v1.4.49

v1.4.49 — Active Track Metadata Fix May 2026

  • Fix — Active stream and event metadata modals now load track metadata again instead of failing with INVALID_STREAM_KEY_FORMAT.
  • Fix — Active stream settings track selectors now keep exact running stream keys and read worker metadata correctly.
  • Fix — DASH manifest refresh now retries transient empty/non-XML CDN responses, reducing DAZN event stalls caused by proxy/CDN manifest glitches.
v1.4.48

v1.4.48 — Zattoo RAI Manifest Fix May 2026

  • Fix — Zattoo manifest requests now resolve older short channel ids such as rai1 to the current live channel id before calling watch/live.
  • Fix — Existing saved Zattoo RAI streams can recover without deleting and re-adding the channel.
  • Tested — RAI 1 short-id and full-id manifest actions both return DASH Widevine manifests with license URLs and PSSH data.
v1.4.47

v1.4.47 — Static Team Event Slots May 2026

  • New — Event slots can keep static output names in M3U, viewer M3U, and XUI exports while the current match remains visible inside xOTT.
  • New — Rule-based event slots can optionally allow the same match to fill multiple team outputs, so both configured teams keep their own stable key.
  • Improvement — Event slot settings now expose static output naming and duplicate rule matching as opt-in controls without changing existing dynamic behavior.
v1.4.46

v1.4.46 — DirecTV CDM Identity Recovery May 2026

  • Fix — DirecTV CDM now detects stale cached device identities when the license endpoint returns 401/403.
  • Fix — DirecTV automatically reactivates the device identity and retries the license request once, restoring streams after server-side identity expiry.
  • Fix — DirecTV keeps the existing token, play token, feed id, and PSSH flow unchanged while refreshing only the rejected identity cookie.
v1.4.45

v1.4.45 — Proxy Assignment Modal Fix May 2026

  • Fix — Restored the proxy assignment modal service list by using the same encrypted-script service discovery as the rest of the app.
  • Fix — Proxy assignment accounts now load from real database and token-backed accounts instead of stale .tokens-only discovery.
  • Fix — Proxy assignment streams now load saved/in-memory streams without executing every service channels action, and assignment saves encode service, account, and stream keys safely.
v1.4.44

v1.4.44 — Mediaset Infinity TV Pairing May 2026

  • New — Added Mediaset Infinity TV device-pair login using the official action/create and action/pair flow.
  • New — Paired Mediaset Infinity accounts now save usable sid/beToken credentials for manifest and CDM playback.
  • Fix — Mediaset Infinity keeps anonymous live playback intact while allowing paired accounts to unlock account-scoped channel access.
v1.4.43

v1.4.43 — Mediaset Infinity Live/CDM Support May 2026

  • New — Added Mediaset Infinity live channel support using the current station, playback-check, and thePlatform manifest flow.
  • New — Mediaset Infinity now uses the standard xOTT manifest-to-CDM workflow with PSSH and license handoff.
  • Fix — Mediaset Infinity script metadata, channel entries, manifest output, and DRM action now align with the live-channel service script contract.
v1.4.42

v1.4.42 — Zattoo Multi-Key Decrypt Fix May 2026

  • Fix — Zattoo DASH decryption now passes every available DRM key to mp4decrypt so mixed video/audio KID manifests decrypt correctly.
  • Fix — Rai/Zattoo HLS output now generates valid 48 kHz AAC audio instead of silent/corrupt AAC when provider metadata points audio at the video default_KID.
  • Fix — Strengthened multi-key DASH handling for providers that expose different Widevine PSSH KIDs per track.
v1.4.41

v1.4.41 — Zattoo Segment KID Audio Fix May 2026

  • Fix — Zattoo DASH audio decryption now passes the audio segment PSSH KID into mp4decrypt instead of the stream-level video KID.
  • Fix — Rai/Zattoo HLS output no longer generates corrupt AAC tracks when audio and video use different DRM KIDs.
  • Fix — Strengthened multi-track DASH decryption so each audio track keeps its own segment-level KID through the final decrypt step.
v1.4.40

v1.4.40 — Zattoo PSSH Audio KID Fix May 2026

  • Fix — Zattoo DASH audio decryption now prefers the Widevine PSSH KID over incorrect manifest default_KID values.
  • Fix — Rai/Zattoo audio tracks no longer decrypt with the video key when providers expose mismatched audio DRM metadata.
  • Fix — Added decryptor-level protection for DASH streams whose parser exposes both default_KID and PSSH KID values.
v1.4.39

v1.4.39 — Zattoo Multi-Key Audio Fix May 2026

  • Fix — Zattoo DASH DRM now requests every Widevine PSSH from the manifest so video and audio keys are both available.
  • Fix — DASH parser now detects the real KID embedded in Widevine PSSH when provider manifests expose an incorrect default_KID.
  • Fix — Zattoo Rai channels with separate audio/video keys now decrypt audio with the correct key instead of producing silent or corrupted AAC.
v1.4.38

v1.4.38 — Zattoo Restart & Audio Fix May 2026

  • Fix — Zattoo stream restart now uses the exact active/database channel identity, so channels with underscore IDs restart correctly.
  • Fix — Encrypted DASH/fMP4 audio no longer receives duplicate init segments before DRM decryption, fixing silent or corrupted Zattoo audio.
  • Fix — Restart API now defensively resolves stream identity from active streams or the database instead of trusting split stream keys.
v1.4.37

v1.4.37 — Live HLS Stability Fix May 2026

  • Fix — Live HLS burst smoothing is now conservative and no longer drops normal small live backlogs that caused freezes on DirecTV and similar streams.
  • Fix — HLS audio and subtitle grouping now tolerates providers with independent audio/video sequence numbering while keeping exact sequence matching as the first choice.
  • Fix — Event M3U exports now prefer stable service slot names and slot URLs when slots are configured.
v1.4.36

v1.4.36 — Zattoo Stop Fix May 2026

  • Fix — Zattoo streams with channel IDs containing underscores now stop correctly from Streams, Library, and Events views.
  • Fix — Stream stop API now accepts the exact active stream key to avoid reconstructing incorrect channel IDs.
v1.4.35

v1.4.35 — Zattoo Login & DRM Fix May 2026

  • Fix — Zattoo now supports optional logged-in accounts correctly while keeping anonymous access available.
  • Fix — Services page now displays real Zattoo accounts below anonymous access instead of hiding them.
  • Fix — Service login now rejects failed script responses instead of showing a false success message.
  • Fix — Zattoo DRM channels now return standard PSSH/license data and CDM keys for encrypted DASH playback.
v1.4.33

v1.4.33 — Event Slot Reassignment Fix May 2026

  • Fix — Event slots now rebuild from the current provider schedule on refresh instead of preserving stale same-day auto-slot mappings.
  • Fix — DAZN Italy event slots now assign early visible events consistently from the first available auto slots while keeping team-rule slots reserved.
v1.4.32

v1.4.32 — Event Slot Rules Fix May 2026

  • Fix — Dynamic event slot rules now clear stale assignments when a team, competition, category, or keyword rule is changed.
  • Fix — Auto event slots now preserve provider event order and avoid duplicate event assignment across rule and auto slots.
  • Improvement — DAZN event metadata now exposes team fields when available, improving team-based stable slot matching.
v1.4.31

v1.4.31 — Event Slot Assignment Fix May 2026

  • Fix — Service event slots now apply to all non-ended live/upcoming events returned by the provider schedule, not only same-day events.
  • Fix — Events page bypasses stale browser event cache when stable service slots are enabled, ensuring slot numbers and stable slot URLs appear immediately.
v1.4.27

v1.4.27 — DAZN Event Hotfix May 2026

  • Fix — DAZN event filtering now preserves valid regions where live/upcoming event tiles are AssetId-based and do not include Sport or Competition metadata.
  • Fix — DAZN Events still excludes explicit linear, catch-up, replay, highlight, and VOD tiles without hiding valid live/upcoming events.
v1.4.26

v1.4.26 — DAZN Event Cleanup May 2026

  • Fix — DAZN Events now filters out linear channel tiles that DAZN returns inside mixed discovery rails.
  • Fix — DAZN catch-up, replay, highlight, and VOD tiles no longer appear in the Events page as live events.
  • Improvement — DAZN event extraction now falls back to alternate event sources when the primary rail contains only non-event content.
v1.4.25

v1.4.25 — DRM Runtime Install Fix May 2026

  • Fix — Fresh installs now include the bundled mp4decrypt DRM runtime directly in the release package.
  • Fix — Installer now validates the DRM runtime after deployment so protected streams do not fail later with a missing binary.
  • Improvement — DRM setup no longer depends on a best-effort external Bento4 download during customer installation.
v1.4.24

v1.4.24 — Dynamic Event Outputs May 2026

  • New — Service event outputs now support universal dynamic slots for teams, competitions, categories, keywords, and regex rules.
  • Improvement — Fixed event slots can now keep stable URLs like DAZN Roma, Serie A, UFC, or Premier League while automatically mapping matching live events.
  • Improvement — Existing automatic daily event-slot assignment remains available for slots left in Auto mode.
v1.4.23

v1.4.23 — Live HLS Burst Smoothing May 2026

  • Fix — Live HLS streams now use stable media-sequence tracking so source URL/session changes do not cause duplicate segment bursts.
  • Improvement — Live stream processing now skips stale backlog near the live edge instead of publishing many old segments at once.
  • Improvement — Samsung TV Plus and other live HLS channels should deliver smoother playback when upstream playlists briefly re-window or refresh sessions.
v1.4.22

v1.4.22 — Multi-Proxy Pools May 2026

  • New — Proxy assignments now support multiple proxies per service, account, and stream for pool-based stream startup.
  • Improvement — Streams now choose proxies using health-aware least-connection selection, with fallback to healthier proxies after proxy-related failures.
  • Fix — Script execution, token refresh, VOD, metadata probes, and stream recovery now use the same centralized proxy resolution logic.
v1.4.21

v1.4.21 — XUI Event Slot Integration May 2026

  • Improvement — XUI event exports now use stable service event slot URLs when available, keeping XUI sources stable across event rotation.
  • Fix — XUI event export now sends real event metadata and protected HLS URLs instead of placeholder event data.
  • Fix — XUI sync, scheduler, connection testing, and activity logs are now aligned with the database schema and multi-connection usage.
v1.4.20

v1.4.20 — Viewer Expiration Controls May 2026

  • New — Viewer accounts now support optional expiration dates for protected M3U and HLS access.
  • Improvement — Expired viewers can be extended or cleared from the Users page without recreating accounts or rotating tokens.
  • Improvement — Navigation now uses Content and Management groups, with Monitoring moved under Management.
v1.4.19

v1.4.19 — Admin Session Login Fix May 2026

  • Fix — Admin login no longer fails when generated JWT sessions exceed the old database session-token length.
  • Fix — Database session storage now writes token hashes consistently for active-session lookup and cleanup.
  • Improvement — Older installs migrate user session columns safely during startup.
v1.4.18

v1.4.18 — Viewer Controls and Runtime Library Cleanup May 2026

  • Fix — Starting streams or events no longer automatically saves them into the Library; explicit Library saves remain persistent.
  • New — Viewer accounts now support an allowed-connections limit for protected playback links.
  • Improvement — Users page redesigned with clearer viewer output controls and assignment explanations.
  • Improvement — Application navigation is grouped into cleaner Content, Operations, and Admin menus.
v1.4.17

v1.4.17 — Multi-User Management May 2026

  • New — Added multi-user management with Admin, Operator, and Viewer roles.
  • New — Admins can assign users to specific services, accounts, streams, and proxies from the Users page.
  • Improvement — Stream, event, VOD, library, and dashboard views now respect each user's assigned resources.
  • Improvement — System-level sections are reserved for admins while operators keep access to day-to-day stream workflows.
v1.4.16

v1.4.16 — Streamstable Provider API Load Reduction May 2026

  • Improvement — Streamstable now reuses the loaded channel catalog across page navigation instead of refreshing provider APIs on each visit.
  • Fix — Manual Refresh remains the only Streamstable action that clears channel caches and forces a full provider channel reload.
  • Improvement — Runtime stream status and metrics continue updating through lightweight local polling without stressing service channel APIs.
v1.4.15

v1.4.15 — Database Management & Paramount Linear Fixes May 2026

  • Fix — Paramount linear channels now refresh playback sessions correctly after stop/start cycles.
  • Improvement — Database Management now supports safer backup upload and restore with pre-restore safety backups.
  • Improvement — Added xOTT-specific database integrity checks and repair actions for streams, outputs, sessions, and proxy assignments.
  • Fix — Database health checks now use real PostgreSQL max connection limits and safer cleanup validation.
v1.4.14

v1.4.14 — On-Demand Idle & Recovery Fixes May 2026

  • Fix — Stream on Demand now properly tracks active playback across all public HLS URL formats.
  • Fix — Idle on-demand streams are now stopped automatically even if they were already running before viewer tracking began.
  • Fix — Stream recovery now excludes on-demand streams so they do not auto-start after an app restart.
v1.4.13

v1.4.13 — Service Defaults & Library Menu May 2026

  • Improvement — Service Outputs now includes service-level auto-restart defaults, refresh-on-restart, and Stream on Demand defaults.
  • Improvement — Library table rows now support right-click action menus consistent with Streamstable.
  • Fix — Service-level stream defaults now propagate auto-restart and on-demand settings through the normal stream start path.
v1.4.12

v1.4.12 — On-Demand Public Playback Fix May 2026

  • Fix — Stream On Demand public HLS URLs now resolve playlist and segment requests reliably after viewer-triggered startup.
  • Fix — Public stream keys are matched case-insensitively to prevent channel ID casing from breaking playback.
  • Improvement — PublicKeyResolver misses during on-demand fallback are logged at debug level to avoid noisy warning spam.
v1.4.11

v1.4.11 — On-Demand Auth Fix May 2026

  • Fix — Stream On Demand now authenticates its internal startup request, allowing viewer-triggered streams to pass through the normal manifest route.
  • Fix — Events Outputs now shows event M3U links only, keeping linear output management on Services and Library.
  • Improvement — Library rows show the Stream On Demand indicator for saved on-demand streams.
v1.4.10

v1.4.10 — On-Demand Startup Fix May 2026

  • Fix — Stream On Demand now starts through the normal service manifest route, preventing null manifest startup failures.
  • Fix — Events Outputs is available on the All Services view and lists output links for all services.
  • Improvement — Library rows now show the Stream On Demand indicator for saved on-demand streams.
v1.4.9

v1.4.9 — On-Demand & Event Outputs May 2026

  • Fix — Library stream settings now honor Stream On Demand mode without starting the stream immediately.
  • Fix — Stable public HLS URLs can now wake inactive saved on-demand streams by resolving them from the database.
  • Improvement — Events now include an Outputs button for the selected service with stable event and same-service linear M3U links.
v1.4.8

v1.4.8 — Proxy Assignments & Stable Outputs May 2026

  • Fix — Proxy assignment dialogs now correctly pre-select existing service, account, and stream assignments regardless of service-name casing.
  • Fix — Proxy account assignment saving now preserves account names that contain underscores.
  • Fix — Stream On Demand settings now persist and reload correctly from stream settings.
  • Improvement — Library Outputs now expose protected stable global and per-service linear M3U links for saved streams.
  • Change — Streamstable legacy snapshot export was removed so M3U output management stays centralized in Library and Services outputs.
v1.4.7

v1.4.7 — Paramount Event Playback Fix May 2026

  • Fix — Paramount+ event streams now pass the required playback authorization headers to token-gated HLS key and segment requests.
  • Fix — Paramount+ HLS event manifests no longer attempt DASH PSSH extraction, avoiding misleading startup errors.
v1.4.6

v1.4.6 — Proxy Management & Paramount Events May 2026

  • Fix — Proxy assignment dialogs now correctly pre-select services, accounts, and streams already assigned to the selected proxy.
  • Fix — Proxy testing now verifies outbound HTTPS through the configured proxy URL, so bad credentials or expired proxies report failure instead of false success.
  • Improvement — Paramount+ now supports live/upcoming events and shows device pairing as the supported authentication method.
v1.4.5

v1.4.5 — Events Auto-Start Refresh Fix May 2026

  • Fix — Events auto-refresh and auto-start now bypass stale event cache so upcoming events become live and start automatically without manual refresh.
v1.4.4

v1.4.4 — Service Defaults & Active Track Metadata May 2026

  • Improvement — Service Outputs now include global per-service stream defaults for video quality, audio tracks, and subtitle tracks.
  • Improvement — Per-service stream defaults now apply to both linear streams and event streams unless overridden per stream.
  • Fix — Active streams and events now show selected tracks and available track metadata correctly while running in worker engine mode.
v1.4.3

v1.4.3 — Stream Recovery & Peacock Fixes May 2026

  • Fix — App update mode now protects the active stream recovery snapshot before stopping the running service, preventing older installs from clearing streams during an update.
  • Fix — Stream recovery can now fall back to the protected pre-update snapshot when the primary recovery file is empty.
  • Fix — Recovered event streams now keep their event type during restart instead of being requested as linear channel manifests.
  • Fix — Peacock token refresh now retries only after an auth failure and avoids crashing event/channel requests when the refresh endpoint rejects a stale token.
v1.4.2

v1.4.2 — Streamstable Visibility & Recovery Fixes May 2026

  • Fix — Streamstable no longer misclassifies saved linear channels with long provider IDs as event streams.
  • Fix — Saved stream metadata now preserves explicit channel/event type when loading stopped or offline streams.
  • Fix — App update and graceful restart now preserve the stream recovery snapshot instead of overwriting it while active streams are being stopped.
  • Improvement — Stopped saved linear streams remain visible in Streamstable through the saved/orphan stream path after service refresh.
v1.4.1

v1.4.1 — Stream Recovery & HLS Decryption Fixes May 2026

  • Fix — HLS segment decryption now respects per-segment clear/encrypted state, preventing clear live segments from being incorrectly sent through DRM decryption.
  • Fix — AES-128 HLS decryption now derives IVs from the segment sequence when the manifest omits an explicit IV.
  • Fix — Stream recovery and restart paths now preserve saved channel names instead of replacing them with raw provider IDs.
  • Fix — Failed recovery attempts no longer silently discard recovery state; failed streams remain available for later retry.
  • Fix — Service Outputs stream defaults now match the main stream settings modal for FFmpeg timestamp and corruption-handling defaults.
  • Improvement — Service output defaults now load missing FFmpeg options from safe defaults instead of turning them off implicitly.
v1.4.0

v1.4.0 — Streaming Performance & Service Output Architecture May 2026

  • Major — Streaming engine performance architecture upgraded with worker-process isolation and TS passthrough defaults. Multi-stream workloads now run outside the main API process while preserving DRM, HLS, and stream recovery behaviour.
  • Feature — Added per-service output configuration on the Services page, including stable event slots, event M3U output, linear M3U output, slot prefix/count, and service-level stream default options.
  • Feature — Protected per-service event and linear output URLs with service-specific access tokens, including tokenized event-slot playlist links and URL regeneration from the Services page.
  • Improvement — Reworked the Service Outputs modal so service stream defaults use normal form controls for HLS, request, engine, retry, live-edge, headers, and FFmpeg options instead of raw JSON inputs.
  • Feature — Added stable event slot assignment and daily slot reuse. Live/upcoming events can now map to fixed slot URLs and stable per-service event playlists.
  • Feature — Added separate per-service linear playlist output at /outputs/{service}/linear.m3u, keeping linear channels separate from event slots.
  • Fix — Events page service selection now preserves the selected service context instead of requiring the same service to be selected again inside a dropdown.
  • Fix — Event streams are filtered out of linear stream tables and M3U exports, and ended event streams no longer pollute linear playlists.
  • Fix — Event exports now prefer stable SlotUrl, SlotName, and SlotNumber values when service event slots are enabled.
  • Fix — Streamstable and Library M3U exports now skip event streams and export xOTT playlist URLs only, avoiding direct provider manifest URLs in customer playlists.
  • Fix — Event stream starts and restarts now carry itemType=event and service defaults correctly for services that require event type context.
  • Fix — Event lifecycle handling no longer loops indefinitely when live events end. Transient CDN live/offline flips are tolerated, but legitimate event-end transitions now stop cleanly.
  • Fix — Events Settings modal probing and Apply & Restart now persist custom track choices for inactive and active event streams.
  • Fix — Batch stop now normalizes stream keys and treats already-stopped streams as successful, eliminating phantom stop failures.
  • Improvement — Installer update mode now runs idempotent migrations for service event config and slot tables while preserving existing credentials and configuration.
v1.3.66

v1.3.66 — Event Lifecycle & Streaming Engine Fixes May 2026

  • Fix — Streaming engine no longer loops indefinitely after a live event ends. The isLive=true override that protects against transient CDN flips was unbounded; events that legitimately ended kept playing the last segments forever. Now capped at 3 consecutive isLive=false responses, after which the manifest is trusted and the stream exits cleanly.
  • Fix — Track probing for inactive event streams now works in the Events page Settings modal. The probe endpoint was hardcoding itemType='channel' for streams not in the database, causing manifest fetch to fail with "No tracks found in manifest". Modal now passes itemType in the probe request and the server honors it.
  • Fix — Custom video / audio track selections now persist for active event streams after Apply & Restart. The handler was skipping the database save step before restart, so the restart endpoint loaded stale defaults. Now mirrors the Streams Table flow (save → restart).
  • Fix — Event stream restart now passes type=event in manifest args. Without this, services like Peacock that require both id and type rejected restart requests with "Item ID and type required".
  • Fix — Batch stop on the Streams table no longer reports phantom failures. The endpoint was using a raw service_user_channel concat that didn't match the lowercased / sanitized active-streams map keys. Now uses normalizeKey() and treats already-stopped streams as success.
  • Fix — Events page Auto Refresh switch now persists across page reloads via localStorage.
  • Fix — Events page Auto Start now correctly fires for upcoming events that flip to live. Previously required Auto Refresh to also be on; polling now activates whenever Auto Refresh OR Auto Start is enabled.
v1.3.65

v1.3.65 — Events Table Fixes & UI Polish May 2026

  • Fix — Stopping an active event stream now correctly removes it from the Active tab. Stopped streams were lingering with frozen metrics because the correlation query included streams with isActive=false.
  • Fix — Stop and Batch Stop were sending the raw service event ID instead of the sanitized database channel ID. For services with special characters in event IDs the stop request targeted the wrong stream and silently failed.
  • Fix — Stream proxy can now be configured for event streams via the Settings modal. Previously the proxy field was disabled.
  • Fix — Server-side channel cache is now invalidated on manual Refresh in the Events page, matching Streams Table behaviour.
  • Fix — SportEurope geo-blocked and auth-failed errors now surface the correct error message instead of a generic INTERNAL_ERROR.
  • Improvement — Active Events table now has search, pagination, unified column names, action button styles, and status chip consistent with Streams Table.
v1.3.64

v1.3.64 — DRM Binary, DB Migration & Proxy Fix May 2026

  • Fixmp4decrypt (Bento4) now deployed directly from the release tarball on every update. Previously only installed on fresh installs via external download — servers where the download failed had no DRM binary, causing STREAM_START_FAILED on all DRM-protected services (Peacock, etc.).
  • Fix — Update installer now runs schema migrations in update mode. Missing columns (on_demand_timeout and others) were causing constant query errors on updated servers.
  • Fix — Proxy lookup queries now use proper indexes (service_id, account_id, stream_id, LOWER(name)). Previously caused 5-second full table scans on every stream start and login, resulting in proxies not being injected.
v1.3.62

v1.3.62 — Peacock Territory Fix May 2026

  • Fix — Peacock: geo-detection call to init.sky.com removed entirely; territory hardcoded to US. Peacock is a US-only service — dynamic detection was unreliable through datacenter proxies and caused login failures on non-US servers.
v1.3.61

v1.3.61 — Peacock Login Hotfix May 2026

  • Fix — Peacock: country code detection was running before the proxy was configured, causing non-US servers to get the wrong territory and fail login with 400 Bad Request on auth/tokens. Country code is now resolved after proxy setup.
v1.3.60

v1.3.60 — New Services, On-Demand Streams & Bug Fixes May 2026

  • New — Stream On-Demand: streams can now be configured to start automatically when a viewer first requests the playlist and stop after a configurable inactivity timeout. Fully opt-in per stream, zero impact on existing streams.
  • New — BBC iPlayer script: 9 live channels plus full VOD support (categories, series, episodes, manifests) via BBC mediaselector API.
  • New — Joyn script: 10 German live channels (ARD, ZDF, SAT.1, ProSieben, etc.) with DASH/Widevine DRM.
  • New — Zattoo script: 307 live channels with email/password auth and automatic token refresh.
  • New — CoupangPlay script: Korean streaming service with cookie-based auth, 24/7 live channels, dedicated sports events page, and auto token refresh — users only need to export cookies once every ~6 months.
  • Fix — Batch settings: outputFormat and refreshManifestOnRestart now saved correctly; quality settings properly nested so batch saves no longer silently drop video/audio/subtitle quality preferences.
  • Fix — SamsungTVPlus: region parameter now wires end-to-end; all supported regions (at/ca/ch/de/es/fr/gb/in/it/kr/us) now work correctly.
  • Fix — Peacock: Retry() now tries allowed_methods with fallback to legacy method_whitelist, eliminating TypeError crash on startup for customers with newer urllib3.
  • Fix — Peacock: event manifest 400 Bad Request caused by PCKSLE content IDs being incorrectly re-colonised during parsing. Sports event playback now works correctly.
  • Fix — Peacock: capabilities payload used wrong keys (v/a) for codecs; API requires vcodec/acodec. Channel manifests now resolve correctly.
  • Fix — All service scripts were writing to a spurious netflix_debug.log file in the data directory. Hardcoded debug path removed from the shared logging library.
v1.3.59

v1.3.59 — Account Deletion Hotfix May 2026

  • Fix — Account deletion no longer removes token files belonging to a different account that shares the same email in a different case (e.g. deleting user@example.com no longer deleted the token file for USER@EXAMPLE.COM). Token file cleanup now uses the exact database-stored username.
  • Fix — Account lookup for deletion is now exact-case so deleting one account cannot accidentally target another account with the same email in different capitalisation.
v1.3.58

v1.3.58 — NowTV Restart Fix & Account Deletion May 2026

  • Fix — NowTV streams failed to restart after first play with SCRIPT_ERROR: the server was passing the username in lowercase to scripts, but token files are keyed by the original account case (e.g. BANGLORE2021@HOTMAIL.COM). The server now resolves the exact account username from the database before spawning scripts.
  • Fix — Deleting an account from the Services page now stops all active streams for that account and removes them from the database via cascade. Previously only token files were deleted, leaving orphaned HLS processes and stream records.
  • Fix — Script auth failures (Not logged in, session expired) now surface as AUTH_ERROR instead of the misleading SCRIPT_ERROR.
  • Fix — When a script exits silently (code 1, empty stderr), the stdout JSON error is now logged and surfaced to the client instead of being discarded.
v1.3.57

v1.3.57 — NowTV Stability & Code Quality May 2026

  • Fix — NowTV SCRIPT_ERROR on stream restart: token file race condition when starting multiple channels simultaneously caused JSON corruption. Token writes are now atomic (write-to-tmp then rename), and load errors are handled gracefully.
  • Fix — NowTV license signature was malformed when the license URL had no query string (/path? instead of /path). This could cause intermittent DRM failures.
  • Fix — NowTV token refresh action now persists the refreshed token to disk (was refreshing in memory but not saving).
  • Fix — Manifest script output parser now tolerates debug lines before the final JSON object, consistent with the CDM executor path.
  • Fix — Service scripts now execute with correct working directory set to the scripts folder.
v1.3.56

v1.3.56 — NowTV Token Auto-Refresh May 2026

  • Fix — NowTV streams can now be started multiple times without re-login. User tokens (short TTL ~1 hour) are cached on disk and silently refreshed using the long-lived sky cookie. If a token expires mid-session, the manifest step retries once automatically. Users only need to re-login if the sky cookie itself expires.
v1.3.55

v1.3.55 — DASH DRM Decryption Fix May 2026

  • Fix — CMAF/DASH streams (e.g. NowTV) were playing garbled video because the parallel segment download path checked segment.encrypted instead of segment.streamInfo.encrypted. Individual DASH segment objects inherit encryption state from their parent stream, not directly. Segments are now correctly decrypted via mp4decrypt before muxing.
v1.3.54

v1.3.54 — NowTV CDM Key Format Fix April 2026

  • Fix — NowTV CDM action now outputs decryption keys in the correct kid:key per-line format that the streaming engine expects. Previously the script output JSON which the server could not parse, resulting in "no valid keys" error when starting streams.
v1.3.53

v1.3.53 — NowTV Signing Path Fix April 2026

  • Fix — NowTV internal signing API now correctly loads the signing module from the real filesystem path (/opt/xott/scripts/lib/nowtv_sign.js) instead of the pkg virtual snapshot path. Previously the endpoint returned "Signer not available" inside the compiled binary.
v1.3.52

v1.3.52 — NowTV Signing Fix April 2026

  • Fix — NowTV streams now work on servers without a standalone node binary. The xott server exposes an internal HMAC signing API that the NowTV script calls using the server's own embedded Node.js runtime, eliminating the external dependency entirely.
v1.3.51

v1.3.51 — NowTV Stream Fix April 2026

  • Fix — NowTV streams: probe and stream start now work. Manifest output was using non-standard field names; corrected to ManifestUrl, LicenseAcquisitionUrl, Pssh, requires_cdm. Channel logos and display names also corrected.
v1.3.50

v1.3.50 — NowTV Channels Fix April 2026

  • Fix — NowTV channels: fixed 502 error where channels failed to load after login. Territory prefix in token filename was causing username mismatch. Token files now use the standard naming format; territory is stored inside the token and restored automatically.
v1.3.49

v1.3.49 — NowTV Multi-Region Support April 2026

  • NowTV — Added support for NOW Italy (nowtv.it) and WOW TV Germany (wowtv.de). Territory is auto-detected from the proxy IP, or can be overridden with territory=IT / territory=DE. All three regions share the same signing module and backend stack.
  • Fix — NowTV login button now appears correctly on the Services page.
v1.3.48

v1.3.48 — NowTV Widevine CDM Support April 2026

  • NowTV — Added Widevine CDM decryption support: PSSH extraction from DASH MPD manifests, HMAC-signed license requests via WASM signing helper, and full key retrieval pipeline for live channel playback.
v1.3.47

v1.3.47 — Playback Time Display Fix April 2026

  • Fix — Playback Time: Fixed timer showing wrong values (e.g. 3+ hours immediately after server restart). For MPEG-TS streams, FFmpeg preserves native broadcast timestamps which can be hours into the broadcast day. The display now uses accumulated segment durations relative to session start — timer always starts at 00:00 and increments correctly.
v1.3.46

v1.3.46 — Playback Time Fix April 2026

  • Fix — Playback Time: Fixed playback timer freezing on stitched streams (Pluto TV, etc.). The PTS-span method froze lastPts after a PTS reset at a clip boundary. Switched to accumulated ffmpeg segment durations which increment correctly through discontinuities.
v1.3.45

v1.3.45 — FPS Calculation Fix April 2026

  • Fix — FPS Display: Replaced cumulative PTS-based FPS with per-segment EWMA. The previous method froze lastFramePts after a PTS reset at a discontinuity while the frame count kept growing, causing FPS to inflate to 100+ over time on stitched streams (Pluto TV, etc.).
v1.3.44

v1.3.44 — Stitched HLS Stability Fixes April 2026

  • Fix — Stitched HLS: Fixed stale encryption flag causing "No decryption key found" crash when a stitched stream (Pluto TV, etc.) transitions from an encrypted clip to an unencrypted one — primary cause of recurring restarts.
  • Fix — Stitched HLS: Fixed fMP4 init segment being cleared when the playlist sliding window scrolls past the #EXT-X-MAP tag, causing "moov atom not found" crashes at clip transitions.
  • Fix — FPS Display: Fixed inflated FPS values (showing thousands) caused by PTS resets at discontinuity points in stitched streams.
v1.3.43

v1.3.43 — fMP4 Format Detection Fix April 2026

  • Fix — fMP4 Format Detection: Fixed a bug where fMP4 segments starting with moov/moof boxes were misidentified as MPEG-TS, causing FFmpeg to crash with "Invalid data found when processing input". Resolves stream restarts on Pluto TV and other stitched HLS linear channels.
  • Fix — AES-128 HLS: Fixed incorrect zero IV for segments without explicit IV tag (per HLS spec, IV must be the media sequence number).
  • Fix — HLS Streams: Resolved fMP4 init segment loss on manifest refresh causing stream restarts.
  • Fix — Script Runner: Resolved SSL certificate verification failure on VPS installs.
v1.3.42

v1.3.42 — AES-128 HLS Decryption Fix April 2026

  • Fix — AES-128 HLS: Fixed incorrect zero IV for segments without explicit IV tag. Per HLS spec the IV must be the media sequence number — resolves stream crashes on Pluto TV and any AES-128 channel with implicit IVs.
  • Fix — HLS Streams: Resolved fMP4 init segment loss on manifest refresh causing stream restarts.
  • Fix — Script Runner: Resolved SSL certificate verification failure on VPS installs.
v1.3.39

v1.3.39 — Stability & Delivery Improvements April 2026

  • New — Improved service script delivery system.
  • Fix — Resolved API connectivity issue on fresh installations.
  • Fix — In-App Updater: Fixed update process leaving the UI broken after refresh.
v1.3.38

v1.3.38 — In-App Updater Fix April 2026

  • Fix — In-App Updater: Fixed a critical bug where triggering an update from the header would wipe the frontend (client/build) and leave the UI returning a JSON error on refresh. The updater script now correctly changes into the extracted tarball directory before running the installer.
v1.3.37

v1.3.37 — Services Page Improvements April 2026

  • Fix — Services Auth Buttons: The Pair Device button is now only shown for services that actually support device pairing, removing the redundant button from password/cookie-only services.
  • New — Bulk Script Import: The Services page now accepts .zip and .tar.gz archives to mass-import multiple service scripts at once, with a results dialog showing imported/failed counts.
  • New — Instant DB Sync on Import: Scripts imported via the UI are immediately registered in the database — no server restart required.
  • New — Services Page Notices: Two dismissible info banners added — one about script compatibility and one reminding users to configure a proxy for geo-locked services before authenticating.
v1.3.36

v1.3.36 — DirecTV Stream Stability Fixes April 2026

  • Fix — DirecTV SSAI: Disabled DAI (dynamic ad insertion) in manifest requests, eliminating backward PTS jumps on local affiliate channels (e.g. ABC) caused by the sponsored CDN stitcher.
  • Fix — DRM Key Rotation: Preserved original DRM error codes so the fail-fast handler fires correctly on daily key rotation, reducing stream outage from ~40s to near-zero.
  • Fix — PTS Discontinuity Threshold: Backward PTS jumps under 90s are now tolerated as ad-insertion artifacts, halving unnecessary EXT-X-DISCONTINUITY insertions per ad break.
v1.3.35

v1.3.35 — YouTube Cookies Support April 2026

  • New — YouTube Cookies: Added a dedicated YouTube tab in Settings to paste and manage your cookies.txt file, enabling yt-dlp to access age-restricted and members-only YouTube streams.
v1.3.34

v1.3.34 — In-App Updater & YouTube Proxy Fixes April 2026

  • Fix — In-App Updater: Completely rearchitected the update mechanism. The updater now works correctly — a root-owned systemd unit handles the actual installation instead of attempting to run it inside the sandboxed app process.
  • Fix — YouTube Proxy Assignment: Resolved an issue where assigning a proxy to a YouTube manual stream via the stream settings modal failed silently, causing the stream to start without the proxy.
  • Fix — YouTube Stream Start with Proxy: The server now correctly looks up the assigned proxy when resolving a YouTube live stream URL at startup, so bot detection is bypassed properly when a proxy is configured.
  • Fix — Stream Proxy Display: The currently assigned proxy URL now loads correctly in the stream settings modal instead of always appearing blank.
v1.3.33

v1.3.33 — DGO Fixes & Stream Stability April 2026

  • Fix — DGO Token Refresh: Corrected a request header issue that caused 404 errors when refreshing DGO streaming tokens from the service card.
  • Fix — DGO Long-Running Streams: DGO streams now automatically re-fetch a fresh manifest on each restart, preventing stream failures after 24–48 hours caused by expired CDN tokens.
  • Fix — Stream Monitoring: Resolved an issue where the monitoring loop could become blocked during stream restarts, causing all monitoring ticks to be skipped.
  • Improvement — Stream Restart Backoff: Stream restarts now use exponential backoff (up to 30 minutes) with a hard cap on consecutive failures to prevent runaway crash loops on permanently broken streams.
v1.3.32

v1.3.32 — Bug Fixes & YouTube Compatibility April 2026

  • Fix — Startup Stability: Streams stuck at running in the database after an unclean shutdown are now reset to stopped on service start, preventing crash-loop chains.
  • Performance — Non-Blocking Init: Service account status checks now run in the background so the panel is immediately responsive after restart.
  • Fix — YouTube Compatibility: The --js-runtimes yt-dlp flag is now version-aware and is only used when the installed yt-dlp version supports it (Python 3.8 / Ubuntu 20 servers no longer fail with "no such option").
  • Fix — YouTube Logs: YouTube resolution activity is now written to the structured log files.
v1.3.31

v1.3.31 — Performance & Stability Patch April 2026

  • Optimization — Database Stability: Fixed major CPU-heavy race conditions and hangs in the proxy management system.
  • Stability — Intelligent Initialization: Implemented non-blocking, promise-based locking for background database tasks to prevent server crashes during peak load.
  • Fix — Service Monitoring: Corrected inefficient monitoring loops and system calls to reduce global CPU usage by 90% on high-load servers.
  • Performance — Enforced Lookups: Guaranteed 3-second timeout on all database-backed proxy resolutions to maintain UI responsiveness.
v1.3.30

v1.3.30 — YouTube Live Streams April 2026

  • YouTube Live Streams — Paste any YouTube channel /live URL (e.g. https://youtube.com/@CNN/live) into the Add Stream dialog and it auto-resolves to an HLS manifest via yt-dlp. Stream name, channel, and thumbnail metadata are auto-filled. No DRM keys needed.
  • Auto token refresh — YouTube HLS tokens expire every ~6 hours. A background timer re-resolves the manifest URL every 4 hours to keep streams alive indefinitely without manual intervention.
  • yt-dlp dependencyyt-dlp is now included in requirements.txt and installed automatically during setup/update.
  • YouTube resolve API — New POST /api/youtube/resolve endpoint validates YouTube URLs and returns HLS manifest + metadata via yt-dlp.
v1.3.29

v1.3.29 — Installer Fixes April 2026

  • Fix — PostgreSQL extensions (uuid-ossp, pg_trgm) now created as superuser before schema is applied — previously caused missing tables and Server Error on login on fresh installs
  • Fix — Installer now creates the data/config directory so settings can be written on first boot
  • Fix — JWT_SECRET and SESSION_SECRET now generated with 256-bit entropy on fresh install instead of being left blank
v1.3.28

v1.3.28 — Critical Hotfix April 2026

  • Hotfix — Reverted H264 SPS/PPS BSF filter introduced in v1.3.27 that caused constant ffmpeg restarts on DirecTV and other services with non-standard H264 extradata
  • Fix — Stream restart no longer deletes the HLS output directory, preventing downstream consumers (xAccel, headends) from getting 404s during CDN token reconnects
  • Fix — Installer now detects Python version mismatch after OS upgrades (e.g. Ubuntu 20→22) and rebuilds the venv automatically
v1.3.27

v1.3.27 — HLS Output Stability Fixes April 2026

  • Fix — HLS output now injects H264 SPS/PPS context before every keyframe, eliminating "Packet corrupt (dts=NOPTS)" drops in downstream encoders (xAccel, headend systems) that connect mid-stream
  • Fix — HLS playlist minimum buffer increased from 10 to 20 segments (~120s), reducing stream interruptions to downstream consumers during upstream CDN token refreshes
  • Fix — License validation result is now cached in-memory for 60 seconds, eliminating per-request writes to the database that caused background write pressure and excessive log noise
v1.3.26

v1.3.26 — Performance Optimizations April 2026

  • Performance — Proxy lookups are now cached (30s TTL), eliminating repeated slow database queries on every stream start and recovery — dramatically reduces DB load when starting many streams simultaneously
  • Performance — Monitoring loop now batches all stream PID checks into a single system call instead of spawning one process per stream
v1.3.24

v1.3.24 — Stream Library Fixes & Live Sync April 2026

  • Bulk delete fix — The confirmation dialog in the Stream Library no longer shows "undefined streams" when deleting multiple streams at once.
  • Channel name protection — Channel names stored in the library are now protected from being overwritten by generic placeholder names (e.g. "Channel ...") during refresh or re-import.
  • Live API sync — The Refresh button on the Streams page now syncs your library against the live service APIs: changed channel names are updated automatically and dead channels that no longer exist are removed.
  • Hotfix — Resolved a startup crash introduced in v1.3.20.
v1.3.19

v1.3.19 — DGO Multi-Stream Auth Fix April 2026

  • DGO concurrent stream fix — Channels like WIN Fútbol+ and DSPORT+ would fail with AUTH_ERROR when another DGO channel was already streaming. The DGO script now correctly falls back to the assetToken authentication path using the SM DGO token when the authorizer session limit is reached, allowing multiple DGO channels to run simultaneously.
v1.3.18

v1.3.18 — Primary Audio Fix for Inactive Streams April 2026

  • Primary audio for inactive streams — A "Primary Audio" dropdown now appears below the audio track selector when 2 or more tracks are chosen on an inactive stream, allowing you to set the default language before the stream starts. Previously this option was only available while a stream was actively running.
v1.3.17

v1.3.17 — Primary Audio Track Selection April 2026

  • Primary audio track — When multiple audio tracks are manually selected in stream settings, click ★ next to any track to mark it as primary. The primary track is placed first in the muxed output and flagged as default so downstream players always start on the correct language (e.g. Spanish over English).
v1.3.16

v1.3.16 — Batch Start Throttling April 2026

  • Batch concurrency throttled — Stream batch start concurrency reduced from 8 to 4 simultaneous starts, with a 500ms pause between groups. Prevents DB connection pool exhaustion and event loop saturation during recovery of large installations (80+ streams).
v1.3.15

v1.3.15 — Crash Fix & Stream Start Optimisation April 2026

  • Critical crash fix — A database connection pool timeout in the proxy lookup path was an unhandled promise rejection that killed the Node.js process. The lookup now fails gracefully (stream continues without proxy), and a global unhandled rejection handler ensures no future transient DB error can crash the server.
  • Service & account ID caching — Service and account IDs were re-fetched from the database on every single stream start. These are now cached in memory after the first lookup, eliminating 2 redundant DB queries per stream restart on large installations.
v1.3.14

v1.3.14 — Batch Start Performance Fix April 2026

  • Batch stream start optimisation — When starting multiple streams at once, settings were fetched from the database individually for each stream. All stream settings are now pre-loaded in a single bulk query before the batch begins, eliminating connection pool exhaustion and DB timeout errors on large installations (80+ streams).
  • Installer safe-mode default — The installer now auto-detects an existing installation and defaults to Update mode, preventing accidental data loss when the installer is run non-interactively or the prompt times out.
v1.3.13

v1.3.13 — Critical DB Load Fix (High Stream Count) April 2026

  • Settings read caching — Application settings were re-fetched from the database on every authenticated request, every stream restart, and every license check. Settings are now cached in memory for 10 seconds, eliminating thousands of redundant DB round-trips per minute on busy servers (80+ streams).
  • Streams table poll interval — The dashboard streams table was polling the database every 2 seconds with a heavy 109-row JOIN query. Default interval raised to 10 seconds, reducing that query load by 5×.
v1.3.12

v1.3.12 — Performance & Stability Fix April 2026

  • Server CPU spike fix — Unconditional database query logging was firing on every single query, saturating the Node.js event loop under heavy stream load (80+ streams). In production, only slow queries (>500ms) are now logged.
  • JWT caching fix — The JWT secret was being re-fetched from the database on every authenticated request. It is now cached in memory for 5 minutes, significantly reducing database load on busy servers.
v1.3.11

v1.3.11 — In-App Auto-Update April 2026

  • In-app update notifications — When a new version is available, a notification badge appears in the header. Click it to see the changelog and update with one click — the server downloads the installer, applies it, and the page reloads automatically when the server is back up.
  • DGO — track probe now works — Probing tracks from the stream settings modal was failing with a geo-block error. Fixed.
v1.3.10

v1.3.10 — DGO Probe Fix April 2026

  • DGO — track probe now works correctly — Probing tracks from the stream settings modal was failing with a geo-block error because the manifest fetch used no proxy. The probe endpoint now always resolves the service/account proxy for the manifest fetch regardless of stream proxy settings.
v1.3.9

v1.3.9 — DGO Streaming & UI Fixes April 2026

  • DGO — channels now load after adding account — Multiple token acceptance fixes: the login handler now recognizes all DGO token formats including bare payloads, cookie arrays, JSON objects, and any token with standard DGO fields. A final fallback ensures no valid token is rejected.
  • DGO — streams now start correctly — The DRM license request now uses the configured proxy (required for geo-restricted Latin American content). Additionally, the DASH manifest fetch now always uses the account/service proxy regardless of the "Stream Proxy Fallback" toggle — segments still respect that toggle.
  • Service login instructions now visible — Step-by-step login instructions defined in service scripts (e.g. DGO's 3-option cookie/token guide) now appear in the Add Account and Update Credentials dialogs.
v1.3.8

v1.3.8 — DGO Update Credentials Fix April 2026

  • DGO — "Update Credentials" now works correctly — Updating an existing DGO account's token via the Update Credentials button was silently failing because the token JSON normalizer fix was only applied to the Add Account flow. The Update Credentials endpoint now also passes token objects (id_token, refresh_token, etc.) through unchanged without corrupting them into cookie strings.
v1.3.7

v1.3.7 — DGO Login & Channel Fix April 2026

  • DGO — channels now load after cookie login — After adding a DGO account via token/cookie, the channel list was always empty. The script now correctly reads the channel list from the SM DGO token stored during cookie login instead of only looking at the Toolbox OIDC token (which is only available after device pairing).
  • DGO — all token paste formats now accepted — The login now correctly handles: raw JWT, JSON object with id_token + refresh_token, browser localStorage display format (sessionToken:"eyJ..."), cookie arrays, and bare base64 payload tokens. Previously several of these formats were silently rejected.
  • DGO — token JSON no longer corrupted before reaching the script — A server-side cookie normalizer was converting JSON token objects (e.g. {"id_token":"...","refresh_token":"..."}) into a cookie string before passing to the script, destroying the structure. It now passes token objects through unchanged.
v1.3.6

v1.3.6 — Bulk Stop Fix April 2026

  • Bulk stop now works correctly — Stopping 50+ channels via the batch operation now actually stops the streams. Previously the stop was reported as successful immediately without waiting for streams to actually terminate, causing channels to appear stopped in the UI while still running. The fix properly awaits each stop and processes them in parallel batches of 8.
v1.3.5

v1.3.5 — Performance Fix: Server CPU & Zombie Process Elimination April 2026

  • Eliminated zombie processes during stream monitoring — The system metrics check previously spawned a top -bn1 shell command for every active stream on every monitoring cycle. With 50+ streams, this created dozens of simultaneous subprocesses causing high CPU usage and zombie process accumulation. Metrics are now read directly from /proc/stat and /proc/meminfo (instant file reads, no subprocess) and cached for 5 seconds with promise coalescing — all concurrent calls share a single read.
  • Database dead tuple cleanup — Performed VACUUM ANALYZE on all core tables to remove dead tuple bloat that was slowing down queries. The system_config table had 46 dead tuples versus 4 live rows, causing significantly slower reads at startup and during license verification.
v1.3.4

v1.3.4 — Dashboard Fixes April 2026

  • Dashboard — fast first load — The dashboard no longer takes up to a minute to load on first visit or after a server restart. Channel counts are now fetched in parallel batches of 6 instead of one-by-one, and the backend summary endpoint runs library, proxy, and VOD counts concurrently instead of sequentially.
  • Dashboard — auto-refresh removed — The dashboard no longer visually reloads every time the user switches tabs or after 30 seconds. Tab-switch now only updates the active stream count silently. A full silent refresh of all counters happens in the background every ~2 minutes without any visible flash or spinner.
  • Dashboard — events counter now populates automatically — The Events and Active Events counters no longer stay at 0 after a server restart. The dashboard now warms the events cache in the background on first load and updates the counters automatically without requiring a manual refresh.
v1.3.3

v1.3.3 — Performance & UX Improvements April 2026

  • Bulk channel start — major speed improvement — Starting 50+ channels is now significantly faster. Database queries per stream were reduced from ~7 to ~1 by adding a 30-second in-memory cache for proxy lookups (service, account, and stream-level). Duplicate settings loads are also eliminated by passing pre-loaded settings directly to the stream engine.
  • Bulk start concurrency raised from 3 to 8 — Streams are now started 8 at a time (up from 3), cutting wall-clock time for large batches by more than half. Applies to both batch start and batch restart.
  • Streams table — service filter fixed — The "Service" dropdown in the Streams table now correctly lists all services when the channel cache is warm. Previously the filter showed only "All Services" and "My Streams" on page load because service names were not extracted from the cache.
  • DGO & Netflix — guided cookie setup — The Add Account and Update Credentials dialogs for cookie-based services (DGO, Netflix) now display a clear step-by-step instruction panel explaining exactly where to find the token or cookies in the browser. DGO shows three options: raw JWT, JSON with auto-refresh, or cookie export. Netflix shows the EditThisCookie flow. Field labels and placeholders are service-specific.
  • Server page — network interface error fixed — The Server page no longer shows "Failed to fetch server information" on hardened systems. The systemd service unit now grants AF_NETLINK access, which libuv requires internally when enumerating network interfaces.
v1.3.2

v1.3.2 — DGO & Streams Fixes April 2026

  • DGO — All channels now listed — Fixed a 50-channel hard limit that silently cut off the remaining channels when an account had more than 50 (e.g. 123 total). Channels are now fetched in batches so the full list is always returned.
  • DGO — Auto token refresh — The SM DGO session token is now automatically refreshed before it expires (30-minute threshold). Provide a {"id_token":"eyJ...","refresh_token":"eyJ..."} JSON object at login to enable unattended renewal for up to 90 days.
  • Streams — Deleted account channels removed — Channels belonging to a deleted account are now immediately removed from the Streams table instead of persisting until the 2-hour cache expired.
v1.3.1

v1.3.1 — Max Service & Events Fixes April 2026

  • Max — Device pairing fixed — Pairing no longer gets stuck at "Step 3: Wait for automatic activation". The pair context is now saved to a separate file that the server's cleanup routine cannot delete, eliminating the race condition that caused workers to find no pairing context.
  • Max — VOD playback fixed — Resolved a 400 Bad Request from the Max playback API caused by unsupported capabilities.video and capabilities.audio fields. The payload now only includes manifests and contentProtection as required by the API schema.
  • Max — Live events implemented — The Events page now lists live and upcoming sports events from the Max sports/live CMS routes, including correct Sport and League labels.
  • Max — Event live/upcoming status corrected — Events with videoType=LIVE that have not yet started are now correctly marked as Upcoming rather than Live, based on their broadcast start time.
  • Max — Improved playback error messages — The script now parses Max API error codes from the response body, distinguishing geo-block errors from subscription/entitlement errors instead of showing a generic GEO_BLOCKED message.
  • Max — Live event manifest resolution — Fixed incorrect edit ID resolution for live events; the script now falls back to the direct video endpoint when the show endpoint returns no result, ensuring live content IDs are correctly resolved before the playback request.
v1.3.0

v1.3.0 — DGO Service & Proxy Engine Improvements April 2026

  • DGO (DirecTV GO) — Full Widevine DRM support — Streams now play end-to-end using the SM DGO authorizer flow, which returns pre-tokenized Akamai CDN manifest URLs and an IP-locked DRM authorization JWT. Widevine keys are extracted automatically via the CDM action.
  • DGO — Cookie/token login — DGO now uses a cookie-based login (like Netflix). Paste the SM DGO JWT from your browser's Network tab or an EditThisCookie export directly into the login dialog — no pairing code required for streaming accounts.
  • DGO — Device code pairing fixed — The device code and token polling endpoints now correctly use Basic auth, resolving the INVALID_APIKEY error that broke pairing.
  • DGO — Token auto-refresh — If a SM DGO refresh_token is stored, the script automatically renews the session token before it expires without user intervention.
  • Proxy engine — Account proxy now passed to all scriptsspawnPythonScript (used for CDM, manifest, channels, and all other script actions) now resolves the account-level proxy in addition to the service-level proxy. Previously, CDM license requests did not receive the account proxy, causing DRM failures when "Use proxy for streams" was disabled.
v1.2.0

v1.2.0 — Bug Fixes & DRM Support April 2026

  • DRM streams — Bento4 (mp4decrypt) is now automatically installed; services like DirecTV with encrypted streams now work out of the box.
  • Python environment — Scripts now correctly use the virtual environment Python so all required packages (curl_cffi, pycurl, etc.) are available.
  • Stream access — Fixed a false-positive in the integrity check that incorrectly blocked all stream operations after license activation.
  • Installer — Fixed admin password not being applied at install time; the password shown at the end now matches what you log in with.
  • Installer — Resolved dependency installation failure on Ubuntu 22 caused by libcurl package conflicts; nodejs/npm no longer required.
  • Installer — Fixed WebAssembly crash on startup caused by the 2 GB virtual memory limit in the systemd service.
  • Email delivery — License keys are now automatically emailed to customers after successful payment.
  • Stream naming — Fixed a bug where streams that fail to start would get renamed to "Unknown Channel" in the database and UI; the original channel name is now preserved across retries and restarts.
v1.1.68

v1.1.68 — Performance & Stability Update April 2026

  • Streams page — Channels now load from a local cache (2-hour TTL) so navigating back to the Streams page is instant; cache is refreshed on manual refresh.
  • Batch operations — Stop/Restart now run in the background; the panel responds immediately and operations continue safely even if you refresh or close the page.
  • Events auto-start — Fixed duplicate stream launches; auto-start now only triggers for events that newly become live, not on every status poll.
  • Parallel batch processing — Batch stop/restart use concurrent processing (up to 3 streams at a time) instead of sequential queuing, reducing completion time significantly for large batches.
  • Events page — Fixed missing UI imports that caused rendering issues in the events skeleton loader.
  • Installer — Rewritten to be clean and silent; now displays the panel URL and admin credentials at the end of installation.
v1.1.0

v1.1.0 — xUI Integration & VOD February 2026

  • xUI panel integration — import streams and accounts directly from xUI.
  • VOD page with on-demand stream management.
  • HLS player built into the panel for live preview.
  • Database management page for direct SQL inspection.
  • Horizontal navigation layout option.
  • Dark/light theme toggle with system preference detection.
v1.0.0

v1.0.0 — Initial Release January 2026

  • Multi-service IPTV stream management (ESPN, Hulu, Fubo, Sling, Peacock, Pluto, and more).
  • HLS re-streaming with FFmpeg and proxy support.
  • Live events tracking with schedule-based stream control.
  • Proxy management dashboard.
  • Stream monitoring and health checks.
  • Structured logging with real-time log viewer.