From 78f7e5147becb2d7ee3c8cfa748700bc080aa00c Mon Sep 17 00:00:00 2001 From: Mariano Belinky Date: Sat, 31 Jan 2026 12:57:55 +0100 Subject: [PATCH] iOS: stabilize talk mode tests --- apps/ios/Sources/Voice/TalkModeManager.swift | 7 ++++++- apps/ios/Tests/GatewaySettingsStoreTests.swift | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/ios/Sources/Voice/TalkModeManager.swift b/apps/ios/Sources/Voice/TalkModeManager.swift index d3adb49e1b..6886666a3e 100644 --- a/apps/ios/Sources/Voice/TalkModeManager.swift +++ b/apps/ios/Sources/Voice/TalkModeManager.swift @@ -17,6 +17,7 @@ final class TalkModeManager: NSObject { var statusText: String = "Off" private let audioEngine = AVAudioEngine() + private var inputTapInstalled = false private var speechRecognizer: SFSpeechRecognizer? private var recognitionRequest: SFSpeechAudioBufferRecognitionRequest? private var recognitionTask: SFSpeechRecognitionTask? @@ -160,6 +161,7 @@ final class TalkModeManager: NSObject { input.removeTap(onBus: 0) let tapBlock = Self.makeAudioTapAppendCallback(request: request) input.installTap(onBus: 0, bufferSize: 2048, format: format, block: tapBlock) + self.inputTapInstalled = true self.audioEngine.prepare() try self.audioEngine.start() @@ -185,7 +187,10 @@ final class TalkModeManager: NSObject { self.recognitionTask = nil self.recognitionRequest?.endAudio() self.recognitionRequest = nil - self.audioEngine.inputNode.removeTap(onBus: 0) + if self.inputTapInstalled { + self.audioEngine.inputNode.removeTap(onBus: 0) + self.inputTapInstalled = false + } self.audioEngine.stop() self.speechRecognizer = nil } diff --git a/apps/ios/Tests/GatewaySettingsStoreTests.swift b/apps/ios/Tests/GatewaySettingsStoreTests.swift index 255c7aac9b..cd9842239c 100644 --- a/apps/ios/Tests/GatewaySettingsStoreTests.swift +++ b/apps/ios/Tests/GatewaySettingsStoreTests.swift @@ -7,8 +7,8 @@ private struct KeychainEntry: Hashable { let account: String } -private let gatewayService = "bot.molt.gateway" -private let nodeService = "bot.molt.node" +private let gatewayService = "ai.openclaw.gateway" +private let nodeService = "ai.openclaw.node" private let instanceIdEntry = KeychainEntry(service: nodeService, account: "instanceId") private let preferredGatewayEntry = KeychainEntry(service: gatewayService, account: "preferredStableID") private let lastGatewayEntry = KeychainEntry(service: gatewayService, account: "lastDiscoveredStableID")