From d4caae6de96274917fb383b3d68473071b2ed5a4 Mon Sep 17 00:00:00 2001 From: CREDO23 Date: Mon, 27 Apr 2026 20:39:03 +0200 Subject: [PATCH] Move desktop screen capture into modules/screen-capture and align preload build paths and imports. --- surfsense_desktop/scripts/build-electron.mjs | 8 ++++---- surfsense_desktop/src/ipc/handlers.ts | 2 +- surfsense_desktop/src/modules/screen-capture/index.ts | 7 +++++++ .../modules/{ => screen-capture}/screen-region-picker.ts | 4 ++-- .../{ => modules/screen-capture}/screen-region-preload.ts | 2 +- .../src/modules/{ => screen-capture}/screenshot-assist.ts | 8 ++++---- .../{ => modules/screen-capture}/window-picker-preload.ts | 2 +- .../src/modules/{ => screen-capture}/window-picker.ts | 4 ++-- surfsense_desktop/src/modules/tray.ts | 2 +- 9 files changed, 23 insertions(+), 16 deletions(-) create mode 100644 surfsense_desktop/src/modules/screen-capture/index.ts rename surfsense_desktop/src/modules/{ => screen-capture}/screen-region-picker.ts (98%) rename surfsense_desktop/src/{ => modules/screen-capture}/screen-region-preload.ts (87%) rename surfsense_desktop/src/modules/{ => screen-capture}/screenshot-assist.ts (80%) rename surfsense_desktop/src/{ => modules/screen-capture}/window-picker-preload.ts (89%) rename surfsense_desktop/src/modules/{ => screen-capture}/window-picker.ts (98%) diff --git a/surfsense_desktop/scripts/build-electron.mjs b/surfsense_desktop/scripts/build-electron.mjs index ca17e4c48..75a3cdf61 100644 --- a/surfsense_desktop/scripts/build-electron.mjs +++ b/surfsense_desktop/scripts/build-electron.mjs @@ -134,14 +134,14 @@ async function buildElectron() { await build({ ...shared, - entryPoints: ['src/screen-region-preload.ts'], - outfile: 'dist/screen-region-preload.js', + entryPoints: ['src/modules/screen-capture/screen-region-preload.ts'], + outfile: 'dist/modules/screen-capture/screen-region-preload.js', }); await build({ ...shared, - entryPoints: ['src/window-picker-preload.ts'], - outfile: 'dist/window-picker-preload.js', + entryPoints: ['src/modules/screen-capture/window-picker-preload.ts'], + outfile: 'dist/modules/screen-capture/window-picker-preload.js', }); console.log('Electron build complete'); diff --git a/surfsense_desktop/src/ipc/handlers.ts b/surfsense_desktop/src/ipc/handlers.ts index d68d4a5bf..b524a91a1 100644 --- a/surfsense_desktop/src/ipc/handlers.ts +++ b/surfsense_desktop/src/ipc/handlers.ts @@ -7,7 +7,7 @@ import { requestScreenRecording, restartApp, } from '../modules/permissions'; -import { pickOpenWindowCapture } from '../modules/window-picker'; +import { pickOpenWindowCapture } from '../modules/screen-capture'; import { selectFolder, addWatchedFolder, diff --git a/surfsense_desktop/src/modules/screen-capture/index.ts b/surfsense_desktop/src/modules/screen-capture/index.ts new file mode 100644 index 000000000..6c1c75509 --- /dev/null +++ b/surfsense_desktop/src/modules/screen-capture/index.ts @@ -0,0 +1,7 @@ +/** + * Window capture for Screenshot Assist and chat fullscreen: single-session + * desktopCapturer, region overlay, and shortcut entry point. + */ +export { pickOpenWindowCapture, type PickedWindowResult } from './window-picker'; +export { pickScreenRegion, captureCurrentDisplayDataUrl } from './screen-region-picker'; +export { runScreenshotAssistShortcut } from './screenshot-assist'; diff --git a/surfsense_desktop/src/modules/screen-region-picker.ts b/surfsense_desktop/src/modules/screen-capture/screen-region-picker.ts similarity index 98% rename from surfsense_desktop/src/modules/screen-region-picker.ts rename to surfsense_desktop/src/modules/screen-capture/screen-region-picker.ts index 1c4b77195..fd771b0f7 100644 --- a/surfsense_desktop/src/modules/screen-region-picker.ts +++ b/surfsense_desktop/src/modules/screen-capture/screen-region-picker.ts @@ -1,6 +1,6 @@ import { BrowserWindow, desktopCapturer, nativeImage, screen } from 'electron'; import path from 'path'; -import { IPC_CHANNELS } from '../ipc/channels'; +import { IPC_CHANNELS } from '../../ipc/channels'; function fitNativeImageToWorkArea(img: Electron.NativeImage, display: Electron.Display): Electron.NativeImage { const wa = display.workArea; const { width: iw, height: ih } = img.getSize(); @@ -257,7 +257,7 @@ export function pickScreenRegion(opts?: { windowDataUrl?: string }): Promise { diff --git a/surfsense_desktop/src/modules/screenshot-assist.ts b/surfsense_desktop/src/modules/screen-capture/screenshot-assist.ts similarity index 80% rename from surfsense_desktop/src/modules/screenshot-assist.ts rename to surfsense_desktop/src/modules/screen-capture/screenshot-assist.ts index 34fd0f489..171b98a57 100644 --- a/surfsense_desktop/src/modules/screenshot-assist.ts +++ b/surfsense_desktop/src/modules/screen-capture/screenshot-assist.ts @@ -1,9 +1,9 @@ -import { IPC_CHANNELS } from '../ipc/channels'; -import { trackEvent } from './analytics'; +import { IPC_CHANNELS } from '../../ipc/channels'; +import { trackEvent } from '../analytics'; import { pickScreenRegion } from './screen-region-picker'; import { pickOpenWindowCapture } from './window-picker'; -import { getMainWindow, showMainWindow } from './window'; -import { hasScreenRecordingPermission, requestScreenRecording } from './permissions'; +import { getMainWindow, showMainWindow } from '../window'; +import { hasScreenRecordingPermission, requestScreenRecording } from '../permissions'; export async function runScreenshotAssistShortcut(): Promise { if (!hasScreenRecordingPermission()) { diff --git a/surfsense_desktop/src/window-picker-preload.ts b/surfsense_desktop/src/modules/screen-capture/window-picker-preload.ts similarity index 89% rename from surfsense_desktop/src/window-picker-preload.ts rename to surfsense_desktop/src/modules/screen-capture/window-picker-preload.ts index 9b582cede..dd0acd81e 100644 --- a/surfsense_desktop/src/window-picker-preload.ts +++ b/surfsense_desktop/src/modules/screen-capture/window-picker-preload.ts @@ -1,5 +1,5 @@ import { contextBridge, ipcRenderer } from 'electron'; -import { IPC_CHANNELS } from './ipc/channels'; +import { IPC_CHANNELS } from '../../ipc/channels'; contextBridge.exposeInMainWorld('surfsenseWindowPick', { list: () => diff --git a/surfsense_desktop/src/modules/window-picker.ts b/surfsense_desktop/src/modules/screen-capture/window-picker.ts similarity index 98% rename from surfsense_desktop/src/modules/window-picker.ts rename to surfsense_desktop/src/modules/screen-capture/window-picker.ts index 0e8505bcb..b66e23c5c 100644 --- a/surfsense_desktop/src/modules/window-picker.ts +++ b/surfsense_desktop/src/modules/screen-capture/window-picker.ts @@ -1,6 +1,6 @@ import { BrowserWindow, desktopCapturer, ipcMain, screen } from 'electron'; import path from 'path'; -import { IPC_CHANNELS } from '../ipc/channels'; +import { IPC_CHANNELS } from '../../ipc/channels'; let pickInProgress = false; @@ -181,7 +181,7 @@ export function pickOpenWindowCapture(): Promise { autoHideMenuBar: true, title: 'SurfSense — choose window', webPreferences: { - preload: path.join(__dirname, 'window-picker-preload.js'), + preload: path.join(__dirname, 'modules', 'screen-capture', 'window-picker-preload.js'), contextIsolation: true, nodeIntegration: false, sandbox: true, diff --git a/surfsense_desktop/src/modules/tray.ts b/surfsense_desktop/src/modules/tray.ts index 07b53bafb..5fb1acbdf 100644 --- a/surfsense_desktop/src/modules/tray.ts +++ b/surfsense_desktop/src/modules/tray.ts @@ -1,7 +1,7 @@ import { app, globalShortcut, Menu, nativeImage, Tray, type NativeImage } from 'electron'; import path from 'path'; import { runGeneralAssistShortcut } from './general-assist'; -import { runScreenshotAssistShortcut } from './screenshot-assist'; +import { runScreenshotAssistShortcut } from './screen-capture'; import { showMainWindow } from './window'; import { getShortcuts } from './shortcuts'; import { trackEvent } from './analytics';