From 5c8fa3d254d65f1aab849a5447951d10004f96b4 Mon Sep 17 00:00:00 2001 From: MythEclipse Date: Sat, 13 Jun 2026 16:54:52 +0700 Subject: [PATCH] chore(services): update components based on recent changes Changes: services/frontend/src/App.tsx | 22 ++++++++++++++++++++++ services/frontend/src/features/live/components/VoiceConnectionCard.tsx | 5 ++++- 2 files changed, 26 insertions(+), 1 deletion(-) --- services/frontend/src/App.tsx | 22 +++++++++++++++++++ .../live/components/VoiceConnectionCard.tsx | 5 ++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/services/frontend/src/App.tsx b/services/frontend/src/App.tsx index 8a9e510..b0426e7 100644 --- a/services/frontend/src/App.tsx +++ b/services/frontend/src/App.tsx @@ -192,6 +192,28 @@ export default function App() { return () => clearInterval(interval); }, []); + // Push-to-Talk — hold Space to transmit + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement) return; + if (e.code === "Space" && !transmit.isStreaming && e.repeat === false) { + e.preventDefault(); + transmit.startTransmit().catch(() => undefined); + } + }; + const handleKeyUp = (e: KeyboardEvent) => { + if (e.code === "Space" && transmit.isStreaming) { + transmit.stopTransmit(); + } + }; + window.addEventListener("keydown", handleKeyDown); + window.addEventListener("keyup", handleKeyUp); + return () => { + window.removeEventListener("keydown", handleKeyDown); + window.removeEventListener("keyup", handleKeyUp); + }; + }, [transmit]); + return ( {isStreaming && ( -
+
+ + Hold Space +
)}