Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/9782fb11.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"hex-app": patch
---

Fix speakers staying muted after double-tap lock transcription ends (issue #220)
9 changes: 9 additions & 0 deletions Hex/Clients/RecordingClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1091,6 +1091,15 @@ actor RecordingClientLive {
// Mute system volume in background
mediaControlTask = Task { [sessionID] in
guard await self.isCurrentSession(sessionID) else { return }
// If a prior session already muted and hasn't been restored yet, don't
// overwrite previousVolume. This fixes a double-tap race: the second
// recording starts during the first session's async stop grace period,
// so the system is already at volume 0. Snapshotting 0 as previousVolume
// would lose the real original level and leave speakers muted after transcription. (#220)
guard self.previousVolume == nil else {
recordingLogger.notice("Skipping mute – previousVolume already captured from overlapping session; preserving original level")
return
}
let volume = await self.muteSystemVolume()
await self.setPreviousVolume(volume, sessionID: sessionID)
}
Expand Down