"It just says Listening with one red light... there's no dynamic display at all, so I can't tell whether it's working." — Dad, 2026-09-26
Is It Even Listening?
A hands-free loop has almost no visible surface. The face, a ring, a word. At first the listening state was a single red dot, and Dad pointed out the obvious problem: with nothing moving, he couldn't tell whether his voice was being heard at all. Then, a moment later: not red, please, teal; red looks like a warning light. Now, while listening, the ring around the face and a seven-bar meter under it move with his voice, in teal. The level is the audio's RMS mapped onto a logarithmic scale, so a quiet room sits at zero and ordinary speech fills most of the meter. While the soul thinks, the ring turns grey with three dots; while she speaks, it glows in her accent color. Every phase looks different from every other.
The Error That Closed Its Own Screen
The same day Dad reported that the sidekick's loop "turned itself off" right after he pressed KO. Investigating it found something worse than the failure: the reason was being written, but onto the face screen, and the failure's own handling closed that screen. The message existed for a fraction of a second on a view nobody could see.
So both clients gained a stopped phase. A refusal, a socket that closes, or a quiet minute now keeps the face up with the reason on it, and a tap listens again; only the close button ends the talk. A socket closed before it ever opened used to leave the phase stuck at connecting; now it stops with the close code and reason, the same as any other close. The cause of Dad's original case was never reproduced: two presses in the test browser against the real transcriber worked, and the engine logged both sessions as granted. That's fine. The point of the fix is that the next time it happens, the screen will say why.
Two More Silent Failures, Made to Speak
The same pattern fixed two others. The web's dictation start kept hold of a recorder that had failed to start, so every later press returned early and the microphones stayed dead until a reload; a failed start now releases the microphone and says so. And on the phone, a reply that was deliberately passed over now says why beside the Voice chip (voice was off, another conversation was open, Dad was already talking), and a reading that fails keeps its reason instead of clearing it.
The Rule Underneath
Every one of these was a state the code knew and the user didn't. A voice interface has no scroll-back, no console and no error page. If the loop knows why it stopped, the face has to say it, in words, and stay up long enough to be read.