cursedbelt 3.0.2 → 4.0.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 (250) hide show
  1. package/dist/react/components/ListToolbar.d.ts +94 -0
  2. package/dist/react/components/ListToolbar.d.ts.map +1 -0
  3. package/dist/react/components/ListToolbar.js +66 -0
  4. package/dist/react/components/ListToolbar.js.map +1 -0
  5. package/dist/react/file-tree/FileTree.d.ts +282 -3
  6. package/dist/react/file-tree/FileTree.d.ts.map +1 -1
  7. package/dist/react/file-tree/FileTree.js +799 -131
  8. package/dist/react/file-tree/FileTree.js.map +1 -1
  9. package/dist/react/file-tree/fileTree.css +151 -0
  10. package/dist/react/file-tree/fileTreeSelection.d.ts +187 -0
  11. package/dist/react/file-tree/fileTreeSelection.d.ts.map +1 -0
  12. package/dist/react/file-tree/fileTreeSelection.js +264 -0
  13. package/dist/react/file-tree/fileTreeSelection.js.map +1 -0
  14. package/dist/react/file-tree/index.d.ts +1 -0
  15. package/dist/react/file-tree/index.d.ts.map +1 -1
  16. package/dist/react/file-tree/index.js +8 -0
  17. package/dist/react/file-tree/index.js.map +1 -1
  18. package/dist/react/index.d.ts +1 -0
  19. package/dist/react/index.d.ts.map +1 -1
  20. package/dist/react/index.js +1 -0
  21. package/dist/react/index.js.map +1 -1
  22. package/dist/react/lib/form.d.ts +3 -0
  23. package/dist/react/lib/form.d.ts.map +1 -1
  24. package/dist/react/lib/form.js +43 -5
  25. package/dist/react/lib/form.js.map +1 -1
  26. package/dist/react/media/DenseGalleryShell.d.ts +19 -3
  27. package/dist/react/media/DenseGalleryShell.d.ts.map +1 -1
  28. package/dist/react/media/DenseGalleryShell.js +55 -15
  29. package/dist/react/media/DenseGalleryShell.js.map +1 -1
  30. package/dist/react/media/FocusViewer.d.ts.map +1 -1
  31. package/dist/react/media/FocusViewer.js +14 -14
  32. package/dist/react/media/FocusViewer.js.map +1 -1
  33. package/dist/react/media/FrameGrabber.d.ts +23 -0
  34. package/dist/react/media/FrameGrabber.d.ts.map +1 -1
  35. package/dist/react/media/FrameGrabber.js +67 -1
  36. package/dist/react/media/FrameGrabber.js.map +1 -1
  37. package/dist/react/media/MediaResize.d.ts +51 -19
  38. package/dist/react/media/MediaResize.d.ts.map +1 -1
  39. package/dist/react/media/MediaResize.js +20 -13
  40. package/dist/react/media/MediaResize.js.map +1 -1
  41. package/dist/react/media/VideoChapterEditor.d.ts +67 -0
  42. package/dist/react/media/VideoChapterEditor.d.ts.map +1 -0
  43. package/dist/react/media/VideoChapterEditor.js +148 -0
  44. package/dist/react/media/VideoChapterEditor.js.map +1 -0
  45. package/dist/react/media/VideoPlayer.d.ts +46 -4
  46. package/dist/react/media/VideoPlayer.d.ts.map +1 -1
  47. package/dist/react/media/VideoPlayer.js +124 -11
  48. package/dist/react/media/VideoPlayer.js.map +1 -1
  49. package/dist/react/media/VideoTurner.d.ts +15 -2
  50. package/dist/react/media/VideoTurner.d.ts.map +1 -1
  51. package/dist/react/media/VideoTurner.js +29 -2
  52. package/dist/react/media/VideoTurner.js.map +1 -1
  53. package/dist/react/media/denseGallery.css +104 -46
  54. package/dist/react/media/hlsSource.d.ts +57 -0
  55. package/dist/react/media/hlsSource.d.ts.map +1 -1
  56. package/dist/react/media/hlsSource.js +177 -1
  57. package/dist/react/media/hlsSource.js.map +1 -1
  58. package/dist/react/media/index.d.ts +2 -0
  59. package/dist/react/media/index.d.ts.map +1 -1
  60. package/dist/react/media/index.js +6 -0
  61. package/dist/react/media/index.js.map +1 -1
  62. package/dist/react/media/mediaResize.css +127 -54
  63. package/dist/react/media/pictureEditor.css +52 -6
  64. package/dist/react/media/videoChapterEditor.css +203 -0
  65. package/dist/react/media/videoChapters.d.ts +117 -0
  66. package/dist/react/media/videoChapters.d.ts.map +1 -0
  67. package/dist/react/media/videoChapters.js +95 -0
  68. package/dist/react/media/videoChapters.js.map +1 -0
  69. package/dist/react/media-gallery/GalleryTable.d.ts +52 -1
  70. package/dist/react/media-gallery/GalleryTable.d.ts.map +1 -1
  71. package/dist/react/media-gallery/GalleryTable.js +40 -9
  72. package/dist/react/media-gallery/GalleryTable.js.map +1 -1
  73. package/dist/react/media-gallery/MediaGallery.d.ts +107 -4
  74. package/dist/react/media-gallery/MediaGallery.d.ts.map +1 -1
  75. package/dist/react/media-gallery/MediaGallery.js +484 -104
  76. package/dist/react/media-gallery/MediaGallery.js.map +1 -1
  77. package/dist/react/media-gallery/MediaMetaEditor.d.ts +48 -0
  78. package/dist/react/media-gallery/MediaMetaEditor.d.ts.map +1 -0
  79. package/dist/react/media-gallery/MediaMetaEditor.js +66 -0
  80. package/dist/react/media-gallery/MediaMetaEditor.js.map +1 -0
  81. package/dist/react/media-gallery/index.d.ts +2 -0
  82. package/dist/react/media-gallery/index.d.ts.map +1 -1
  83. package/dist/react/media-gallery/index.js +5 -0
  84. package/dist/react/media-gallery/index.js.map +1 -1
  85. package/dist/react/media-gallery/mediaGallery.css +180 -4
  86. package/dist/react/media-gallery/mediaMeta.d.ts +62 -0
  87. package/dist/react/media-gallery/mediaMeta.d.ts.map +1 -0
  88. package/dist/react/media-gallery/mediaMeta.js +56 -0
  89. package/dist/react/media-gallery/mediaMeta.js.map +1 -0
  90. package/dist/react/media-gallery/playbackPreferences.d.ts +77 -0
  91. package/dist/react/media-gallery/playbackPreferences.d.ts.map +1 -1
  92. package/dist/react/media-gallery/playbackPreferences.js +42 -0
  93. package/dist/react/media-gallery/playbackPreferences.js.map +1 -1
  94. package/dist/react/media-gallery/types.d.ts +34 -0
  95. package/dist/react/media-gallery/types.d.ts.map +1 -1
  96. package/dist/scripts/guardrailsEnforce.d.ts +29 -0
  97. package/dist/scripts/guardrailsEnforce.d.ts.map +1 -0
  98. package/dist/styles-areas/activity-bar.css +30 -0
  99. package/dist/styles-areas/analytics.css +672 -0
  100. package/dist/styles-areas/auth.css +154 -0
  101. package/dist/styles-areas/calendar.css +416 -0
  102. package/dist/styles-areas/chart-table.css +41 -0
  103. package/dist/styles-areas/charts.css +89 -0
  104. package/dist/styles-areas/chat.css +364 -0
  105. package/dist/styles-areas/clipboard.css +26 -0
  106. package/dist/styles-areas/code-editor.css +130 -0
  107. package/dist/styles-areas/companion-link.css +70 -0
  108. package/dist/styles-areas/core.css +2503 -0
  109. package/dist/styles-areas/dashboard-grid.css +84 -0
  110. package/dist/styles-areas/data-table.css +657 -0
  111. package/dist/styles-areas/deep-link.css +26 -0
  112. package/dist/styles-areas/diff-viewer.css +30 -0
  113. package/dist/styles-areas/disk-usage.css +262 -0
  114. package/dist/styles-areas/emoji.css +154 -0
  115. package/dist/styles-areas/fields.css +582 -0
  116. package/dist/styles-areas/file-tree.css +33 -0
  117. package/dist/styles-areas/filter-rail.css +235 -0
  118. package/dist/styles-areas/folder-tree.css +219 -0
  119. package/dist/styles-areas/keep-awake.css +26 -0
  120. package/dist/styles-areas/layout-engine.css +239 -0
  121. package/dist/styles-areas/markdown.css +87 -0
  122. package/dist/styles-areas/master-detail.css +239 -0
  123. package/dist/styles-areas/master-lock.css +26 -0
  124. package/dist/styles-areas/media-gallery.css +351 -0
  125. package/dist/styles-areas/media.css +658 -0
  126. package/dist/styles-areas/nav.css +488 -0
  127. package/dist/styles-areas/notifications.css +245 -0
  128. package/dist/styles-areas/overlays.css +133 -0
  129. package/dist/styles-areas/palette.css +140 -0
  130. package/dist/styles-areas/pdf-viewer.css +47 -0
  131. package/dist/styles-areas/problem-detail.css +97 -0
  132. package/dist/styles-areas/rich-text.css +167 -0
  133. package/dist/styles-areas/sharing.css +153 -0
  134. package/dist/styles-areas/spreadsheet.css +37 -0
  135. package/dist/styles-areas/stats.css +281 -0
  136. package/dist/styles-areas/test-report.css +133 -0
  137. package/dist/styles-areas/virtual.css +30 -0
  138. package/dist/styles-areas/wizard.css +381 -0
  139. package/dist/styles-areas/workbench.css +543 -0
  140. package/dist/styles-areas/workbook-viewer.css +44 -0
  141. package/dist/styles-static.css +34 -23
  142. package/dist/styles.css +34 -23
  143. package/package.json +111 -31
  144. package/scripts/checkDistExports.ts +67 -0
  145. package/scripts/cssRules.ts +125 -0
  146. package/scripts/fixtureAppCss.ts +344 -0
  147. package/scripts/generateAreaStyles.ts +253 -0
  148. package/scripts/guardrailsEnforce.spec.ts +62 -0
  149. package/scripts/guardrailsEnforce.ts +67 -3
  150. package/scripts/styleAreas.ts +585 -0
  151. package/scripts/verify.ts +5 -0
  152. package/src/barrelsReachNoOptionalPeer.spec.ts +117 -9
  153. package/src/docsMatchTheSplit.spec.ts +98 -0
  154. package/src/fixtureAppCss.spec.ts +177 -0
  155. package/src/namedSubpathsResolve.spec.ts +35 -0
  156. package/src/publishShape.spec.ts +67 -0
  157. package/src/react/components/ListToolbar.spec.tsx +172 -0
  158. package/src/react/components/ListToolbar.tsx +151 -0
  159. package/src/react/file-tree/FileTree.spec.tsx +1009 -0
  160. package/src/react/file-tree/FileTree.tsx +1459 -309
  161. package/src/react/file-tree/fileTree.css +151 -0
  162. package/src/react/file-tree/fileTreeSelection.spec.ts +327 -0
  163. package/src/react/file-tree/fileTreeSelection.ts +321 -0
  164. package/src/react/file-tree/index.ts +21 -0
  165. package/src/react/index.ts +1 -0
  166. package/src/react/lib/form.ts +51 -8
  167. package/src/react/media/DenseGalleryShell.tsx +108 -36
  168. package/src/react/media/FocusViewer.tsx +15 -8
  169. package/src/react/media/FrameGrabber.spec.tsx +175 -0
  170. package/src/react/media/FrameGrabber.tsx +67 -0
  171. package/src/react/media/MediaResize.spec.tsx +84 -14
  172. package/src/react/media/MediaResize.tsx +51 -19
  173. package/src/react/media/VideoChapterEditor.tsx +428 -0
  174. package/src/react/media/VideoPlayer.spec.tsx +111 -1
  175. package/src/react/media/VideoPlayer.tsx +158 -11
  176. package/src/react/media/VideoTurner.spec.tsx +67 -0
  177. package/src/react/media/VideoTurner.tsx +70 -15
  178. package/src/react/media/denseGallery.css +104 -46
  179. package/src/react/media/hlsSource.recovery.spec.ts +213 -0
  180. package/src/react/media/hlsSource.spec.ts +8 -0
  181. package/src/react/media/hlsSource.ts +189 -1
  182. package/src/react/media/index.ts +14 -0
  183. package/src/react/media/mediaResize.css +127 -54
  184. package/src/react/media/pictureEditor.css +52 -6
  185. package/src/react/media/videoChapterEditor.css +203 -0
  186. package/src/react/media/videoChapters.spec.ts +176 -0
  187. package/src/react/media/videoChapters.ts +181 -0
  188. package/src/react/media-gallery/GalleryTable.tsx +93 -3
  189. package/src/react/media-gallery/MediaGallery.spec.tsx +1156 -10
  190. package/src/react/media-gallery/MediaGallery.tsx +813 -95
  191. package/src/react/media-gallery/MediaMetaEditor.tsx +237 -0
  192. package/src/react/media-gallery/galleryTable.spec.ts +41 -1
  193. package/src/react/media-gallery/index.ts +7 -0
  194. package/src/react/media-gallery/mediaGallery.css +180 -4
  195. package/src/react/media-gallery/mediaMeta.spec.ts +95 -0
  196. package/src/react/media-gallery/mediaMeta.ts +101 -0
  197. package/src/react/media-gallery/playbackPreferences.spec.ts +172 -0
  198. package/src/react/media-gallery/playbackPreferences.ts +100 -0
  199. package/src/react/media-gallery/types.ts +34 -0
  200. package/src/shippedFilesAreTracked.spec.ts +69 -0
  201. package/src/styles-areas/activity-bar.css +30 -0
  202. package/src/styles-areas/analytics.css +672 -0
  203. package/src/styles-areas/auth.css +154 -0
  204. package/src/styles-areas/calendar.css +416 -0
  205. package/src/styles-areas/chart-table.css +41 -0
  206. package/src/styles-areas/charts.css +89 -0
  207. package/src/styles-areas/chat.css +364 -0
  208. package/src/styles-areas/clipboard.css +26 -0
  209. package/src/styles-areas/code-editor.css +130 -0
  210. package/src/styles-areas/companion-link.css +70 -0
  211. package/src/styles-areas/core.css +2503 -0
  212. package/src/styles-areas/dashboard-grid.css +84 -0
  213. package/src/styles-areas/data-table.css +657 -0
  214. package/src/styles-areas/deep-link.css +26 -0
  215. package/src/styles-areas/diff-viewer.css +30 -0
  216. package/src/styles-areas/disk-usage.css +262 -0
  217. package/src/styles-areas/emoji.css +154 -0
  218. package/src/styles-areas/fields.css +582 -0
  219. package/src/styles-areas/file-tree.css +33 -0
  220. package/src/styles-areas/filter-rail.css +235 -0
  221. package/src/styles-areas/folder-tree.css +219 -0
  222. package/src/styles-areas/keep-awake.css +26 -0
  223. package/src/styles-areas/layout-engine.css +239 -0
  224. package/src/styles-areas/markdown.css +87 -0
  225. package/src/styles-areas/master-detail.css +239 -0
  226. package/src/styles-areas/master-lock.css +26 -0
  227. package/src/styles-areas/media-gallery.css +351 -0
  228. package/src/styles-areas/media.css +658 -0
  229. package/src/styles-areas/nav.css +488 -0
  230. package/src/styles-areas/notifications.css +245 -0
  231. package/src/styles-areas/overlays.css +133 -0
  232. package/src/styles-areas/palette.css +140 -0
  233. package/src/styles-areas/pdf-viewer.css +47 -0
  234. package/src/styles-areas/problem-detail.css +97 -0
  235. package/src/styles-areas/rich-text.css +167 -0
  236. package/src/styles-areas/sharing.css +153 -0
  237. package/src/styles-areas/spreadsheet.css +37 -0
  238. package/src/styles-areas/stats.css +281 -0
  239. package/src/styles-areas/test-report.css +133 -0
  240. package/src/styles-areas/virtual.css +30 -0
  241. package/src/styles-areas/wizard.css +381 -0
  242. package/src/styles-areas/workbench.css +543 -0
  243. package/src/styles-areas/workbook-viewer.css +44 -0
  244. package/src/styles-static.css +34 -23
  245. package/src/styles.css +34 -23
  246. package/src/stylesAreas.spec.ts +247 -0
  247. package/src/stylesUtilitiesMatches.spec.ts +6 -77
  248. package/src/testFilesRunInParallel.spec.ts +79 -0
  249. package/src/typecheckCachesAreSeparate.spec.ts +128 -0
  250. package/src/verifyGraph.spec.ts +6 -0
