Sequence headers stamped 0 no longer consume the reconnect/fill splice bias (they are pinned at the splice point; first media tag sets the bias), bridge feed/freeze/reconnect are serialized, fill writes use the bounded write deadline and mark output failure, and the watchdog no longer shields a fill whose emissions stall or whose output seconds leap far ahead of wall time.
relay-v2.39-avfill-fastout trial: faster RTMPS stall recovery during gap fill (On only)
During A/V gap fill, stop renewing blocked stdin writes and bypass fill protection when FFmpeg output progress has been stale beyond the fill-output grace (25s default), so a genuinely stuck RTMPS output reopens in seconds instead of being hidden for ~117s. Healthy fills keep the same connection.
relay-v2.38-avfill trial: A/V-complete gap fill (On only)
Resume the same owned publisher while the accepted lifecycle transition finishes, without duplicate transitions or pre-start timeout cancellation. Keep created/terminal lifecycle guards and existing account/channel/credential settings. New before-fix regressions reproduced four failures; all 383 checks pass after fix. Deployment explicitly approved by the owner while streams are running.
Recover repeated RTMPS startup failures using safe backup ingest routing
Same owned stream and broadcast, primary/backup route recovery with query-safe URL construction. Add redacted handshake diagnostics and prevent debug publish-success messages from being treated as output failures. Preserve credentials, channel, quota and account choices. 376 checks passed.
Fix live source handover without interrupting the YouTube publisher
Start the replacement reader after releasing its handover flag; cancel and join old readers exclusively. Handle CDN EOF/read failures inside the same FFmpeg, allow bounded first-byte grace, reuse recent compatible live observations and ignore 16x16 placeholder canvas dimensions. Preserve channel, user settings, events and Secrets. Regression coverage includes real HTTP/FFmpeg continuity; 367 checks passed.
Fix explicit channel confirmation and TikTok JSON cookie import
Keep the checked OAuth channel separate from the active journal channel. Add adopt-only confirmation with no broadcast start; preserve fail-closed guards, stop old publishers before archiving, clear old ingestion destinations, and scope history to its channel. Accept browser JSON cookie exports with expiry/domain filtering. Add deterministic dashboard, API and cookie regressions; isolate the local lifecycle ingest fixture.
Fail over to lower source without reopening RTMP
Arena maintenance
19c4131
Persist live stream transition diagnostics
Arena maintenance
dc5fd17
Forward decoder configuration changes in-session
Arena maintenance
1de09cd
Prioritize relay continuity under CPU quota
Arena maintenance
0a92b5b
Leave CPU headroom for dual CBR relays
Arena maintenance
85c5abf
Keep YouTube ingest at true CBR
Arena maintenance
b8ef8da
Stabilize RTMPS output recovery
Arena maintenance
fd860c0
fix: recover dead FFmpeg senders and add iframe login
Arena maintenance
1a38430
Run the sender watchdog on every manager pass, detach stopped supervisors, protect detailed health, restore the dashboard, pin dependencies, and add regression coverage.
v2.13-quad: four H264 copies, two transcodes, 720-class YouTube canvas.
On deploy
dd3ad8e
Lock first canvas (eval=frame). No copy-recovery flash. Map 720x1440 to
720x1280 so YouTube does not starve. HEVC/PK encode only if a light slot
is free. cpu-basic cannot x264 four lives.
v2.12-matchgop: copy-first; on YouTube noData/gopSizeLong switch THIS publisher to same-size closed GOP 2s (not default 720). Cuts live by operator request.
Measured on On @aboodi1994: FLV went silent ~12s, FFmpeg died, YouTube
spun, then the same FLV was retried. HLS reconnects inside FFmpeg.
FLAP_LIMIT 2 so PK layout changes stick to a constant canvas sooner.
Do not end the supervisor Event on FFmpeg teardown.
_teardown used stop.set() to wake the pump; sender_loop treated that as
account stop, occupied a new FFmpeg, and flashed YouTube. Stall still
kills the process via force_stop; the thread reconnects on the same slot.
Keep the sender supervisor across confirmed idle observes.
Returning from sender_loop on two empty TikTok reads occupied a new
FFmpeg (rst++) and flashed the YouTube spinner. drive_event already
closes the event after count+grace; the thread now waits for that stop.
Sync full Tktktk engine (relay-v2.9-confirm) onto this Space.
Independent per-broadcaster relays, concurrency cap 5, confirm-before-exit
on idle offline, tests included. Space identity (title On) kept. Do not
enable OAuth automation here and on Tktktk against the same YouTube channel.