prismcast 1.5.2 → 1.7.0

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.
Files changed (239) hide show
  1. package/README.md +44 -28
  2. package/dist/app.d.ts +5 -0
  3. package/dist/app.js +63 -5
  4. package/dist/app.js.map +1 -1
  5. package/dist/browser/cdp.js +1 -1
  6. package/dist/browser/cdp.js.map +1 -1
  7. package/dist/browser/channelSelection.d.ts +10 -34
  8. package/dist/browser/channelSelection.js +31 -96
  9. package/dist/browser/channelSelection.js.map +1 -1
  10. package/dist/browser/display.d.ts +19 -0
  11. package/dist/browser/display.js +16 -11
  12. package/dist/browser/display.js.map +1 -1
  13. package/dist/browser/index.d.ts +31 -54
  14. package/dist/browser/index.js +334 -272
  15. package/dist/browser/index.js.map +1 -1
  16. package/dist/browser/login.d.ts +65 -0
  17. package/dist/browser/login.js +193 -0
  18. package/dist/browser/login.js.map +1 -0
  19. package/dist/browser/precaching.js +15 -3
  20. package/dist/browser/precaching.js.map +1 -1
  21. package/dist/browser/tuning/comcastPolymer.d.ts +23 -0
  22. package/dist/browser/tuning/comcastPolymer.js +655 -0
  23. package/dist/browser/tuning/comcastPolymer.js.map +1 -0
  24. package/dist/browser/tuning/cox.d.ts +2 -0
  25. package/dist/browser/tuning/cox.js +14 -0
  26. package/dist/browser/tuning/cox.js.map +1 -0
  27. package/dist/browser/tuning/directv.js +14 -1
  28. package/dist/browser/tuning/directv.js.map +1 -1
  29. package/dist/browser/tuning/fox.js +14 -2
  30. package/dist/browser/tuning/fox.js.map +1 -1
  31. package/dist/browser/tuning/hbo.js +12 -1
  32. package/dist/browser/tuning/hbo.js.map +1 -1
  33. package/dist/browser/tuning/hulu.js +24 -1
  34. package/dist/browser/tuning/hulu.js.map +1 -1
  35. package/dist/browser/tuning/shared.d.ts +46 -0
  36. package/dist/browser/tuning/shared.js +100 -0
  37. package/dist/browser/tuning/shared.js.map +1 -0
  38. package/dist/browser/tuning/sling.js +35 -5
  39. package/dist/browser/tuning/sling.js.map +1 -1
  40. package/dist/browser/tuning/spectrum.js +13 -1
  41. package/dist/browser/tuning/spectrum.js.map +1 -1
  42. package/dist/browser/tuning/thumbnailRow.js +1 -1
  43. package/dist/browser/tuning/thumbnailRow.js.map +1 -1
  44. package/dist/browser/tuning/tileClick.js +1 -1
  45. package/dist/browser/tuning/tileClick.js.map +1 -1
  46. package/dist/browser/tuning/xfinity.d.ts +2 -0
  47. package/dist/browser/tuning/xfinity.js +14 -0
  48. package/dist/browser/tuning/xfinity.js.map +1 -0
  49. package/dist/browser/tuning/youtubeTv.js +15 -1
  50. package/dist/browser/tuning/youtubeTv.js.map +1 -1
  51. package/dist/browser/video.d.ts +20 -0
  52. package/dist/browser/video.js +168 -124
  53. package/dist/browser/video.js.map +1 -1
  54. package/dist/channels/index.d.ts +2 -2
  55. package/dist/channels/index.js +2075 -683
  56. package/dist/channels/index.js.map +1 -1
  57. package/dist/config/health.d.ts +28 -28
  58. package/dist/config/health.js +72 -54
  59. package/dist/config/health.js.map +1 -1
  60. package/dist/config/index.js +29 -64
  61. package/dist/config/index.js.map +1 -1
  62. package/dist/config/paths.d.ts +12 -0
  63. package/dist/config/paths.js +16 -0
  64. package/dist/config/paths.js.map +1 -1
  65. package/dist/config/profiles.d.ts +3 -2
  66. package/dist/config/profiles.js +45 -34
  67. package/dist/config/profiles.js.map +1 -1
  68. package/dist/config/providerPacks.js +4 -1
  69. package/dist/config/providerPacks.js.map +1 -1
  70. package/dist/config/providers.d.ts +19 -5
  71. package/dist/config/providers.js +123 -93
  72. package/dist/config/providers.js.map +1 -1
  73. package/dist/config/sites.d.ts +28 -0
  74. package/dist/config/sites.js +104 -127
  75. package/dist/config/sites.js.map +1 -1
  76. package/dist/config/userChannels.d.ts +53 -2
  77. package/dist/config/userChannels.js +222 -13
  78. package/dist/config/userChannels.js.map +1 -1
  79. package/dist/config/userConfig.d.ts +2 -1
  80. package/dist/config/userConfig.js +6 -15
  81. package/dist/config/userConfig.js.map +1 -1
  82. package/dist/config/userProfiles.d.ts +0 -1
  83. package/dist/config/userProfiles.js +18 -10
  84. package/dist/config/userProfiles.js.map +1 -1
  85. package/dist/hdhr/channelMap.d.ts +1 -1
  86. package/dist/hdhr/channelMap.js +4 -4
  87. package/dist/hdhr/channelMap.js.map +1 -1
  88. package/dist/index.js +25 -22
  89. package/dist/index.js.map +1 -1
  90. package/dist/native/decrypt.d.ts +32 -0
  91. package/dist/native/decrypt.js +85 -0
  92. package/dist/native/decrypt.js.map +1 -0
  93. package/dist/native/index.d.ts +61 -0
  94. package/dist/native/index.js +342 -0
  95. package/dist/native/index.js.map +1 -0
  96. package/dist/native/intercept.d.ts +35 -0
  97. package/dist/native/intercept.js +184 -0
  98. package/dist/native/intercept.js.map +1 -0
  99. package/dist/native/probe.d.ts +49 -0
  100. package/dist/native/probe.js +294 -0
  101. package/dist/native/probe.js.map +1 -0
  102. package/dist/native/proxy.d.ts +54 -0
  103. package/dist/native/proxy.js +947 -0
  104. package/dist/native/proxy.js.map +1 -0
  105. package/dist/routes/components.d.ts +43 -0
  106. package/dist/routes/components.js +122 -0
  107. package/dist/routes/components.js.map +1 -1
  108. package/dist/routes/config/channels/index.d.ts +2 -2
  109. package/dist/routes/config/channels/index.js +1 -1
  110. package/dist/routes/config/channels/index.js.map +1 -1
  111. package/dist/routes/config/channels/routes.js +443 -65
  112. package/dist/routes/config/channels/routes.js.map +1 -1
  113. package/dist/routes/config/channels/table.d.ts +76 -0
  114. package/dist/routes/config/channels/table.js +369 -89
  115. package/dist/routes/config/channels/table.js.map +1 -1
  116. package/dist/routes/config/index.d.ts +1 -1
  117. package/dist/routes/config/index.js +1 -1
  118. package/dist/routes/config/index.js.map +1 -1
  119. package/dist/routes/config/providers.d.ts +6 -6
  120. package/dist/routes/config/providers.js +73 -99
  121. package/dist/routes/config/providers.js.map +1 -1
  122. package/dist/routes/debug.js +5 -5
  123. package/dist/routes/debug.js.map +1 -1
  124. package/dist/routes/hls.js +12 -2
  125. package/dist/routes/hls.js.map +1 -1
  126. package/dist/routes/index.d.ts +0 -15
  127. package/dist/routes/index.js +2 -16
  128. package/dist/routes/index.js.map +1 -1
  129. package/dist/routes/providers.js +106 -3
  130. package/dist/routes/providers.js.map +1 -1
  131. package/dist/routes/root/content.js +124 -47
  132. package/dist/routes/root/content.js.map +1 -1
  133. package/dist/routes/root/index.js +2 -1
  134. package/dist/routes/root/index.js.map +1 -1
  135. package/dist/routes/root/scripts/channels.js +772 -312
  136. package/dist/routes/root/scripts/channels.js.map +1 -1
  137. package/dist/routes/root/scripts/config.js +596 -544
  138. package/dist/routes/root/scripts/config.js.map +1 -1
  139. package/dist/routes/root/scripts/index.d.ts +1 -0
  140. package/dist/routes/root/scripts/index.js +1 -0
  141. package/dist/routes/root/scripts/index.js.map +1 -1
  142. package/dist/routes/root/scripts/shared.d.ts +6 -0
  143. package/dist/routes/root/scripts/shared.js +391 -0
  144. package/dist/routes/root/scripts/shared.js.map +1 -0
  145. package/dist/routes/root/scripts/status.js +49 -33
  146. package/dist/routes/root/scripts/status.js.map +1 -1
  147. package/dist/routes/root/styles.js +117 -10
  148. package/dist/routes/root/styles.js.map +1 -1
  149. package/dist/service/commands.js +2 -1
  150. package/dist/service/commands.js.map +1 -1
  151. package/dist/streaming/fmp4Segmenter.d.ts +5 -0
  152. package/dist/streaming/fmp4Segmenter.js +146 -42
  153. package/dist/streaming/fmp4Segmenter.js.map +1 -1
  154. package/dist/streaming/hls.d.ts +24 -19
  155. package/dist/streaming/hls.js +603 -297
  156. package/dist/streaming/hls.js.map +1 -1
  157. package/dist/streaming/hlsResume.d.ts +16 -3
  158. package/dist/streaming/hlsResume.js +35 -8
  159. package/dist/streaming/hlsResume.js.map +1 -1
  160. package/dist/streaming/hlsSegments.d.ts +41 -2
  161. package/dist/streaming/hlsSegments.js +131 -28
  162. package/dist/streaming/hlsSegments.js.map +1 -1
  163. package/dist/streaming/lifecycle.js +27 -13
  164. package/dist/streaming/lifecycle.js.map +1 -1
  165. package/dist/streaming/monitor.d.ts +1 -0
  166. package/dist/streaming/monitor.js +862 -474
  167. package/dist/streaming/monitor.js.map +1 -1
  168. package/dist/streaming/mp4Parser.d.ts +52 -6
  169. package/dist/streaming/mp4Parser.js +156 -30
  170. package/dist/streaming/mp4Parser.js.map +1 -1
  171. package/dist/streaming/mpegts.d.ts +2 -2
  172. package/dist/streaming/mpegts.js +156 -109
  173. package/dist/streaming/mpegts.js.map +1 -1
  174. package/dist/streaming/playlistBuilder.d.ts +38 -0
  175. package/dist/streaming/playlistBuilder.js +66 -0
  176. package/dist/streaming/playlistBuilder.js.map +1 -0
  177. package/dist/streaming/preroll.d.ts +126 -0
  178. package/dist/streaming/preroll.js +434 -0
  179. package/dist/streaming/preroll.js.map +1 -0
  180. package/dist/streaming/pretune.d.ts +8 -0
  181. package/dist/streaming/pretune.js +226 -0
  182. package/dist/streaming/pretune.js.map +1 -0
  183. package/dist/streaming/recovery.d.ts +0 -6
  184. package/dist/streaming/recovery.js +0 -8
  185. package/dist/streaming/recovery.js.map +1 -1
  186. package/dist/streaming/registry.d.ts +57 -9
  187. package/dist/streaming/registry.js +26 -7
  188. package/dist/streaming/registry.js.map +1 -1
  189. package/dist/streaming/setup.d.ts +8 -1
  190. package/dist/streaming/setup.js +71 -27
  191. package/dist/streaming/setup.js.map +1 -1
  192. package/dist/streaming/showInfo.d.ts +29 -4
  193. package/dist/streaming/showInfo.js +210 -38
  194. package/dist/streaming/showInfo.js.map +1 -1
  195. package/dist/streaming/statusEmitter.d.ts +20 -6
  196. package/dist/streaming/statusEmitter.js +31 -7
  197. package/dist/streaming/statusEmitter.js.map +1 -1
  198. package/dist/types/channels.d.ts +32 -0
  199. package/dist/types/config.d.ts +2 -2
  200. package/dist/types/index.d.ts +2 -2
  201. package/dist/types/index.js.map +1 -1
  202. package/dist/types/profiles.d.ts +13 -1
  203. package/dist/types/selection.d.ts +5 -1
  204. package/dist/types/shared.d.ts +1 -1
  205. package/dist/types/streaming.d.ts +7 -0
  206. package/dist/utils/chromeFetch.d.ts +20 -0
  207. package/dist/utils/chromeFetch.js +43 -0
  208. package/dist/utils/chromeFetch.js.map +1 -0
  209. package/dist/utils/debugFilter.d.ts +0 -5
  210. package/dist/utils/debugFilter.js +20 -11
  211. package/dist/utils/debugFilter.js.map +1 -1
  212. package/dist/utils/delay.d.ts +28 -0
  213. package/dist/utils/delay.js +35 -1
  214. package/dist/utils/delay.js.map +1 -1
  215. package/dist/utils/evaluate.js +6 -11
  216. package/dist/utils/evaluate.js.map +1 -1
  217. package/dist/utils/ffmpeg.d.ts +14 -12
  218. package/dist/utils/ffmpeg.js +114 -134
  219. package/dist/utils/ffmpeg.js.map +1 -1
  220. package/dist/utils/format.d.ts +6 -0
  221. package/dist/utils/format.js +8 -0
  222. package/dist/utils/format.js.map +1 -1
  223. package/dist/utils/index.d.ts +3 -0
  224. package/dist/utils/index.js +3 -0
  225. package/dist/utils/index.js.map +1 -1
  226. package/dist/utils/logEmitter.js +1 -1
  227. package/dist/utils/logEmitter.js.map +1 -1
  228. package/dist/utils/pid.d.ts +40 -0
  229. package/dist/utils/pid.js +83 -0
  230. package/dist/utils/pid.js.map +1 -0
  231. package/dist/utils/retry.d.ts +15 -9
  232. package/dist/utils/retry.js +7 -23
  233. package/dist/utils/retry.js.map +1 -1
  234. package/dist/utils/timing.d.ts +5 -0
  235. package/dist/utils/timing.js +13 -0
  236. package/dist/utils/timing.js.map +1 -0
  237. package/dist/utils/version.js +2 -2
  238. package/dist/utils/version.js.map +1 -1
  239. package/package.json +7 -7
