Browse Source

fix: extend post-release grace period to 1.0s and optimize finalize timeout to dismiss HUD orb instantly

main
Ali Alavi 6 days ago
parent
commit
efd86a1307
  1. 6
      src/AppDelegate.swift
  2. 2
      src/HUDOverlay.swift
  3. 6
      src/SonioxClient.swift

6
src/AppDelegate.swift

@ -81,8 +81,8 @@ public final class AppDelegate: NSObject, NSApplicationDelegate {
}
}
self.pendingStopWorkItem = workItem
// Trailing grace period: 0.5s (500ms) buffer so trailing words/syllables are never clipped
DispatchQueue.main.asyncAfter(deadline: .now() + 0.50, execute: workItem)
// Trailing grace period: 1.0s (1000ms) buffer so trailing words/syllables right up to key release are never clipped
DispatchQueue.main.asyncAfter(deadline: .now() + 1.00, execute: workItem)
}
}
}
@ -338,7 +338,7 @@ public final class AppDelegate: NSObject, NSApplicationDelegate {
// Dynamic safety timeout watchdog: scale with audio length & network transit
let durationSec = Double(pcmData.count) / 32000.0
let finalizeTimeout = max(4.0, min(16.0, durationSec * 0.25 + 3.5))
let finalizeTimeout = InputBoxManager.shared.hasStreamedText ? 0.8 : max(1.2, min(4.0, durationSec * 0.15 + 1.2))
let watchdog = DispatchWorkItem { [weak self] in
guard let self = self, self.isBusyFinalizing else { return }

2
src/HUDOverlay.swift

@ -99,7 +99,7 @@ public final class HUDOverlayController {
case .success:
orb.showSuccessState()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.45) {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.20) {
self.hide()
}

6
src/SonioxClient.swift

@ -191,14 +191,14 @@ public final class SonioxLiveSession {
}
}
// Safety timeout fallback: finalize must complete within 3.5s
DispatchQueue.global().asyncAfter(deadline: .now() + 3.5) { [weak self] in
// Fast safety timeout fallback: finalize must complete within 1.0s
DispatchQueue.global().asyncAfter(deadline: .now() + 1.0) { [weak self] in
guard let self = self else { return }
self.lock.lock()
let stillOpen = !self.isClosed
self.lock.unlock()
if stillOpen {
print("SonioxLiveSession: Finalize timeout reached — completing.")
print("SonioxLiveSession: Finalize timeout (1.0s) reached — completing.")
self.completeWithCurrentText()
}
}

Loading…
Cancel
Save