@xiboplayer/pwa 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,8 +13,8 @@ Lightweight PWA Xibo digital signage player built on the [`@xiboplayer` SDK](htt
|
|
|
13
13
|
- **XLF layout rendering** — video (MP4/HLS), images (scale/align), audio overlay, PDF, text/ticker, web pages via RendererLite
|
|
14
14
|
- **Campaign scheduling** — priority-based campaigns, dayparting, interrupts, and overlays
|
|
15
15
|
- **Playback control** — skip to next/previous layout via keyboard or click a layout in the timeline overlay
|
|
16
|
-
- **Conflict indicators** — timeline overlay highlights overlapping schedule entries
|
|
17
|
-
- **Multi-display sync** — BroadcastChannel-based lead/follower synchronized playback for video walls
|
|
16
|
+
- **Conflict indicators** — timeline overlay highlights overlapping schedule entries with accurate per-layout durations
|
|
17
|
+
- **Multi-display sync** — BroadcastChannel-based lead/follower synchronized playback for video walls, with cross-tab stats/logs delegation so followers submit proof-of-play through the sync lead
|
|
18
18
|
- **Real-time CMS commands** — collectNow, screenshot, changeLayout, overlayLayout via XMR WebSocket
|
|
19
19
|
- **SDK event wiring** — widget duration events, scheduled commands, event-based proof of play
|
|
20
20
|
- **Proof of play** — per-layout and per-widget duration tracking with stats reporting
|
|
@@ -39,13 +39,45 @@ All overlays and controls are hidden by default for clean kiosk operation.
|
|
|
39
39
|
|
|
40
40
|
Timeline overlay also supports **click-to-skip** — click any layout in the timeline to jump directly to it.
|
|
41
41
|
|
|
42
|
+
## Debug Overlays
|
|
43
|
+
|
|
44
|
+
Three toggleable overlays provide real-time insight into player operation without leaving the playback screen. All are hidden by default for clean kiosk operation — press the corresponding key to toggle.
|
|
45
|
+
|
|
46
|
+
### Timeline Overlay (`T`)
|
|
47
|
+
|
|
48
|
+
Shows the upcoming schedule as a scrollable list (up to 8 entries visible):
|
|
49
|
+
|
|
50
|
+
- **Current layout** highlighted with a `▶` marker and blue left border
|
|
51
|
+
- **Time range** and **duration** for each entry (e.g. `19:25–19:31 #362 6m 15s`)
|
|
52
|
+
- **`[def]`** tag on default/fallback layouts (no campaign scheduled)
|
|
53
|
+
- **`OFFLINE`** badge when the player has lost CMS connectivity
|
|
54
|
+
- **⚠ conflict indicators** — an orange `⚠ N` badge appears when N lower-priority layouts were scheduled for the same time slot but suppressed by a higher-priority campaign. Hover over the ⚠ to see which layouts were hidden and their priorities (e.g. `Hidden: #366 (p0), #362 (p0)`)
|
|
55
|
+
- **Click-to-skip** — click any future layout to jump to it immediately. The player enters override mode (the schedule won't auto-advance). Press `R` to return to normal schedule playback
|
|
56
|
+
- **Remaining duration** — the currently playing layout shows time remaining rather than full duration, so the predicted end time is always accurate
|
|
57
|
+
|
|
58
|
+
### Download Overlay (`D`)
|
|
59
|
+
|
|
60
|
+
Shows real-time media download progress:
|
|
61
|
+
|
|
62
|
+
- **Active downloads** with progress bars, speed, and chunk status
|
|
63
|
+
- **Queue depth** — how many files are waiting to download
|
|
64
|
+
- **Idle status** when all media is cached and up to date
|
|
65
|
+
- Auto-hides when all downloads complete (if auto-hide is enabled)
|
|
66
|
+
|
|
67
|
+
Useful during initial deployment or after a `purgeAll` command to monitor how quickly content is being cached.
|
|
68
|
+
|
|
69
|
+
### Video Controls (`V`)
|
|
70
|
+
|
|
71
|
+
Toggles native browser `<video>` controls on all video elements currently in the DOM. Shows play/pause, seek bar, volume, and fullscreen buttons on each video widget — helpful for debugging video playback issues, checking codec info, or manually seeking within a video.
|
|
72
|
+
|
|
42
73
|
## Service Worker Architecture
|
|
43
74
|
|
|
44
75
|
The Service Worker (`sw-pwa.js`) provides:
|
|
45
76
|
|
|
46
77
|
- **Progressive streaming** — large media served via chunk streaming with Range request support
|
|
47
78
|
- **BlobCache** — in-memory assembled chunks with LRU eviction for fast video seeking
|
|
48
|
-
- **XLF-driven media resolution** — parses layout XLF to download exactly the media each layout needs
|
|
79
|
+
- **XLF-driven media resolution** — parses layout XLF to download exactly the media each layout needs, including data widget IDs (media tags without fileId) and unclaimed media files
|
|
80
|
+
- **Server-enriched widget data** — RSS/dataset widget data paths are provided by the CMS in enriched RequiredFiles responses, downloaded alongside regular media rather than fetched client-side
|
|
49
81
|
- **Layout-ordered downloads** — media queued with barriers so the currently-playing layout downloads first
|
|
50
82
|
- **Version-aware activation** — same-version SW update skips activation to preserve in-flight video streams
|
|
51
83
|
- **Adaptive chunk sizing** — adjusts chunk size and concurrency based on device RAM (4GB/8GB+ tiers)
|