@@ -3,7 +3,8 @@
3
3
  * content.ts: Tab content HTML generators for the PrismCast landing page.
4
4
  */
5
5
  import { escapeHtml, isRunningAsService } from "../../utils/index.js";
6
- import { generateAdvancedTabContent, generateChannelsPanel, generateProvidersPanel, generateSettingsFormFooter, generateSettingsTabContent, generateWizardModal, hasEnvOverrides } from "../config/index.js";
6
+ import { generateAdvancedTabContent, generateChannelsPanel, generateCustomProfilesPanel, generateProfileWizardModal, generateSettingsFormFooter, generateSettingsTabContent, hasEnvOverrides } from "../config/index.js";
7
+ import { getProviderModuleInfo } from "../../browser/channelSelection.js";
7
8
  import { getUITabs } from "../../config/userConfig.js";
8
9
  /**
9
10
  * Generates the active streams table for the Overview tab.
@@ -31,7 +32,9 @@ function generateBackupPanel() {
31
32
  "After importing, you will need to restart PrismCast for changes to take effect.";
32
33
  return [
33
34
  // Panel description.
34
- "<p class=\"settings-panel-description\">Export and import configuration and channel data.</p>",
35
+ "<p class=\"settings-panel-description\">Export and import configuration and channel data. See the ",
36
+ "<a href=\"#help\">Backup and Migration</a> section in the Help tab for details on what is included, what is not, and how to migrate to ",
37
+ "a new machine.</p>",
35
38
  // Settings backup section.
36
39
  "<div class=\"backup-group\">",
37
40
  "<div class=\"backup-group-title\">Settings Backup</div>",
@@ -73,6 +76,8 @@ function generateBackupPanel() {
73
76
  * @returns HTML content for the Overview tab.
74
77
  */
