diff --git a/ui/src/components/ActionBar.tsx b/ui/src/components/ActionBar.tsx
index 4fc9c8d0..f205f2a8 100644
--- a/ui/src/components/ActionBar.tsx
+++ b/ui/src/components/ActionBar.tsx
@@ -43,6 +43,8 @@ interface MicrophoneHookReturn {
isStarting: boolean;
isStopping: boolean;
isToggling: boolean;
+ // HTTP/HTTPS detection
+ isHttpsRequired: boolean;
}
export default function Actionbar({
diff --git a/ui/src/components/popovers/AudioControlPopover.tsx b/ui/src/components/popovers/AudioControlPopover.tsx
index 87ad097f..3bd9a528 100644
--- a/ui/src/components/popovers/AudioControlPopover.tsx
+++ b/ui/src/components/popovers/AudioControlPopover.tsx
@@ -87,6 +87,8 @@ export default function AudioControlPopover({ microphone }: AudioControlPopoverP
isStarting,
isStopping,
isToggling,
+ // HTTP/HTTPS detection
+ isHttpsRequired,
} = microphone;
// Use WebSocket data exclusively - no polling fallback
@@ -344,10 +346,24 @@ export default function AudioControlPopover({ microphone }: AudioControlPopoverP
theme={isMicrophoneActiveFromHook ? "danger" : "primary"}
text={isMicrophoneActiveFromHook ? "Disable" : "Enable"}
onClick={handleToggleMicrophoneEnable}
- disabled={isLoading}
+ disabled={isLoading || isHttpsRequired}
/>
+ {/* HTTPS requirement notice */}
+ {isHttpsRequired && (
+
+
HTTPS Required for Microphone
+
+ Microphone access requires a secure connection. Please access this device using HTTPS instead of HTTP to enable audio input features.
+
+
+ Current: {window.location.protocol + '//' + window.location.host}
+
+ Secure: {'https://' + window.location.host}
+
+
+ )}
@@ -377,7 +393,7 @@ export default function AudioControlPopover({ microphone }: AudioControlPopoverP