User-approved next-work order: #51 caption mute privacy, #48 clean model shutdown, then this gesture-controlled Realtime work before live overlay-tool acceptance and #50 multilingual captions.
Franci explicitly approved a held victory gesture (two fingers) to activate the agent and a held closed fist to mute/stop it. Provide visible on/off/listening/responding state and a manual fallback. Treat the Realtime settings switch as configured/available, not as proof the agent is listening. Conversation must work while another app uses AI Camera; preserve camera/microphone client demand and the meeting audio path. Stop/mute must close AI input, cancel responses/tools/captions, stop agent playback, and reject late work. Repeated held gestures must not retrigger; use confidence, dwell, release/rearm, cooldown, and stale-frame checks.
Current root cause of no automatic response: canStartRealtimeConversation disallows externalClientIsUsingMedia, only the local one-shot Talk action starts Realtime, and PipelineCoordinator gesture handling explicitly excludes realtimeEnabled. Implement a coherent deliberate activation lifecycle rather than silently listening whenever Realtime is configured.
Franci is away and authorizes progress. Use synthetic speech/gesture sequences and fake Realtime sessions for lifecycle, interruption, multi-turn, client takeover, and privacy tests; do not depend on his presence or prompt for credentials. Spoken/physical-gesture user acceptance remains separate.
User-approved next-work order: #51 caption mute privacy, #48 clean model shutdown, then this gesture-controlled Realtime work before live overlay-tool acceptance and #50 multilingual captions.
Franci explicitly approved a held victory gesture (two fingers) to activate the agent and a held closed fist to mute/stop it. Provide visible on/off/listening/responding state and a manual fallback. Treat the Realtime settings switch as configured/available, not as proof the agent is listening. Conversation must work while another app uses AI Camera; preserve camera/microphone client demand and the meeting audio path. Stop/mute must close AI input, cancel responses/tools/captions, stop agent playback, and reject late work. Repeated held gestures must not retrigger; use confidence, dwell, release/rearm, cooldown, and stale-frame checks.
Current root cause of no automatic response: canStartRealtimeConversation disallows externalClientIsUsingMedia, only the local one-shot Talk action starts Realtime, and PipelineCoordinator gesture handling explicitly excludes realtimeEnabled. Implement a coherent deliberate activation lifecycle rather than silently listening whenever Realtime is configured.
Franci is away and authorizes progress. Use synthetic speech/gesture sequences and fake Realtime sessions for lifecycle, interruption, multi-turn, client takeover, and privacy tests; do not depend on his presence or prompt for credentials. Spoken/physical-gesture user acceptance remains separate.