Skip to content

Commit c8774e5

Browse files
committed
fix: force-reset audio engine on silent capture
1 parent b55b542 commit c8774e5

2 files changed

Lines changed: 4 additions & 0 deletions

File tree

Sources/VocaMac/Models/AppState.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,6 +613,8 @@ final class AppState: ObservableObject {
613613

614614
guard audioData.contains(where: { abs($0) >= 0.0001 }) else {
615615
cursorOverlay.hide()
616+
// Don't keep a capture route that only produced silence warm.
617+
audioEngine.forceReset()
616618
let message = "No microphone audio detected. If your MacBook lid is closed, select an external microphone in Settings → Audio."
617619
VocaLogger.warning(.appState, message)
618620
showTemporaryError(message)

Tests/VocaMacTests/AppStateRecordingTests.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,8 @@ final class AppStateRecordingTests: XCTestCase {
130130
XCTAssertTrue(appState.errorMessage?.contains("external microphone") == true)
131131
XCTAssertNil(mocks.whisperService.lastTranscribedAudioData)
132132
XCTAssertEqual(mocks.textInjector.injectCallCount, 0)
133+
XCTAssertEqual(mocks.audioEngine.forceResetCallCount, 1,
134+
"Silent capture should force-reset the engine so a dead route is not kept warm")
133135
}
134136

135137
func testSelectedModelSizeDefault() {

0 commit comments

Comments
 (0)