🚀 XC_VM v2.5.0
A major modernization release. The administration and reseller panels have been
rebuilt on Bootstrap 5 with JSON-driven tables, modal/tabbed forms, a new
dashboard and navigation — alongside continued streaming, module and update
system improvements.
✨ Highlights
- Complete Bootstrap 5 admin UI migration — new shell, layout, navigation,
dashboard, tables, forms and modals. - JSON-driven management tables replacing the legacy positional-column
rendering, with client-side rendering, filters, live refresh and bulk actions. - New dashboard with statistics cards, live stats and a world map of active
connections. - Global quick search in the admin header, with results rendered as cards.
- Reseller panel migrated to the same Bootstrap 5 UI.
- Redesigned admin & reseller login as a sci-fi HUD interface.
- Per-user UI customization persisted in
users.ui_prefs.
🎨 Admin UI (Bootstrap 5)
- New per-page opt-in admin shell and a Bootstrap 5 v10.11.1 asset kit; assets
split into old/new and later flattened, dropping the legacy tree. - Shared per-page topbar (JSON-driven), reorganized sidebar into a cleaner
information architecture, and a Content split into Streaming / VOD /
Distribution tabs. - Management tables migrated to clean-JSON endpoints: Live Streams, VOD/Movies,
TV Series & Episodes, Users/Resellers, MAG & Enigma2 devices, Radio Stations,
Servers & Proxy Servers, Lines & Live Connections, EPG, Backups, Packages/
Groups/Codes/Providers, Blocked IPs/ISPs/ASNs/User-Agents/HMACs/RTMP IPs,
Created Channels, Tickets, Transcoding Profiles, On-Demand Scanner, VOD Theft,
Stream Rank, Encoding Queue, and the log tables (Panel Errors, Login, Client,
Credit, Reseller, Activity, Stream Errors, Restream, MAG Events, System). - Edit forms rebuilt as Bootstrap 5 modals / tabbed layouts: live streams,
movies, series, episodes, radios, MAG & Enigma2 devices, lines, users
(resellers), packages/groups/codes/providers, HMAC, EPG, bouquets, proxy,
servers, transcode profiles, fingerprint, and the*_massbulk-edit forms. - Live table auto-refresh (soft-live: only changed rows re-render, paused on an
open dropdown), modal delete confirmations, in-table player previews, and
select2 owner/bouquet/package pickers. - Replaced native
alert()dialogs with a sharedxcToastnotification. - Fixed navigation labels and expanded i18n coverage.
📊 Dashboard
- Rebuilt on Bootstrap 5 with statistics cards and page-prefixed i18n.
- Added a connections world map (jsvectormap) and redesigned server cards
with sparklines. - Live statistics with polling reduced from 1s to 5s.
- Live per-user interface customizer persisted to
users.ui_prefs. - Added a dedicated Home dashboard nav item.
🔧 Modules & Updates
- Added module provider contracts for topbar, tables, permissions and quick
tools; moved those concerns out of core into dedicated providers. - Added per-repository update channels (Stable/Beta) for the panel, binaries
and thexc_fanoutdaemon. - Improved GeoIP release synchronization:
GitHubReleasesis now a generic
release client, with GeoLite2/GeoIP2-ISP sync owned by the domain layer and
the ISP database updated through the same path as GeoLite2.
🎬 Streaming & Fanout
- Added a panel setting to configure the
xc_fanoutsource backend
(auto / ffmpeg / native). - Added
xc_fanoutversion tracking (sidecar file) and integrity probing. - Kept HLS
MEDIA-SEQUENCEmonotonic across off-air ↔ live transitions. - Reworked the admin stream entry points (live/vod/timeshift/thumb) for
readability and testability, and fixed a segment retry-budget precedence bug
and a stats division-by-zero.
🛠 Fixes
- Fixed
cron:vodaborting on degenerateffprobeoutput under PHP 8. - Fixed load-balancer installation on Ubuntu 24.04 / Debian 13 (missing
curl)
and made binary release resolution resilient to GitHub API rate limits. - Surfaced server install status and allowed deleting offline servers.
- Wired the Panel Errors page actions to the topbar.
- Fixed assorted admin-UI issues: episodes topbar, DataTable header alignment,
row-action dropdown clipping, responsive child-row alignment, form UX. - Fixed various PHP 8 compatibility and null-safety issues.
🧰 Tools & Testing
- Added a synthetic test pattern to the stream generator — test streams
without an input file (stopwatch/clock overlay, hardened for long runs). - Merged the stream checker and grapher into a single
stream_check.py. - Added a Playwright end-to-end smoke harness and suite for the migrated
Bootstrap 5 admin.
📚 Documentation & Maintenance
- Rewrote the contributor guide; documented module provider contracts and the
controller/REST wiring. - Updated FFmpeg documentation and ADRs.
- Removed obsolete DTS/AC3 testing helpers.
- Updated dependencies, including PHPStan.