Commit History
-
Upgrade to the Agents SDK realtime client
399d582
-
Sync input transcription delta handling
195cac9
-
Sync response creation race fix
Port the finalized WebSocket response-lock changes from speech-to-speech PR #453 while preserving Space-specific authentication behavior.edece55 -
Sync ordered assistant output changes
8556c56
-
Port authenticated voice session UX
2418688
-
Add explicit Join gate, your-turn state, and at-capacity modal
After waiting in line the conversation no longer auto-starts: reaching the front holds a slot and shows a "your turn" orb with a "Join now" countdown button, so a slot is never spent on someone who stepped away, and the click is a fresh gesture that re-arms the AudioContext on iOS. Leaving or letting the countdown lapse refunds the reserved budget. When the whole waiting line is full, a warm "we're at capacity" modal (reusing the limit-modal shell) explains the wait instead of a terse error. Queue captions and retry messages reworded to be kinder.81940c4 -
Add waiting-queue UI and session-queue proxy
When the compute pool is busy the load balancer now hands back a queue ticket instead of a grant. The Space relays it end to end: - /api/session returns a grant or a ticket; /api/queue/{id} polls position and reserves the daily budget only at claim (re-checking it there), so waiting in line never costs usage time. Leave endpoints (DELETE + sendBeacon) drop the ticket; a full queue relays 503 {state:"at_capacity"}. - The client waits in the queue polling position, and uses a hybrid mic flow: permission is primed in the tap gesture, but the capture stream is acquired only once a slot is granted, so the mic indicator never glows while waiting. - New calm "queued" orb state with a "Leave queue" button; queue-full and ticket-expired land on a friendly retry state, not an error. CONTEXT.md gains the queue vocabulary (Queue, Ticket, Position, Claim, At capacity).da67b51 -
Deploy replica from source HEAD
Verified signature1f28297