From a8e2df6bed0416f9eac63a05c94b67e59126568c Mon Sep 17 00:00:00 2001 From: Vaayne Date: Mon, 15 Sep 2025 21:25:42 +0800 Subject: [PATCH] feat: add electron-reload for development auto-restart - Install electron-reload package for automatic app reloading during development - Configure electron-reload in main process with development-only activation - Enable automatic restart when source files change during yarn dev - Use hardResetMethod: 'exit' for clean app restarts --- package.json | 1 + src/main/index.ts | 16 +++++++++-- yarn.lock | 73 +++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 79 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index ac02297cd8..c7a9587d3a 100644 --- a/package.json +++ b/package.json @@ -251,6 +251,7 @@ "electron": "37.4.0", "electron-builder": "26.0.15", "electron-devtools-installer": "^3.2.0", + "electron-reload": "^2.0.0-alpha.1", "electron-store": "^8.2.0", "electron-updater": "6.6.4", "electron-vite": "4.0.0", diff --git a/src/main/index.ts b/src/main/index.ts index 5b5c65cc1f..9b2dd96fc7 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -12,7 +12,20 @@ import { app } from 'electron' import installExtension, { REACT_DEVELOPER_TOOLS, REDUX_DEVTOOLS } from 'electron-devtools-installer' import { isDev, isLinux, isWin } from './constant' + +// Enable live-reload for Electron app in development +// This will automatically restart the app when files change during development +if (isDev) { + require('electron-reload')(__dirname, { + electron: require('electron'), + hardResetMethod: 'exit' + }) +} +import process from 'node:process' + import { registerIpc } from './ipc' +import { agentService } from './services/agents' +import { apiServerService } from './services/ApiServerService' import { configManager } from './services/ConfigManager' import mcpService from './services/MCPService' import { nodeTraceService } from './services/NodeTraceService' @@ -26,9 +39,6 @@ import selectionService, { initSelectionService } from './services/SelectionServ import { registerShortcuts } from './services/ShortcutService' import { TrayService } from './services/TrayService' import { windowService } from './services/WindowService' -import process from 'node:process' -import { apiServerService } from './services/ApiServerService' -import { agentService } from './services/agents' const logger = loggerService.withContext('MainEntry') diff --git a/yarn.lock b/yarn.lock index 97ec5918ac..74be2e4375 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14159,6 +14159,7 @@ __metadata: electron: "npm:37.4.0" electron-builder: "npm:26.0.15" electron-devtools-installer: "npm:^3.2.0" + electron-reload: "npm:^2.0.0-alpha.1" electron-store: "npm:^8.2.0" electron-updater: "npm:6.6.4" electron-vite: "npm:4.0.0" @@ -14634,6 +14635,16 @@ __metadata: languageName: node linkType: hard +"anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + "app-builder-bin@npm:5.0.0-alpha.12": version: 5.0.0-alpha.12 resolution: "app-builder-bin@npm:5.0.0-alpha.12" @@ -15042,7 +15053,7 @@ __metadata: languageName: node linkType: hard -"binary-extensions@npm:^2.2.0": +"binary-extensions@npm:^2.0.0, binary-extensions@npm:^2.2.0": version: 2.3.0 resolution: "binary-extensions@npm:2.3.0" checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 @@ -15164,7 +15175,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.3": +"braces@npm:^3.0.3, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" dependencies: @@ -15686,6 +15697,25 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^3.5.2": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + "chokidar@npm:^4.0.3": version: 4.0.3 resolution: "chokidar@npm:4.0.3" @@ -17708,6 +17738,15 @@ __metadata: languageName: node linkType: hard +"electron-reload@npm:^2.0.0-alpha.1": + version: 2.0.0-alpha.1 + resolution: "electron-reload@npm:2.0.0-alpha.1" + dependencies: + chokidar: "npm:^3.5.2" + checksum: 10c0/ca7469233719771480d3419d58061c73edb0b6aa214f841461fb8f17e065c07dd1a52e374f7313ca1649220d3472249302ff83aa4d7ae578992bb319a0849b87 + languageName: node + linkType: hard + "electron-store@npm:^8.2.0": version: 8.2.0 resolution: "electron-store@npm:8.2.0" @@ -19551,7 +19590,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:~2.3.3": +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -19570,7 +19609,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -19742,7 +19781,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.1.2": +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -20700,6 +20739,15 @@ __metadata: languageName: node linkType: hard +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + "is-buffer@npm:^2.0.0": version: 2.0.5 resolution: "is-buffer@npm:2.0.5" @@ -20787,7 +20835,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -23974,7 +24022,7 @@ __metadata: languageName: node linkType: hard -"normalize-path@npm:^3.0.0": +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 @@ -24757,7 +24805,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be @@ -26521,6 +26569,15 @@ __metadata: languageName: node linkType: hard +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + "redent@npm:^3.0.0": version: 3.0.0 resolution: "redent@npm:3.0.0"