Adom's shared voice service. Reads your AI's answers back to you while you drive, and renders perfectly-timed voiceover tracks for your demo videos, so you never record your own voice.
v1.9.57: health means can-it-speak (ready field, --probe, exit 5 when upstream refuses), upstream refusals named and retried over 35s instead of blamed on the caller, service pill reads readiness (issue #8)
v1.9.48 — queue management (issue #4 §2): 'queue clear --mine <thread>|--all' drops WAITING clips only (unscoped is refused), 'queue drop <clip|req>' drops one, 'control skip' ends the playing clip with verdict skipped and no retry; dropped/skipped clips go to History; ACCEPTED hint carries a queue-ahead ETA. ralph-test T12 (24/24).
v1.9.47 — scripts + markers for live demos (issue #4): 'load' pre-synthesizes and prefetches every marker onto the player, 'cue <script> <n>' plays exactly one marker instantly (no synthesis, no download, nothing auto-advances), 'cue-status' gives honest per-marker state. ralph-test T11 (17/17).
v1.9.46 — issue #4 (a): both enqueue paths (say --play and play) warn at SEND time when the player is paused and name 'adom-tts control play'; previously only offline audiences warned, and only on say
v1.9.45 — completes #3: status no longer claims playback is human-only (names 'adom-tts control play'), UNCONFIRMED distinguishes PAUSED from buffering, and the user skill teaches control in the canonical hands-free pattern
v1.9.44 — closes #3: every failure/poll path now surfaces the control commands an AI can drive itself. A started-then-stalled clip reports PAUSED explicitly and names 'adom-tts control play'; surface evidence includes the paused state.
v1.9.43 — FIX: a newly-arrived clip was killed on arrival by the PREVIOUS clip's telemetry. The page moved curClipId synchronously while <audio> still held the old clip during blob download, so done/position from clip A were attributed to clip B (cut off ~3s in, falsely reported ok). Page now tracks loadedClipId + sends loaded=0 with zeroed telemetry while downloading and resets the element synchronously; drainer ignores telemetry unless loaded=1. ralph-test T10 reproduces the race (11/11).