diff --git a/apps/macos/Sources/Clawdis/VoiceWakeRuntime.swift b/apps/macos/Sources/Clawdis/VoiceWakeRuntime.swift index fe1bfe0a5..cc8314f78 100644 --- a/apps/macos/Sources/Clawdis/VoiceWakeRuntime.swift +++ b/apps/macos/Sources/Clawdis/VoiceWakeRuntime.swift @@ -288,6 +288,12 @@ actor VoiceWakeRuntime { return text } + #if DEBUG + static func _testTrimmedAfterTrigger(_ text: String, triggers: [String]) -> String { + self.trimmedAfterTrigger(text, triggers: triggers) + } + #endif + #if DEBUG static func _testMatches(text: String, triggers: [String]) -> Bool { self.matches(text: text, triggers: triggers) diff --git a/apps/macos/Tests/ClawdisIPCTests/VoiceWakeRuntimeTests.swift b/apps/macos/Tests/ClawdisIPCTests/VoiceWakeRuntimeTests.swift index 4461d18bd..39385bd1b 100644 --- a/apps/macos/Tests/ClawdisIPCTests/VoiceWakeRuntimeTests.swift +++ b/apps/macos/Tests/ClawdisIPCTests/VoiceWakeRuntimeTests.swift @@ -17,4 +17,22 @@ import Testing let triggers = [" ", ""] #expect(!VoiceWakeRuntime._testMatches(text: "hello", triggers: triggers)) } + + @Test func trimsAfterTriggerKeepsPostSpeech() { + let triggers = ["claude", "clawd"] + let text = "hey Claude how are you" + #expect(VoiceWakeRuntime._testTrimmedAfterTrigger(text, triggers: triggers) == "how are you") + } + + @Test func trimsAfterTriggerReturnsOriginalWhenNoTrigger() { + let triggers = ["claude"] + let text = "good morning friend" + #expect(VoiceWakeRuntime._testTrimmedAfterTrigger(text, triggers: triggers) == text) + } + + @Test func trimsAfterFirstMatchingTrigger() { + let triggers = ["buddy", "claude"] + let text = "hello buddy this is after trigger claude also here" + #expect(VoiceWakeRuntime._testTrimmedAfterTrigger(text, triggers: triggers) == "this is after trigger claude also here") + } }