dragonflight/services
ZGaetano d257a19d9d fix(player): buffer indicator + 416 instead of 500 on out-of-range S3
mam-api /video endpoint:
- S3 InvalidRange (httpStatusCode 416) was being caught and returned as 500
  via next(err), which the video element treats as a fatal load error and
  freezes the player. Now we catch the specific 416 case, do a no-range
  HEAD-equivalent to learn the real file size, and return proper 416 with
  Content-Range: bytes */<total> so the browser can recover.

screens-asset.jsx — player health + buffer visualization:
- New states: playerState ('idle'|'loading'|'playing'|'paused'|'seeking'|
  'waiting'|'stalled'|'error'), playerError, buffered (array of {start,end}
  ms from HTMLMediaElement.buffered), stallStart, stallElapsedMs
- Wired video element events: onProgress, onWaiting, onStalled, onPlaying,
  onCanPlay, onCanPlayThrough, onSeeking, onSeeked, onError
- onError captures MediaError code+message into a console.error and the
  on-screen badge so freeze causes are now visible
- Status badge overlay (top-right of player): shows SEEKING / BUFFERING /
  STALLED / ERROR + elapsed seconds since the stall began
- PlaybackBar renders buffered ranges as translucent grey segments so you
  can see what the browser has loaded vs. what's still pending — makes
  seek-related freezes immediately obvious
2026-05-26 20:25:40 +00:00
..
capture fix(recorders,library): empty-capture handling + right-click context menu 2026-05-23 03:52:30 +00:00
mam-api fix(player): buffer indicator + 416 instead of 500 on out-of-range S3 2026-05-26 20:25:40 +00:00
node-agent fix(node-agent): probe GPU via Docker API async at startup, cache result 2026-05-26 18:28:03 +00:00
premiere-plugin fix(premiere-plugin): hide growing-count badge until count > 0 2026-05-26 16:40:47 +00:00
web-ui fix(player): buffer indicator + 416 instead of 500 on out-of-range S3 2026-05-26 20:25:40 +00:00
worker feat(proxy): VBR 500k-1M encoding for proxy generation 2026-05-26 17:44:18 +00:00