tiviLux V14 — Sports & Playback Rebuild INSTALL ON YOUR EXISTING SERVER 1. Back up the current tiviLux application and private database/configuration. 2. Extract this ZIP. Merge the contents of tiviLux/public into your existing public application directory, keeping the same paths. Also replace includes/xtream.php in the existing includes directory used by public/api/index.php. 3. Keep your existing storage, private configuration, database and server configuration. Do not rerun setup.php or delete your installation. No database migration is needed. 4. Reload the site. If an installed Home Screen app still shows the old layout, close and reopen it. V14 uses new asset URLs and a new service-worker cache. This is a multi-file update. Replacing only index.html is not enough. SPORTS - Redesigned mobile/desktop sports desk with Today, On air, Confirmed live and Upcoming filters. - Title-first matching; descriptions cannot classify unrelated shows as sports. - Excludes court shows, sports news, talk shows, highlights and 'in 30' recaps. - Explicitly marked replays hidden by default; optional replay toggle. - On air means the scheduled broadcast is airing. Confirmed live means the provider explicitly marked the program live; it is not independently verified against a league schedule. - Provider mistakes and unmarked replays cannot be reliably detected. Missing EPG/live flags can leave filters empty. Channel access remains in Live TV. - Sport filter, event/channel search, grouped duplicate broadcasts and selectable alternate channels. - Uses the viewer's local day and time. No outside sports API or additional keys required. - Scans all channel pages, with three EPG requests at a time, cached return visits and 3-minute refreshes while visible. SPEED AND PLAYBACK - V14.1: nonblocking Home, sequential catalog loading, complete provider catalog totals retained. - Profile visibility settings and artwork ticket profile lookup reused within each PHP request rather than queried for every item. - Account/profile-scoped bounded browser cache; cancelled page fetches cannot poison a new view's pending request. - Live guide loads all channel pages, queues EPG work, disconnects old observers and skips rendering offscreen rows where supported. - Native HLS retained on Safari. HLS.js gets a larger buffer target, size-aware adaptive quality and a less aggressive live-edge target. - Fatal HLS media/network errors attempt in-place recovery before reconnecting. Retries remain bounded, reset after sustained playback, and retain movie position. - Cancels stale playback/guide requests, avoids repeated player mouse listeners, monitors stalled playback and delays brief buffering overlays. - PHP stream output buffering disabled; encrypted media ticket and destination validation remain intact. - Larger live buffer targets can add delay behind the broadcast. Browser codecs, provider capacity, source quality, bandwidth and PHP worker capacity still determine actual playback quality. PRESERVED Existing sign-in/profile flows, player-only sign-in notice, favorites, history, movies, series, full catalog counts, category controls and guide wrap behavior. VALIDATION Automated title-classification regressions include the supplied screenshot examples; timing and event deduplication checks. Chromium fixture checks: 390px mobile and 1440px desktop Sports layout, filters, search, replay toggle, alternate channels, 30,000-movie catalog totals and guide navigation. Player fixtures: in-place HLS media/network recovery, old request cancellation, retry position retention and close cleanup. All JavaScript syntax checked. Changed PHP files parsed as PHP 8.3 syntax. No live provider credentials were used. Real provider streaming, PHP/database integration, iPhone Safari playback and production performance require verification on your server; no measured buffering reduction is claimed.