diff --git a/src-tauri/src/commands/settings_window.rs b/src-tauri/src/commands/settings_window.rs
index f307280..737a610 100644
--- a/src-tauri/src/commands/settings_window.rs
+++ b/src-tauri/src/commands/settings_window.rs
@@ -14,6 +14,12 @@ fn show_and_focus_window(win: &tauri::WebviewWindow) {
&format!("Failed to show settings window: {}", err),
);
}
+ if let Err(err) = win.unminimize() {
+ logger::log_error(
+ "WINDOW",
+ &format!("Failed to restore settings window: {}", err),
+ );
+ }
if let Err(err) = win.set_focus() {
logger::log_error(
"WINDOW",
diff --git a/src/windows/widget/Widget.tsx b/src/windows/widget/Widget.tsx
index 786fdc7..0b88e7a 100644
--- a/src/windows/widget/Widget.tsx
+++ b/src/windows/widget/Widget.tsx
@@ -116,6 +116,18 @@ import {
const WIDGET_RECORD_BUTTON_LEFT = 10;
const FILE_DROP_LEAVE_GRACE_MS = 260;
const FILE_DROP_CLOSE_ANIMATION_MS = 160;
+
+function isWindowsPlatform(): boolean {
+ if (typeof navigator === "undefined") {
+ return false;
+ }
+
+ return (
+ navigator.platform.toLowerCase().startsWith("win") ||
+ navigator.userAgent.toLowerCase().includes("windows")
+ );
+}
+
type WidgetFileDropState =
"idle" | "drag-over" | "processing" | "success" | "error" | "closing";
type WidgetCallState =
@@ -2390,7 +2402,9 @@ function IdlePill({
const [isHovered, setIsHovered] = useState(false);
const [copySucceeded, setCopySucceeded] = useState(false);
const canCopy = Boolean(latestCopyText);
- const controlsVisible = isHovered;
+ const canStartRecordingFromWidget = !isWindowsPlatform();
+ const controlsVisible =
+ isHovered && (canStartRecordingFromWidget || canCopy);
useEffect(() => {
let disposed = false;
@@ -2480,51 +2494,53 @@ function IdlePill({
pointerEvents: "none",
}}
>
-
+ onClick={(event) => {
+ event.stopPropagation();
+ onToggleRecording();
+ }}
+ style={{
+ position: "absolute",
+ left: WIDGET_RECORD_BUTTON_LEFT,
+ top: "50%",
+ width: 12,
+ height: 12,
+ border: "none",
+ borderRadius: 999,
+ padding: 0,
+ background: "transparent",
+ display: "flex",
+ alignItems: "center",
+ justifyContent: "center",
+ opacity: controlsVisible ? 1 : 0,
+ transform: controlsVisible
+ ? "translateY(-50%) scale(1)"
+ : "translateY(-50%) scale(0.84)",
+ transition: "opacity 0.14s ease, transform 0.14s ease",
+ pointerEvents: controlsVisible ? "auto" : "none",
+ cursor: "pointer",
+ WebkitFontSmoothing: "antialiased",
+ }}
+ >
+
+
+ )}
{canCopy && (