From c75ec69c1db7ad597ef744bb0ac6ed352a4e2c8d Mon Sep 17 00:00:00 2001 From: Awais Jamil Date: Thu, 4 Jun 2026 12:41:25 +1000 Subject: [PATCH 1/2] chore: snapshot current worktree state --- electron/electron-env.d.ts | 14 ++ electron/ipc/register/settings.ts | 135 +++++++++- electron/ipc/shortcutTypes.ts | 20 ++ .../recordly-native-cursor-monitor | Bin 95840 -> 98432 bytes .../bin/darwin-arm64/recordly-system-cursors | Bin 99752 -> 102168 bytes .../bin/darwin-arm64/recordly-window-list | Bin 116024 -> 117256 bytes .../darwin-x64/recordly-native-cursor-monitor | Bin 70568 -> 71120 bytes .../bin/darwin-x64/recordly-system-cursors | Bin 70360 -> 70920 bytes .../bin/darwin-x64/recordly-window-list | Bin 82424 -> 83064 bytes electron/preload.ts | 14 ++ src/App.tsx | 6 +- src/components/launch/LaunchWindow.tsx | 26 +- .../launch/hooks/useLaunchShortcuts.ts | 112 +++++++++ .../hooks/useLaunchWindowActions.test.ts | 43 ++++ .../launch/hooks/useLaunchWindowActions.ts | 48 +++- .../hooks/useLaunchWindowSystemState.ts | 6 + .../video-editor/ShortcutsConfigDialog.tsx | 230 +++++++++++++++--- src/contexts/ShortcutsContext.tsx | 72 +++++- src/i18n/locales/en/dialogs.json | 3 + src/i18n/locales/es/dialogs.json | 3 + src/i18n/locales/fr/dialogs.json | 3 + src/i18n/locales/it/dialogs.json | 3 + src/i18n/locales/ko/dialogs.json | 3 + src/i18n/locales/nl/dialogs.json | 3 + src/i18n/locales/pt-BR/dialogs.json | 3 + src/i18n/locales/ru/dialogs.json | 5 +- src/i18n/locales/zh-CN/dialogs.json | 3 + src/i18n/locales/zh-TW/dialogs.json | 5 +- src/lib/shortcuts.test.ts | 37 +++ src/lib/shortcuts.ts | 89 +++++++ 30 files changed, 830 insertions(+), 56 deletions(-) create mode 100644 electron/ipc/shortcutTypes.ts create mode 100644 src/components/launch/hooks/useLaunchShortcuts.ts create mode 100644 src/components/launch/hooks/useLaunchWindowActions.test.ts create mode 100644 src/lib/shortcuts.test.ts diff --git a/electron/electron-env.d.ts b/electron/electron-env.d.ts index c0cf0cdb9..8e097b416 100644 --- a/electron/electron-env.d.ts +++ b/electron/electron-env.d.ts @@ -72,6 +72,7 @@ type RendererMarketplaceReviewStatus = type RendererMarketplaceSearchResult = import("./extensions/extensionTypes").MarketplaceSearchResult; type RendererRecordingSessionData = import("./ipc/types").RecordingSessionData; +type RendererLaunchShortcutAction = import("./ipc/shortcutTypes").LaunchShortcutAction; interface RendererFfmpegAudioMuxMetrics { tempVideoWriteMs?: number; @@ -829,6 +830,19 @@ interface Window { }>; getShortcuts: () => Promise | null>; saveShortcuts: (shortcuts: unknown) => Promise<{ success: boolean; error?: string }>; + registerLaunchGlobalShortcuts: (config: unknown) => Promise<{ + success: boolean; + unsupported?: boolean; + failedRegistrations?: Array<{ + action: RendererLaunchShortcutAction; + accelerator: string; + }>; + error?: string; + }>; + unregisterLaunchGlobalShortcuts: () => Promise<{ success: boolean; error?: string }>; + onLaunchShortcutTriggered: ( + callback: (action: RendererLaunchShortcutAction) => void, + ) => () => void; getAppSetting: (key: string) => unknown; setAppSetting: (key: string, value: unknown) => boolean; setHasUnsavedChanges: (hasChanges: boolean) => void; diff --git a/electron/ipc/register/settings.ts b/electron/ipc/register/settings.ts index 5b4498a87..2c65b515d 100644 --- a/electron/ipc/register/settings.ts +++ b/electron/ipc/register/settings.ts @@ -1,14 +1,24 @@ import { readFileSync, writeFileSync } from "node:fs"; import fs from "node:fs/promises"; -import { app, ipcMain } from "electron"; +import { app, globalShortcut, ipcMain } from "electron"; import { hideCursor } from "../../cursorHider"; -import { closeCountdownWindow, createCountdownWindow, getCountdownWindow } from "../../windows"; +import { + closeCountdownWindow, + createCountdownWindow, + getCountdownWindow, + getHudOverlayWindow, +} from "../../windows"; import { APP_SETTINGS_FILE, COUNTDOWN_SETTINGS_FILE, RECORDINGS_SETTINGS_FILE, SHORTCUTS_FILE, } from "../constants"; +import { + isLaunchShortcutAction, + type LaunchShortcutAction, + type ShortcutBinding, +} from "../shortcutTypes"; import { countdownCancelled, countdownInProgress, @@ -64,7 +74,70 @@ function hasAppSetting(store: Record, key: string): boolean { return Reflect.getOwnPropertyDescriptor(store, key) !== undefined; } +let launchShortcutRegisteredAccelerators: string[] = []; +let launchShortcutWillQuitCleanupRegistered = false; + +const ELECTRON_KEY_MAP: Record = { + arrowup: "Up", + arrowdown: "Down", + arrowleft: "Left", + arrowright: "Right", + escape: "Escape", + backspace: "Backspace", + delete: "Delete", + enter: "Enter", + tab: "Tab", +}; + +function toElectronAccelerator(binding: ShortcutBinding): string | null { + const rawKey = binding.key; + if (rawKey === " ") { + const parts: string[] = []; + if (binding.ctrl) parts.push("CommandOrControl"); + if (binding.shift) parts.push("Shift"); + if (binding.alt) parts.push("Alt"); + parts.push("Space"); + return parts.join("+"); + } + + const key = rawKey?.trim().toLowerCase(); + if (!key) { + return null; + } + + const mappedKey = + ELECTRON_KEY_MAP[key] ?? + (key.length === 1 ? key.toUpperCase() : key.charAt(0).toUpperCase() + key.slice(1)); + const parts: string[] = []; + if (binding.ctrl) parts.push("CommandOrControl"); + if (binding.shift) parts.push("Shift"); + if (binding.alt) parts.push("Alt"); + parts.push(mappedKey); + return parts.join("+"); +} + +function unregisterLaunchGlobalShortcuts() { + for (const accelerator of launchShortcutRegisteredAccelerators) { + globalShortcut.unregister(accelerator); + } + launchShortcutRegisteredAccelerators = []; +} + +function notifyLaunchShortcutTriggered(action: LaunchShortcutAction) { + const hud = getHudOverlayWindow(); + if (!hud || hud.isDestroyed()) { + return; + } + + hud.webContents.send("launch-shortcut-triggered", action); +} + export function registerSettingsHandlers() { + if (!launchShortcutWillQuitCleanupRegistered) { + launchShortcutWillQuitCleanupRegistered = true; + app.on("will-quit", unregisterLaunchGlobalShortcuts); + } + ipcMain.handle("app:getVersion", () => { return app.getVersion(); }); @@ -139,6 +212,64 @@ export function registerSettingsHandlers() { } }); + ipcMain.handle("register-launch-global-shortcuts", async (_, config: unknown) => { + try { + unregisterLaunchGlobalShortcuts(); + + if (process.platform !== "darwin") { + return { success: true, unsupported: true }; + } + + if (!config || typeof config !== "object") { + return { success: true }; + } + + const failedRegistrations: Array<{ + action: LaunchShortcutAction; + accelerator: string; + }> = []; + + for (const [action, binding] of Object.entries( + config as Record, + )) { + if (!isLaunchShortcutAction(action)) { + console.warn("Ignoring unknown launch shortcut action in config:", action); + continue; + } + + const accelerator = toElectronAccelerator(binding); + if (!accelerator) { + continue; + } + + const registered = globalShortcut.register(accelerator, () => { + notifyLaunchShortcutTriggered(action); + }); + + if (registered) { + launchShortcutRegisteredAccelerators.push(accelerator); + } else { + const failedRegistration = { action, accelerator }; + failedRegistrations.push(failedRegistration); + console.warn("Failed to register launch global shortcut:", failedRegistration); + } + } + + return { success: true, failedRegistrations }; + } catch (error) { + return { success: false, error: String(error) }; + } + }); + + ipcMain.handle("unregister-launch-global-shortcuts", async () => { + try { + unregisterLaunchGlobalShortcuts(); + return { success: true }; + } catch (error) { + return { success: false, error: String(error) }; + } + }); + // --------------------------------------------------------------------------- // Countdown timer before recording // --------------------------------------------------------------------------- diff --git a/electron/ipc/shortcutTypes.ts b/electron/ipc/shortcutTypes.ts new file mode 100644 index 000000000..f2d5c8bc8 --- /dev/null +++ b/electron/ipc/shortcutTypes.ts @@ -0,0 +1,20 @@ +export const LAUNCH_SHORTCUT_ACTIONS = [ + "startRecording", + "stopRecording", + "pauseRecording", + "resumeRecording", + "muteMicrophone", +] as const; + +export type LaunchShortcutAction = (typeof LAUNCH_SHORTCUT_ACTIONS)[number]; + +export function isLaunchShortcutAction(action: string): action is LaunchShortcutAction { + return (LAUNCH_SHORTCUT_ACTIONS as readonly string[]).includes(action); +} + +export type ShortcutBinding = { + key: string; + ctrl?: boolean; + shift?: boolean; + alt?: boolean; +}; diff --git a/electron/native/bin/darwin-arm64/recordly-native-cursor-monitor b/electron/native/bin/darwin-arm64/recordly-native-cursor-monitor index e0e478f11b0d8ac0ed5bcfbcd5fc4ea5dfac4e55..475db2880b7c59978020f8d1d0b3650045a9ebc6 100755 GIT binary patch literal 98432 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

9ftvPm({AK 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 Ja)KY1zuY6)0=VA`}E!MGzsusuvKn;YBJ% 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 W)hnHT=zYF}{^P&7&Yw-2|NjA%>hp~N delta 22247 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 PnJhOy8~q2&ZtVX6n(OI8 diff --git a/electron/native/bin/darwin-arm64/recordly-window-list b/electron/native/bin/darwin-arm64/recordly-window-list index 76a7dab4a2dab0351d09f7d82e8fdbbc517d6bd5..d802871622345b9e0f6f2281389d3528fae736ee 100755 GIT binary patch literal 117256 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 literal 116024 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 delta 21754 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 diff --git a/electron/native/bin/darwin-x64/recordly-window-list b/electron/native/bin/darwin-x64/recordly-window-list index e165257ae2876b7294360de45716282aa516ea8e..85d6ef6593c1c5d472958e4a411026e88454a0dc 100755 GIT binary patch literal 83064 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 W^6Q3Dbna0VPRv@BQax2UNc|sks)5V^ literal 82424 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

~BIUfY3^T+~Mgs@>hB$UjOetW)$>tE=|{d((_ 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 Uy0@q*CuT1;sg_D!*nGbK1&wCq`v3p{ diff --git a/electron/preload.ts b/electron/preload.ts index 384682a17..a2d5e293e 100644 --- a/electron/preload.ts +++ b/electron/preload.ts @@ -1,4 +1,5 @@ import { contextBridge, ipcRenderer } from "electron"; +import type { LaunchShortcutAction } from "./ipc/shortcutTypes"; import type { RecordingSessionData } from "./ipc/types"; type NativeVideoExportWriteResult = { success: boolean; error?: string }; @@ -896,6 +897,19 @@ contextBridge.exposeInMainWorld("electronAPI", { saveShortcuts: (shortcuts: unknown) => { return ipcRenderer.invoke("save-shortcuts", shortcuts); }, + registerLaunchGlobalShortcuts: (config: unknown) => { + return ipcRenderer.invoke("register-launch-global-shortcuts", config); + }, + unregisterLaunchGlobalShortcuts: () => { + return ipcRenderer.invoke("unregister-launch-global-shortcuts"); + }, + onLaunchShortcutTriggered: (callback: (action: LaunchShortcutAction) => void) => { + const listener = (_event: Electron.IpcRendererEvent, action: LaunchShortcutAction) => { + callback(action); + }; + ipcRenderer.on("launch-shortcut-triggered", listener); + return () => ipcRenderer.removeListener("launch-shortcut-triggered", listener); + }, getAppSetting: (key: string) => { const result = ipcRenderer.sendSync("app-settings:get", key) as { success?: boolean; diff --git a/src/App.tsx b/src/App.tsx index 9e1f4e4c5..060b1f2ed 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -47,7 +47,7 @@ export default function App() { loadAllCustomFonts().catch((error) => { console.error("Failed to load custom fonts:", error); }); - }, []); + }, [isMacOS]); useEffect(() => { document.title = @@ -59,10 +59,10 @@ export default function App() { switch (windowType) { case "hud-overlay": return ( - <> + - + ); case "source-selector": return ; diff --git a/src/components/launch/LaunchWindow.tsx b/src/components/launch/LaunchWindow.tsx index 09cca63ef..a2435c510 100644 --- a/src/components/launch/LaunchWindow.tsx +++ b/src/components/launch/LaunchWindow.tsx @@ -12,9 +12,10 @@ import { XIcon, } from "@phosphor-icons/react"; import { AnimatePresence, motion } from "motion/react"; -import { useEffect, useRef } from "react"; +import { useCallback, useEffect, useRef } from "react"; import { RxDragHandleDots2 } from "react-icons/rx"; import { Separator } from "@/components/ui/separator"; +import { useShortcuts } from "@/contexts/ShortcutsContext"; import { useScopedT } from "../../contexts/I18nContext"; import { useMicrophoneDevices } from "../../hooks/useMicrophoneDevices"; import { useScreenRecorder } from "../../hooks/useScreenRecorder"; @@ -24,6 +25,7 @@ import { HudInteractionContext } from "./contexts/HudInteractionContext"; import { canToggleFloatingWebcamPreview } from "./floatingWebcamPreview"; import { useHudBarDrag } from "./hooks/useHudBarDrag"; import { useLaunchHudInteractionState } from "./hooks/useLaunchHudInteractionState"; +import { useLaunchShortcuts } from "./hooks/useLaunchShortcuts"; import { useLaunchWindowActions } from "./hooks/useLaunchWindowActions"; import { useLaunchWindowSystemState } from "./hooks/useLaunchWindowSystemState"; import { useRecordingTimer } from "./hooks/useRecordingTimer"; @@ -55,6 +57,7 @@ export function LaunchWindow() { function LaunchWindowContent() { const t = useScopedT("launch"); const { openId, requestClose, requestOpen } = useLaunchPopoverCoordinator(); + const { launchShortcuts, isMac } = useShortcuts(); const { recording, @@ -206,12 +209,16 @@ function LaunchWindowContent() { ease: [0.22, 1, 0.36, 1] as const, }; + const toggleMicrophoneMute = useCallback(() => { + setMicrophoneEnabled(!microphoneEnabled); + }, [microphoneEnabled, setMicrophoneEnabled]); + const recordingControls = ( setMicrophoneEnabled(!microphoneEnabled)} + onToggleMicrophone={toggleMicrophoneMute} onPauseResume={paused ? resumeRecording : pauseRecording} onStopRecording={toggleRecording} onHideHud={() => window.electronAPI?.hudOverlayHide?.()} @@ -220,6 +227,21 @@ function LaunchWindowContent() { /> ); + useLaunchShortcuts({ + launchShortcuts, + isMac, + recording, + paused, + countdownActive, + hasSelectedSource, + platform, + toggleRecording, + pauseRecording, + resumeRecording, + toggleMicrophoneMute, + openSources: () => requestOpen("sources"), + }); + const idleControls = ( <> {platform !== "linux" && ( diff --git a/src/components/launch/hooks/useLaunchShortcuts.ts b/src/components/launch/hooks/useLaunchShortcuts.ts new file mode 100644 index 000000000..b3653bd3b --- /dev/null +++ b/src/components/launch/hooks/useLaunchShortcuts.ts @@ -0,0 +1,112 @@ +import { useCallback, useEffect } from "react"; +import { + LAUNCH_SHORTCUT_ACTIONS, + type LaunchShortcutAction, + type LaunchShortcutsConfig, + matchesShortcut, +} from "@/lib/shortcuts"; + +interface UseLaunchShortcutsParams { + launchShortcuts: LaunchShortcutsConfig; + isMac: boolean; + recording: boolean; + paused: boolean; + countdownActive: boolean; + hasSelectedSource: boolean; + platform: string | null; + toggleRecording: () => void | Promise; + pauseRecording: () => void; + resumeRecording: () => void; + toggleMicrophoneMute: () => void; + openSources: () => void; +} + +export function useLaunchShortcuts({ + launchShortcuts, + isMac, + recording, + paused, + countdownActive, + hasSelectedSource, + platform, + toggleRecording, + pauseRecording, + resumeRecording, + toggleMicrophoneMute, + openSources, +}: UseLaunchShortcutsParams) { + const runLaunchShortcut = useCallback( + (action: LaunchShortcutAction) => { + switch (action) { + case "startRecording": + if (!recording && !countdownActive) { + if (hasSelectedSource || platform === "linux") { + void toggleRecording(); + } else { + openSources(); + } + } + return; + case "stopRecording": + if (recording) { + void toggleRecording(); + } + return; + case "pauseRecording": + if (recording && !paused) { + pauseRecording(); + } + return; + case "resumeRecording": + if (recording && paused) { + resumeRecording(); + } + return; + case "muteMicrophone": + toggleMicrophoneMute(); + return; + } + }, + [ + recording, + countdownActive, + hasSelectedSource, + platform, + toggleRecording, + openSources, + paused, + pauseRecording, + resumeRecording, + toggleMicrophoneMute, + ], + ); + + useEffect(() => { + const onKeyDown = (event: KeyboardEvent) => { + if (event.repeat) { + return; + } + + for (const action of LAUNCH_SHORTCUT_ACTIONS) { + if (!matchesShortcut(event, launchShortcuts[action], isMac)) { + continue; + } + + event.preventDefault(); + event.stopPropagation(); + runLaunchShortcut(action); + break; + } + }; + + window.addEventListener("keydown", onKeyDown); + return () => window.removeEventListener("keydown", onKeyDown); + }, [isMac, launchShortcuts, runLaunchShortcut]); + + useEffect(() => { + const unsubscribe = window.electronAPI?.onLaunchShortcutTriggered?.((action) => { + runLaunchShortcut(action); + }); + return () => unsubscribe?.(); + }, [runLaunchShortcut]); +} diff --git a/src/components/launch/hooks/useLaunchWindowActions.test.ts b/src/components/launch/hooks/useLaunchWindowActions.test.ts new file mode 100644 index 000000000..dbf39a4a8 --- /dev/null +++ b/src/components/launch/hooks/useLaunchWindowActions.test.ts @@ -0,0 +1,43 @@ +import { describe, expect, it } from "vitest"; +import { getDefaultLaunchSource } from "./useLaunchWindowActions"; +import type { DesktopSource } from "../popovers/launchPopoverTypes"; + +describe("getDefaultLaunchSource", () => { + it("prefers the first available screen source", () => { + const sources: DesktopSource[] = [ + { + id: "window:1", + name: "Browser", + thumbnail: null, + display_id: "1", + appIcon: null, + sourceType: "window", + }, + { + id: "screen:2", + name: "Screen 2", + thumbnail: null, + display_id: "2", + appIcon: null, + sourceType: "screen", + }, + ]; + + expect(getDefaultLaunchSource(sources)?.id).toBe("screen:2"); + }); + + it("returns null when no screens are available", () => { + const sources: DesktopSource[] = [ + { + id: "window:1", + name: "Browser", + thumbnail: null, + display_id: "1", + appIcon: null, + sourceType: "window", + }, + ]; + + expect(getDefaultLaunchSource(sources)).toBeNull(); + }); +}); diff --git a/src/components/launch/hooks/useLaunchWindowActions.ts b/src/components/launch/hooks/useLaunchWindowActions.ts index 90acfe577..bed326a8f 100644 --- a/src/components/launch/hooks/useLaunchWindowActions.ts +++ b/src/components/launch/hooks/useLaunchWindowActions.ts @@ -1,12 +1,56 @@ -import { useCallback, useState } from "react"; +import { useCallback, useEffect, useState } from "react"; import type { ProjectLibraryEntry } from "@/components/video-editor/ProjectBrowserDialog"; -import type { DesktopSource } from "../popovers/launchPopoverTypes"; +import { isScreenSource, type DesktopSource } from "../popovers/launchPopoverTypes"; + +export function getDefaultLaunchSource(sources: DesktopSource[]) { + return sources.find(isScreenSource) ?? null; +} export function useLaunchWindowActions() { const [selectedSource, setSelectedSource] = useState("Screen"); const [hasSelectedSource, setHasSelectedSource] = useState(false); const [projectLibraryEntries, setProjectLibraryEntries] = useState([]); + useEffect(() => { + let cancelled = false; + + const selectDefaultScreenSource = async () => { + try { + const currentSource = await window.electronAPI.getSelectedSource(); + if (currentSource) { + return; + } + + const sources = (await window.electronAPI.getSources({ + types: ["screen", "window"], + thumbnailSize: { width: 160, height: 90 }, + fetchWindowIcons: true, + })) as DesktopSource[]; + const defaultSource = getDefaultLaunchSource(sources); + if (cancelled || !defaultSource) { + return; + } + + const latestSource = await window.electronAPI.getSelectedSource(); + if (cancelled || latestSource) { + return; + } + + await window.electronAPI.selectSource(defaultSource); + setSelectedSource(defaultSource.name); + setHasSelectedSource(true); + } catch (error) { + console.error("Failed to select default launch source:", error); + } + }; + + void selectDefaultScreenSource(); + + return () => { + cancelled = true; + }; + }, []); + const handleSourceSelect = useCallback(async (source: DesktopSource) => { await window.electronAPI.selectSource(source); setSelectedSource(source.name); diff --git a/src/components/launch/hooks/useLaunchWindowSystemState.ts b/src/components/launch/hooks/useLaunchWindowSystemState.ts index 56793fa36..d89bfaa55 100644 --- a/src/components/launch/hooks/useLaunchWindowSystemState.ts +++ b/src/components/launch/hooks/useLaunchWindowSystemState.ts @@ -1,5 +1,7 @@ import { useCallback, useEffect, useState } from "react"; +const SHOULD_PREPARE_PERMISSIONS_ON_STARTUP = !import.meta.env.DEV; + export function useLaunchWindowSystemState( preparePermissions: (args: { startup?: boolean }) => Promise, ) { @@ -66,6 +68,10 @@ export function useLaunchWindowSystemState( }, []); useEffect(() => { + if (!SHOULD_PREPARE_PERMISSIONS_ON_STARTUP) { + return; + } + void preparePermissions({ startup: true }); }, [preparePermissions]); diff --git a/src/components/video-editor/ShortcutsConfigDialog.tsx b/src/components/video-editor/ShortcutsConfigDialog.tsx index c359c1f11..4b814b45b 100644 --- a/src/components/video-editor/ShortcutsConfigDialog.tsx +++ b/src/components/video-editor/ShortcutsConfigDialog.tsx @@ -11,10 +11,17 @@ import { } from "@/components/ui/dialog"; import { useShortcuts } from "@/contexts/ShortcutsContext"; import { + DEFAULT_LAUNCH_SHORTCUTS, DEFAULT_SHORTCUTS, FIXED_SHORTCUTS, findConflict, + findLaunchConflict, formatBinding, + LAUNCH_SHORTCUT_ACTIONS, + LAUNCH_SHORTCUT_LABELS, + type LaunchShortcutAction, + type LaunchShortcutConflict, + type LaunchShortcutsConfig, SHORTCUT_ACTIONS, SHORTCUT_LABELS, type ShortcutAction, @@ -26,36 +33,60 @@ import { useScopedT } from "../../contexts/I18nContext"; const MODIFIER_KEYS = new Set(["Control", "Shift", "Alt", "Meta"]); +type CaptureTarget = + | { scope: "local"; action: ShortcutAction } + | { scope: "global"; action: LaunchShortcutAction }; + +type ShortcutConflictState = + | { + scope: "local"; + forAction: ShortcutAction; + pending: ShortcutBinding; + conflictWith: ShortcutConflict; + } + | { + scope: "global"; + forAction: LaunchShortcutAction; + pending: ShortcutBinding; + conflictWith: LaunchShortcutConflict; + }; + export function ShortcutsConfigDialog() { const t = useScopedT("dialogs"); - const { shortcuts, isMac, isConfigOpen, closeConfig, setShortcuts, persistShortcuts } = - useShortcuts(); + const { + shortcuts, + launchShortcuts, + isMac, + isConfigOpen, + closeConfig, + setShortcuts, + setLaunchShortcuts, + persistShortcuts, + } = useShortcuts(); const [draft, setDraft] = useState(shortcuts); - const [captureFor, setCaptureFor] = useState(null); - const [conflict, setConflict] = useState<{ - forAction: ShortcutAction; - pending: ShortcutBinding; - conflictWith: ShortcutConflict; - } | null>(null); + const [launchDraft, setLaunchDraft] = useState(launchShortcuts); + const [captureTarget, setCaptureTarget] = useState(null); + const [conflict, setConflict] = useState(null); useEffect(() => { if (isConfigOpen) { setDraft(shortcuts); - setCaptureFor(null); + setLaunchDraft(launchShortcuts); + setCaptureTarget(null); setConflict(null); } - }, [isConfigOpen, shortcuts]); + }, [isConfigOpen, shortcuts, launchShortcuts]); useEffect(() => { - if (!captureFor) return; + if (!captureTarget) return; const handleCapture = (e: KeyboardEvent) => { e.preventDefault(); e.stopPropagation(); if (e.key === "Escape") { - setCaptureFor(null); + setCaptureTarget(null); return; } @@ -68,8 +99,29 @@ export function ShortcutsConfigDialog() { ...(e.altKey ? { alt: true } : {}), }; - const found = findConflict(binding, captureFor, draft); - setCaptureFor(null); + if (captureTarget.scope === "global") { + const found = findLaunchConflict(binding, captureTarget.action, launchDraft); + setCaptureTarget(null); + + if (found) { + setConflict({ + scope: "global", + forAction: captureTarget.action, + pending: binding, + conflictWith: found, + }); + return; + } + + setLaunchDraft((prev: LaunchShortcutsConfig) => ({ + ...prev, + [captureTarget.action]: binding, + })); + return; + } + + const found = findConflict(binding, captureTarget.action, draft); + setCaptureTarget(null); if (found?.type === "fixed") { toast.error(t("shortcutsConfig.reserved", undefined, { label: found.label })); @@ -77,25 +129,46 @@ export function ShortcutsConfigDialog() { } if (found?.type === "configurable") { - setConflict({ forAction: captureFor, pending: binding, conflictWith: found }); + setConflict({ + scope: "local", + forAction: captureTarget.action, + pending: binding, + conflictWith: found, + }); return; } - setDraft((prev: ShortcutsConfig) => ({ ...prev, [captureFor]: binding })); + setDraft((prev: ShortcutsConfig) => ({ + ...prev, + [captureTarget.action]: binding, + })); }; window.addEventListener("keydown", handleCapture, { capture: true }); return () => window.removeEventListener("keydown", handleCapture, { capture: true }); - }, [captureFor, draft, t]); + }, [captureTarget, draft, launchDraft, t]); const handleSwap = useCallback(() => { if (!conflict || conflict.conflictWith.type !== "configurable") return; - const { forAction, pending, conflictWith } = conflict; - setDraft((prev: ShortcutsConfig) => ({ - ...prev, - [forAction]: pending, - [conflictWith.action]: prev[forAction], - })); + if (conflict.scope === "global") { + const forAction = conflict.forAction; + const pending = conflict.pending; + const conflictWithAction = conflict.conflictWith.action; + setLaunchDraft((prev: LaunchShortcutsConfig) => ({ + ...prev, + [forAction]: pending, + [conflictWithAction]: prev[forAction], + })); + } else { + const forAction = conflict.forAction; + const pending = conflict.pending; + const conflictWithAction = conflict.conflictWith.action; + setDraft((prev: ShortcutsConfig) => ({ + ...prev, + [forAction]: pending, + [conflictWithAction]: prev[forAction], + })); + } setConflict(null); }, [conflict]); @@ -103,22 +176,31 @@ export function ShortcutsConfigDialog() { const handleSave = useCallback(async () => { setShortcuts(draft); - await persistShortcuts(draft); + setLaunchShortcuts(launchDraft); + await persistShortcuts(draft, launchDraft); toast.success(t("shortcutsConfig.saved")); closeConfig(); - }, [draft, setShortcuts, persistShortcuts, closeConfig, t]); + }, [draft, launchDraft, setShortcuts, setLaunchShortcuts, persistShortcuts, closeConfig, t]); const handleReset = useCallback(() => { setDraft({ ...DEFAULT_SHORTCUTS }); + setLaunchDraft({ ...DEFAULT_LAUNCH_SHORTCUTS }); toast.info(t("shortcutsConfig.resetNotice")); }, [t]); const handleClose = useCallback(() => { - setCaptureFor(null); + setCaptureTarget(null); setConflict(null); closeConfig(); }, [closeConfig]); + const toggleCaptureTarget = useCallback((target: CaptureTarget) => { + setConflict(null); + setCaptureTarget((current) => + current?.scope === target.scope && current.action === target.action ? null : target, + ); + }, []); + return (

- + @@ -136,11 +218,13 @@ export function ShortcutsConfigDialog() {

- {t("shortcutsConfig.configurable")} + {t("shortcutsConfig.localShortcuts")}

{SHORTCUT_ACTIONS.map((action) => { - const isCapturing = captureFor === action; - const hasConflict = conflict?.forAction === action; + const isCapturing = + captureTarget?.scope === "local" && captureTarget.action === action; + const hasConflict = + conflict?.scope === "local" && conflict.forAction === action; return (
@@ -149,10 +233,9 @@ export function ShortcutsConfigDialog() { + +
+
+ )} +
+ ); + })} + + +
+

+ {t("shortcutsConfig.globalShortcuts")} +

+

+ {t("shortcutsConfig.globalDescription")} +

+ {LAUNCH_SHORTCUT_ACTIONS.map((action) => { + const isCapturing = + captureTarget?.scope === "global" && captureTarget.action === action; + const hasConflict = + conflict?.scope === "global" && conflict.forAction === action; + return ( +
+
+ + {LAUNCH_SHORTCUT_LABELS[action]} + + +
+ {hasConflict && conflict?.scope === "global" && ( +
+ + {t("shortcutsConfig.alreadyUsedBy", undefined, { + action: LAUNCH_SHORTCUT_LABELS[ conflict.conflictWith.action ], })} diff --git a/src/contexts/ShortcutsContext.tsx b/src/contexts/ShortcutsContext.tsx index 8b80818af..39380e767 100644 --- a/src/contexts/ShortcutsContext.tsx +++ b/src/contexts/ShortcutsContext.tsx @@ -7,14 +7,26 @@ import { useMemo, useState, } from "react"; -import { DEFAULT_SHORTCUTS, mergeWithDefaults, type ShortcutsConfig } from "@/lib/shortcuts"; +import { + DEFAULT_LAUNCH_SHORTCUTS, + DEFAULT_SHORTCUTS, + type LaunchShortcutsConfig, + type PersistedShortcutsPayload, + resolvePersistedShortcuts, + type ShortcutsConfig, +} from "@/lib/shortcuts"; import { isMac as getIsMac } from "@/utils/platformUtils"; interface ShortcutsContextValue { shortcuts: ShortcutsConfig; + launchShortcuts: LaunchShortcutsConfig; isMac: boolean; setShortcuts: (config: ShortcutsConfig) => void; - persistShortcuts: (config?: ShortcutsConfig) => Promise; + setLaunchShortcuts: (config: LaunchShortcutsConfig) => void; + persistShortcuts: ( + config?: ShortcutsConfig, + launchConfig?: LaunchShortcutsConfig, + ) => Promise; isConfigOpen: boolean; openConfig: () => void; closeConfig: () => void; @@ -30,6 +42,8 @@ export function useShortcuts(): ShortcutsContextValue { export function ShortcutsProvider({ children }: { children: ReactNode }) { const [shortcuts, setShortcuts] = useState(DEFAULT_SHORTCUTS); + const [launchShortcuts, setLaunchShortcuts] = + useState(DEFAULT_LAUNCH_SHORTCUTS); const [isMac, setIsMac] = useState(false); const [isConfigOpen, setIsConfigOpen] = useState(false); @@ -40,21 +54,49 @@ export function ShortcutsProvider({ children }: { children: ReactNode }) { void (async () => { try { - const saved = await window.electronAPI?.getShortcuts?.(); - if (saved) { - setShortcuts(mergeWithDefaults(saved as Partial)); - } + const saved = + (await window.electronAPI?.getShortcuts?.()) as PersistedShortcutsPayload | null; + const resolved = resolvePersistedShortcuts(saved); + setShortcuts(resolved.editor); + setLaunchShortcuts(resolved.launch); } catch { return undefined; } })(); }, []); + useEffect(() => { + if (!isMac) { + return undefined; + } + + void window.electronAPI?.registerLaunchGlobalShortcuts?.(launchShortcuts).then((result) => { + if (!result?.success) { + console.warn("Failed to register launch global shortcuts:", result?.error); + return; + } + + if (result.failedRegistrations && result.failedRegistrations.length > 0) { + console.warn( + "Some launch global shortcuts could not be registered:", + result.failedRegistrations, + ); + } + }); + + return () => { + void window.electronAPI?.unregisterLaunchGlobalShortcuts?.(); + }; + }, [isMac, launchShortcuts]); + const persistShortcuts = useCallback( - async (config?: ShortcutsConfig) => { - await window.electronAPI?.saveShortcuts?.(config ?? shortcuts); + async (config?: ShortcutsConfig, launchConfig?: LaunchShortcutsConfig) => { + await window.electronAPI?.saveShortcuts?.({ + editor: config ?? shortcuts, + launch: launchConfig ?? launchShortcuts, + }); }, - [shortcuts], + [shortcuts, launchShortcuts], ); const openConfig = useCallback(() => setIsConfigOpen(true), []); @@ -63,14 +105,24 @@ export function ShortcutsProvider({ children }: { children: ReactNode }) { const value = useMemo( () => ({ shortcuts, + launchShortcuts, isMac, setShortcuts, + setLaunchShortcuts, persistShortcuts, isConfigOpen, openConfig, closeConfig, }), - [shortcuts, isMac, persistShortcuts, isConfigOpen, openConfig, closeConfig], + [ + shortcuts, + launchShortcuts, + isMac, + persistShortcuts, + isConfigOpen, + openConfig, + closeConfig, + ], ); return {children}; diff --git a/src/i18n/locales/en/dialogs.json b/src/i18n/locales/en/dialogs.json index 97d931a20..336d63914 100644 --- a/src/i18n/locales/en/dialogs.json +++ b/src/i18n/locales/en/dialogs.json @@ -45,6 +45,9 @@ "shortcutsConfig": { "title": "Keyboard Shortcuts", "configurable": "Configurable", + "localShortcuts": "Local shortcuts", + "globalShortcuts": "Global recording shortcuts", + "globalDescription": "Available on macOS even when Recordly is in the background.", "fixed": "Fixed", "pressEscToCancel": "Press Esc to cancel", "clickToChange": "Click to change", diff --git a/src/i18n/locales/es/dialogs.json b/src/i18n/locales/es/dialogs.json index e6203e667..06611cd94 100644 --- a/src/i18n/locales/es/dialogs.json +++ b/src/i18n/locales/es/dialogs.json @@ -45,6 +45,9 @@ "shortcutsConfig": { "title": "Atajos de teclado", "configurable": "Configurable", + "localShortcuts": "Local shortcuts", + "globalShortcuts": "Global recording shortcuts", + "globalDescription": "Available on macOS even when Recordly is in the background.", "fixed": "Fijo", "pressEscToCancel": "Presiona Esc para cancelar", "clickToChange": "Haz clic para cambiar", diff --git a/src/i18n/locales/fr/dialogs.json b/src/i18n/locales/fr/dialogs.json index d13fe5eba..1e53c278c 100644 --- a/src/i18n/locales/fr/dialogs.json +++ b/src/i18n/locales/fr/dialogs.json @@ -45,6 +45,9 @@ "shortcutsConfig": { "title": "Raccourcis clavier", "configurable": "Configurable", + "localShortcuts": "Local shortcuts", + "globalShortcuts": "Global recording shortcuts", + "globalDescription": "Available on macOS even when Recordly is in the background.", "fixed": "Fixe", "pressEscToCancel": "Appuyez sur Échap pour annuler", "clickToChange": "Cliquez pour modifier", diff --git a/src/i18n/locales/it/dialogs.json b/src/i18n/locales/it/dialogs.json index 4681c0bc9..3cc77bc72 100644 --- a/src/i18n/locales/it/dialogs.json +++ b/src/i18n/locales/it/dialogs.json @@ -45,6 +45,9 @@ "shortcutsConfig": { "title": "Scorciatoie da tastiera", "configurable": "Configurabile", + "localShortcuts": "Local shortcuts", + "globalShortcuts": "Global recording shortcuts", + "globalDescription": "Available on macOS even when Recordly is in the background.", "fixed": "Fisso", "pressEscToCancel": "Premi Esc per annullare", "clickToChange": "Clicca per modificare", diff --git a/src/i18n/locales/ko/dialogs.json b/src/i18n/locales/ko/dialogs.json index e63fa57fa..5061f61b5 100644 --- a/src/i18n/locales/ko/dialogs.json +++ b/src/i18n/locales/ko/dialogs.json @@ -45,6 +45,9 @@ "shortcutsConfig": { "title": "키보드 단축키", "configurable": "변경 가능", + "localShortcuts": "Local shortcuts", + "globalShortcuts": "Global recording shortcuts", + "globalDescription": "Available on macOS even when Recordly is in the background.", "fixed": "고정", "pressEscToCancel": "Esc를 눌러 취소", "clickToChange": "클릭해서 변경", diff --git a/src/i18n/locales/nl/dialogs.json b/src/i18n/locales/nl/dialogs.json index 32ca08e0a..7bf96964f 100644 --- a/src/i18n/locales/nl/dialogs.json +++ b/src/i18n/locales/nl/dialogs.json @@ -45,6 +45,9 @@ "shortcutsConfig": { "title": "Sneltoetsen", "configurable": "Aanpasbaar", + "localShortcuts": "Local shortcuts", + "globalShortcuts": "Global recording shortcuts", + "globalDescription": "Available on macOS even when Recordly is in the background.", "fixed": "Vast", "pressEscToCancel": "Druk op Esc om te annuleren", "clickToChange": "Klik om te wijzigen", diff --git a/src/i18n/locales/pt-BR/dialogs.json b/src/i18n/locales/pt-BR/dialogs.json index f5f772063..479a52fb5 100644 --- a/src/i18n/locales/pt-BR/dialogs.json +++ b/src/i18n/locales/pt-BR/dialogs.json @@ -45,6 +45,9 @@ "shortcutsConfig": { "title": "Atalhos de teclado", "configurable": "Configurável", + "localShortcuts": "Local shortcuts", + "globalShortcuts": "Global recording shortcuts", + "globalDescription": "Available on macOS even when Recordly is in the background.", "fixed": "Fixo", "pressEscToCancel": "Pressione Esc para cancelar", "clickToChange": "Clique para alterar", diff --git a/src/i18n/locales/ru/dialogs.json b/src/i18n/locales/ru/dialogs.json index da6ed8ee6..92406353a 100644 --- a/src/i18n/locales/ru/dialogs.json +++ b/src/i18n/locales/ru/dialogs.json @@ -45,6 +45,9 @@ "shortcutsConfig": { "title": "Сочетания клавиш", "configurable": "Настраиваемые", + "localShortcuts": "Local shortcuts", + "globalShortcuts": "Global recording shortcuts", + "globalDescription": "Available on macOS even when Recordly is in the background.", "fixed": "Фиксированные", "pressEscToCancel": "Нажмите Esc для отмены", "clickToChange": "Нажмите, чтобы изменить", @@ -59,4 +62,4 @@ "cancel": "Отмена", "save": "Сохранить" } -} \ No newline at end of file +} diff --git a/src/i18n/locales/zh-CN/dialogs.json b/src/i18n/locales/zh-CN/dialogs.json index 9642d2e96..4e5272a2a 100644 --- a/src/i18n/locales/zh-CN/dialogs.json +++ b/src/i18n/locales/zh-CN/dialogs.json @@ -45,6 +45,9 @@ "shortcutsConfig": { "title": "键盘快捷键", "configurable": "可配置", + "localShortcuts": "Local shortcuts", + "globalShortcuts": "Global recording shortcuts", + "globalDescription": "Available on macOS even when Recordly is in the background.", "fixed": "固定", "pressEscToCancel": "按 Esc 取消", "clickToChange": "点击以更改", diff --git a/src/i18n/locales/zh-TW/dialogs.json b/src/i18n/locales/zh-TW/dialogs.json index 828b70ee3..3986f02a1 100644 --- a/src/i18n/locales/zh-TW/dialogs.json +++ b/src/i18n/locales/zh-TW/dialogs.json @@ -45,6 +45,9 @@ "shortcutsConfig": { "title": "鍵盤快捷鍵", "configurable": "可自訂", + "localShortcuts": "Local shortcuts", + "globalShortcuts": "Global recording shortcuts", + "globalDescription": "Available on macOS even when Recordly is in the background.", "fixed": "固定", "pressEscToCancel": "按下 Esc 以取消", "clickToChange": "點一下以更改", @@ -59,4 +62,4 @@ "cancel": "取消", "save": "儲存" } -} \ No newline at end of file +} diff --git a/src/lib/shortcuts.test.ts b/src/lib/shortcuts.test.ts new file mode 100644 index 000000000..f01ebb16d --- /dev/null +++ b/src/lib/shortcuts.test.ts @@ -0,0 +1,37 @@ +import { describe, expect, it } from "vitest"; +import { + DEFAULT_LAUNCH_SHORTCUTS, + DEFAULT_SHORTCUTS, + resolvePersistedShortcuts, +} from "./shortcuts"; + +describe("resolvePersistedShortcuts", () => { + it("returns editor and launch defaults when no shortcuts are saved", () => { + expect(resolvePersistedShortcuts(null)).toEqual({ + editor: DEFAULT_SHORTCUTS, + launch: DEFAULT_LAUNCH_SHORTCUTS, + }); + }); + + it("keeps legacy editor-only shortcut files compatible", () => { + expect(resolvePersistedShortcuts({ addZoom: { key: "x" } })).toEqual({ + editor: { ...DEFAULT_SHORTCUTS, addZoom: { key: "x" } }, + launch: DEFAULT_LAUNCH_SHORTCUTS, + }); + }); + + it("merges structured editor and launch shortcut files with defaults", () => { + expect( + resolvePersistedShortcuts({ + editor: { splitClip: { key: "b" } }, + launch: { startRecording: { key: "r", ctrl: true, alt: true } }, + }), + ).toEqual({ + editor: { ...DEFAULT_SHORTCUTS, splitClip: { key: "b" } }, + launch: { + ...DEFAULT_LAUNCH_SHORTCUTS, + startRecording: { key: "r", ctrl: true, alt: true }, + }, + }); + }); +}); diff --git a/src/lib/shortcuts.ts b/src/lib/shortcuts.ts index d43846930..710e4e25c 100644 --- a/src/lib/shortcuts.ts +++ b/src/lib/shortcuts.ts @@ -9,6 +9,16 @@ export const SHORTCUT_ACTIONS = [ export type ShortcutAction = (typeof SHORTCUT_ACTIONS)[number]; +export const LAUNCH_SHORTCUT_ACTIONS = [ + "startRecording", + "stopRecording", + "pauseRecording", + "resumeRecording", + "muteMicrophone", +] as const; + +export type LaunchShortcutAction = (typeof LAUNCH_SHORTCUT_ACTIONS)[number]; + export interface ShortcutBinding { key: string; /** Maps to Cmd on macOS, Ctrl on Windows/Linux */ @@ -18,6 +28,7 @@ export interface ShortcutBinding { } export type ShortcutsConfig = Record; +export type LaunchShortcutsConfig = Record; export interface FixedShortcut { label: string; @@ -44,6 +55,7 @@ export const FIXED_SHORTCUTS: FixedShortcut[] = [ export type ShortcutConflict = | { type: "configurable"; action: ShortcutAction } | { type: "fixed"; label: string }; +export type LaunchShortcutConflict = { type: "configurable"; action: LaunchShortcutAction }; export function bindingsEqual(a: ShortcutBinding, b: ShortcutBinding): boolean { return ( @@ -72,6 +84,19 @@ export function findConflict( return null; } +export function findLaunchConflict( + binding: ShortcutBinding, + forAction: LaunchShortcutAction, + config: LaunchShortcutsConfig, +): LaunchShortcutConflict | null { + for (const action of LAUNCH_SHORTCUT_ACTIONS) { + if (action !== forAction && bindingsEqual(config[action], binding)) { + return { type: "configurable", action }; + } + } + return null; +} + export const DEFAULT_SHORTCUTS: ShortcutsConfig = { addZoom: { key: "z" }, splitClip: { key: "c" }, @@ -81,6 +106,14 @@ export const DEFAULT_SHORTCUTS: ShortcutsConfig = { playPause: { key: " " }, }; +export const DEFAULT_LAUNCH_SHORTCUTS: LaunchShortcutsConfig = { + startRecording: { key: "r", ctrl: true, shift: true }, + stopRecording: { key: "s", ctrl: true, shift: true }, + pauseRecording: { key: "p", ctrl: true, shift: true }, + resumeRecording: { key: "p", ctrl: true, shift: true, alt: true }, + muteMicrophone: { key: "m", ctrl: true, shift: true }, +}; + export const SHORTCUT_LABELS: Record = { addZoom: "Add Zoom", splitClip: "Split Clip", @@ -90,6 +123,14 @@ export const SHORTCUT_LABELS: Record = { playPause: "Play / Pause", }; +export const LAUNCH_SHORTCUT_LABELS: Record = { + startRecording: "Start Recording", + stopRecording: "Stop Recording", + pauseRecording: "Pause Recording", + resumeRecording: "Resume Recording", + muteMicrophone: "Mute / Unmute Microphone", +}; + export function matchesShortcut( e: KeyboardEvent, binding: ShortcutBinding, @@ -134,3 +175,51 @@ export function mergeWithDefaults(partial: Partial): ShortcutsC } return merged; } + +export function mergeLaunchWithDefaults( + partial: Partial, +): LaunchShortcutsConfig { + const merged = { ...DEFAULT_LAUNCH_SHORTCUTS }; + for (const action of LAUNCH_SHORTCUT_ACTIONS) { + if (partial[action]) { + merged[action] = partial[action] as ShortcutBinding; + } + } + return merged; +} + +export type PersistedShortcutsPayload = + | Partial + | { + editor?: Partial; + launch?: Partial; + }; + +export function resolvePersistedShortcuts(payload: PersistedShortcutsPayload | null | undefined): { + editor: ShortcutsConfig; + launch: LaunchShortcutsConfig; +} { + if (!payload || typeof payload !== "object") { + return { + editor: { ...DEFAULT_SHORTCUTS }, + launch: { ...DEFAULT_LAUNCH_SHORTCUTS }, + }; + } + + const maybeStructured = payload as { + editor?: Partial; + launch?: Partial; + }; + + if ("editor" in maybeStructured || "launch" in maybeStructured) { + return { + editor: mergeWithDefaults(maybeStructured.editor ?? {}), + launch: mergeLaunchWithDefaults(maybeStructured.launch ?? {}), + }; + } + + return { + editor: mergeWithDefaults(payload as Partial), + launch: { ...DEFAULT_LAUNCH_SHORTCUTS }, + }; +} From 3ac43c113dab58f6f47abac97922db9933591b9c Mon Sep 17 00:00:00 2001 From: Awais Jamil Date: Thu, 4 Jun 2026 15:04:33 +1000 Subject: [PATCH 2/2] feat(shortcuts): add tray and menu launch shortcut controls --- electron/electron-env.d.ts | 13 +- electron/ipc/handlers.ts | 2 +- electron/ipc/recording/mac.ts | 1 + electron/ipc/recording/windows.ts | 1 + electron/ipc/register/recording.ts | 7 +- electron/main.ts | 68 +++++- electron/preload.ts | 18 +- src/components/launch/LaunchWindow.module.css | 10 + src/components/launch/LaunchWindow.tsx | 18 ++ .../launch/popovers/MorePopover.test.tsx | 211 ++++++++++++++++++ .../launch/popovers/MorePopover.tsx | 111 +++++++-- .../launch/popovers/PopoverScaffold.tsx | 9 +- src/hooks/useScreenRecorder.ts | 45 +++- src/i18n/locales/en/launch.json | 2 + src/i18n/locales/es/launch.json | 2 + src/i18n/locales/fr/launch.json | 2 + src/i18n/locales/it/launch.json | 2 + src/i18n/locales/ko/launch.json | 2 + src/i18n/locales/nl/launch.json | 2 + src/i18n/locales/pt-BR/launch.json | 2 + src/i18n/locales/zh-CN/launch.json | 2 + src/i18n/locales/zh-TW/launch.json | 2 + 22 files changed, 486 insertions(+), 46 deletions(-) create mode 100644 src/components/launch/popovers/MorePopover.test.tsx diff --git a/electron/electron-env.d.ts b/electron/electron-env.d.ts index 8e097b416..2dfa0d02d 100644 --- a/electron/electron-env.d.ts +++ b/electron/electron-env.d.ts @@ -559,7 +559,7 @@ interface Window { startDelayMsByPath?: Record; error?: string; }>; - setRecordingState: (recording: boolean) => Promise; + setRecordingState: (recording: boolean, paused?: boolean) => Promise; getCursorTelemetry: (videoPath?: string) => Promise<{ success: boolean; samples: CursorTelemetryPoint[]; @@ -580,10 +580,13 @@ interface Window { cursors: Record; error?: string; }>; - onStopRecordingFromTray: (callback: () => void) => () => void; - onRecordingStateChanged: ( - callback: (state: { recording: boolean; sourceName: string }) => void, - ) => () => void; + onStopRecordingFromTray: (callback: () => void) => () => void; + onTrayRecordingCommand: ( + callback: (command: "start" | "pause" | "resume" | "stop") => void, + ) => () => void; + onRecordingStateChanged: ( + callback: (state: { recording: boolean; paused: boolean; sourceName: string }) => void, + ) => () => void; onRecordingSessionChanged: ( callback: (session: RendererRecordingSessionData | null) => void, ) => () => void; diff --git a/electron/ipc/handlers.ts b/electron/ipc/handlers.ts index f6e4dc029..e1ea9b2c3 100644 --- a/electron/ipc/handlers.ts +++ b/electron/ipc/handlers.ts @@ -55,7 +55,7 @@ export function registerIpcHandlers( createSourceSelectorWindow: () => BrowserWindow, _getMainWindow: () => BrowserWindow | null, getSourceSelectorWindow: () => BrowserWindow | null, - onRecordingStateChange?: (recording: boolean, sourceName: string) => void, + onRecordingStateChange?: (recording: boolean, paused: boolean, sourceName: string) => void, ) { registerSourceHandlers({ createEditorWindow, diff --git a/electron/ipc/recording/mac.ts b/electron/ipc/recording/mac.ts index 01951345d..d05b36109 100644 --- a/electron/ipc/recording/mac.ts +++ b/electron/ipc/recording/mac.ts @@ -168,6 +168,7 @@ export function attachNativeCaptureLifecycle(process: ChildProcessWithoutNullStr if (!window.isDestroyed()) { window.webContents.send("recording-state-changed", { recording: false, + paused: false, sourceName, }); } diff --git a/electron/ipc/recording/windows.ts b/electron/ipc/recording/windows.ts index 262d26daa..99eb7fbf6 100644 --- a/electron/ipc/recording/windows.ts +++ b/electron/ipc/recording/windows.ts @@ -187,6 +187,7 @@ export function attachWindowsCaptureLifecycle(proc: ChildProcessWithoutNullStrea if (!window.isDestroyed()) { window.webContents.send("recording-state-changed", { recording: false, + paused: false, sourceName, }); } diff --git a/electron/ipc/register/recording.ts b/electron/ipc/register/recording.ts index b13453c74..1f0fae46d 100644 --- a/electron/ipc/register/recording.ts +++ b/electron/ipc/register/recording.ts @@ -391,7 +391,7 @@ async function resolveExistingPath(...candidates: Array void, + onRecordingStateChange?: (recording: boolean, paused: boolean, sourceName: string) => void, ) { ipcMain.handle( "start-native-screen-recording", @@ -1810,7 +1810,7 @@ export function registerRecordingHandlers( } }); - ipcMain.handle("set-recording-state", (_, recording: boolean) => { + ipcMain.handle("set-recording-state", (_, recording: boolean, paused = false) => { if (recording) { stopCursorCapture(); stopInteractionCapture(); @@ -1844,13 +1844,14 @@ export function registerRecordingHandlers( if (!window.isDestroyed()) { window.webContents.send("recording-state-changed", { recording, + paused, sourceName: source.name, }); } }); if (onRecordingStateChange) { - onRecordingStateChange(recording, source.name); + onRecordingStateChange(recording, paused, source.name); } }); diff --git a/electron/main.ts b/electron/main.ts index 68829e431..03c39f539 100644 --- a/electron/main.ts +++ b/electron/main.ts @@ -139,6 +139,7 @@ let sourceSelectorWindow: BrowserWindow | null = null; let tray: Tray | null = null; let trayContextMenu: Menu | null = null; let selectedSourceName = ""; +let isRecordingPaused = false; let editorHasUnsavedChanges = false; let isForceClosing = false; let isCreatingMainWindow = false; @@ -242,6 +243,33 @@ function showHudOverlayFromTray() { return true; } +function sendTrayRecordingCommand(command: "start" | "pause" | "resume" | "stop") { + let targetWindow = getHudOverlayWindow() ?? mainWindow; + if (!targetWindow || targetWindow.isDestroyed()) { + createWindow(); + targetWindow = getHudOverlayWindow() ?? mainWindow; + } + + if (!targetWindow || targetWindow.isDestroyed()) { + return; + } + + const sendCommand = () => { + if (!targetWindow || targetWindow.isDestroyed()) { + return; + } + + targetWindow.webContents.send("tray-recording-command", command); + }; + + if (targetWindow.webContents.isLoadingMainFrame()) { + targetWindow.webContents.once("did-finish-load", sendCommand); + return; + } + + sendCommand(); +} + ipcMain.on("set-has-unsaved-changes", (_event, hasChanges: boolean) => { editorHasUnsavedChanges = hasChanges; }); @@ -414,7 +442,7 @@ function setupApplicationMenu() { submenu: [ { role: "undo" }, { role: "redo" }, - { type: "separator" }, + { type: "separator" as const }, { role: "cut" }, { role: "copy" }, { role: "paste" }, @@ -427,7 +455,7 @@ function setupApplicationMenu() { { role: "reload" }, { role: "forceReload" }, { role: "toggleDevTools" }, - { type: "separator" }, + { type: "separator" as const }, { role: "resetZoom" }, { role: "zoomIn" }, { role: "zoomOut" }, @@ -710,8 +738,10 @@ ipcMain.handle("check-for-app-updates", async () => { function updateTrayMenu(recording: boolean = false) { if (!tray) return; const trayIcon = recording ? getRecordingTrayIcon() : getDefaultTrayIcon(); - const trayToolTip = recording ? `Recording: ${selectedSourceName}` : "Recordly"; - const menuTemplate = recording + const trayToolTip = recording + ? `${isRecordingPaused ? "Paused" : "Recording"}: ${selectedSourceName}` + : "Recordly"; + const menuTemplate: Electron.MenuItemConstructorOptions[] = recording ? [ { label: "Show Controls", @@ -721,12 +751,23 @@ function updateTrayMenu(recording: boolean = false) { } }, }, + { + label: isRecordingPaused ? "Resume Recording" : "Pause Recording", + click: () => { + sendTrayRecordingCommand(isRecordingPaused ? "resume" : "pause"); + }, + }, { label: "Stop Recording", click: () => { - if (mainWindow && !mainWindow.isDestroyed()) { - mainWindow.webContents.send("stop-recording-from-tray"); - } + sendTrayRecordingCommand("stop"); + }, + }, + { type: "separator" }, + { + label: "Quit", + click: () => { + app.quit(); }, }, ] @@ -739,6 +780,16 @@ function updateTrayMenu(recording: boolean = false) { } }, }, + { + label: "Start Recording", + click: () => { + if (!showHudOverlayFromTray()) { + focusOrCreateMainWindow(); + } + sendTrayRecordingCommand("start"); + }, + }, + { type: "separator" }, { label: "Quit", click: () => { @@ -960,8 +1011,9 @@ app.whenReady().then(async () => { createSourceSelectorWindowWrapper, () => mainWindow, () => sourceSelectorWindow, - (recording: boolean, sourceName: string) => { + (recording: boolean, paused: boolean, sourceName: string) => { selectedSourceName = sourceName; + isRecordingPaused = recording ? paused : false; setHudOverlayRecordingActive(recording); if (!tray) createTray(); updateTrayMenu(recording); diff --git a/electron/preload.ts b/electron/preload.ts index a2d5e293e..fe1025cc9 100644 --- a/electron/preload.ts +++ b/electron/preload.ts @@ -568,8 +568,8 @@ contextBridge.exposeInMainWorld("electronAPI", { getRecordedVideoPath: () => { return ipcRenderer.invoke("get-recorded-video-path"); }, - setRecordingState: (recording: boolean) => { - return ipcRenderer.invoke("set-recording-state", recording); + setRecordingState: (recording: boolean, paused?: boolean) => { + return ipcRenderer.invoke("set-recording-state", recording, paused); }, setCursorScale: (scale: number) => { return ipcRenderer.invoke("set-cursor-scale", scale); @@ -588,12 +588,22 @@ contextBridge.exposeInMainWorld("electronAPI", { ipcRenderer.on("stop-recording-from-tray", listener); return () => ipcRenderer.removeListener("stop-recording-from-tray", listener); }, + onTrayRecordingCommand: ( + callback: (command: "start" | "pause" | "resume" | "stop") => void, + ) => { + const listener = ( + _event: Electron.IpcRendererEvent, + command: "start" | "pause" | "resume" | "stop", + ) => callback(command); + ipcRenderer.on("tray-recording-command", listener); + return () => ipcRenderer.removeListener("tray-recording-command", listener); + }, onRecordingStateChanged: ( - callback: (state: { recording: boolean; sourceName: string }) => void, + callback: (state: { recording: boolean; paused: boolean; sourceName: string }) => void, ) => { const listener = ( _event: Electron.IpcRendererEvent, - payload: { recording: boolean; sourceName: string }, + payload: { recording: boolean; paused: boolean; sourceName: string }, ) => callback(payload); ipcRenderer.on("recording-state-changed", listener); return () => ipcRenderer.removeListener("recording-state-changed", listener); diff --git a/src/components/launch/LaunchWindow.module.css b/src/components/launch/LaunchWindow.module.css index 3638e7563..bfc745170 100644 --- a/src/components/launch/LaunchWindow.module.css +++ b/src/components/launch/LaunchWindow.module.css @@ -170,6 +170,16 @@ color: var(--launch-text); } +.ddItem:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.ddItem:disabled:hover { + background: transparent; + color: var(--launch-text-muted); +} + .ddItemSelected { background: var(--launch-selected); color: var(--launch-accent); diff --git a/src/components/launch/LaunchWindow.tsx b/src/components/launch/LaunchWindow.tsx index a2435c510..afff3b1a3 100644 --- a/src/components/launch/LaunchWindow.tsx +++ b/src/components/launch/LaunchWindow.tsx @@ -396,6 +396,9 @@ function LaunchWindowContent() { { void toggleHudCaptureProtection(); }} @@ -410,6 +413,21 @@ function LaunchWindowContent() { requestOpen("projects"); }); }} + onStartOrOpenSources={() => { + if (hasSelectedSource || platform === "linux") { + void toggleRecording(); + return; + } + + beginInteractiveHudAction(); + requestOpen("sources"); + }} + onStopRecording={() => { + void toggleRecording(); + }} + onPauseRecording={pauseRecording} + onResumeRecording={resumeRecording} + onToggleMicrophoneMute={toggleMicrophoneMute} showDevUpdatePreview={SHOW_DEV_UPDATE_PREVIEW} onPreviewUpdateUi={() => { if (openId) requestClose(openId); diff --git a/src/components/launch/popovers/MorePopover.test.tsx b/src/components/launch/popovers/MorePopover.test.tsx new file mode 100644 index 000000000..bfe21a15e --- /dev/null +++ b/src/components/launch/popovers/MorePopover.test.tsx @@ -0,0 +1,211 @@ +import { + Children, + type ComponentProps, + type ReactElement, + type ReactNode, + isValidElement, +} from "react"; +import { beforeEach, describe, expect, it, vi } from "vitest"; +import { MorePopover } from "./MorePopover"; + +const requestClose = vi.fn(); +const requestOpen = vi.fn(); +const setLocale = vi.fn(); +const setPreference = vi.fn(); + +const shortcutsState = { + launchShortcuts: { + startRecording: { key: "r", ctrl: true, shift: true }, + stopRecording: { key: "s", ctrl: true, shift: true }, + pauseRecording: { key: "p", ctrl: true, shift: true }, + resumeRecording: { key: "p", ctrl: true, shift: true, alt: true }, + muteMicrophone: { key: "m", ctrl: true, shift: true }, + }, + isMac: false, +}; + +const translations: Record = { + "recording.startRecording": "Start Recording", + "recording.pause": "Pause", + "recording.resume": "Resume", + "recording.stop": "Stop", + "recording.toggleMicrophoneMute": "Mute / Unmute Microphone", + "recording.recordingsFolder": "Recordings Path", + "recording.openVideoFile": "Open video file", + "recording.openProject": "Open project", + "recording.language": "Language", + "recording.appearance": "Appearance", + "common.light": "Light", + "common.dark": "Dark", + "common.system": "System", +}; + +vi.mock("@/contexts/ShortcutsContext", () => ({ + useShortcuts: () => shortcutsState, +})); + +vi.mock("@/contexts/I18nContext", () => ({ + useI18n: () => ({ locale: "en", setLocale }), + useScopedT: () => (key: string, fallback?: string) => translations[key] ?? fallback ?? key, +})); + +vi.mock("@/contexts/ThemeContext", () => ({ + useTheme: () => ({ preference: "system", setPreference }), +})); + +vi.mock("./LaunchPopoverCoordinator", () => ({ + useLaunchPopoverCoordinator: () => ({ + isOpen: () => true, + requestOpen, + requestClose, + }), +})); + +vi.mock("./PopoverScaffold", () => ({ + DropdownItem: ({ + onClick, + children, + trailing, + disabled, + }: { + onClick: () => void; + children: ReactNode; + trailing?: ReactNode; + disabled?: boolean; + }) => ( + + ), + HudPopover: ({ children }: { children: ReactNode }) =>
{children}
, +})); + +function createProps(overrides: Partial> = {}) { + return { + trigger: , + supportsHudCaptureProtection: false, + hideHudFromCapture: false, + recording: false, + paused: false, + countdownActive: false, + onToggleHudCaptureProtection: vi.fn(), + onChooseRecordingsDirectory: vi.fn(), + onOpenVideoFile: vi.fn(), + onOpenProjectBrowser: vi.fn(), + onStartOrOpenSources: vi.fn(), + onStopRecording: vi.fn(), + onPauseRecording: vi.fn(), + onResumeRecording: vi.fn(), + onToggleMicrophoneMute: vi.fn(), + showDevUpdatePreview: false, + onPreviewUpdateUi: vi.fn(), + appVersion: null, + ...overrides, + }; +} + +function expandNode(node: ReactNode): ReactNode { + if (Array.isArray(node)) { + return node.map((child) => expandNode(child)); + } + + if (!isValidElement(node)) { + return node; + } + + if (typeof node.type === "function") { + return expandNode(node.type(node.props)); + } + + const children = Children.map(node.props.children, (child) => expandNode(child)); + return { ...node, props: { ...node.props, children } }; +} + +function collectButtons(node: ReactNode): ReactElement[] { + if (Array.isArray(node)) { + return node.flatMap((child) => collectButtons(child)); + } + + if (!isValidElement(node)) { + return []; + } + + const childButtons = collectButtons(node.props.children); + return node.type === "button" ? [node, ...childButtons] : childButtons; +} + +function extractText(node: ReactNode): string { + if (Array.isArray(node)) { + return node.map((child) => extractText(child)).join(""); + } + + if (!isValidElement(node)) { + return typeof node === "string" || typeof node === "number" ? String(node) : ""; + } + + return extractText(node.props.children); +} + +function renderButtons(props: Partial> = {}) { + const tree = expandNode(); + return collectButtons(tree); +} + +function findButton(buttons: ReactElement[], text: string) { + return buttons.find((button) => extractText(button).includes(text)); +} + +describe("MorePopover", () => { + beforeEach(() => { + requestClose.mockReset(); + requestOpen.mockReset(); + setLocale.mockReset(); + setPreference.mockReset(); + shortcutsState.isMac = false; + }); + + it("shows the start recording shortcut in idle state", () => { + const buttons = renderButtons(); + const startButton = findButton(buttons, "Start Recording"); + + expect(startButton).toBeDefined(); + expect(extractText(startButton)).toContain("Ctrl + Shift + R"); + }); + + it("shows recording actions with state-aware shortcuts", () => { + const buttons = renderButtons({ recording: true, paused: false }); + + expect(extractText(findButton(buttons, "Pause"))).toContain("Ctrl + Shift + P"); + expect(extractText(findButton(buttons, "Stop"))).toContain("Ctrl + Shift + S"); + expect(extractText(findButton(buttons, "Mute / Unmute Microphone"))).toContain( + "Ctrl + Shift + M", + ); + }); + + it("shows the resume shortcut when recording is paused", () => { + const buttons = renderButtons({ recording: true, paused: true }); + + expect(extractText(findButton(buttons, "Resume"))).toContain("Ctrl + Shift + Alt + P"); + }); + + it("formats shortcuts for macOS display", () => { + shortcutsState.isMac = true; + const buttons = renderButtons(); + + expect(extractText(findButton(buttons, "Start Recording"))).toContain("⌘ + ⇧ + R"); + }); + + it("closes the popover and runs the selected action", () => { + const onStartOrOpenSources = vi.fn(); + const buttons = renderButtons({ onStartOrOpenSources }); + const startButton = findButton(buttons, "Start Recording"); + + expect(startButton).toBeDefined(); + + startButton?.props.onClick(); + + expect(requestClose).toHaveBeenCalledWith("more"); + expect(onStartOrOpenSources).toHaveBeenCalledTimes(1); + }); +}); diff --git a/src/components/launch/popovers/MorePopover.tsx b/src/components/launch/popovers/MorePopover.tsx index 9a5a52905..c173c4701 100644 --- a/src/components/launch/popovers/MorePopover.tsx +++ b/src/components/launch/popovers/MorePopover.tsx @@ -1,20 +1,25 @@ import { + ArrowClockwiseIcon, + DesktopIcon, EyeIcon, EyeSlashIcon, FolderOpenIcon, + MicrophoneIcon, + MoonIcon, + PauseIcon, + PlayIcon, + SquareIcon, + SunIcon, TranslateIcon, VideoCameraIcon, - ArrowClockwiseIcon, - SunIcon, - MoonIcon, - DesktopIcon, } from "@phosphor-icons/react"; import type { ReactElement } from "react"; -import { useI18n } from "@/contexts/I18nContext"; -import { useScopedT } from "@/contexts/I18nContext"; +import { useI18n, useScopedT } from "@/contexts/I18nContext"; +import { useShortcuts } from "@/contexts/ShortcutsContext"; import { useTheme } from "@/contexts/ThemeContext"; import type { AppLocale } from "@/i18n/config"; import { SUPPORTED_LOCALES } from "@/i18n/config"; +import { formatBinding } from "@/lib/shortcuts"; import styles from "../LaunchWindow.module.css"; import { useLaunchPopoverCoordinator } from "./LaunchPopoverCoordinator"; import { DropdownItem, HudPopover } from "./PopoverScaffold"; @@ -37,10 +42,18 @@ export function MorePopover({ trigger, supportsHudCaptureProtection, hideHudFromCapture, + recording, + paused, + countdownActive, onToggleHudCaptureProtection, onChooseRecordingsDirectory, onOpenVideoFile, onOpenProjectBrowser, + onStartOrOpenSources, + onStopRecording, + onPauseRecording, + onResumeRecording, + onToggleMicrophoneMute, showDevUpdatePreview, onPreviewUpdateUi, appVersion, @@ -48,10 +61,18 @@ export function MorePopover({ trigger: ReactElement; supportsHudCaptureProtection: boolean; hideHudFromCapture: boolean; + recording: boolean; + paused: boolean; + countdownActive: boolean; onToggleHudCaptureProtection: () => void; onChooseRecordingsDirectory: () => void; onOpenVideoFile: () => void; onOpenProjectBrowser: () => void; + onStartOrOpenSources: () => void; + onStopRecording: () => void; + onPauseRecording: () => void; + onResumeRecording: () => void; + onToggleMicrophoneMute: () => void; showDevUpdatePreview: boolean; onPreviewUpdateUi: () => void; appVersion: string | null; @@ -59,15 +80,30 @@ export function MorePopover({ const t = useScopedT("launch"); const { locale, setLocale } = useI18n(); const { preference, setPreference } = useTheme(); + const { launchShortcuts, isMac } = useShortcuts(); const { isOpen, requestOpen, requestClose } = useLaunchPopoverCoordinator(); const open = isOpen(POPOVER_ID); + const closePopover = () => requestClose(POPOVER_ID); + + const launchShortcutLabels = { + startRecording: formatBinding(launchShortcuts.startRecording, isMac), + stopRecording: formatBinding(launchShortcuts.stopRecording, isMac), + pauseRecording: formatBinding(launchShortcuts.pauseRecording, isMac), + resumeRecording: formatBinding(launchShortcuts.resumeRecording, isMac), + muteMicrophone: formatBinding(launchShortcuts.muteMicrophone, isMac), + } as const; + + const runMenuAction = (action: () => void) => { + closePopover(); + action(); + }; return ( { if (!nextOpen) { - requestClose(POPOVER_ID); + closePopover(); return; } requestOpen(POPOVER_ID); @@ -75,6 +111,51 @@ export function MorePopover({ trigger={trigger} align="end" > + {recording ? ( + <> + + ) : ( + + ) + } + onClick={() => runMenuAction(paused ? onResumeRecording : onPauseRecording)} + trailing={ + paused + ? launchShortcutLabels.resumeRecording + : launchShortcutLabels.pauseRecording + } + > + {paused ? t("recording.resume") : t("recording.pause")} + + } + onClick={() => runMenuAction(onStopRecording)} + trailing={launchShortcutLabels.stopRecording} + > + {t("recording.stop")} + + } + onClick={() => runMenuAction(onToggleMicrophoneMute)} + trailing={launchShortcutLabels.muteMicrophone} + > + {t("recording.toggleMicrophoneMute", "Mute / Unmute Microphone")} + + + ) : ( + } + onClick={() => runMenuAction(onStartOrOpenSources)} + disabled={countdownActive} + trailing={launchShortcutLabels.startRecording} + > + {t("recording.startRecording", "Start Recording")} + + )} +
{supportsHudCaptureProtection && ( : } @@ -89,7 +170,7 @@ export function MorePopover({ } onClick={() => { - requestClose(POPOVER_ID); + closePopover(); onChooseRecordingsDirectory(); }} > @@ -98,7 +179,7 @@ export function MorePopover({ } onClick={() => { - requestClose(POPOVER_ID); + closePopover(); onOpenVideoFile(); }} > @@ -107,7 +188,7 @@ export function MorePopover({ } onClick={() => { - requestClose(POPOVER_ID); + closePopover(); onOpenProjectBrowser(); }} > @@ -117,7 +198,7 @@ export function MorePopover({ } onClick={() => { - requestClose(POPOVER_ID); + closePopover(); onPreviewUpdateUi(); }} > @@ -132,7 +213,7 @@ export function MorePopover({ selected={preference === "light"} onClick={() => { setPreference("light"); - requestClose(POPOVER_ID); + closePopover(); }} > {t("common.light", "Light")} @@ -142,7 +223,7 @@ export function MorePopover({ selected={preference === "dark"} onClick={() => { setPreference("dark"); - requestClose(POPOVER_ID); + closePopover(); }} > {t("common.dark", "Dark")} @@ -152,7 +233,7 @@ export function MorePopover({ selected={preference === "system"} onClick={() => { setPreference("system"); - requestClose(POPOVER_ID); + closePopover(); }} > {t("common.system", "System")} @@ -167,7 +248,7 @@ export function MorePopover({ selected={locale === code} onClick={() => { setLocale(code as AppLocale); - requestClose(POPOVER_ID); + closePopover(); }} > {LOCALE_LABELS[code] ?? code} diff --git a/src/components/launch/popovers/PopoverScaffold.tsx b/src/components/launch/popovers/PopoverScaffold.tsx index be349192b..57ca97d68 100644 --- a/src/components/launch/popovers/PopoverScaffold.tsx +++ b/src/components/launch/popovers/PopoverScaffold.tsx @@ -11,12 +11,14 @@ import { useHudInteraction } from "../contexts/HudInteractionContext"; export function DropdownItem({ onClick, selected, + disabled, icon, children, trailing, }: { onClick: () => void; selected?: boolean; + disabled?: boolean; icon: ReactNode; children: ReactNode; trailing?: ReactNode; @@ -26,10 +28,13 @@ export function DropdownItem({ type="button" className={`${styles.ddItem} ${selected ? styles.ddItemSelected : ""}`} onClick={onClick} + disabled={disabled} > {icon} - {children} - {trailing} + {children} + {trailing ? ( + {trailing} + ) : null} ); } diff --git a/src/hooks/useScreenRecorder.ts b/src/hooks/useScreenRecorder.ts index bb1f4e3da..c3eb5648b 100644 --- a/src/hooks/useScreenRecorder.ts +++ b/src/hooks/useScreenRecorder.ts @@ -1171,7 +1171,7 @@ export function useScreenRecorder(): UseScreenRecorderReturn { `[PERF:RENDERER] IPC: stopNativeScreenRecording: COMPLETED in ${(performance.now() - ipcStopStart).toFixed(2)}ms`, ); - await window.electronAPI?.setRecordingState(false); + await window.electronAPI?.setRecordingState(false, false); if (!result.success || !result.path) { console.error( @@ -1290,7 +1290,7 @@ export function useScreenRecorder(): UseScreenRecorderReturn { recorder.stop(); setRecording(false); setFinalizing(true); - window.electronAPI?.setRecordingState(false); + window.electronAPI?.setRecordingState(false, false); } }); @@ -1377,6 +1377,7 @@ export function useScreenRecorder(): UseScreenRecorderReturn { const removeRecordingStateListener = window.electronAPI?.onRecordingStateChanged?.( (state) => { setRecording(state.recording); + setPaused(state.paused); }, ); @@ -1384,9 +1385,10 @@ export function useScreenRecorder(): UseScreenRecorderReturn { (state) => { void (async () => { setRecording(false); + setPaused(false); nativeScreenRecording.current = false; cleanupCapturedMedia(); - await window.electronAPI.setRecordingState(false); + await window.electronAPI.setRecordingState(false, false); if (state.reason !== "window-unavailable") { try { @@ -1649,7 +1651,7 @@ export function useScreenRecorder(): UseScreenRecorderReturn { setRecording(true); try { - await window.electronAPI?.setRecordingState(true); + await window.electronAPI?.setRecordingState(true, false); } catch (stateError) { console.warn( "Failed to notify main process that native recording started:", @@ -2021,7 +2023,7 @@ export function useScreenRecorder(): UseScreenRecorderReturn { recorder.start(RECORDER_TIMESLICE_MS); setRecording(true); try { - await window.electronAPI?.setRecordingState(true); + await window.electronAPI?.setRecordingState(true, false); } catch (stateError) { console.warn("Failed to notify main process that recording started:", stateError); } @@ -2034,7 +2036,7 @@ export function useScreenRecorder(): UseScreenRecorderReturn { ); setRecording(false); try { - await window.electronAPI?.setRecordingState(false); + await window.electronAPI?.setRecordingState(false, false); } catch (stateError) { console.warn("Failed to reset main-process recording state:", stateError); } finally { @@ -2068,6 +2070,7 @@ export function useScreenRecorder(): UseScreenRecorderReturn { const boundaryMs = Date.now(); markRecordingPaused(boundaryMs); setPaused(true); + void window.electronAPI.setRecordingState(true, true); try { await window.electronAPI.pauseCursorCapture(boundaryMs); } catch (error) { @@ -2085,6 +2088,7 @@ export function useScreenRecorder(): UseScreenRecorderReturn { const boundaryMs = Date.now(); markRecordingPaused(boundaryMs); setPaused(true); + void window.electronAPI.setRecordingState(true, true); try { await window.electronAPI.pauseCursorCapture(boundaryMs); } catch (error) { @@ -2114,6 +2118,7 @@ export function useScreenRecorder(): UseScreenRecorderReturn { const boundaryMs = Date.now(); markRecordingResumed(boundaryMs); setPaused(false); + void window.electronAPI.setRecordingState(true, false); try { await window.electronAPI.resumeCursorCapture(boundaryMs); } catch (error) { @@ -2131,6 +2136,7 @@ export function useScreenRecorder(): UseScreenRecorderReturn { const boundaryMs = Date.now(); markRecordingResumed(boundaryMs); setPaused(false); + void window.electronAPI.setRecordingState(true, false); try { await window.electronAPI.resumeCursorCapture(boundaryMs); } catch (error) { @@ -2162,7 +2168,7 @@ export function useScreenRecorder(): UseScreenRecorderReturn { nativeScreenRecording.current = false; nativeWindowsRecording.current = false; setRecording(false); - window.electronAPI?.setRecordingState(false); + window.electronAPI?.setRecordingState(false, false); void (async () => { try { const result = await window.electronAPI.stopNativeScreenRecording(); @@ -2183,7 +2189,7 @@ export function useScreenRecorder(): UseScreenRecorderReturn { mediaRecorder.current.stop(); } setRecording(false); - window.electronAPI?.setRecordingState(false); + window.electronAPI?.setRecordingState(false, false); } }, [cleanupCapturedMedia, markRecordingResumed, recording]); @@ -2213,6 +2219,29 @@ export function useScreenRecorder(): UseScreenRecorderReturn { startRecording(); }; + useEffect(() => { + if (!window.electronAPI?.onTrayRecordingCommand) { + return; + } + + return window.electronAPI.onTrayRecordingCommand((command) => { + switch (command) { + case "start": + void toggleRecording(); + break; + case "pause": + pauseRecording(); + break; + case "resume": + resumeRecording(); + break; + case "stop": + stopRecording.current(); + break; + } + }); + }, [pauseRecording, resumeRecording, toggleRecording]); + return { recording, paused, diff --git a/src/i18n/locales/en/launch.json b/src/i18n/locales/en/launch.json index 9dfcbe038..e6953525b 100644 --- a/src/i18n/locales/en/launch.json +++ b/src/i18n/locales/en/launch.json @@ -10,6 +10,7 @@ "countdownDelay": "Countdown delay", "noDelay": "No delay", "record": "Record", + "startRecording": "Start Recording", "recordingFolder": "Recordings Path: {{path}}", "chooseRecordingsFolder": "Choose recordings path", "folderPath": "Path: /{{name}}/", @@ -25,6 +26,7 @@ "window": "Window", "noSourcesFound": "No sources found", "microphone": "Microphone", + "toggleMicrophoneMute": "Mute / Unmute Microphone", "turnOffMicrophone": "Turn Off Microphone", "selectMicToEnable": "Select a microphone to enable", "noMicrophonesFound": "No microphones found", diff --git a/src/i18n/locales/es/launch.json b/src/i18n/locales/es/launch.json index a458844a2..c504345da 100644 --- a/src/i18n/locales/es/launch.json +++ b/src/i18n/locales/es/launch.json @@ -10,6 +10,7 @@ "countdownDelay": "Retraso de cuenta regresiva", "noDelay": "Sin retraso", "record": "Grabar", + "startRecording": "Iniciar grabacion", "recordingFolder": "Carpeta de grabaciones: {{path}}", "chooseRecordingsFolder": "Elegir carpeta de grabaciones", "folderPath": "Ruta: /{{name}}/", @@ -25,6 +26,7 @@ "window": "Ventana", "noSourcesFound": "No se encontraron fuentes", "microphone": "Micrófono", + "toggleMicrophoneMute": "Silenciar / reactivar microfono", "turnOffMicrophone": "Desactivar micrófono", "selectMicToEnable": "Selecciona un micrófono para activar", "noMicrophonesFound": "No se encontraron micrófonos", diff --git a/src/i18n/locales/fr/launch.json b/src/i18n/locales/fr/launch.json index df2e43b2b..84c0ed4ba 100644 --- a/src/i18n/locales/fr/launch.json +++ b/src/i18n/locales/fr/launch.json @@ -10,6 +10,7 @@ "countdownDelay": "Délai du compte à rebours", "noDelay": "Aucun délai", "record": "Enregistrer", + "startRecording": "Demarrer l'enregistrement", "recordingFolder": "Chemin des enregistrements : {{path}}", "chooseRecordingsFolder": "Choisir le chemin des enregistrements", "folderPath": "Chemin : /{{name}}/", @@ -25,6 +26,7 @@ "window": "Fenêtre", "noSourcesFound": "Aucune source trouvée", "microphone": "Microphone", + "toggleMicrophoneMute": "Couper / reactiver le microphone", "turnOffMicrophone": "Désactiver le microphone", "selectMicToEnable": "Sélectionnez un microphone à activer", "noMicrophonesFound": "Aucun microphone trouvé", diff --git a/src/i18n/locales/it/launch.json b/src/i18n/locales/it/launch.json index c27abc3ad..d0eb73091 100644 --- a/src/i18n/locales/it/launch.json +++ b/src/i18n/locales/it/launch.json @@ -10,6 +10,7 @@ "countdownDelay": "Ritardo conto alla rovescia", "noDelay": "Nessun ritardo", "record": "Registra", + "startRecording": "Avvia registrazione", "recordingFolder": "Percorso registrazioni: {{path}}", "chooseRecordingsFolder": "Scegli percorso registrazioni", "folderPath": "Percorso: /{{name}}/", @@ -25,6 +26,7 @@ "window": "Finestra", "noSourcesFound": "Nessuna sorgente trovata", "microphone": "Microfono", + "toggleMicrophoneMute": "Disattiva / riattiva microfono", "turnOffMicrophone": "Spegni microfono", "selectMicToEnable": "Seleziona un microfono da abilitare", "noMicrophonesFound": "Nessun microfono trovato", diff --git a/src/i18n/locales/ko/launch.json b/src/i18n/locales/ko/launch.json index 345000399..eca50d77d 100644 --- a/src/i18n/locales/ko/launch.json +++ b/src/i18n/locales/ko/launch.json @@ -10,6 +10,7 @@ "countdownDelay": "카운트다운 지연", "noDelay": "지연 없음", "record": "녹화", + "startRecording": "녹화 시작", "recordingFolder": "녹화 폴더: {{path}}", "chooseRecordingsFolder": "녹화 폴더 선택", "folderPath": "경로: /{{name}}/", @@ -25,6 +26,7 @@ "window": "창", "noSourcesFound": "사용 가능한 소스를 찾을 수 없습니다", "microphone": "마이크", + "toggleMicrophoneMute": "마이크 음소거 / 음소거 해제", "turnOffMicrophone": "마이크 끄기", "selectMicToEnable": "사용할 마이크를 선택하세요", "noMicrophonesFound": "마이크를 찾을 수 없습니다", diff --git a/src/i18n/locales/nl/launch.json b/src/i18n/locales/nl/launch.json index d3d5870c9..7ef3a7720 100644 --- a/src/i18n/locales/nl/launch.json +++ b/src/i18n/locales/nl/launch.json @@ -10,6 +10,7 @@ "countdownDelay": "Aftelvertraging", "noDelay": "Geen vertraging", "record": "Opnemen", + "startRecording": "Opname starten", "recordingFolder": "Opnamepad: {{path}}", "chooseRecordingsFolder": "Kies opnamepad", "folderPath": "Pad: /{{name}}/", @@ -25,6 +26,7 @@ "window": "Venster", "noSourcesFound": "Geen bronnen gevonden", "microphone": "Microfoon", + "toggleMicrophoneMute": "Microfoon dempen / dempen opheffen", "turnOffMicrophone": "Microfoon uitschakelen", "selectMicToEnable": "Selecteer een microfoon om in te schakelen", "noMicrophonesFound": "Geen microfoons gevonden", diff --git a/src/i18n/locales/pt-BR/launch.json b/src/i18n/locales/pt-BR/launch.json index 8d19ac7db..d0749b589 100644 --- a/src/i18n/locales/pt-BR/launch.json +++ b/src/i18n/locales/pt-BR/launch.json @@ -10,6 +10,7 @@ "countdownDelay": "Atraso da contagem regressiva", "noDelay": "Sem atraso", "record": "Gravar", + "startRecording": "Iniciar gravacao", "recordingFolder": "Caminho das gravações: {{path}}", "chooseRecordingsFolder": "Escolher caminho das gravações", "folderPath": "Caminho: /{{name}}/", @@ -25,6 +26,7 @@ "window": "Janela", "noSourcesFound": "Nenhuma fonte encontrada", "microphone": "Microfone", + "toggleMicrophoneMute": "Silenciar / reativar microfone", "turnOffMicrophone": "Desligar microfone", "selectMicToEnable": "Selecione um microfone para ativar", "noMicrophonesFound": "Nenhum microfone encontrado", diff --git a/src/i18n/locales/zh-CN/launch.json b/src/i18n/locales/zh-CN/launch.json index 164c02afe..3cfa58ad9 100644 --- a/src/i18n/locales/zh-CN/launch.json +++ b/src/i18n/locales/zh-CN/launch.json @@ -10,6 +10,7 @@ "countdownDelay": "倒计时延迟", "noDelay": "无延迟", "record": "录制", + "startRecording": "开始录制", "recordingFolder": "录制文件夹:{{path}}", "chooseRecordingsFolder": "选择录制文件夹", "folderPath": "路径:/{{name}}/", @@ -25,6 +26,7 @@ "window": "窗口", "noSourcesFound": "未找到源", "microphone": "麦克风", + "toggleMicrophoneMute": "麦克风静音 / 取消静音", "turnOffMicrophone": "关闭麦克风", "selectMicToEnable": "选择一个麦克风以启用", "noMicrophonesFound": "未找到麦克风", diff --git a/src/i18n/locales/zh-TW/launch.json b/src/i18n/locales/zh-TW/launch.json index 12ec494d0..04e874646 100644 --- a/src/i18n/locales/zh-TW/launch.json +++ b/src/i18n/locales/zh-TW/launch.json @@ -10,6 +10,7 @@ "countdownDelay": "倒數延遲", "noDelay": "無延遲", "record": "錄製", + "startRecording": "開始錄製", "recordingFolder": "錄影儲存路徑:{{path}}", "chooseRecordingsFolder": "選擇錄影儲存路徑", "folderPath": "路徑:/{{name}}/", @@ -25,6 +26,7 @@ "window": "視窗", "noSourcesFound": "找不到可錄製的來源", "microphone": "麥克風", + "toggleMicrophoneMute": "麥克風靜音 / 取消靜音", "turnOffMicrophone": "關閉麥克風", "selectMicToEnable": "選擇要啟用的麥克風", "noMicrophonesFound": "找不到麥克風",