• v0.9.13 4ccd37aa5d

    feat(agent): session-ready webhook for SSE-driven player handshake (0.9.13)
    Some checks failed
    Release / release (push) Failing after 3s
    Release / docker (push) Has been skipped
    Release / virustotal (push) Failing after 0s

    Ghost released this 2026-05-27 12:40:53 +00:00 | 16 commits to main since this release

    Closes Fase 3.3b. Daemon now tells the server the moment a session's
    first HLS segment + init.mp4 land on disk; the web side flips
    streaming_session.ready_at = NOW(), which its SSE endpoint pushes to
    subscribed players so the loading UI flips from "Preparando…" to
    "Stream listo" without polling HEAD on the segment URL.

    Surface:

    • New Client.MarkSessionReady(ctx, sessionId) HTTP method →
      POST /api/internal/agent/session-ready.
    • New engine.HLSSession.ReadyCount() + FromCache() accessors so the
      watcher goroutine doesn't reach into private state.
    • New cmd.watchSessionReady(ctx, client, hsess, sessionId) goroutine
      polls ReadyCount every 200 ms with a 60 s deadline + short-circuits
      for cache-HIT sessions (ready the moment StartHLSSession returns).
    • Daemon callback spawns it right after streamSrv.HLS().Register so
      the watcher's lifecycle matches the session's.

    Best-effort: a transient network failure on the webhook is logged + the
    goroutine exits — the player's existing HEAD-probe retry path still
    discovers ready state independently. The webhook is an acceleration,
    not a hard dependency.

    Downloads