@@ -19,6 +19,63 @@ export declare function canPlayHlsNatively(el: HTMLVideoElement): boolean;
19
19
  * Synchronous for the native and progressive paths; the hls.js path resolves a dynamic
20
20
  * import first, so the returned teardown has to be safe to call before that lands.
21
21
  */
22
+ /**
23
+ * How many times a fatal error may be recovered before the ladder is abandoned for the
24
+ * progressive copy.
25
+ *
26
+ * Four is two more than a transient blip needs and far fewer than a dead ladder would consume.
27
+ * The bound is the point: a `startLoad()` in an unbounded error handler is an infinite reload
28
+ * loop against a URL that is never going to answer — a spinner that also hammers the origin,
29
+ * which is strictly worse than the stall it replaced.
30
+ */
31
+ export declare const RECOVERY_BUDGET = 4;
32
+ /**
33
+ * hls.js settings for an origin that is a home Mac behind a tunnel, not a CDN.
34
+ *
35
+ * Exported so the specs can assert the two numbers that actually matter and so a surface with
36
+ * a genuinely different origin can spread this rather than re-derive it.
37
+ */
38
+ export declare const HLS_CONFIG: {
39
+ readonly enableWorker: true;
40
+ /**
41
+ * 🔴 90 s of forward buffer, against a default of 30.
42
+ *
43
+ * The player stalls when the buffer empties, and what empties it here is one slow fetch:
44
+ * a cold segment is up to 2.6 s for 4 s of video, so 30 s of buffer survives about a dozen
45
+ * of them back to back. Ninety gives the fetch loop room to fall behind and catch up
46
+ * without the viewer seeing it — which is the whole of *"buffers, plays a few seconds,
47
+ * buffers"*. It is a CEILING, not an allocation: a warm ladder fills it in seconds and a
48
+ * short clip never reaches it.
49
+ */
50
+ readonly maxBufferLength: 90;
51
+ /** The hard ceiling hls.js will stretch to when bandwidth is plentiful. */
52
+ readonly maxMaxBufferLength: 600;
53
+ /** Bytes, not seconds, and the real limit on a 1080p rung. 120 MB ≈ 90 s at 5 Mbit. */
54
+ readonly maxBufferSize: number;
55
+ /**
56
+ * 🔴 Keep 30 s behind the playhead instead of hls.js's default of everything.
57
+ *
58
+ * Stepping back a few seconds is the commonest thing the owner does with a video and it
59
+ * should never re-fetch. Unbounded back-buffer is the other failure though: a two-hour film
60
+ * accumulates until the browser evicts the whole MediaSource, which presents as the video
61
+ * stopping for no reason.
62
+ */
63
+ readonly backBufferLength: 30;
64
+ /**
65
+ * 🔴 Start at 5 Mbit rather than hls.js's 500 kbit.
66
+ *
67
+ * The default assumes an unknown internet connection and opens on the bottom rung while it
68
+ * measures. Every viewer here is on the household's own network or a phone on it, the top
69
+ * rung is capped at 5,000 kbit by the encoder ladder, and starting low means the first
70
+ * thing anyone sees is 480p that visibly sharpens. One wrong guess costs one segment.
71
+ */
72
+ readonly abrEwmaDefaultEstimate: 5000000;
73
+ /** A cold segment off the tunnel can take seconds; 20 s (the default) times out a fetch
74
+ * that was going to succeed, and a timeout counts against the retry budget. */
75
+ readonly fragLoadingTimeOut: 60000;
76
+ readonly manifestLoadingTimeOut: 30000;
77
+ readonly levelLoadingTimeOut: 30000;
78
+ };
22
79
  export declare function attachHlsSource(el: HTMLVideoElement, urls: HlsSourceUrls): () => void;
