From 17b18971f17c4cb4ad0e2d302bf8ac614cc77a42 Mon Sep 17 00:00:00 2001 From: Mariano Belinky Date: Sun, 1 Feb 2026 00:26:29 +0100 Subject: [PATCH] iOS: pause voice wake during PTT --- apps/ios/Sources/Model/NodeAppModel.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/ios/Sources/Model/NodeAppModel.swift b/apps/ios/Sources/Model/NodeAppModel.swift index 261369bd33..eea1fbe2ae 100644 --- a/apps/ios/Sources/Model/NodeAppModel.swift +++ b/apps/ios/Sources/Model/NodeAppModel.swift @@ -72,6 +72,7 @@ final class NodeAppModel { private let remindersService: any RemindersServicing private let motionService: any MotionServicing private var lastAutoA2uiURL: String? + private var pttVoiceWakeSuspended = false private var gatewayConnected = false var gatewaySession: GatewayNodeSession { self.gateway } @@ -1164,11 +1165,14 @@ final class NodeAppModel { private func handleTalkInvoke(_ req: BridgeInvokeRequest) async throws -> BridgeInvokeResponse { switch req.command { case OpenClawTalkCommand.pttStart.rawValue: + self.pttVoiceWakeSuspended = self.voiceWake.suspendForExternalAudioCapture() let payload = try await self.talkMode.beginPushToTalk() let json = try Self.encodePayload(payload) return BridgeInvokeResponse(id: req.id, ok: true, payloadJSON: json) case OpenClawTalkCommand.pttStop.rawValue: let payload = await self.talkMode.endPushToTalk() + self.voiceWake.resumeAfterExternalAudioCapture(wasSuspended: self.pttVoiceWakeSuspended) + self.pttVoiceWakeSuspended = false let json = try Self.encodePayload(payload) return BridgeInvokeResponse(id: req.id, ok: true, payloadJSON: json) default: