From bf4e60d22467d66477acae9257c4bfc8bca83f65 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Tue, 26 May 2026 03:55:16 +0530 Subject: [PATCH] feat(menu, dev-tools): enhance menu with view options and enable dev tools in development mode --- surfsense_desktop/src/modules/menu.ts | 21 ++++++++++++++++++- surfsense_desktop/src/modules/quick-ask.ts | 3 ++- .../screen-capture/screen-region-picker.ts | 3 ++- .../modules/screen-capture/window-picker.ts | 3 ++- surfsense_desktop/src/modules/window.ts | 1 + 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/surfsense_desktop/src/modules/menu.ts b/surfsense_desktop/src/modules/menu.ts index 2753aaacd..629d88a04 100644 --- a/surfsense_desktop/src/modules/menu.ts +++ b/surfsense_desktop/src/modules/menu.ts @@ -58,7 +58,23 @@ export function setupMenu(): void { } const isMac = process.platform === 'darwin'; + const isDev = !app.isPackaged; const updateMenuItem = getUpdateMenuItem(); + const viewSubmenu: Electron.MenuItemConstructorOptions[] = [ + { role: 'reload' as const }, + { role: 'forceReload' as const }, + ...(isDev + ? [ + { role: 'toggleDevTools' as const }, + ] + : []), + { type: 'separator' as const }, + { role: 'resetZoom' as const }, + { role: 'zoomIn' as const }, + { role: 'zoomOut' as const }, + { type: 'separator' as const }, + { role: 'togglefullscreen' as const }, + ]; const template: Electron.MenuItemConstructorOptions[] = [ ...(isMac ? [{ @@ -79,7 +95,10 @@ export function setupMenu(): void { : []), { role: 'fileMenu' as const }, { role: 'editMenu' as const }, - { role: 'viewMenu' as const }, + { + label: 'View', + submenu: viewSubmenu, + }, { role: 'windowMenu' as const }, { role: 'help' as const, diff --git a/surfsense_desktop/src/modules/quick-ask.ts b/surfsense_desktop/src/modules/quick-ask.ts index d7602f470..0807e2e08 100644 --- a/surfsense_desktop/src/modules/quick-ask.ts +++ b/surfsense_desktop/src/modules/quick-ask.ts @@ -1,4 +1,4 @@ -import { BrowserWindow, clipboard, globalShortcut, ipcMain, screen, shell } from 'electron'; +import { app, BrowserWindow, clipboard, globalShortcut, ipcMain, screen, shell } from 'electron'; import path from 'path'; import { IPC_CHANNELS } from '../ipc/channels'; import { checkAccessibilityPermission, getFrontmostApp, simulateCopy, simulatePaste } from './platform'; @@ -51,6 +51,7 @@ function createQuickAskWindow(x: number, y: number): BrowserWindow { contextIsolation: true, nodeIntegration: false, sandbox: true, + devTools: !app.isPackaged, }, show: false, skipTaskbar: true, diff --git a/surfsense_desktop/src/modules/screen-capture/screen-region-picker.ts b/surfsense_desktop/src/modules/screen-capture/screen-region-picker.ts index fd771b0f7..0cfc92297 100644 --- a/surfsense_desktop/src/modules/screen-capture/screen-region-picker.ts +++ b/surfsense_desktop/src/modules/screen-capture/screen-region-picker.ts @@ -1,4 +1,4 @@ -import { BrowserWindow, desktopCapturer, nativeImage, screen } from 'electron'; +import { app, BrowserWindow, desktopCapturer, nativeImage, screen } from 'electron'; import path from 'path'; import { IPC_CHANNELS } from '../../ipc/channels'; function fitNativeImageToWorkArea(img: Electron.NativeImage, display: Electron.Display): Electron.NativeImage { @@ -261,6 +261,7 @@ export function pickScreenRegion(opts?: { windowDataUrl?: string }): Promise { contextIsolation: true, nodeIntegration: false, sandbox: true, + devTools: !app.isPackaged, }, }); diff --git a/surfsense_desktop/src/modules/window.ts b/surfsense_desktop/src/modules/window.ts index bcae1799c..42011d089 100644 --- a/surfsense_desktop/src/modules/window.ts +++ b/surfsense_desktop/src/modules/window.ts @@ -53,6 +53,7 @@ export function createMainWindow(initialPath = '/dashboard'): BrowserWindow { nodeIntegration: false, sandbox: true, webviewTag: false, + devTools: !app.isPackaged, }, show: false, ...(isMac