23
80
  /** {@link attachHlsSource} as an effect, re-attaching whenever either URL changes. */
24
81
  export declare function useHlsSource(ref: {
@@ -1 +1 @@
1
- {"version":3,"file":"hlsSource.d.ts","sourceRoot":"","sources":["../../../src/react/media/hlsSource.ts"],"names":[],"mappings":"AAmCA,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,IAAI,CAkCrF;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAC1B,GAAG,EAAE;IAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAAE,EACzC,IAAI,EAAE,aAAa,GAClB,IAAI,CAQN"}
1
+ {"version":3,"file":"hlsSource.d.ts","sourceRoot":"","sources":["../../../src/react/media/hlsSource.ts"],"names":[],"mappings":"AAgFA,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAKjC;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;IAErB;;;;;;;;;OASG;;IAEH,2EAA2E;;IAE3E,uFAAuF;;IAEvF;;;;;;;OAOG;;IAEH;;;;;;;OAOG;;IAEH;oFACgF;;;;CAIxE,CAAC;AAEX,wBAAgB,eAAe,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,IAAI,CAmHrF;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAC1B,GAAG,EAAE;IAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAAE,EACzC,IAAI,EAAE,aAAa,GAClB,IAAI,CAQN"}
@@ -30,6 +30,37 @@
30
30
  * ⇧→ mounts one per clip, and thirty clips is thirty live engines still fetching segments for
31
31
  * videos nobody is watching. The `destroyed` flag covers the same leak on the async path —
32
32
  * an unmount that happens while the dynamic import is in flight.
33
+ *
34
+ * ── 🔴 An hls.js with no ERROR handler stops for good, and that was this file ────────────
35
+ * Owner report, 2026-09-17: *"sometimes a video is playing and starts buffering and ends up
36
+ * pausing instead of trying to wait it out."* That is not a description of a slow network —
37
+ * it is the documented behaviour of an unattended hls.js. The library retries a failing
38
+ * fragment on its own (six times, backing off to ~64 s in total) and then emits a FATAL error
39
+ * and **stops the loop**. Recovery is the application's job and always has been; this module
40
+ * was constructing the engine with `new Hls({ enableWorker: true })` and listening to
41
+ * nothing, so every fatal error was permanent.
42
+ *
43
+ * Three of them are recoverable and are handled here rather than surfaced:
44
+ *
45
+ * | fatal type | what it actually is here | what we do |
46
+ * |---|---|---|
47
+ * | `networkError` on a fragment | the tunnel blinked, or the segment was slow off a cold cache | `startLoad()` from where playback is, with a widening backoff |
48
+ * | `networkError` on the manifest | the ladder token expired mid-film, or bs is down | reload once, then fall back |
49
+ * | `mediaError` | a buffer-append or decode stall | `recoverMediaError()`, then the audio-codec-swap variant, then fall back |
50
+ *
51
+ * 🔴 And every road STILL ends at something playable: once the recoveries are spent, the
52
+ * engine is destroyed and the element is pointed at `streamUrl` **at the time it had reached**
53
+ * — a fallback that restarts a two-hour film from zero is a fallback the owner would rather
54
+ * not have had. That is the property `RECOVERY_BUDGET` bounds; without a budget a genuinely
55
+ * dead ladder becomes an infinite reload loop, which is the same spinner with more requests.
56
+ *
57
+ * ── 🔴 The config is tuned for a HIGH-LATENCY origin, which is what this fleet has ───────
58
+ * hls.js's defaults assume a CDN. These segments come off a home Mac through a tunnel when
59
+ * the edge does not hold them: measured 2026-09-17, a cold segment is 1,215–2,613 ms against
60
+ * ~150 ms warm, for four seconds of video. Two defaults are actively wrong at that latency —
61
+ * a 30 s forward buffer gives the player no room to absorb one slow fetch, and a 500 kbps
62
+ * starting bandwidth estimate makes it open on the bottom rung and climb. Both are widened
63
+ * below, each with its number's reason on the line.
33
64
  */
34
65
  import { useEffect } from 'react';
35
66
  /**
@@ -48,9 +79,100 @@ export function canPlayHlsNatively(el) {
48
79
  * Synchronous for the native and progressive paths; the hls.js path resolves a dynamic
49
80
  * import first, so the returned teardown has to be safe to call before that lands.
50
81
  */
82
+ /**
83
+ * How many times a fatal error may be recovered before the ladder is abandoned for the
84
+ * progressive copy.
85
+ *
86
+ * Four is two more than a transient blip needs and far fewer than a dead ladder would consume.
87
+ * The bound is the point: a `startLoad()` in an unbounded error handler is an infinite reload
88
+ * loop against a URL that is never going to answer — a spinner that also hammers the origin,
89
+ * which is strictly worse than the stall it replaced.
90
+ */
91
+ export const RECOVERY_BUDGET = 4;
92
+ /** Backoff before each retry, in ms. Read by index, clamped to the last entry. */
93
+ const RECOVERY_BACKOFF_MS = [0, 1_000, 3_000, 8_000];
94
+ /**
95
+ * hls.js settings for an origin that is a home Mac behind a tunnel, not a CDN.
96
+ *
97
+ * Exported so the specs can assert the two numbers that actually matter and so a surface with
98
+ * a genuinely different origin can spread this rather than re-derive it.
99
+ */
100
+ export const HLS_CONFIG = {
101
+ enableWorker: true,
102
+ /**
103
+ * 🔴 90 s of forward buffer, against a default of 30.
104
+ *
105
+ * The player stalls when the buffer empties, and what empties it here is one slow fetch:
106
+ * a cold segment is up to 2.6 s for 4 s of video, so 30 s of buffer survives about a dozen
107
+ * of them back to back. Ninety gives the fetch loop room to fall behind and catch up
108
+ * without the viewer seeing it — which is the whole of *"buffers, plays a few seconds,
109
+ * buffers"*. It is a CEILING, not an allocation: a warm ladder fills it in seconds and a
110
+ * short clip never reaches it.
111
+ */
112
+ maxBufferLength: 90,
113
+ /** The hard ceiling hls.js will stretch to when bandwidth is plentiful. */
114
+ maxMaxBufferLength: 600,
115
+ /** Bytes, not seconds, and the real limit on a 1080p rung. 120 MB ≈ 90 s at 5 Mbit. */
116
+ maxBufferSize: 120 * 1000 * 1000,
117
+ /**
118
+ * 🔴 Keep 30 s behind the playhead instead of hls.js's default of everything.
119
+ *
120
+ * Stepping back a few seconds is the commonest thing the owner does with a video and it
121
+ * should never re-fetch. Unbounded back-buffer is the other failure though: a two-hour film
122
+ * accumulates until the browser evicts the whole MediaSource, which presents as the video
123
+ * stopping for no reason.
124
+ */
125
+ backBufferLength: 30,
126
+ /**
127
+ * 🔴 Start at 5 Mbit rather than hls.js's 500 kbit.
128
+ *
129
+ * The default assumes an unknown internet connection and opens on the bottom rung while it
130
+ * measures. Every viewer here is on the household's own network or a phone on it, the top
131
+ * rung is capped at 5,000 kbit by the encoder ladder, and starting low means the first
132
+ * thing anyone sees is 480p that visibly sharpens. One wrong guess costs one segment.
133
+ */
134
+ abrEwmaDefaultEstimate: 5_000_000,
135
+ /** A cold segment off the tunnel can take seconds; 20 s (the default) times out a fetch
136
+ * that was going to succeed, and a timeout counts against the retry budget. */
137
+ fragLoadingTimeOut: 60_000,
138
+ manifestLoadingTimeOut: 30_000,
139
+ levelLoadingTimeOut: 30_000,
140
+ };
51
141
  export function attachHlsSource(el, urls) {
52
142
  let destroyed = false;
53
143
  let engine = null;
144
+ let pendingRetry = null;
145
+ /**
146
+ * Abandon the ladder for the progressive copy, AT THE POSITION PLAYBACK HAD REACHED.
147
+ *
148
+ * 🔴 The seek is not a nicety. Without it, a fallback forty minutes into a film restarts it
149
+ * from zero — and because a fallback happens exactly when things are already going badly,
150
+ * that is the moment the owner is least likely to forgive it. `currentTime` is read before
151
+ * the engine is destroyed, because destroying it detaches the MediaSource and resets it.
152
+ */
153
+ const fallBackToProgressive = () => {
154
+ if (destroyed)
155
+ return;
156
+ const at = Number.isFinite(el.currentTime) ? el.currentTime : 0;
157
+ const wasPlaying = !el.paused;
158
+ engine?.destroy();
159
+ engine = null;
160
+ el.src = urls.streamUrl;
161
+ if (at > 0) {
162
+ // `loadedmetadata` is the first moment a seek on a fresh source is honoured; setting
163
+ // `currentTime` before it is silently dropped.
164
+ el.addEventListener('loadedmetadata', () => {
165
+ try {
166
+ el.currentTime = at;
167
+ }
168
+ catch {
169
+ /* a source that refuses the seek still plays, from the start */
170
+ }
171
+ if (wasPlaying)
172
+ void el.play?.().catch(() => { });
173
+ }, { once: true });
174
+ }
175
+ };
54
176
  if (urls.hlsUrl && canPlayHlsNatively(el)) {
55
177
  el.src = urls.hlsUrl;
56
178
  }
@@ -65,8 +187,59 @@ export function attachHlsSource(el, urls) {
65
187
  el.src = urls.streamUrl;
66
188
  return;
67
189
  }
68
- const hls = new Hls({ enableWorker: true });
190
+ const hls = new Hls(HLS_CONFIG);
69
191
  engine = hls;
192
+ let spent = 0;
193
+ hls.on(Hls.Events.ERROR, (_event, data) => {
194
+ // Non-fatal errors are hls.js's own retry machinery working. Reacting to them would
195
+ // restart a load that is already in progress.
196
+ if (destroyed || !data?.fatal)
197
+ return;
198
+ if (spent >= RECOVERY_BUDGET) {
199
+ fallBackToProgressive();
200
+ return;
201
+ }
202
+ const attempt = spent++;
203
+ if (data.type === Hls.ErrorTypes.MEDIA_ERROR) {
204
+ // 🔴 The SECOND media recovery must be the codec-swap variant, per hls.js's own
205
+ // guidance: calling `recoverMediaError()` twice for the same stall recovers
206
+ // nothing, and the audio-codec swap is what clears the case that keeps recurring.
207
+ if (attempt === 0)
208
+ hls.recoverMediaError();
209
+ else
210
+ hls.swapAudioCodec?.(), hls.recoverMediaError();
211
+ return;
212
+ }
213
+ if (data.type === Hls.ErrorTypes.NETWORK_ERROR) {
214
+ const delay = RECOVERY_BACKOFF_MS[Math.min(attempt, RECOVERY_BACKOFF_MS.length - 1)] ?? 0;
215
+ // 🔴 Backed off, because the commonest cause is an origin that is briefly
216
+ // unreachable — a tunnel reconnecting, this Mac waking. Retrying instantly turns
217
+ // one blip into four and spends the whole budget inside a second.
218
+ //
219
+ // 🔴 And the previous timer is cleared first. Fatal errors arrive in bursts, so
220
+ // without this each one leaks a timer that `detach()` cannot reach — only the
221
+ // last handle was ever held — and a burst of four leaves three of them to fire
222
+ // into an engine React has already unmounted.
223
+ if (pendingRetry)
224
+ clearTimeout(pendingRetry);
225
+ pendingRetry = setTimeout(() => {
226
+ pendingRetry = null;
227
+ if (destroyed)
228
+ return;
229
+ try {
230
+ hls.startLoad();
231
+ }
232
+ catch {
233
+ fallBackToProgressive();
234
+ }
235
+ }, delay);
236
+ pendingRetry.unref?.();
237
+ return;
238
+ }
239
+ // Anything else fatal (a mux error, an unknown type) is not something a reload
240
+ // fixes. The remux is the answer and it is the answer immediately.
241
+ fallBackToProgressive();
242
+ });
70
243
  hls.loadSource(urls.hlsUrl);
71
244
  hls.attachMedia(el);
72
245
  })
@@ -81,6 +254,9 @@ export function attachHlsSource(el, urls) {
81
254
  }
82
255
  return () => {
83
256
  destroyed = true;
257
+ if (pendingRetry)
258
+ clearTimeout(pendingRetry);
259
+ pendingRetry = null;
84
260
  engine?.destroy();
85
261
  engine = null;
86
262
  };
@@ -1 +1 @@
1
- {"version":3,"file":"hlsSource.js","sourceRoot":"","sources":["../../../src/react/media/hlsSource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUlC;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAoB;IACrD,OAAO,OAAO,EAAE,CAAC,WAAW,KAAK,UAAU,IAAI,EAAE,CAAC,WAAW,CAAC,+BAA+B,CAAC,KAAK,EAAE,CAAC;AACxG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAAoB,EAAE,IAAmB;IACvE,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,MAAM,GAAmC,IAAI,CAAC;IAElD,IAAI,IAAI,CAAC,MAAM,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1C,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,wFAAwF;QACxF,oCAAoC;QACpC,MAAM,CAAC,QAAQ,CAAC;aACb,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE;YACzB,IAAI,SAAS;gBAAE,OAAO;YACtB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,CAAC;YACb,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAgB,CAAC,CAAC;YACtC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,+DAA+D;YAC/D,IAAI,CAAC,SAAS;gBAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,OAAO,GAAG,EAAE;QACV,SAAS,GAAG,IAAI,CAAC;QACjB,MAAM,EAAE,OAAO,EAAE,CAAC;QAClB,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,YAAY,CAC1B,GAAyC,EACzC,IAAmB;IAEnB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAClD,sEAAsE;IACxE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"hlsSource.js","sourceRoot":"","sources":["../../../src/react/media/hlsSource.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,8 @@ export { composeSelection, FULL_REGION, fitBox, isFullRegion, MAX_ZOOM, normaliz
35
35
  export { ENHANCE_RANGE, type Enhance, NO_ENHANCE, UPSCALE_FACTORS, filterString, isEnhanced, readEnhance, snapshotSize, writeEnhance, } from './videoEnhance';
36
36
  export { VideoTrimmer } from './VideoTrimmer';
37
37
  export { VideoCutEditor, type VideoCutEditorProps } from './VideoCutEditor';
38
+ export { VideoChapterEditor, type VideoChapterEditorProps } from './VideoChapterEditor';
39
+ export { type ChapteredVideo, type ChapterSpan, chapterProblem, chapterSpans, MIN_CHAPTER_SECONDS, normalizeChapters, type VideoChapter, } from './videoChapters';
38
40
  export { cutListProblem, cutSeconds, cutTimecode, keptSeconds, keptSegments, MIN_CUT_SECONDS, normalizeCuts, type VideoCut, } from 'cursedbelt-core/media/video-cuts';
39
41
  export { VirtualMediaGrid, type VirtualMediaGridProps } from './VirtualMediaGrid';
40
42
  export { type CapturedPoster, captureVideoPoster, type FrameQuality, pickBestFrame, posterCandidateTimes, type PosterOptions, probeVideo, scoreFrame, type VideoProbe, } from './videoPoster';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/media/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/media/index.ts"],"names":[],"mappings":"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"}
@@ -71,6 +71,12 @@ export { VideoTrimmer } from './VideoTrimmer';
71
71
  // that a server executes, which is the only shape that works on a phone master. See
72
72
  // `videoCuts.ts` for the owner's reasoning.
73
73
  export { VideoCutEditor } from './VideoCutEditor';
74
+ // Naming points in time and KEEPING them — the other half of the same gesture, and a separate
75
+ // model on purpose: a cut list is a request that costs a re-encode, a chapter list is metadata
76
+ // that applies on save. `videoChapters.ts`'s header says why the model is in this package
77
+ // rather than in `cursedbelt-core` beside `videoCuts.ts`.
78
+ export { VideoChapterEditor } from './VideoChapterEditor';
79
+ export { chapterProblem, chapterSpans, MIN_CHAPTER_SECONDS, normalizeChapters, } from './videoChapters';
74
80
  // Re-exported from `core/media`, where the model lives so a SERVER can import it without
75
81
  // dragging React in — see the header of `videoCuts.ts`.
76
82
  export { cutListProblem, cutSeconds, cutTimecode, keptSeconds, keptSegments, MIN_CUT_SECONDS, normalizeCuts, } from 'cursedbelt-core/media/video-cuts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/media/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/media/index.ts"],"names":[],"mappings":"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"}