From 2a98a02218170cefe66013d0f65607fa56358de8 Mon Sep 17 00:00:00 2001 From: Shashank Deshpande Date: Sun, 29 Mar 2026 22:39:21 -0400 Subject: [PATCH] Add 150ms tail buffer after Fn release to avoid clipping last word When the user releases Fn, audio capture now continues for 150ms before stopping. This prevents the final word from being cut off mid-utterance, which happens because key-up fires before the speaker's articulatory gesture is complete. --- MiniflowApp/MiniflowApp/ViewModels/AgentViewModel.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/MiniflowApp/MiniflowApp/ViewModels/AgentViewModel.swift b/MiniflowApp/MiniflowApp/ViewModels/AgentViewModel.swift index 66b6e3a..d9e61cc 100644 --- a/MiniflowApp/MiniflowApp/ViewModels/AgentViewModel.swift +++ b/MiniflowApp/MiniflowApp/ViewModels/AgentViewModel.swift @@ -153,12 +153,14 @@ final class AgentViewModel: ObservableObject { guard isListening else { return } isListening = false keyReleaseTime = Date() - audio.onChunk = nil if let start = listeningStartTime, let release = keyReleaseTime { lastAudioLengthSecs = release.timeIntervalSince(start) } + // Keep capturing briefly after key release so the last word isn't clipped + try? await Task.sleep(nanoseconds: 150_000_000) + audio.onChunk = nil audio.stopCapture() do {