75
78
  export function generateOverviewContent(baseUrl) {
79
+ const providerInfo = getProviderModuleInfo();
80
+ const slowProviderLabels = providerInfo.filter((p) => p.noDirectTuneOptimization).map((p) => escapeHtml(p.label)).sort();
76
81
  return [
77
82
  // Active streams table at the top.
78
83
  generateActiveStreamsSection(),
@@ -80,8 +85,10 @@ export function generateOverviewContent(baseUrl) {
80
85
  "<div class=\"section\">",
81
86
  "<h3>What Is PrismCast?</h3>",
82
87
  "<p>PrismCast captures live video from web-based TV players by driving a real Chrome browser. It navigates to streaming sites, captures the ",
83
- "screen and audio output, and serves the result as HLS streams over HTTP. Think of it as a <strong>virtual TV tuner for web-based content</strong> &mdash; ",
84
- "it lets Channels DVR (and other applications) record and watch content from streaming sites that do not offer direct video URLs.</p>",
88
+ "screen and audio output, and serves the result as HLS streams over HTTP. For TV Everywhere sites that deliver non-DRMed streams, PrismCast can also ",
89
+ "bypass screen capture entirely and consume the stream directly at full provider quality with significantly lower CPU usage. Think of it as a ",
90
+ "<strong>virtual TV tuner for web-based content</strong> &mdash; it lets Channels DVR (and other applications) record and watch content from ",
91
+ "streaming sites that do not offer direct video URLs.</p>",
85
92
  "<p>PrismCast is built around three priorities, in order:</p>",
86
93
  "<ol>",
87
94
  "<li><strong>Reliability</strong> &mdash; tuning a channel always delivers that channel. When the primary approach fails, fallback strategies ",
@@ -97,10 +104,12 @@ export function generateOverviewContent(baseUrl) {
97
104
  "<h3>Video Quality</h3>",
98
105
  "<p><strong>PrismCast delivers H.264 video with AAC stereo audio</strong> at configurable quality presets ranging from 480p to 1080p. ",
99
106
  "Quality presets can be changed in the <a href=\"#config/settings\">Configuration</a> tab.</p>",
100
- "<p>This is <em>not</em> a replacement for native 4K, HDR, Dolby Vision, or surround sound &mdash; it is screen capture, not a direct feed. ",
101
- "PrismCast captures directly from Chrome's media pipeline with <strong>no video transcoding</strong>, which is why tuning is fast and CPU usage ",
102
- "stays low. The result is good quality video that works well for everyday viewing and DVR recording. PrismCast is designed for content you ",
103
- "<strong>cannot get any other way</strong> in Channels DVR: network streaming sites, free ad-supported TV, and live channels that only exist on the web.</p>",
107
+ "<p>For screen-captured channels, this is <em>not</em> a replacement for native 4K, HDR, Dolby Vision, or surround sound &mdash; PrismCast ",
108
+ "captures directly from Chrome's media pipeline with <strong>no video transcoding</strong>, which is why tuning is fast and CPU usage stays low. ",
109
+ "For channels using <strong>native HLS streaming</strong> (TV Everywhere sites with non-DRMed streams), PrismCast delivers the provider's original ",
110
+ "stream quality without screen capture limitations. The result is good quality video that works well for everyday viewing and DVR recording. ",
111
+ "PrismCast is designed for content you <strong>cannot get any other way</strong> in Channels DVR: network streaming sites, free ad-supported TV, ",
112
+ "and live channels that only exist on the web.</p>",
104
113
  "</div>",
105
114
  // Quick Start (Channels DVR).
106
115
  "<div class=\"section\">",
@@ -122,7 +131,7 @@ export function generateOverviewContent(baseUrl) {
122
131
  // Plex Integration.
123
132
  "<div class=\"section\">",
124
133
  "<h3>Plex Integration</h3>",
125
- "<p>PrismCast includes built-in HDHomeRun emulation, allowing Plex to use it as a network tuner for live TV and DVR recording.</p>",
134
+ "<p>PrismCast includes builtin HDHomeRun emulation, allowing Plex to use it as a network tuner for live TV and DVR recording.</p>",
126
135
  "<ol>",
127
136
  "<li>In Plex, go to <strong>Settings &rarr; Live TV &amp; DVR &rarr; Set Up Plex DVR</strong>.</li>",
128
137
  "<li>Enter your PrismCast server address with port 5004 (e.g., <code>192.168.1.100:5004</code>).</li>",
@@ -141,11 +150,19 @@ export function generateOverviewContent(baseUrl) {
141
150
  "Examples: NBC, ABC, Paramount+, USA Network.</p>",
142
151
  "<h4>Guide-Based Providers &mdash; First Tune (~5&ndash;10 seconds)</h4>",
143
152
  "<p>Sites where PrismCast navigates a live TV guide to find and select the channel. The first tune for a given channel is slower because the ",
144
- "guide grid must be searched. Examples: DirecTV Stream, HBO Max, Hulu, Sling TV, YouTube TV, Fox.</p>",
153
+ "guide grid must be searched. Examples: " + providerInfo.map((p) => escapeHtml(p.label)).sort().join(", ") + ".</p>",
154
+ ...(slowProviderLabels.length > 0 ? [
155
+ "<p class=\"description-hint\">Note: " + slowProviderLabels.join(" and ") +
156
+ " players are slow to initialize &mdash; expect 15&ndash;30 seconds for channel changes. " +
157
+ "This is a limitation of the web player, not PrismCast.</p>"
158
+ ] : []),
145
159
  "<h4>Guide-Based Providers &mdash; Subsequent Tunes (~3&ndash;5 seconds)</h4>",
146
- "<p>After the first tune, PrismCast caches channel data for <strong>DirecTV Stream, HBO Max, Hulu, Sling TV, and YouTube TV</strong>. ",
147
- "Subsequent tunes skip guide navigation entirely and are comparable to direct URL channels. If cached data ",
148
- "becomes stale, PrismCast falls back to guide navigation transparently.</p>",
160
+ "<p>After the first tune, PrismCast caches channel data for <strong>" +
161
+ providerInfo.filter((p) => !p.noDirectTuneOptimization).map((p) => escapeHtml(p.label)).sort().join(", ") +
162
+ "</strong>. Subsequent tunes skip guide navigation entirely and are comparable to direct URL channels. " +
163
+ "If cached data becomes stale, PrismCast falls back to guide navigation transparently." +
164
+ (slowProviderLabels.length > 0 ? " " + slowProviderLabels.join(" and ") +
165
+ " do not benefit from this optimization &mdash; each tune requires a full page load of the player." : "") + "</p>",
149
166
  "<h4>Idle Window</h4>",
150
167
  "<p>Streams stay alive for <strong>30 seconds</strong> after the last client disconnects (configurable in the ",
151
168
  "<a href=\"#config/settings\">Configuration</a> tab). This means channel surfing in Channels DVR is instant for recently-viewed channels &mdash; ",
@@ -163,9 +180,10 @@ export function generateOverviewContent(baseUrl) {
163
180
  "<li>Click <strong>Done</strong> when authentication is complete.</li>",
164
181
  "</ol>",
165
182
  "<p>Your login credentials are saved in the browser profile and persist across restarts. You only need to authenticate once per TV provider. ",
166
- "The Login button is stateless and always displays &ldquo;Login&rdquo; regardless of authentication status &mdash; successful authentication is ",
167
- "confirmed when the channel streams correctly. Some TV providers periodically expire sessions on their end, requiring re-authentication. This is ",
168
- "a provider limitation, not a PrismCast issue &mdash; simply click Login again to re-authenticate.</p>",
183
+ "The <a href=\"#channels\">Channels tab</a> shows <strong>green and red indicators</strong> next to each channel reflecting the last tune result, ",
184
+ "and <strong>provider authentication badges</strong> that confirm which providers have active sessions. Some TV providers periodically expire ",
185
+ "sessions on their end, requiring re-authentication. This is a provider limitation, not a PrismCast issue &mdash; simply click Login again to ",
186
+ "re-authenticate.</p>",
169
187
  "<p class=\"description-hint\">If PrismCast is running headless or on a remote server, use a VNC client to access the browser for authentication.</p>",
170
188
  "</div>",
171
189
  // Working with Channels.
@@ -193,6 +211,11 @@ export function generateOverviewContent(baseUrl) {
193
211
  "multiple live channels (like a live TV provider), the <strong>Channel Selector</strong> field tells PrismCast which channel to tune to &mdash; ",
194
212
  "the expected value depends on the provider. When adding or editing a channel, select a profile to see the <strong>Profile Reference</strong> ",
195
213
  "section with site-specific guidance, including expected channel selector formats for known providers.</p>",
214
+ "<h4>User-Defined Provider Profiles</h4>",
215
+ "<p>You can add support for streaming sites that PrismCast does not have builtin support for. The <a href=\"#channels/custom-profiles\">Custom Profiles tab</a> ",
216
+ "includes a step-by-step wizard that guides you through creating a custom site profile &mdash; defining how to enter fullscreen, handle iframes, ",
217
+ "and interact with the player. You can also export your profiles as <strong>provider packs</strong> to share with other PrismCast users, and ",
218
+ "import packs that others have created.</p>",
196
219
  "<h4>Overriding Predefined Channels</h4>",
197
220
  "<p>To override a predefined channel, create a user-defined channel with the same channel key. Both versions will appear in the provider ",
198
221
  "dropdown &mdash; yours labeled <em>Custom</em> and the original with its provider name. You can switch between them at any time.</p>",
@@ -215,6 +238,7 @@ export function generateOverviewContent(baseUrl) {
215
238
  * @returns HTML content for the Help tab.
216
239
  */
217
240
  export function generateHelpContent() {
241
+ const slowProviderLabels = getProviderModuleInfo().filter((p) => p.noDirectTuneOptimization).map((p) => escapeHtml(p.label)).sort();
218
242
  return [
219
243
  // Updating PrismCast.
220
244
  "<div class=\"section\">",
@@ -228,6 +252,26 @@ export function generateHelpContent() {
228
252
  "<p>Pull the latest image and recreate the container. If using Watchtower, updates are applied automatically.</p>",
229
253
  "<pre>docker pull ghcr.io/hjdhjd/prismcast:latest\ndocker compose up -d</pre>",
230
254
  "</div>",
255
+ // Backup and Migration.
256
+ "<div class=\"section\">",
257
+ "<h3>Backup and Migration</h3>",
258
+ "<p>PrismCast stores all user data in a single directory (default: <code>~/.prismcast</code>). The files that matter for backup are:</p>",
259
+ "<ul>",
260
+ "<li><strong>config.json</strong> &mdash; Server settings (port, browser options, streaming, playback, etc.).</li>",
261
+ "<li><strong>channels.json</strong> &mdash; User-defined channels and predefined channel enable/disable state.</li>",
262
+ "<li><strong>profiles.json</strong> &mdash; Custom site profiles and domain mappings.</li>",
263
+ "</ul>",
264
+ "<h4>Using the Web UI</h4>",
265
+ "<p>Go to <a href=\"#config/backup\">Configuration &rarr; Backup</a> to download and import settings and channels as JSON files. ",
266
+ "This is the easiest way to back up before an upgrade or transfer to another machine.</p>",
267
+ "<h4>Manual Backup</h4>",
268
+ "<p>Copy the data directory (<code>~/.prismcast</code>) or just the three JSON files listed above. To restore, place them in the data ",
269
+ "directory on the new machine and restart PrismCast. Docker users should ensure their container's data directory volume is backed up.</p>",
270
+ "<h4>What Is Not Included</h4>",
271
+ "<p><strong>Provider login sessions</strong> are stored in Chrome's profile data, not in the configuration files. After migrating to a new ",
272
+ "machine, you will need to re-authenticate with each TV provider through the browser. The <code>health.json</code> file (channel health ",
273
+ "and authentication state indicators) is also not exported &mdash; it rebuilds automatically as channels are tuned.</p>",
274
+ "</div>",
231
275
  // Display and Resolution.
232
276
  "<div class=\"section\">",
233
277
  "<h3>Display and Resolution</h3>",
@@ -253,8 +297,10 @@ export function generateHelpContent() {
253
297
  "<h4>Windows</h4>",
254
298
  "<p>Install PrismCast as a service with <code>prismcast service install</code>. See Remote Access above for display capture requirements.</p>",
255
299
  "<h4>Linux / Docker</h4>",
256
- "<p>Chrome cannot use GPU hardware acceleration with virtual displays on Linux (a Chrome limitation), so Docker containers rely on software ",
257
- "rendering. Access the browser via VNC for authentication &mdash; Docker containers expose noVNC at port 6080.</p>",
300
+ "<p>Docker containers support <strong>Intel GPU hardware acceleration</strong> when an Intel GPU with Quick Sync Video is available on the host. ",
301
+ "Pass the GPU device to the container (<code>--device /dev/dri:/dev/dri</code>) for significantly lower CPU usage. The container auto-detects ",
302
+ "the GPU and configures acceleration automatically. Without a GPU, the container falls back to software rendering. Access the browser via VNC ",
303
+ "for authentication &mdash; Docker containers expose noVNC at port 6080.</p>",
258
304
  "</div>",
259
305
  // Troubleshooting.
260
306
  "<div class=\"section\">",
@@ -286,6 +332,28 @@ export function generateHelpContent() {
286
332
  "<td>Another service using port 5589.</td>",
287
333
  "<td>Stop the conflicting service, or change the port in <a href=\"#config/settings\">Configuration</a>.</td>",
288
334
  "</tr>",
335
+ "<tr>",
336
+ "<td>Slow first tune (~5&ndash;10 seconds)</td>",
337
+ "<td>Guide-based providers need to search their channel grid on the first tune.</td>",
338
+ "<td>This is normal. Subsequent tunes of the same channel are faster due to caching. Enable channel precaching in ",
339
+ "<a href=\"#config/settings\">Configuration</a> for faster first tunes.</td>",
340
+ "</tr>",
341
+ "<tr>",
342
+ "<td>\"Channel not found\" or wrong channel plays</td>",
343
+ "<td>The Channel Selector value does not match the provider's guide entry.</td>",
344
+ "<td>Check the log for available channel names. The expected format varies by provider &mdash; some use display names, ",
345
+ "others use internal codes.</td>",
346
+ "</tr>",
347
+ "<tr>",
348
+ "<td>Channel worked before but now fails to tune</td>",
349
+ "<td>TV provider session expired.</td>",
350
+ "<td>Click Login on the channel to re-authenticate with your TV provider. Sessions expire periodically on the provider's end.</td>",
351
+ "</tr>",
352
+ "<tr>",
353
+ "<td>" + slowProviderLabels.join(" / ") + " tunes take 15&ndash;30 seconds</td>",
354
+ "<td>The web player is inherently slow to initialize.</td>",
355
+ "<td>This is a limitation of the web player, not PrismCast. Each tune requires a full page load of the player.</td>",
356
+ "</tr>",
289
357
  "</table>",
290
358
  "</div>",
291
359
  // Known Limitations.
@@ -297,9 +365,10 @@ export function generateHelpContent() {
297
365
  "<li><strong>Frame rate follows the source.</strong> If the streaming site delivers 30fps, capture will be 30fps regardless of the configured ",
298
366
  "frame rate setting.</li>",
299
367
  "<li><strong>No closed captions.</strong> Chrome's capture API does not include caption data. Subtitles are not available in PrismCast streams.</li>",
300
- "<li><strong>No 4K, HDR, or surround sound.</strong> PrismCast captures H.264 video with AAC stereo audio. It is not a replacement for native ",
301
- "4K, HDR, Dolby Vision, or Dolby Atmos content.</li>",
302
- "<li><strong>Capture resolution is limited by display size.</strong> See the Display and Resolution section above for details.</li>",
368
+ "<li><strong>No 4K, HDR, or surround sound for screen-captured channels.</strong> Screen-captured channels deliver H.264 video with AAC stereo audio. ",
369
+ "Channels using native HLS streaming deliver the provider's original stream quality. Neither mode supports Dolby Vision or Dolby Atmos.</li>",
370
+ "<li><strong>Capture resolution is limited by display size.</strong> This applies to screen-captured channels only. See the Display and Resolution ",
371
+ "section above for details. Native HLS channels are not affected by display size.</li>",
303
372
  "<li><strong>Chrome may drop frames after extended use.</strong> The Chrome encoder can degrade after many hours of continuous operation. PrismCast ",
304
373
  "automatically restarts Chrome during idle periods to mitigate this.</li>",
305
374
  "</ul>",
@@ -469,8 +538,9 @@ export function generateApiReferenceContent() {
469
538
  "<tr>",
470
539
  "<td class=\"endpoint\"><code>GET /providers/:slug/channels</code></td>",
471
540
  "<td>Discover all available channels for a provider. Returns a JSON array of channel objects with <code>name</code>, <code>channelSelector</code>, " +
472
- "and optional <code>affiliate</code> and <code>tier</code> fields. Provider slugs: <code>directv</code>, <code>foxcom</code>, <code>hbomax</code>, " +
473
- "<code>hulu</code>, <code>sling</code>, <code>yttv</code>. Returns cached results instantly when a prior tune or discovery call has already " +
541
+ "and optional <code>affiliate</code> and <code>tier</code> fields. Provider slugs: " +
542
+ getProviderModuleInfo().map((p) => "<code>" + escapeHtml(p.slug) + "</code>").sort().join(", ") +
543
+ ". Returns cached results instantly when a prior tune or discovery call has already " +
474
544
  "enumerated the lineup. " +
475
545
  "Add <code>?refresh=true</code> to clear caches and force a fresh discovery walk.</td>",
476
546
  "</tr>",
@@ -607,7 +677,7 @@ export function generateChannelsTabContent() {
607
677
  // Channels subtab bar. Uses scoped CSS classes to avoid collision with Configuration tab subtabs.
608
678
  "<div class=\"channels-subtab-bar\" role=\"tablist\">",
609
679
  "<button type=\"button\" class=\"channels-subtab-btn active\" data-channels-subtab=\"channels\" role=\"tab\" aria-selected=\"true\">Channels</button>",
610
- "<button type=\"button\" class=\"channels-subtab-btn\" data-channels-subtab=\"providers\" role=\"tab\" aria-selected=\"false\">Providers</button>",
680
+ "<button type=\"button\" class=\"channels-subtab-btn\" data-channels-subtab=\"custom-profiles\" role=\"tab\" aria-selected=\"false\">Custom Profiles</button>",
611
681
  "</div>",
612
682
  // Channels subtab panel (default active).
613
683
  "<div id=\"channels-subtab-channels\" class=\"channels-subtab-panel active\">",
@@ -615,14 +685,14 @@ export function generateChannelsTabContent() {
615
685
  generateChannelsPanel(),
616
686
  "</div>",
617
687
  "</div>",
618
- // Providers subtab panel.
619
- "<div id=\"channels-subtab-providers\" class=\"channels-subtab-panel\">",
688
+ // Custom Profiles subtab panel.
689
+ "<div id=\"channels-subtab-custom-profiles\" class=\"channels-subtab-panel\">",
620
690
  "<div class=\"section\">",
621
- generateProvidersPanel(),
691
+ generateCustomProfilesPanel(),
622
692
  "</div>",
623
693
  "</div>",
624
694
  // Profile builder wizard modal.
625
- generateWizardModal(),
695
+ generateProfileWizardModal(),
626
696
  // Test flow dialog. Shown when the user starts a profile test to check selectors against a live page.
627
697
  "<div id=\"test-modal\" class=\"login-modal\" style=\"display: none;\">",
628
698
  "<div class=\"login-modal-content\">",
@@ -683,28 +753,27 @@ export function generateLogsContent() {
683
753
  "var isConsoleMode = false;",
684
754
  "var currentLevel = '';",
685
755
  // Load historical logs from the /logs endpoint.
686
- "function loadLogs() {",
756
+ "async function loadLogs() {",
687
757
  " var level = document.getElementById('log-level').value;",
688
758
  " var url = '/logs?lines=500';",
689
759
  " if(level) { url += '&level=' + level; }",
690
- " fetch(url)",
691
- " .then(function(res) { return res.json(); })",
692
- " .then(function(data) {",
693
- " if(data.mode === 'console') {",
694
- " isConsoleMode = true;",
695
- " logContainer.innerHTML = '<div class=\"log-warn\">File logging is disabled. Logs are being written to the console.</div>';",
696
- " return;",
697
- " }",
698
- " isConsoleMode = false;",
699
- " if(data.entries.length === 0) {",
700
- " logContainer.innerHTML = '<div class=\"log-muted\">No log entries found.</div>';",
701
- " } else {",
702
- " renderHistoricalLogs(data.entries);",
703
- " }",
704
- " })",
705
- " .catch(function(err) {",
706
- " logContainer.innerHTML = '<div class=\"log-error\">Error loading logs: ' + err.message + '</div>';",
707
- " });",
760
+ " try {",
761
+ " var res = await fetch(url);",
762
+ " var data = await res.json();",
763
+ " if(data.mode === 'console') {",
764
+ " isConsoleMode = true;",
765
+ " logContainer.innerHTML = '<div class=\"log-warn\">File logging is disabled. Logs are being written to the console.</div>';",
766
+ " return;",
767
+ " }",
768
+ " isConsoleMode = false;",
769
+ " if(data.entries.length === 0) {",
770
+ " logContainer.innerHTML = '<div class=\"log-muted\">No log entries found.</div>';",
771
+ " } else {",
772
+ " renderHistoricalLogs(data.entries);",
773
+ " }",
774
+ " } catch(err) {",
775
+ " logContainer.innerHTML = '<div class=\"log-error\">Error loading logs: ' + err.message + '</div>';",
776
+ " }",
708
777
  "}",
709
778
  // Render historical log entries (replaces container content).
710
779
  "function renderHistoricalLogs(entries) {",
@@ -793,11 +862,19 @@ export function generateLogsContent() {
793
862
  "function onLevelChange() {",
794
863
  " loadLogs();",
795
864
  "}",
865
+ // Resize the log viewer to fill the remaining viewport height below its top edge, with a small bottom margin for breathing room.
866
+ "function resizeLogViewer() {",
867
+ " var top = logContainer.getBoundingClientRect().top;",
868
+ " var newHeight = window.innerHeight - top - 40;",
869
+ " if(newHeight > 200) { logContainer.style.height = newHeight + 'px'; }",
870
+ "}",
871
+ "window.addEventListener('resize', resizeLogViewer);",
796
872
  // Handle tab activation events for logs SSE connection. The onopen handler calls loadLogs() to ensure history is loaded on both initial
797
873
  // connection and reconnection after a disconnect.
798
874
  "document.addEventListener('tabactivated', function(e) {",
799
875
  " if (e.detail.category === 'logs') {",
800
876
  " connectSSE();",
877
+ " resizeLogViewer();",
801
878
  " } else {",
802
879
  " disconnectSSE();",
803
880
  " }",
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/routes/root/content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/routes/root/content.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { checkForUpdates, getChangelogItems, getPackageVersion, getVersionInfo } from "../../utils/index.js";
2
2
  import { generateApiReferenceContent, generateChannelsTabContent, generateConfigContent, generateHelpContent, generateLogsContent, generateOverviewContent } from "./content.js";
3
3
  import { generateBaseStyles, generatePageWrapper, generateTabButton, generateTabPanel, generateTabScript, generateTabStyles } from "../ui.js";
4
- import { generateChannelsSubtabScript, generateConfigSubtabScript, generateStatusScript } from "./scripts/index.js";
4
+ import { generateChannelsSubtabScript, generateConfigSubtabScript, generateSharedUtilitiesScript, generateStatusScript } from "./scripts/index.js";
5
5
  import { generateLandingPageStyles } from "./styles.js";
6
6
  import { resolveBaseUrl } from "../playlist.js";
7
7
  /* The landing page provides operators with all the information they need to integrate with Channels DVR. It features a tabbed interface with six sections:
@@ -185,6 +185,7 @@ export function setupRootEndpoint(app) {
185
185
  // Generate scripts: tab switching, config subtab handling, then status SSE for header updates.
186
186
  const scripts = [
187
187
  generateTabScript({ localStorageKey: "prismcast-home-tab" }),
188
+ generateSharedUtilitiesScript(),
188
189
  generateChannelsSubtabScript(),
189
190
  generateConfigSubtabScript(),
190
191
  generateStatusScript()
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/root/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/root/index.ts"],"names":[],"mappings":"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"}