From eade155491911b5cf7369221519eead5e51a1b96 Mon Sep 17 00:00:00 2001 From: webadderall <131426131+webadderall@users.noreply.github.com> Date: Fri, 13 Nov 2026 15:15:32 +1100 Subject: [PATCH 1/3] Fix Windows source picking, HUD overlays, and window controls --- electron/electron-env.d.ts | 13 +- electron/hudPointerRecovery.test.ts | 47 +++++ electron/hudPointerRecovery.ts | 20 +++ electron/ipc/capturePickerSources.test.ts | 40 ++++- electron/ipc/capturePickerSources.ts | 32 ++-- electron/ipc/recording/focus.test.ts | 33 ++++ electron/ipc/recording/focus.ts | 9 +- electron/ipc/register/settings.test.ts | 34 ++++ electron/ipc/register/settings.ts | 8 +- electron/ipc/windowsWindowControl.test.ts | 55 ++++++ electron/ipc/windowsWindowControl.ts | 47 ++++- electron/ipc/windowsWindowGeometry.ts | 15 ++ .../native/bin/win32-x64/cursor-monitor.exe | Bin 26112 -> 283136 bytes .../bin/win32-x64/helpers-manifest.json | 6 +- electron/native/cursor-monitor/CMakeLists.txt | 2 +- electron/native/cursor-monitor/src/main.cpp | 57 +++++- electron/preload.ts | 16 +- electron/recordingFocus.test.ts | 28 ++- electron/recordingFocus.ts | 19 +- electron/windowControls.test.ts | 38 ++++ electron/windowControls.ts | 25 +++ electron/windows.ts | 58 +++++- .../auth/OnboardingPermissions.test.tsx | 28 ++- src/components/auth/OnboardingPermissions.tsx | 165 +++++++++--------- src/components/launch/LaunchWindow.tsx | 29 ++- .../video-editor/layout/AppFrameHeader.tsx | 36 +++- .../layout/WindowControls.test.tsx | 27 +++ .../video-editor/layout/WindowControls.tsx | 58 ++++++ 28 files changed, 801 insertions(+), 144 deletions(-) create mode 100644 electron/hudPointerRecovery.test.ts create mode 100644 electron/hudPointerRecovery.ts create mode 100644 electron/ipc/recording/focus.test.ts create mode 100644 electron/ipc/windowsWindowControl.test.ts create mode 100644 electron/ipc/windowsWindowGeometry.ts create mode 100644 electron/windowControls.test.ts create mode 100644 electron/windowControls.ts create mode 100644 src/components/video-editor/layout/WindowControls.test.tsx create mode 100644 src/components/video-editor/layout/WindowControls.tsx diff --git a/electron/electron-env.d.ts b/electron/electron-env.d.ts index 28aa51367..af8fc27d5 100644 --- a/electron/electron-env.d.ts +++ b/electron/electron-env.d.ts @@ -1173,9 +1173,18 @@ interface Window { onMenuLoadProject: (callback: () => void) => () => void; onMenuSaveProject: (callback: () => void) => () => void; onMenuSaveProjectAs: (callback: () => void) => () => void; - getWindowChrome: () => Promise<{ trafficLightsVisible: boolean }>; + getWindowChrome: () => Promise<{ + trafficLightsVisible: boolean; + customControls?: boolean; + maximized?: boolean; + }>; + windowControl: (action: "minimize" | "maximize" | "close") => Promise<{ success: boolean }>; onWindowChromeChanged: ( - callback: (chrome: { trafficLightsVisible: boolean }) => void, + callback: (chrome: { + trafficLightsVisible: boolean; + customControls?: boolean; + maximized?: boolean; + }) => void, ) => () => void; getPlatform: () => Promise; isWindowFullscreen: () => Promise; diff --git a/electron/hudPointerRecovery.test.ts b/electron/hudPointerRecovery.test.ts new file mode 100644 index 000000000..eeda357b9 --- /dev/null +++ b/electron/hudPointerRecovery.test.ts @@ -0,0 +1,47 @@ +import { afterEach, expect, it, vi } from "vitest"; +import { startHudPointerRecovery } from "./hudPointerRecovery"; + +afterEach(() => vi.useRealTimers()); + +it("restores buttons without any renderer mouse events, including after native state is lost again", async () => { + vi.useFakeTimers(); + let cursor = { x: 500, y: 720 }; + const recover = vi.fn(); + const stop = startHudPointerRecovery({ + canRecover: () => true, + getCursor: () => cursor, + getBounds: () => [{ left: 300, top: 700, right: 900, bottom: 760 }], + recover, + }); + await vi.advanceTimersByTimeAsync(50); + expect(recover).toHaveBeenCalledOnce(); + await vi.advanceTimersByTimeAsync(50); + expect(recover).toHaveBeenCalledTimes(2); + cursor = { x: 100, y: 100 }; + await vi.advanceTimersByTimeAsync(100); + expect(recover).toHaveBeenCalledTimes(2); + stop(); + expect(vi.getTimerCount()).toBe(0); +}); + +it("does not intercept the native source picker or hidden HUD and picks up new popovers", async () => { + vi.useFakeTimers(); + let enabled = false; + let bounds = [{ left: 300, top: 700, right: 900, bottom: 760 }]; + const recover = vi.fn(); + const stop = startHudPointerRecovery({ + canRecover: () => enabled, + getCursor: () => ({ x: 500, y: 600 }), + getBounds: () => bounds, + recover, + }); + await vi.advanceTimersByTimeAsync(100); + expect(recover).not.toHaveBeenCalled(); + enabled = true; + await vi.advanceTimersByTimeAsync(50); + expect(recover).not.toHaveBeenCalled(); + bounds = [...bounds, { left: 300, top: 500, right: 900, bottom: 690 }]; + await vi.advanceTimersByTimeAsync(50); + expect(recover).toHaveBeenCalledOnce(); + stop(); +}); diff --git a/electron/hudPointerRecovery.ts b/electron/hudPointerRecovery.ts new file mode 100644 index 000000000..6438d01b5 --- /dev/null +++ b/electron/hudPointerRecovery.ts @@ -0,0 +1,20 @@ +import { + type HudInteractiveBounds, + isPointerOverHudSurface, +} from "../src/components/launch/hudMousePassthrough"; + +/** Recover Windows hover hit testing without relying on forwarded renderer mouse events. */ +export function startHudPointerRecovery(deps: { + canRecover: () => boolean; + getCursor: () => { x: number; y: number }; + getBounds: () => HudInteractiveBounds[] | null; + recover: () => void; +}) { + const timer = setInterval(() => { + if (!deps.canRecover()) return; + const { x, y } = deps.getCursor(); + if (isPointerOverHudSurface(deps.getBounds() ?? [], x, y)) deps.recover(); + }, 50); + timer.unref?.(); + return () => clearInterval(timer); +} diff --git a/electron/ipc/capturePickerSources.test.ts b/electron/ipc/capturePickerSources.test.ts index f6780f5b0..985269384 100644 --- a/electron/ipc/capturePickerSources.test.ts +++ b/electron/ipc/capturePickerSources.test.ts @@ -1,10 +1,13 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; + const mocks = vi.hoisted(() => ({ exec: vi.fn(), sources: vi.fn(), mac: vi.fn(), dip: vi.fn(), + geometry: vi.fn(), })); +vi.mock("./windowsWindowGeometry", () => ({ readWindowsWindowGeometry: mocks.geometry })); vi.mock("electron", () => ({ systemPreferences: { getMediaAccessStatus: () => "granted" } })); vi.mock("node:util", () => ({ promisify: () => mocks.exec })); vi.mock("./cursor/bounds", () => ({ @@ -15,17 +18,32 @@ vi.mock("./utils", () => ({ parseWindowId: (id?: string) => Number(id?.split(":")[1]), getScreen: () => ({ screenToDipRect: mocks.dip }), })); + import { listCapturePickerWindows } from "./capturePickerSources"; + const platform = process.platform; afterEach(() => Object.defineProperty(process, "platform", { value: platform })); beforeEach(() => { vi.resetAllMocks(); + mocks.geometry.mockRejectedValue(new Error("older helper")); mocks.sources.mockResolvedValue([ { id: "window:101:0", name: "Front" }, { id: "window:102:0", name: "Back" }, ]); }); describe("capture picker source adapters", () => { + it("uses native Windows geometry without starting PowerShell", async () => { + Object.defineProperty(process, "platform", { value: "win32" }); + mocks.geometry.mockResolvedValue([ + { id: 101, ownerPid: process.pid + 1, x: 100, y: 80, width: 800, height: 600 }, + ]); + mocks.dip.mockImplementation((_window, bounds) => bounds); + expect((await listCapturePickerWindows()).map((entry) => entry.id)).toEqual([ + "window:101:0", + ]); + expect(mocks.geometry).toHaveBeenCalledWith(["--list-windows"]); + expect(mocks.exec).not.toHaveBeenCalled(); + }); it("keeps Linux window selection on its source list without X11 helper probes", async () => { Object.defineProperty(process, "platform", { value: "linux" }); await expect(listCapturePickerWindows()).rejects.toThrow("Use the source list on Linux"); @@ -35,8 +53,8 @@ describe("capture picker source adapters", () => { Object.defineProperty(process, "platform", { value: "win32" }); mocks.exec.mockResolvedValue({ stdout: JSON.stringify([ - { id: 999, x: 0, y: 0, width: 20, height: 20 }, - { id: 101, x: -1600, y: 0, width: 800, height: 600 }, + { id: 999, ownerPid: 99, x: 0, y: 0, width: 20, height: 20 }, + { id: 101, ownerPid: 99, x: -1600, y: 0, width: 800, height: 600 }, ]), }); mocks.dip.mockReturnValue({ x: -800, y: 0, width: 400, height: 300 }); @@ -54,6 +72,24 @@ describe("capture picker source adapters", () => { ]); expect(mocks.dip).toHaveBeenCalledWith(null, expect.objectContaining({ x: -1600 })); }); + it("excludes Recordly's fullscreen Windows HUD without hiding other apps named Recordly", async () => { + Object.defineProperty(process, "platform", { value: "win32" }); + mocks.sources.mockResolvedValue([ + { id: "window:100:0", name: "Recordly" }, + { id: "window:101:0", name: "Recordly — browser" }, + ]); + mocks.exec.mockResolvedValue({ + stdout: JSON.stringify([ + { id: 100, ownerPid: process.pid, x: 0, y: 0, width: 1920, height: 1080 }, + { id: 101, ownerPid: process.pid + 1, x: 100, y: 100, width: 800, height: 600 }, + ]), + }); + mocks.dip.mockImplementation((_window, bounds) => bounds); + expect((await listCapturePickerWindows()).map((entry) => entry.id)).toEqual([ + "window:101:0", + ]); + expect(mocks.dip).toHaveBeenCalledTimes(1); + }); it("excludes Recordly's own macOS windows and invalid geometry", async () => { Object.defineProperty(process, "platform", { value: "darwin" }); mocks.mac.mockResolvedValue([ diff --git a/electron/ipc/capturePickerSources.ts b/electron/ipc/capturePickerSources.ts index 37d78bbe2..3a3fc8925 100644 --- a/electron/ipc/capturePickerSources.ts +++ b/electron/ipc/capturePickerSources.ts @@ -1,10 +1,11 @@ -import { systemPreferences } from "electron"; import { execFile } from "node:child_process"; import { promisify } from "node:util"; +import { systemPreferences } from "electron"; import { getNativeMacWindowsFrontToBack } from "./cursor/bounds"; +import { getDesktopSources } from "./register/sources"; import type { CapturePickerWindow, SelectedSource } from "./types"; import { getScreen, parseWindowId } from "./utils"; -import { getDesktopSources } from "./register/sources"; +import { readWindowsWindowGeometry } from "./windowsWindowGeometry"; const exec = promisify(execFile); @@ -19,18 +20,20 @@ public static class RecordlyPickerWindows { [DllImport("user32.dll")] static extern bool IsWindowVisible(IntPtr h); [DllImport("user32.dll")] static extern bool IsIconic(IntPtr h); [DllImport("user32.dll")] static extern bool GetWindowRect(IntPtr h, out RECT rect); + [DllImport("user32.dll")] static extern uint GetWindowThreadProcessId(IntPtr h, out uint processId); [DllImport("user32.dll")] static extern IntPtr SetThreadDpiAwarenessContext(IntPtr context); [DllImport("dwmapi.dll")] static extern int DwmGetWindowAttribute(IntPtr h, int attribute, out RECT rect, int size); - public class Entry { public long id; public int x, y, width, height; } + public class Entry { public long id; public uint ownerPid; public int x, y, width, height; } public static Entry[] List() { SetThreadDpiAwarenessContext(new IntPtr(-4)); var list = new List(); var seen = new HashSet(); for (var h = GetTopWindow(IntPtr.Zero); h != IntPtr.Zero && seen.Add(h.ToInt64()); h = GetWindow(h, 2)) { if (!IsWindowVisible(h) || IsIconic(h)) continue; + uint ownerPid; GetWindowThreadProcessId(h, out ownerPid); RECT rect; if (DwmGetWindowAttribute(h, 9, out rect, Marshal.SizeOf(typeof(RECT))) != 0 && !GetWindowRect(h, out rect)) continue; if (rect.Right <= rect.Left || rect.Bottom <= rect.Top) continue; - list.Add(new Entry { id = h.ToInt64(), x = rect.Left, y = rect.Top, width = rect.Right - rect.Left, height = rect.Bottom - rect.Top }); + list.Add(new Entry { id = h.ToInt64(), ownerPid = ownerPid, x = rect.Left, y = rect.Top, width = rect.Right - rect.Left, height = rect.Bottom - rect.Top }); } return list.ToArray(); } @@ -76,17 +79,26 @@ export async function listCapturePickerWindows(): Promise typeof source.id === "string" && source.id.startsWith("window:"), ); const byId = new Map(capturable.map((source) => [parseWindowId(source.id), source])); - const { stdout } = await exec( - "powershell.exe", - ["-NoProfile", "-NonInteractive", "-Command", WINDOWS_SCRIPT], - { timeout: 10000, maxBuffer: 4 * 1024 * 1024 }, - ); - const entries: unknown = JSON.parse(stdout); + let entries: unknown; + try { + entries = await readWindowsWindowGeometry(["--list-windows"]); + } catch { + // Keep selection working with older packaged helper binaries. + const { stdout } = await exec( + "powershell.exe", + ["-NoProfile", "-NonInteractive", "-Command", WINDOWS_SCRIPT], + { timeout: 15000, windowsHide: true, maxBuffer: 4 * 1024 * 1024 }, + ); + entries = JSON.parse(stdout); + } if (!Array.isArray(entries)) throw new Error("Unable to read window positions."); return entries.flatMap((entry) => { const source = byId.get(entry.id); if ( !source || + // The transparent fullscreen HUD sits above other apps. Never let it + // (or another Recordly window) mask the windows underneath in hit tests. + entry.ownerPid === process.pid || ![entry.x, entry.y, entry.width, entry.height].every(Number.isFinite) || entry.width <= 0 || entry.height <= 0 diff --git a/electron/ipc/recording/focus.test.ts b/electron/ipc/recording/focus.test.ts new file mode 100644 index 000000000..aa95863c4 --- /dev/null +++ b/electron/ipc/recording/focus.test.ts @@ -0,0 +1,33 @@ +import { afterEach, expect, it, vi } from "vitest"; + +const mocks = vi.hoisted(() => ({ windows: vi.fn(), show: vi.fn(), hide: vi.fn() })); +vi.mock("../../windows", () => ({ + showRecordingFocus: mocks.show, + hideRecordingFocus: mocks.hide, +})); +vi.mock("../windowsWindowControl", () => ({ resolveWindowsWindowBounds: mocks.windows })); +vi.mock("../cursor/bounds", () => ({ + resolveLinuxWindowBounds: vi.fn(), + resolveMacWindowBounds: vi.fn(), +})); +vi.mock("../state", () => ({ isCursorCaptureActive: true, selectedWindowBounds: null })); +vi.mock("./ffmpeg", () => ({ getDisplayBoundsForSource: vi.fn() })); + +import { recordingFocus } from "./focus"; + +const platform = process.platform; +afterEach(() => { + recordingFocus.stop(); + Object.defineProperty(process, "platform", { value: platform }); + vi.resetAllMocks(); +}); + +it("keeps a Windows surround visible during recording when the telemetry bounds cache is empty", async () => { + Object.defineProperty(process, "platform", { value: "win32" }); + const source = { id: "window:101:0", name: "Test window" }; + const bounds = { x: 100, y: 80, width: 800, height: 600 }; + mocks.windows.mockResolvedValue(bounds); + await recordingFocus.start(source); + expect(mocks.windows).toHaveBeenCalledWith(source); + expect(mocks.show).toHaveBeenCalledWith(bounds); +}); diff --git a/electron/ipc/recording/focus.ts b/electron/ipc/recording/focus.ts index 2bbfa4fa5..63547d577 100644 --- a/electron/ipc/recording/focus.ts +++ b/electron/ipc/recording/focus.ts @@ -1,8 +1,8 @@ import { createRecordingFocusController } from "../../recordingFocus"; import { hideRecordingFocus, showRecordingFocus } from "../../windows"; import { resolveLinuxWindowBounds, resolveMacWindowBounds } from "../cursor/bounds"; -import { isCursorCaptureActive, selectedWindowBounds } from "../state"; import { getSourceArea } from "../sourceArea"; +import { isCursorCaptureActive, selectedWindowBounds } from "../state"; import { resolveWindowsWindowBounds } from "../windowsWindowControl"; import { getDisplayBoundsForSource } from "./ffmpeg"; @@ -11,9 +11,12 @@ export const recordingFocus = createRecordingFocusController({ const area = getSourceArea(source); if (area) return area; if (source.id?.startsWith("window:")) { - if (isCursorCaptureActive) return selectedWindowBounds; - if (process.platform === "darwin") return resolveMacWindowBounds(source); + // Windows bounds queries are shared with telemetry. Keep resolving the + // actual HWND across the transition instead of hiding the mask when + // recording clears or temporarily misses its telemetry bounds cache. if (process.platform === "win32") return resolveWindowsWindowBounds(source); + if (isCursorCaptureActive && selectedWindowBounds) return selectedWindowBounds; + if (process.platform === "darwin") return resolveMacWindowBounds(source); if (process.platform === "linux") return resolveLinuxWindowBounds(source); return null; } diff --git a/electron/ipc/register/settings.test.ts b/electron/ipc/register/settings.test.ts index 2f6569344..5d525c568 100644 --- a/electron/ipc/register/settings.test.ts +++ b/electron/ipc/register/settings.test.ts @@ -8,10 +8,12 @@ const mocks = vi.hoisted(() => ({ healthySend: vi.fn(), focusStart: vi.fn(), focusStop: vi.fn(), + fromContents: vi.fn(), })); vi.mock("electron", () => ({ app: {}, BrowserWindow: { + fromWebContents: mocks.fromContents, getAllWindows: () => [ { isDestroyed: () => false, @@ -57,6 +59,36 @@ import { writeAppSettingsStore, } from "../../appSettingsStore"; +describe("custom window controls", () => { + const platform = process.platform; + afterEach(() => Object.defineProperty(process, "platform", { value: platform })); + it.each(["win32", "linux", "darwin"])("reports appropriate controls for %s", (platform) => { + Object.defineProperty(process, "platform", { value: platform }); + mocks.fromContents.mockReturnValue({ + isMaximized: () => true, + isFullScreen: () => false, + isSimpleFullScreen: () => false, + }); + registerSettingsHandlers(); + expect(mocks.handlers.get("get-window-chrome")!({ sender: {} })).toEqual({ + customControls: platform !== "darwin", + maximized: true, + trafficLightsVisible: platform === "darwin", + }); + }); + it("applies controls to the sender's window rather than a global window", () => { + const sender = {}; + const close = vi.fn(); + mocks.fromContents.mockReturnValue({ isDestroyed: () => false, close }); + registerSettingsHandlers(); + expect(mocks.handlers.get("window-control")!({ sender }, "close")).toEqual({ + success: true, + }); + expect(mocks.fromContents).toHaveBeenCalledWith(sender); + expect(close).toHaveBeenCalledOnce(); + }); +}); + describe("app setting read status", () => { beforeEach(() => { mocks.syncHandlers.clear(); @@ -163,6 +195,7 @@ describe("inline recording countdown", () => { mocks.handlers.clear(); mocks.send.mockReset(); mocks.healthySend.mockClear(); + mocks.focusStart.mockClear(); registerSettingsHandlers(); }); afterEach(() => { @@ -175,6 +208,7 @@ describe("inline recording countdown", () => { const pending = mocks.handlers.get("start-countdown")!({ sender }, 3); await vi.advanceTimersByTimeAsync(3000); await expect(pending).resolves.toEqual({ success: true }); + expect(mocks.focusStart).not.toHaveBeenCalled(); expect(mocks.send.mock.calls).toEqual([ ["countdown-tick", 3], ["countdown-tick", 2], diff --git a/electron/ipc/register/settings.ts b/electron/ipc/register/settings.ts index a1e95b690..63ae0681a 100644 --- a/electron/ipc/register/settings.ts +++ b/electron/ipc/register/settings.ts @@ -1,4 +1,5 @@ import { recordingFocus } from "../recording/focus"; +import { applyWindowControl } from "../../windowControls"; import { createCountdownController } from "../../countdownController"; import fs from "node:fs/promises"; import { app, BrowserWindow, ipcMain } from "electron"; @@ -15,7 +16,6 @@ import { } from "../settings/recordingPreferencesStore"; import { countdownInProgress, - selectedSource, countdownRemaining, setCountdownInProgress, setCountdownRemaining, @@ -56,6 +56,8 @@ export function registerSettingsHandlers() { ipcMain.handle("get-window-chrome", (event) => { const win = BrowserWindow.fromWebContents(event.sender); return { + customControls: process.platform === "win32" || process.platform === "linux", + maximized: win?.isMaximized() ?? false, trafficLightsVisible: process.platform === "darwin" && !!win && @@ -63,6 +65,9 @@ export function registerSettingsHandlers() { !win.isSimpleFullScreen(), }; }); + ipcMain.handle("window-control", (event, action: unknown) => ({ + success: applyWindowControl(BrowserWindow.fromWebContents(event.sender), action), + })); ipcMain.handle("get-platform", () => { return process.platform; @@ -233,7 +238,6 @@ export function registerSettingsHandlers() { const cancel = () => countdown.cancel(); owner.once("destroyed", cancel); owner.once("render-process-gone", cancel); - void recordingFocus.start(selectedSource); try { const result = await countdown.start(seconds); if (!result.success) recordingFocus.stop(); diff --git a/electron/ipc/windowsWindowControl.test.ts b/electron/ipc/windowsWindowControl.test.ts new file mode 100644 index 000000000..6ce5b68ce --- /dev/null +++ b/electron/ipc/windowsWindowControl.test.ts @@ -0,0 +1,55 @@ +import { afterEach, beforeEach, expect, it, vi } from "vitest"; + +const mocks = vi.hoisted(() => ({ exec: vi.fn(), geometry: vi.fn() })); +vi.mock("./windowsWindowGeometry", () => ({ readWindowsWindowGeometry: mocks.geometry })); +vi.mock("node:util", () => ({ promisify: () => mocks.exec })); +vi.mock("./utils", () => ({ + parseWindowId: (id: string) => Number(id.split(":")[1]), + getScreen: () => ({}), +})); + +import { resolveWindowsWindowBounds } from "./windowsWindowControl"; + +afterEach(() => vi.resetAllMocks()); +beforeEach(() => mocks.geometry.mockRejectedValue(new Error("older helper"))); + +it("uses the native helper for HWND bounds and accepts a closed window without falling back", async () => { + const source = { id: "window:103:0", name: "Test window" }; + const bounds = { x: 100, y: 80, width: 800, height: 600 }; + mocks.geometry.mockResolvedValueOnce(bounds).mockResolvedValueOnce(null); + expect(await resolveWindowsWindowBounds(source)).toEqual(bounds); + expect(await resolveWindowsWindowBounds(source)).toBeNull(); + expect(mocks.geometry).toHaveBeenCalledWith(["--window-bounds", "103"]); + expect(mocks.exec).not.toHaveBeenCalled(); +}); + +it("shares slow HWND lookups between preview and telemetry, then refreshes moved windows", async () => { + const source = { id: "window:101:0", name: "Test window" }; + const bounds = { x: 100, y: 80, width: 800, height: 600 }; + let finish!: (result: { stdout: string }) => void; + mocks.exec.mockImplementationOnce( + () => + new Promise((resolve) => { + finish = resolve; + }), + ); + const preview = resolveWindowsWindowBounds(source); + const telemetry = resolveWindowsWindowBounds(source); + await Promise.resolve(); + expect(mocks.exec).toHaveBeenCalledOnce(); + finish({ stdout: JSON.stringify(bounds) }); + expect(await preview).toEqual(bounds); + expect(await telemetry).toEqual(bounds); + mocks.exec.mockResolvedValueOnce({ stdout: JSON.stringify({ ...bounds, x: 200 }) }); + expect(await resolveWindowsWindowBounds(source)).toEqual({ ...bounds, x: 200 }); + expect(mocks.exec).toHaveBeenCalledTimes(2); +}); + +it("retries after a failed lookup rather than keeping a failed query cached", async () => { + const source = { id: "window:102:0", name: "Test window" }; + mocks.exec.mockRejectedValueOnce(new Error("timeout")); + expect(await resolveWindowsWindowBounds(source)).toBeNull(); + const bounds = { x: 100, y: 80, width: 800, height: 600 }; + mocks.exec.mockResolvedValueOnce({ stdout: JSON.stringify(bounds) }); + expect(await resolveWindowsWindowBounds(source)).toEqual(bounds); +}); diff --git a/electron/ipc/windowsWindowControl.ts b/electron/ipc/windowsWindowControl.ts index 9c4c43e8d..3a4da026a 100644 --- a/electron/ipc/windowsWindowControl.ts +++ b/electron/ipc/windowsWindowControl.ts @@ -3,6 +3,7 @@ import { promisify } from "node:util"; import type { SelectedSource, WindowBounds } from "./types"; import { getScreen, parseWindowId } from "./utils"; import { convertPhysicalBoundsToDip } from "./windowsCaptureSelection"; +import { readWindowsWindowGeometry } from "./windowsWindowGeometry"; const execFileAsync = promisify(execFile); @@ -27,14 +28,49 @@ export async function bringWindowsWindowForward(windowId: number): Promise }); } -export async function resolveWindowsWindowBounds( - source: SelectedSource, -): Promise { +const pendingBoundsQueries = new Map>(); + +export function resolveWindowsWindowBounds(source: SelectedSource): Promise { + const key = source.id || source.windowTitle || source.name; + const pending = pendingBoundsQueries.get(key); + if (pending) return pending; + // Add-Type can take longer than the 250ms polling interval. Share the + // in-flight lookup between the preview and cursor telemetry rather than + // launching overlapping PowerShell processes until they start timing out. + const query = queryWindowsWindowBounds(source).finally(() => pendingBoundsQueries.delete(key)); + pendingBoundsQueries.set(key, query); + return query; +} + +async function queryWindowsWindowBounds(source: SelectedSource): Promise { const windowId = parseWindowId(source.id); const windowTitle = typeof source.windowTitle === "string" ? source.windowTitle.trim() : source.name.trim(); if (!windowId && !windowTitle) return null; + if (windowId) { + try { + const bounds = (await readWindowsWindowGeometry([ + "--window-bounds", + String(windowId), + ])) as WindowBounds | null; + if (!bounds) return null; + if ( + ![bounds.x, bounds.y, bounds.width, bounds.height].every(Number.isFinite) || + bounds.width <= 0 || + bounds.height <= 0 + ) + return null; + const electronScreen = getScreen(); + return typeof electronScreen.screenToDipPoint === "function" + ? convertPhysicalBoundsToDip(bounds, (point) => + electronScreen.screenToDipPoint(point), + ) + : bounds; + } catch { + // Older helper bundles do not have geometry commands; retain their fallback. + } + } const script = [ "$windowId = $env:RECORDLY_WINDOW_ID", @@ -77,9 +113,10 @@ export async function resolveWindowsWindowBounds( try { const { stdout } = await execFileAsync( "powershell.exe", - ["-NoProfile", "-Command", script], + ["-NoProfile", "-NonInteractive", "-Command", script], { - timeout: 5000, + timeout: 15000, + windowsHide: true, env: { ...process.env, RECORDLY_WINDOW_ID: String(windowId ?? ""), diff --git a/electron/ipc/windowsWindowGeometry.ts b/electron/ipc/windowsWindowGeometry.ts new file mode 100644 index 000000000..9ce1704ef --- /dev/null +++ b/electron/ipc/windowsWindowGeometry.ts @@ -0,0 +1,15 @@ +import { execFile } from "node:child_process"; +import { promisify } from "node:util"; +import { getCursorMonitorExePath } from "./paths/binaries"; + +const exec = promisify(execFile); + +/** Short-lived Win32 probes reuse the shipped helper without starting its cursor monitor. */ +export async function readWindowsWindowGeometry(args: string[]): Promise { + const { stdout } = await exec(getCursorMonitorExePath(), args, { + timeout: 5000, + windowsHide: true, + maxBuffer: 4 * 1024 * 1024, + }); + return JSON.parse(stdout); +} diff --git a/electron/native/bin/win32-x64/cursor-monitor.exe b/electron/native/bin/win32-x64/cursor-monitor.exe index 70738d1189a1c0b64626e2c9222abe0caf57c4d6..38116118830c927a476722d18303cbd965120d16 100644 GIT binary patch literal 283136 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 eLYA0D0yje7=(|&z<*MzyE{o` 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�uVy;k| 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Ξz8 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

r=mz)}jt= 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

ji~Q@3NSvww)0sZV0f8W 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 He*gXl#)9~l literal 26112 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 diff --git a/electron/native/bin/win32-x64/helpers-manifest.json b/electron/native/bin/win32-x64/helpers-manifest.json index dd02a3777..c5d8fbc82 100644 --- a/electron/native/bin/win32-x64/helpers-manifest.json +++ b/electron/native/bin/win32-x64/helpers-manifest.json @@ -12,10 +12,10 @@ }, "cursor-monitor": { "binaryName": "cursor-monitor.exe", - "binarySha256": "f1d8f30e8d7bee19ecea91c9a90a95ea4824138b8336b18030fa0602a641d70d", + "binarySha256": "3dfddc57ce100629554ec25532c182827ed8d1a86ce5397016d7d90e99acc5cd", "sourceDir": "electron/native/cursor-monitor", - "sourceFingerprint": "45bb72e4039e061a354af87317d7c42ec3d2118369b3f4379046ff497b701e72", - "updatedAt": "2026-07-11T11:58:56.534Z" + "sourceFingerprint": "8c60892e6fdfb5d12a8a9896a43a5005de433ee5ba86d924561afe46831a362d", + "updatedAt": "2026-11-13T03:28:01.112Z" }, "recordly-gpu-export": { "binaryName": "recordly-gpu-export.exe", diff --git a/electron/native/cursor-monitor/CMakeLists.txt b/electron/native/cursor-monitor/CMakeLists.txt index 8155aed95..5f0b1e95e 100644 --- a/electron/native/cursor-monitor/CMakeLists.txt +++ b/electron/native/cursor-monitor/CMakeLists.txt @@ -6,4 +6,4 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) add_executable(cursor-monitor src/main.cpp) -target_link_libraries(cursor-monitor PRIVATE user32) +target_link_libraries(cursor-monitor PRIVATE user32 dwmapi) diff --git a/electron/native/cursor-monitor/src/main.cpp b/electron/native/cursor-monitor/src/main.cpp index 9a811f7be..c88c6839c 100644 --- a/electron/native/cursor-monitor/src/main.cpp +++ b/electron/native/cursor-monitor/src/main.cpp @@ -1,10 +1,13 @@ #include +#include +#include #include #include #include #include #include #include +#include static std::atomic g_running{true}; @@ -19,9 +22,61 @@ static void stdinListener() { g_running.store(false); } -int main() { +static bool windowBounds(HWND window, RECT& rect) { + if (!IsWindowVisible(window) || IsIconic(window)) return false; + if (DwmGetWindowAttribute(window, DWMWA_EXTENDED_FRAME_BOUNDS, &rect, sizeof(rect)) != S_OK && + !GetWindowRect(window, &rect)) return false; + return rect.right > rect.left && rect.bottom > rect.top; +} + +static void printBounds(const RECT& rect) { + std::cout << "\"x\":" << rect.left << ",\"y\":" << rect.top + << ",\"width\":" << rect.right - rect.left + << ",\"height\":" << rect.bottom - rect.top; +} + +int main(int argc, char* argv[]) { std::setvbuf(stdout, nullptr, _IONBF, 0); + if (argc > 1) { + SetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2); + const std::string command = argv[1]; + if (command == "--window-bounds" && argc == 3) { + try { + size_t consumed = 0; + const auto handle = std::stoull(argv[2], &consumed); + if (consumed != std::string(argv[2]).size() || handle == 0) return 1; + RECT rect{}; + if (!windowBounds(reinterpret_cast(static_cast(handle)), rect)) { + std::cout << "null\n"; + } else { + std::cout << '{'; printBounds(rect); std::cout << "}\n"; + } + return 0; + } catch (...) { return 1; } + } + if (command == "--list-windows" && argc == 2) { + std::unordered_set seen; + bool first = true; + std::cout << '['; + for (HWND window = GetTopWindow(nullptr); window && seen.insert(window).second; + window = GetWindow(window, GW_HWNDNEXT)) { + RECT rect{}; + if (!windowBounds(window, rect)) continue; + DWORD ownerPid = 0; + GetWindowThreadProcessId(window, &ownerPid); + if (!first) std::cout << ','; + first = false; + std::cout << "{\"id\":" << reinterpret_cast(window) + << ",\"ownerPid\":" << ownerPid << ','; + printBounds(rect); std::cout << '}'; + } + std::cout << "]\n"; + return 0; + } + return 1; + } + std::unordered_map cursorMap; cursorMap[LoadCursor(NULL, IDC_ARROW)] = "arrow"; cursorMap[LoadCursor(NULL, IDC_IBEAM)] = "text"; diff --git a/electron/preload.ts b/electron/preload.ts index 4c2ac8ca3..33d19500c 100644 --- a/electron/preload.ts +++ b/electron/preload.ts @@ -1147,10 +1147,22 @@ contextBridge.exposeInMainWorld("electronAPI", { return () => ipcRenderer.removeListener("menu-save-project-as", listener); }, getWindowChrome: () => ipcRenderer.invoke("get-window-chrome"), - onWindowChromeChanged: (callback: (chrome: { trafficLightsVisible: boolean }) => void) => { + windowControl: (action: "minimize" | "maximize" | "close") => + ipcRenderer.invoke("window-control", action), + onWindowChromeChanged: ( + callback: (chrome: { + trafficLightsVisible: boolean; + customControls?: boolean; + maximized?: boolean; + }) => void, + ) => { const listener = ( _event: Electron.IpcRendererEvent, - chrome: { trafficLightsVisible: boolean }, + chrome: { + trafficLightsVisible: boolean; + customControls?: boolean; + maximized?: boolean; + }, ) => callback(chrome); ipcRenderer.on("window-chrome-changed", listener); return () => ipcRenderer.removeListener("window-chrome-changed", listener); diff --git a/electron/recordingFocus.test.ts b/electron/recordingFocus.test.ts index 105b751c2..821783fd4 100644 --- a/electron/recordingFocus.test.ts +++ b/electron/recordingFocus.test.ts @@ -1,5 +1,6 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { createRecordingFocusController, outsideRecordingRects } from "./recordingFocus"; + const display = { x: 0, y: 0, width: 1600, height: 1000 }; const area = { x: 200, y: 100, width: 900, height: 650 }; const source = { id: "area:1", name: "Area", area }; @@ -7,6 +8,28 @@ const intersects = (a: typeof area, b: typeof area) => a.x < b.x + b.width && b.x < a.x + a.width && a.y < b.y + b.height && b.y < a.y + a.height; describe("outside recording geometry", () => { + it("leaves the HUD, webcam and menus undimmed without covering the capture", () => { + const controls = [ + { x: 600, y: 900, width: 400, height: 60 }, + { x: 100, y: 750, width: 200, height: 200 }, + { x: 600, y: 680, width: 300, height: 180 }, + ]; + const strips = outsideRecordingRects([display], area, controls); + for (const rect of strips) { + expect(intersects(rect, area)).toBe(false); + for (const control of controls) expect(intersects(rect, control)).toBe(false); + } + for (let x = 0; x < display.width; x += 20) { + for (let y = 0; y < display.height; y += 20) { + const contains = (rect: typeof area) => + x >= rect.x && + x < rect.x + rect.width && + y >= rect.y && + y < rect.y + rect.height; + expect(strips.some(contains)).toBe(![area, ...controls].some(contains)); + } + } + }); it("covers precisely the exterior without touching recorded pixels or overlapping strips", () => { const strips = outsideRecordingRects([display], area); expect(strips).toHaveLength(4); @@ -99,9 +122,12 @@ it("removes masks if the window disappears or bounds detection fails", async () expect(deps.hide).toHaveBeenCalledTimes(2); controller.stop(); }); -it("source notifications do not start a mask outside an active countdown or recording", () => { +it("does not dim the desktop when selecting a source before recording", async () => { const { deps, controller } = fixture(); controller.sourceChanged(source); + await vi.advanceTimersByTimeAsync(0); expect(deps.resolve).not.toHaveBeenCalled(); + expect(deps.show).not.toHaveBeenCalled(); + controller.sourceChanged(null); expect(vi.getTimerCount()).toBe(0); }); diff --git a/electron/recordingFocus.ts b/electron/recordingFocus.ts index fb274b413..e67b0c8c1 100644 --- a/electron/recordingFocus.ts +++ b/electron/recordingFocus.ts @@ -1,14 +1,18 @@ import type { CaptureArea, SelectedSource } from "./ipc/types"; /** Non-overlapping strips which never cover a pixel inside the recording. */ -export function outsideRecordingRects(displays: CaptureArea[], target: CaptureArea): CaptureArea[] { +export function outsideRecordingRects( + displays: CaptureArea[], + target: CaptureArea, + exclusions: CaptureArea[] = [], +): CaptureArea[] { if ( ![target.x, target.y, target.width, target.height].every(Number.isFinite) || target.width <= 0 || target.height <= 0 ) return []; - return displays.flatMap((display) => { + const rectangles = displays.flatMap((display) => { // Round the hole outward: fractional display points must never dim a captured edge. const left = Math.max(display.x, Math.floor(target.x)); const top = Math.max(display.y, Math.floor(target.y)); @@ -27,6 +31,11 @@ export function outsideRecordingRects(displays: CaptureArea[], target: CaptureAr { x: right, y: top, width: display.x + display.width - right, height: bottom - top }, ].filter((rect) => rect.width > 0 && rect.height > 0); }); + return exclusions.reduce( + (remaining, exclusion) => + remaining.flatMap((rect) => outsideRecordingRects([rect], exclusion)), + rectangles, + ); } export function createRecordingFocusController(deps: { @@ -81,9 +90,9 @@ export function createRecordingFocusController(deps: { }, stop, sourceChanged(next: SelectedSource | null) { - if (source) { - void this.start(next); - } + // A selection alone must not dim the desktop. Only update an already + // active recording surround; recording state starts and stops it. + if (source) void this.start(next); }, }; } diff --git a/electron/windowControls.test.ts b/electron/windowControls.test.ts new file mode 100644 index 000000000..823320547 --- /dev/null +++ b/electron/windowControls.test.ts @@ -0,0 +1,38 @@ +import { expect, it, vi } from "vitest"; +import { applyWindowControl } from "./windowControls"; + +function windowFixture() { + return { + isDestroyed: () => false, + isMaximized: vi.fn(() => false), + minimize: vi.fn(), + maximize: vi.fn(), + unmaximize: vi.fn(), + close: vi.fn(), + }; +} + +it("minimizes and toggles maximize/restore on the calling window", () => { + const win = windowFixture(); + expect(applyWindowControl(win, "minimize")).toBe(true); + expect(win.minimize).toHaveBeenCalledOnce(); + applyWindowControl(win, "maximize"); + expect(win.maximize).toHaveBeenCalledOnce(); + win.isMaximized.mockReturnValue(true); + applyWindowControl(win, "maximize"); + expect(win.unmaximize).toHaveBeenCalledOnce(); +}); + +it("uses normal close so the unsaved-change handler can cancel it", () => { + const win = windowFixture(); + expect(applyWindowControl(win, "close")).toBe(true); + expect(win.close).toHaveBeenCalledOnce(); +}); + +it("ignores unknown actions and destroyed or missing windows", () => { + const win = windowFixture(); + expect(applyWindowControl(win, "quit")).toBe(false); + expect(applyWindowControl(null, "close")).toBe(false); + expect(applyWindowControl({ ...win, isDestroyed: () => true }, "close")).toBe(false); + expect(win.close).not.toHaveBeenCalled(); +}); diff --git a/electron/windowControls.ts b/electron/windowControls.ts new file mode 100644 index 000000000..2c169a92b --- /dev/null +++ b/electron/windowControls.ts @@ -0,0 +1,25 @@ +import type { BrowserWindow } from "electron"; + +type ControlledWindow = Pick< + BrowserWindow, + "isDestroyed" | "isMaximized" | "minimize" | "maximize" | "unmaximize" | "close" +>; + +export function applyWindowControl(win: ControlledWindow | null, action: unknown): boolean { + if (!win || win.isDestroyed()) return false; + switch (action) { + case "minimize": + win.minimize(); + return true; + case "maximize": + if (win.isMaximized()) win.unmaximize(); + else win.maximize(); + return true; + case "close": + // Preserve the ordinary close event and its unsaved-project prompt. + win.close(); + return true; + default: + return false; + } +} diff --git a/electron/windows.ts b/electron/windows.ts index 803f99498..64638de37 100644 --- a/electron/windows.ts +++ b/electron/windows.ts @@ -20,6 +20,7 @@ import { shouldExpandHudOverlayFallback, } from "./hudOverlayBounds"; import { getHudOverlayTaskbarOptions } from "./hudOverlayWindowOptions"; +import { startHudPointerRecovery } from "./hudPointerRecovery"; import { sendNativeHudCaptureExclusions } from "./ipc/recording/nativeCaptureCommand"; import { currentProjectPath, @@ -743,6 +744,23 @@ export function createHudOverlayWindow(): BrowserWindow { // Reset the user's saved HUD position when displays change so the bar // doesn't end up stranded off-screen after a monitor is disconnected. const screen = getScreen(); + const stopPointerRecovery = + process.platform === "win32" + ? startHudPointerRecovery({ + canRecover: () => + !win.isDestroyed() && win.isVisible() && !hudOverlaySourceSelectionActive, + getCursor: () => screen.getCursorScreenPoint(), + getBounds: () => hudOverlayInteractiveBounds, + recover: () => { + // A sibling overlay or focus change can break forwarded mousemove. + // Reassert the native flag over controls even if our cached state says + // they are already interactive. The renderer still handles leaving, + // popover dismissal and drag capture as usual. + hudOverlayIgnoringMouse = false; + win.setIgnoreMouseEvents(false); + }, + }) + : () => {}; const handleDisplayRemoved = () => { hudUserPosition = null; }; @@ -766,6 +784,7 @@ export function createHudOverlayWindow(): BrowserWindow { screen.on("display-metrics-changed", handleDisplayMetricsChanged); win.on("closed", () => { + stopPointerRecovery(); ipcMain.removeListener("hud-overlay-renderer-ready", handleHudRendererReady); screen.removeListener("display-removed", handleDisplayRemoved); screen.removeListener("display-metrics-changed", handleDisplayMetricsChanged); @@ -1060,6 +1079,7 @@ export function createEditorWindow(): BrowserWindow { }), minWidth: 800, minHeight: 600, + ...(!isMac && { frame: false }), ...(process.platform !== "darwin" && { icon: WINDOW_ICON_PATH, }), @@ -1097,11 +1117,15 @@ export function createEditorWindow(): BrowserWindow { if (!win.isDestroyed()) win.webContents.send("window-chrome-changed", { trafficLightsVisible: isMac && !win.isFullScreen() && !win.isSimpleFullScreen(), + customControls: !isMac, + maximized: win.isMaximized(), }); }; win.on("enter-full-screen", publishWindowChrome); win.on("leave-full-screen", publishWindowChrome); win.on("resize", publishWindowChrome); + win.on("maximize", publishWindowChrome); + win.on("unmaximize", publishWindowChrome); win.webContents.on("did-finish-load", publishWindowChrome); win.once("ready-to-show", () => { @@ -1591,11 +1615,22 @@ export function hideAreaRecordingBorder(): void { /** Click-through exterior strips leave the recorded pixels completely untouched. */ export function showRecordingFocus(target: CaptureArea): void { + const hud = getHudOverlayWindow(); + const protectedAreas = + hud?.isVisible() && !hud.isMinimized() + ? (hudOverlayInteractiveBounds ?? []).map((rect) => ({ + x: rect.left - 8, + y: rect.top - 8, + width: rect.right - rect.left + 16, + height: rect.bottom - rect.top + 16, + })) + : []; const rectangles = outsideRecordingRects( getScreen() .getAllDisplays() .map((display) => display.bounds), target, + protectedAreas, ); for (let i = 0; i < rectangles.length; i++) { const bounds = rectangles[i]; @@ -1620,7 +1655,11 @@ export function showRecordingFocus(target: CaptureArea): void { }); win.setIgnoreMouseEvents(true); win.setContentProtection(true); - win.setAlwaysOnTop(true, "floating", -1); + win.setAlwaysOnTop( + true, + process.platform === "win32" ? "screen-saver" : "floating", + -1, + ); win.setVisibleOnAllWorkspaces(true, { visibleOnFullScreen: true, skipTransformProcessType: true, @@ -1632,8 +1671,11 @@ export function showRecordingFocus(target: CaptureArea): void { `data:text/html;charset=utf-8,${encodeURIComponent('')}`, ) .then(() => { - if (!created.isDestroyed() && recordingFocusWindows.includes(created)) + if (!created.isDestroyed() && recordingFocusWindows.includes(created)) { created.showInactive(); + created.setIgnoreMouseEvents(true); + raiseHudAboveRecordingFocus(); + } }) .catch(() => { if (!created.isDestroyed()) created.close(); @@ -1647,10 +1689,22 @@ export function showRecordingFocus(target: CaptureArea): void { old.height !== bounds.height ) win.setBounds(bounds); + // Bringing the capture target forward must not leave the surround + // behind it. Restore hidden strips without taking keyboard focus. + if (process.platform === "win32") win.setAlwaysOnTop(true, "screen-saver", -1); + if (!win.isVisible()) win.showInactive(); + win.setIgnoreMouseEvents(true); } } for (const win of recordingFocusWindows.splice(rectangles.length)) if (!win.isDestroyed()) win.close(); + raiseHudAboveRecordingFocus(); +} + +function raiseHudAboveRecordingFocus() { + if (capturePickerWindows.some((win) => !win.isDestroyed())) return; + const hud = getHudOverlayWindow(); + if (hud?.isVisible() && !hud.isMinimized()) hud.moveTop(); } export function hideRecordingFocus(): void { diff --git a/src/components/auth/OnboardingPermissions.test.tsx b/src/components/auth/OnboardingPermissions.test.tsx index 2a5d88aa7..a635be0d5 100644 --- a/src/components/auth/OnboardingPermissions.test.tsx +++ b/src/components/auth/OnboardingPermissions.test.tsx @@ -66,6 +66,13 @@ vi.mock("@/contexts/I18nContext", () => ({ })); vi.mock("@/lib/appSettings", () => ({ saveAppSetting: vi.fn() })); vi.mock("@heroui/react", () => ({ Button: "button" })); +vi.mock("@phosphor-icons/react", () => ({ + ArrowLeft: "arrow-left", + Check: "check", + CheckCircle: "check-circle", + WarningCircle: "warning-circle", +})); +vi.mock("@/components/video-editor/SettingsRow", () => ({ SettingsRow: "settings-row" })); vi.mock("motion/react", () => ({ useReducedMotion: () => true, motion: { div: "div" } })); vi.mock("@/components/feedback/ErrorReportButton", () => ({ ErrorReportButton: "report" })); vi.mock("./PermissionsConfetti", () => ({ PermissionsConfetti: "confetti" })); @@ -85,9 +92,9 @@ function nodes(node: ReactNode): ReactElement>[] { const flush = async () => { for (let i = 0; i < 8; i++) await Promise.resolve(); }; -function render() { +function render(onFinish = vi.fn()) { state.index = 0; - const result = OnboardingPermissions({ onFinish: vi.fn() }); + const result = OnboardingPermissions({ onFinish }); for (const effect of state.effects.splice(0)) effect(); return nodes(result); } @@ -124,6 +131,23 @@ afterEach(() => { vi.unstubAllGlobals(); vi.useRealTimers(); }); +it.each([ + "win32", + "linux", +])("skips macOS permission setup on %s without requesting access", async (platform) => { + vi.mocked(window.electronAPI.getPlatform).mockResolvedValue(platform); + const onFinish = vi.fn(); + const checking = render(onFinish); + expect(checking.some((node) => node.type === "header")).toBe(false); + await flush(); + expect(render(onFinish)).toEqual([]); + expect(onFinish).toHaveBeenCalledOnce(); + render(onFinish); + expect(onFinish).toHaveBeenCalledOnce(); + expect(window.electronAPI.getScreenRecordingPermissionStatus).not.toHaveBeenCalled(); + expect(window.electronAPI.getAccessibilityPermissionStatus).not.toHaveBeenCalled(); + expect(window.electronAPI.openScreenRecordingPreferences).not.toHaveBeenCalled(); +}); it("keeps a failed permission request visible through successful status polls and clears it on retry", async () => { render(); await flush(); diff --git a/src/components/auth/OnboardingPermissions.tsx b/src/components/auth/OnboardingPermissions.tsx index 1a0006f52..437f4afe8 100644 --- a/src/components/auth/OnboardingPermissions.tsx +++ b/src/components/auth/OnboardingPermissions.tsx @@ -42,6 +42,7 @@ export function OnboardingPermissions({ const error = requestError ?? statusError; const mounted = useRef(false); const refreshing = useRef(false); + const finishedWithoutPermissions = useRef(false); const canSimulate = import.meta.env.DEV && preview; useEffect(() => { if (!preview) saveAppSetting("recordly.onboarding.permissionsRequested", true); @@ -148,20 +149,26 @@ export function OnboardingPermissions({ setBusy(undefined); } }; + useEffect(() => { + if (platform !== "other" || finishedWithoutPermissions.current) return; + finishedWithoutPermissions.current = true; + onFinish(); + }, [platform, onFinish]); + + // Windows and Linux choose a capture source when recording starts. They do + // not have the macOS screen-recording and Accessibility permission setup. + if (platform === "other") return null; + if (platform === "checking") return

; return (
- + - } - description={platform === "other" ? t("otherDescription") : undefined} - /> - {canSimulate && platform !== "other" && ( + } /> + {canSimulate && (
{ setSimulatedMissing({ screen: true, accessibility: true }); setRequestError(undefined); @@ -180,82 +187,74 @@ export function OnboardingPermissions({
)} - {platform !== "other" && ( - <> -
- {[ - { - key: "screen" as const, - name: t("screen"), - description: t("screenDescription"), - granted: granted.screen, - }, - { - key: "accessibility" as const, - name: t("accessibility"), - description: t("accessibilityDescription"), - granted: granted.accessibility, - }, - ].map(({ key, name, description, granted }, index) => ( - -
-

{name}

-

- {description} -

-
-
- {granted ? ( - - - ) : ( - - )} -
-
- ))} -
- {error && ( -

- {error} -

- )} - + + )} +
+ + ))} + + {error && ( +

+ {error} +

)} {showFooter && ( diff --git a/src/components/launch/LaunchWindow.tsx b/src/components/launch/LaunchWindow.tsx index 78b200b65..87c0a2365 100644 --- a/src/components/launch/LaunchWindow.tsx +++ b/src/components/launch/LaunchWindow.tsx @@ -20,6 +20,7 @@ import { CountdownDelayIcon } from "./CountdownDelayIcon"; import { HudInteractionContext } from "./contexts/HudInteractionContext"; import { FloatingWebcamPreviewView } from "./FloatingWebcamPreviewView"; import { canToggleFloatingWebcamPreview } from "./floatingWebcamPreview"; +import { getHudInteractiveBounds } from "./hudMousePassthrough"; import { useHudBarDrag } from "./hooks/useHudBarDrag"; import { useHudStateTransition } from "./hooks/useHudStateTransition"; import { useLaunchHudInteractionState } from "./hooks/useLaunchHudInteractionState"; @@ -159,29 +160,20 @@ function LaunchWindowContent() { useEffect(() => { const reportInteractiveBounds = () => { - const elements = [hudBarRef.current, recordingWebcamPreviewContainerRef.current].filter( - (element): element is HTMLDivElement => element !== null, - ); - - if (elements.length === 0) { - window.electronAPI?.hudOverlaySetInteractiveBounds?.(null); - return; - } - window.electronAPI?.hudOverlaySetInteractiveBounds?.( - elements.map((element) => { - const rect = element.getBoundingClientRect(); - return { - left: window.screenX + rect.left, - top: window.screenY + rect.top, - right: window.screenX + rect.right, - bottom: window.screenY + rect.bottom, - }; - }), + getHudInteractiveBounds(document).map((rect) => ({ + left: window.screenX + rect.left, + top: window.screenY + rect.top, + right: window.screenX + rect.right, + bottom: window.screenY + rect.bottom, + })), ); }; reportInteractiveBounds(); + // Keep native recovery current even when Windows stops forwarding mouse + // events. Include popovers and toasts, not just the main bar and webcam. + const boundsTimer = window.setInterval(reportInteractiveBounds, 100); const resizeObserver = new ResizeObserver(reportInteractiveBounds); if (hudBarRef.current) resizeObserver.observe(hudBarRef.current); if (recordingWebcamPreviewContainerRef.current) { @@ -191,6 +183,7 @@ function LaunchWindowContent() { window.addEventListener("resize", reportInteractiveBounds); return () => { + window.clearInterval(boundsTimer); resizeObserver.disconnect(); window.removeEventListener("mousemove", reportInteractiveBounds); window.removeEventListener("resize", reportInteractiveBounds); diff --git a/src/components/video-editor/layout/AppFrameHeader.tsx b/src/components/video-editor/layout/AppFrameHeader.tsx index 4cd72a59a..130f5d909 100644 --- a/src/components/video-editor/layout/AppFrameHeader.tsx +++ b/src/components/video-editor/layout/AppFrameHeader.tsx @@ -1,4 +1,5 @@ -import type { CSSProperties, ReactNode } from "react"; +import { type CSSProperties, type ReactNode, useEffect, useState } from "react"; +import { WindowControls } from "./WindowControls"; export function AppFrameHeader({ children, @@ -7,13 +8,44 @@ export function AppFrameHeader({ children: ReactNode; className?: string; }) { + const [chrome, setChrome] = useState({ + customControls: false, + maximized: false, + }); + useEffect(() => { + let disposed = false; + const update = (state: { customControls?: boolean; maximized?: boolean }) => { + if (!disposed) + setChrome({ + customControls: state.customControls === true, + maximized: state.maximized === true, + }); + }; + void window.electronAPI + ?.getWindowChrome?.() + .then(update) + .catch(() => undefined); + const unsubscribe = window.electronAPI?.onWindowChromeChanged?.(update); + return () => { + disposed = true; + unsubscribe?.(); + }; + }, []); return ( <>
{children} + {chrome.customControls && }
); diff --git a/src/components/video-editor/layout/WindowControls.test.tsx b/src/components/video-editor/layout/WindowControls.test.tsx new file mode 100644 index 000000000..355aef69b --- /dev/null +++ b/src/components/video-editor/layout/WindowControls.test.tsx @@ -0,0 +1,27 @@ +import { afterEach, expect, it, vi } from "vitest"; +import { WindowControls } from "./WindowControls"; + +vi.mock("@/contexts/I18nContext", () => ({ + useI18n: () => ({ t: (_key: string, fallback: string) => fallback }), +})); + +afterEach(() => vi.unstubAllGlobals()); + +it("exposes accessible caption buttons and sends the corresponding native actions", () => { + const control = vi.fn(); + vi.stubGlobal("window", { electronAPI: { windowControl: control } }); + const buttons = WindowControls({ maximized: false }).props.children; + expect(buttons.map((button) => button.props["aria-label"])).toEqual([ + "Minimize", + "Maximize", + "Close", + ]); + for (const button of buttons) button.props.onClick(); + expect(control.mock.calls).toEqual([["minimize"], ["maximize"], ["close"]]); +}); + +it("labels the maximize button as restore when the native window is maximized", () => { + expect(WindowControls({ maximized: true }).props.children[1].props["aria-label"]).toBe( + "Restore window", + ); +}); diff --git a/src/components/video-editor/layout/WindowControls.tsx b/src/components/video-editor/layout/WindowControls.tsx new file mode 100644 index 000000000..c95531f81 --- /dev/null +++ b/src/components/video-editor/layout/WindowControls.tsx @@ -0,0 +1,58 @@ +import type { CSSProperties } from "react"; +import { useI18n } from "@/contexts/I18nContext"; + +export function WindowControls({ maximized }: { maximized: boolean }) { + const { t } = useI18n(); + const actions = [ + { + action: "minimize" as const, + label: t("common.actions.minimize", "Minimize"), + path: "M0 5.5h10", + }, + { + action: "maximize" as const, + label: maximized + ? t("common.actions.restoreWindow", "Restore window") + : t("common.actions.maximize", "Maximize"), + path: maximized ? "M2.5 2.5V.5h7v7h-2M.5 2.5h7v7h-7z" : "M.5.5h9v9h-9z", + }, + { + action: "close" as const, + label: t("common.actions.close", "Close"), + path: "m.5.5 9 9m0-9-9 9", + }, + ]; + return ( +
+ {actions.map(({ action, label, path }) => ( + + ))} +
+ ); +} From 14b7dae1234a3c30cb788187dfe4394a4e02f260 Mon Sep 17 00:00:00 2001 From: webadderall <131426131+webadderall@users.noreply.github.com> Date: Fri, 13 Nov 2026 15:29:34 +1100 Subject: [PATCH 2/3] Avoid Windows wallpaper lookup timeouts with native helper --- electron/desktopWallpaper.test.ts | 11 ++++++ electron/desktopWallpaper.ts | 34 +++++++++++------- .../native/bin/win32-x64/cursor-monitor.exe | Bin 283136 -> 285184 bytes .../bin/win32-x64/helpers-manifest.json | 6 ++-- electron/native/cursor-monitor/src/main.cpp | 14 ++++++++ 5 files changed, 49 insertions(+), 16 deletions(-) diff --git a/electron/desktopWallpaper.test.ts b/electron/desktopWallpaper.test.ts index 927de72d9..7863d21d5 100644 --- a/electron/desktopWallpaper.test.ts +++ b/electron/desktopWallpaper.test.ts @@ -5,6 +5,8 @@ import path from "node:path"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; const decode = vi.hoisted(() => vi.fn()); +const nativeWallpaper = vi.hoisted(() => vi.fn()); +vi.mock("./ipc/windowsWindowGeometry", () => ({ readWindowsWindowGeometry: nativeWallpaper })); vi.mock("electron", () => ({ nativeImage: { createFromPath: decode } })); vi.mock("./ipc/ffmpeg/binary", () => ({ getFfmpegBinaryPath: () => "/recordly/ffmpeg" })); import { @@ -15,6 +17,7 @@ import { let directory: string; beforeEach(async () => { + nativeWallpaper.mockReset().mockRejectedValue(new Error("older helper")); directory = await fs.mkdtemp(path.join(os.tmpdir(), "recordly-desktop-wallpaper-")); decode .mockReset() @@ -25,6 +28,14 @@ afterEach(async () => { }); describe("desktop wallpaper source", () => { + it("uses the native Windows lookup without launching PowerShell", async () => { + const wallpaper = "C:\\Users\\Name\\背景.jpg"; + nativeWallpaper.mockResolvedValue(wallpaper); + const run = vi.fn(); + expect(await resolveDesktopWallpaperSource("win32", run)).toBe(wallpaper); + expect(nativeWallpaper).toHaveBeenCalledWith(["--desktop-wallpaper"]); + expect(run).not.toHaveBeenCalled(); + }); it("reads macOS wallpaper through AppKit without System Events automation", async () => { const run = vi.fn(async () => JSON.stringify({ source: "/Users/test/My wallpaper.heic" })); expect(await resolveDesktopWallpaperSource("darwin", run)).toBe( diff --git a/electron/desktopWallpaper.ts b/electron/desktopWallpaper.ts index 8dabff485..61ea1a4b8 100644 --- a/electron/desktopWallpaper.ts +++ b/electron/desktopWallpaper.ts @@ -6,6 +6,7 @@ import os from "node:os"; import { promisify } from "node:util"; import { nativeImage } from "electron"; import { getFfmpegBinaryPath } from "./ipc/ffmpeg/binary"; +import { readWindowsWindowGeometry } from "./ipc/windowsWindowGeometry"; const execFileAsync = promisify(execFile); type CommandRunner = (command: string, args: string[]) => Promise; @@ -121,19 +122,26 @@ export async function resolveDesktopWallpaperSource( await run("/usr/bin/osascript", ["-l", "JavaScript", "-e", MAC_WALLPAPER_SCRIPT]), ); } else if (platform === "win32") { - const powershell = path.win32.join( - process.env.SystemRoot || "C:\\Windows", - "System32", - "WindowsPowerShell", - "v1.0", - "powershell.exe", - ); - result = await run(powershell, [ - "-NoProfile", - "-NonInteractive", - "-Command", - WINDOWS_WALLPAPER_SCRIPT, - ]); + try { + const nativePath = await readWindowsWindowGeometry(["--desktop-wallpaper"]); + if (typeof nativePath !== "string") throw new Error("Invalid native wallpaper path"); + result = nativePath; + } catch { + // Older helper bundles retain the PowerShell fallback. + const powershell = path.win32.join( + process.env.SystemRoot || "C:\\Windows", + "System32", + "WindowsPowerShell", + "v1.0", + "powershell.exe", + ); + result = await run(powershell, [ + "-NoProfile", + "-NonInteractive", + "-Command", + WINDOWS_WALLPAPER_SCRIPT, + ]); + } } else { throw new Error("Desktop wallpaper is unavailable on this platform"); } diff --git a/electron/native/bin/win32-x64/cursor-monitor.exe b/electron/native/bin/win32-x64/cursor-monitor.exe index 38116118830c927a476722d18303cbd965120d16..770d810c943df3ad5bf4a734c5a59a035a7f62e7 100644 GIT binary patch delta 72126 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 z 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%0DXB88p< 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 delta 70610 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 MD`0KCz&+;w15seE8vp #include #include +#include #include #include #include @@ -41,6 +42,19 @@ int main(int argc, char* argv[]) { if (argc > 1) { SetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2); const std::string command = argv[1]; + if (command == "--desktop-wallpaper" && argc == 2) { + wchar_t wallpaper[32768]{}; + if (!SystemParametersInfoW(SPI_GETDESKWALLPAPER, 32768, wallpaper, 0)) return 1; + const int length = lstrlenW(wallpaper); + const int bytes = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, wallpaper, + length, nullptr, 0, nullptr, nullptr); + if (bytes <= 0) return 1; + std::string utf8(bytes, '\0'); + if (!WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, wallpaper, + length, utf8.data(), bytes, nullptr, nullptr)) return 1; + std::cout << std::quoted(utf8) << '\n'; + return 0; + } if (command == "--window-bounds" && argc == 3) { try { size_t consumed = 0; From f16d4309c5636ab973ddef832aa36f53d63c632f Mon Sep 17 00:00:00 2001 From: webadderall <131426131+webadderall@users.noreply.github.com> Date: Fri, 13 Nov 2026 15:40:58 +1100 Subject: [PATCH 3/3] Address review findings for HUD hit testing and quality checks --- electron/desktopWallpaper.test.ts | 8 ++++++++ electron/electron-env.d.ts | 8 +++++++- electron/hudPointerRecovery.test.ts | 18 ++++++++++++++++++ .../native/bin/win32-x64/cursor-monitor.exe | Bin 285184 -> 285184 bytes .../bin/win32-x64/helpers-manifest.json | 6 +++--- electron/native/cursor-monitor/src/main.cpp | 4 ++++ electron/preload.ts | 8 +++++++- electron/windows.ts | 5 +++-- src/components/launch/LaunchWindow.tsx | 8 ++------ src/i18n/locales/de/common.json | 8 ++++++-- src/i18n/locales/en/common.json | 8 ++++++-- src/i18n/locales/es/common.json | 8 ++++++-- src/i18n/locales/fr/common.json | 8 ++++++-- src/i18n/locales/it/common.json | 8 ++++++-- src/i18n/locales/ja/common.json | 8 ++++++-- src/i18n/locales/ko/common.json | 8 ++++++-- src/i18n/locales/nl/common.json | 8 ++++++-- src/i18n/locales/pt-BR/common.json | 8 ++++++-- src/i18n/locales/ru/common.json | 8 ++++++-- src/i18n/locales/zh-CN/common.json | 8 ++++++-- src/i18n/locales/zh-TW/common.json | 8 ++++++-- 21 files changed, 124 insertions(+), 37 deletions(-) diff --git a/electron/desktopWallpaper.test.ts b/electron/desktopWallpaper.test.ts index 7863d21d5..a39802a61 100644 --- a/electron/desktopWallpaper.test.ts +++ b/electron/desktopWallpaper.test.ts @@ -28,6 +28,14 @@ afterEach(async () => { }); describe("desktop wallpaper source", () => { + it("rejects a native no-wallpaper result without trying the slow fallback", async () => { + nativeWallpaper.mockResolvedValue(""); + const run = vi.fn(); + await expect(resolveDesktopWallpaperSource("win32", run)).rejects.toThrow( + "No desktop wallpaper", + ); + expect(run).not.toHaveBeenCalled(); + }); it("uses the native Windows lookup without launching PowerShell", async () => { const wallpaper = "C:\\Users\\Name\\背景.jpg"; nativeWallpaper.mockResolvedValue(wallpaper); diff --git a/electron/electron-env.d.ts b/electron/electron-env.d.ts index af8fc27d5..b26e25c58 100644 --- a/electron/electron-env.d.ts +++ b/electron/electron-env.d.ts @@ -254,7 +254,13 @@ interface Window { hudOverlayRendererReady: () => void; hudOverlaySetWebcamPreviewVisible: (visible: boolean) => void; hudOverlaySetInteractiveBounds: ( - bounds: Array<{ left: number; top: number; right: number; bottom: number }> | null, + bounds: Array<{ + left: number; + top: number; + right: number; + bottom: number; + shape?: "ellipse"; + }> | null, ) => void; getHudOverlayCaptureProtection: () => Promise<{ success: boolean; enabled: boolean }>; getHudOverlayMousePassthroughSupported: () => Promise<{ diff --git a/electron/hudPointerRecovery.test.ts b/electron/hudPointerRecovery.test.ts index eeda357b9..204a7ee41 100644 --- a/electron/hudPointerRecovery.test.ts +++ b/electron/hudPointerRecovery.test.ts @@ -3,6 +3,24 @@ import { startHudPointerRecovery } from "./hudPointerRecovery"; afterEach(() => vi.useRealTimers()); +it("leaves the webcam's transparent corners click-through while recovering its center", async () => { + vi.useFakeTimers(); + let cursor = { x: 301, y: 501 }; + const recover = vi.fn(); + const stop = startHudPointerRecovery({ + canRecover: () => true, + getCursor: () => cursor, + getBounds: () => [{ left: 300, top: 500, right: 500, bottom: 700, shape: "ellipse" }], + recover, + }); + await vi.advanceTimersByTimeAsync(50); + expect(recover).not.toHaveBeenCalled(); + cursor = { x: 400, y: 600 }; + await vi.advanceTimersByTimeAsync(50); + expect(recover).toHaveBeenCalledOnce(); + stop(); +}); + it("restores buttons without any renderer mouse events, including after native state is lost again", async () => { vi.useFakeTimers(); let cursor = { x: 500, y: 720 }; diff --git a/electron/native/bin/win32-x64/cursor-monitor.exe b/electron/native/bin/win32-x64/cursor-monitor.exe index 770d810c943df3ad5bf4a734c5a59a035a7f62e7..136a2d986871979f903cfb36b1bf077e1b886aeb 100644 GIT binary patch delta 34711 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 | null, + bounds: Array<{ + left: number; + top: number; + right: number; + bottom: number; + shape?: "ellipse"; + }> | null, ) => { ipcRenderer.send("hud-overlay-set-interactive-bounds", bounds); }, diff --git a/electron/windows.ts b/electron/windows.ts index 64638de37..c32423e94 100644 --- a/electron/windows.ts +++ b/electron/windows.ts @@ -62,6 +62,7 @@ let hudOverlayInteractiveBounds: Array<{ top: number; right: number; bottom: number; + shape?: "ellipse"; }> | null = null; let countdownWindow: BrowserWindow | null = null; let capturePickerWindows: BrowserWindow[] = []; @@ -502,7 +503,7 @@ ipcMain.on( ( _event, bounds: - | Array<{ left: number; top: number; right: number; bottom: number }> + | Array<{ left: number; top: number; right: number; bottom: number; shape?: "ellipse" }> | null | undefined, ) => { @@ -760,7 +761,7 @@ export function createHudOverlayWindow(): BrowserWindow { win.setIgnoreMouseEvents(false); }, }) - : () => {}; + : () => undefined; const handleDisplayRemoved = () => { hudUserPosition = null; }; diff --git a/src/components/launch/LaunchWindow.tsx b/src/components/launch/LaunchWindow.tsx index 87c0a2365..6858cf4e4 100644 --- a/src/components/launch/LaunchWindow.tsx +++ b/src/components/launch/LaunchWindow.tsx @@ -166,6 +166,7 @@ function LaunchWindowContent() { top: window.screenY + rect.top, right: window.screenX + rect.right, bottom: window.screenY + rect.bottom, + shape: rect.shape, })), ); }; @@ -189,12 +190,7 @@ function LaunchWindowContent() { window.removeEventListener("resize", reportInteractiveBounds); window.electronAPI?.hudOverlaySetInteractiveBounds?.(null); }; - }, [ - recordingHudOffset, - recordingWebcamPreviewContainerRef, - showRecordingWebcamPreview, - webcamPreview.webcamPreviewOffset, - ]); + }, [recordingWebcamPreviewContainerRef]); const { handleHudMouseEnter, handleHudMouseLeave, beginInteractiveHudAction } = useLaunchHudInteractionState({ diff --git a/src/i18n/locales/de/common.json b/src/i18n/locales/de/common.json index 81837926a..02f316124 100644 --- a/src/i18n/locales/de/common.json +++ b/src/i18n/locales/de/common.json @@ -18,7 +18,10 @@ "delete": "Löschen", "done": "Fertig", "retry": "Erneut versuchen", - "apply": "Anwenden" + "apply": "Anwenden", + "minimize": "Minimieren", + "maximize": "Maximieren", + "restoreWindow": "Fenster wiederherstellen" }, "errors": { "invalidFileType": "Ungültiger Dateityp", @@ -83,5 +86,6 @@ "downloadingButton": "Wird heruntergeladen · {{progress}}" }, "width": "Breite", - "height": "Höhe" + "height": "Höhe", + "windowControls": "Fenstersteuerung" } diff --git a/src/i18n/locales/en/common.json b/src/i18n/locales/en/common.json index 0875d4066..01af732c4 100644 --- a/src/i18n/locales/en/common.json +++ b/src/i18n/locales/en/common.json @@ -18,7 +18,10 @@ "delete": "Delete", "done": "Done", "retry": "Try again", - "apply": "Apply" + "apply": "Apply", + "minimize": "Minimize", + "maximize": "Maximize", + "restoreWindow": "Restore window" }, "errors": { "invalidFileType": "Invalid file type", @@ -83,5 +86,6 @@ "downloadingButton": "Downloading · {{progress}}" }, "width": "Width", - "height": "Height" + "height": "Height", + "windowControls": "Window controls" } diff --git a/src/i18n/locales/es/common.json b/src/i18n/locales/es/common.json index a9c183aab..d11baf468 100644 --- a/src/i18n/locales/es/common.json +++ b/src/i18n/locales/es/common.json @@ -18,7 +18,10 @@ "delete": "Eliminar", "done": "Hecho", "retry": "Intentar de nuevo", - "apply": "Aplicar" + "apply": "Aplicar", + "minimize": "Minimizar", + "maximize": "Maximizar", + "restoreWindow": "Restaurar ventana" }, "errors": { "invalidFileType": "Tipo de archivo inválido", @@ -83,5 +86,6 @@ "downloadingButton": "Descargando · {{progress}}" }, "width": "Ancho", - "height": "Alto" + "height": "Alto", + "windowControls": "Controles de ventana" } diff --git a/src/i18n/locales/fr/common.json b/src/i18n/locales/fr/common.json index 250885d60..a54173587 100644 --- a/src/i18n/locales/fr/common.json +++ b/src/i18n/locales/fr/common.json @@ -18,7 +18,10 @@ "delete": "Supprimer", "done": "Terminé", "retry": "Réessayer", - "apply": "Appliquer" + "apply": "Appliquer", + "minimize": "Réduire", + "maximize": "Agrandir", + "restoreWindow": "Restaurer la fenêtre" }, "errors": { "invalidFileType": "Type de fichier invalide", @@ -83,5 +86,6 @@ "downloadingButton": "Téléchargement · {{progress}}" }, "width": "Largeur", - "height": "Hauteur" + "height": "Hauteur", + "windowControls": "Commandes de fenêtre" } diff --git a/src/i18n/locales/it/common.json b/src/i18n/locales/it/common.json index 77464a56e..2c1a388c7 100644 --- a/src/i18n/locales/it/common.json +++ b/src/i18n/locales/it/common.json @@ -18,7 +18,10 @@ "delete": "Elimina", "done": "Fatto", "retry": "Riprova", - "apply": "Applica" + "apply": "Applica", + "minimize": "Riduci a icona", + "maximize": "Ingrandisci", + "restoreWindow": "Ripristina finestra" }, "errors": { "invalidFileType": "Tipo di file non valido", @@ -83,5 +86,6 @@ "downloadingButton": "Download · {{progress}}" }, "width": "Larghezza", - "height": "Altezza" + "height": "Altezza", + "windowControls": "Controlli finestra" } diff --git a/src/i18n/locales/ja/common.json b/src/i18n/locales/ja/common.json index 87b1603e4..5f15fa75f 100644 --- a/src/i18n/locales/ja/common.json +++ b/src/i18n/locales/ja/common.json @@ -18,7 +18,10 @@ "delete": "削除", "done": "完了", "retry": "再試行", - "apply": "適用" + "apply": "適用", + "minimize": "最小化", + "maximize": "最大化", + "restoreWindow": "ウィンドウを元に戻す" }, "errors": { "invalidFileType": "対応していないファイル形式です", @@ -83,5 +86,6 @@ "downloadingButton": "ダウンロード中 · {{progress}}" }, "width": "幅", - "height": "高さ" + "height": "高さ", + "windowControls": "ウィンドウ操作" } diff --git a/src/i18n/locales/ko/common.json b/src/i18n/locales/ko/common.json index 674c1ea6b..8e5d323f0 100644 --- a/src/i18n/locales/ko/common.json +++ b/src/i18n/locales/ko/common.json @@ -18,7 +18,10 @@ "delete": "삭제", "done": "완료", "retry": "다시 시도", - "apply": "적용" + "apply": "적용", + "minimize": "최소화", + "maximize": "최대화", + "restoreWindow": "창 복원" }, "errors": { "invalidFileType": "잘못된 파일 형식입니다", @@ -83,5 +86,6 @@ "downloadingButton": "다운로드 중 · {{progress}}" }, "width": "너비", - "height": "높이" + "height": "높이", + "windowControls": "창 제어" } diff --git a/src/i18n/locales/nl/common.json b/src/i18n/locales/nl/common.json index df9b2d553..129e8aba6 100644 --- a/src/i18n/locales/nl/common.json +++ b/src/i18n/locales/nl/common.json @@ -18,7 +18,10 @@ "delete": "Verwijderen", "done": "Klaar", "retry": "Opnieuw proberen", - "apply": "Toepassen" + "apply": "Toepassen", + "minimize": "Minimaliseren", + "maximize": "Maximaliseren", + "restoreWindow": "Venster herstellen" }, "errors": { "invalidFileType": "Ongeldig bestandstype", @@ -83,5 +86,6 @@ "downloadingButton": "Downloaden · {{progress}}" }, "width": "Breedte", - "height": "Hoogte" + "height": "Hoogte", + "windowControls": "Vensterbediening" } diff --git a/src/i18n/locales/pt-BR/common.json b/src/i18n/locales/pt-BR/common.json index 899b5dd6c..0568ec49e 100644 --- a/src/i18n/locales/pt-BR/common.json +++ b/src/i18n/locales/pt-BR/common.json @@ -18,7 +18,10 @@ "delete": "Excluir", "done": "Concluído", "retry": "Tentar novamente", - "apply": "Aplicar" + "apply": "Aplicar", + "minimize": "Minimizar", + "maximize": "Maximizar", + "restoreWindow": "Restaurar janela" }, "errors": { "invalidFileType": "Tipo de arquivo inválido", @@ -83,5 +86,6 @@ "downloadingButton": "Baixando · {{progress}}" }, "width": "Largura", - "height": "Altura" + "height": "Altura", + "windowControls": "Controles da janela" } diff --git a/src/i18n/locales/ru/common.json b/src/i18n/locales/ru/common.json index 3646f6f25..e4c3cdb61 100644 --- a/src/i18n/locales/ru/common.json +++ b/src/i18n/locales/ru/common.json @@ -16,7 +16,10 @@ "save": "Сохранить", "undo": "Отменить", "delete": "Удалить", - "done": "Готово" + "done": "Готово", + "minimize": "Свернуть", + "maximize": "Развернуть", + "restoreWindow": "Восстановить окно" }, "errors": { "invalidFileType": "Неверный формат файла", @@ -58,5 +61,6 @@ "loving": "В восторге", "neutral": "Нейтрально", "angry": "Раздражение" - } + }, + "windowControls": "Управление окном" } diff --git a/src/i18n/locales/zh-CN/common.json b/src/i18n/locales/zh-CN/common.json index 4ce861827..6f7ea156c 100644 --- a/src/i18n/locales/zh-CN/common.json +++ b/src/i18n/locales/zh-CN/common.json @@ -18,7 +18,10 @@ "delete": "删除", "done": "完成", "retry": "重试", - "apply": "应用" + "apply": "应用", + "minimize": "最小化", + "maximize": "最大化", + "restoreWindow": "还原窗口" }, "errors": { "invalidFileType": "无效的文件类型", @@ -83,5 +86,6 @@ "downloadingButton": "正在下载 · {{progress}}" }, "width": "宽度", - "height": "高度" + "height": "高度", + "windowControls": "窗口控件" } diff --git a/src/i18n/locales/zh-TW/common.json b/src/i18n/locales/zh-TW/common.json index 8e3308c1f..32b05906d 100644 --- a/src/i18n/locales/zh-TW/common.json +++ b/src/i18n/locales/zh-TW/common.json @@ -18,7 +18,10 @@ "delete": "刪除", "done": "完成", "retry": "重試", - "apply": "套用" + "apply": "套用", + "minimize": "最小化", + "maximize": "最大化", + "restoreWindow": "還原視窗" }, "errors": { "invalidFileType": "無效的檔案類型", @@ -83,5 +86,6 @@ "downloadingButton": "正在下載 · {{progress}}" }, "width": "寬度", - "height": "高度" + "height": "高度", + "windowControls": "視窗控制項" }