dragonflight/services
Zac Gaetano e8f91cf4b4 fix(playout): immediate failover on new channels + play 502 vs 409
- spawnChannelSidecar: set last_heartbeat_at = NOW() when flipping
  channel to 'running'. Without this, last_heartbeat_at is NULL so
  the first scheduler tick sees ageMs = (now - epoch) >> TIMEOUT_MS
  and triggers failover before the sidecar has had a single chance
  to respond.
- scheduler playoutHealthTick: when last_heartbeat_at is NULL fall
  back to updated_at as the baseline (belt-and-suspenders with the
  spawnChannelSidecar fix). Also include updated_at in the query.
- POST /channels/:id/play: catch callSidecar errors explicitly and
  return 502 Bad Gateway instead of delegating to next(err) which
  the error middleware maps to 409 Conflict.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 12:34:41 -04:00
..
capture build(capture): nvenc-enabled ffmpeg Dockerfile (validated build) 2026-05-29 13:33:37 -04:00
mam-api fix(playout): immediate failover on new channels + play 502 vs 409 2026-05-31 12:34:41 -04:00
node-agent feat(nvenc): GPU sidecar passthrough + All-Intra HEVC capture codec 2026-05-29 12:35:23 -04:00
playout fix(playout): repair failover, authenticate scheduler self-calls, fix playlist walk + CasparCG consumer syntax 2026-05-30 14:51:35 +00:00
premiere-plugin diag(premiere-plugin): v1.2.5 — no-op IIFE writes to Documents/ + reports lf.open result 2026-05-28 03:59:40 +00:00
premiere-plugin-uxp feat(uxp): ship the icon-rail panel redesign as v2.2.2 (recover from redesign branch) 2026-05-29 20:45:29 -04:00
web-ui feat(jobs): surface playout-stage queue in Jobs screen 2026-05-31 12:06:08 -04:00
worker fix(playout): silent-audio staging crash, home tiles, channel delete 2026-05-31 12:03:20 -04:00