From 9a910933256d72776d232d6d77063608fcc47d14 Mon Sep 17 00:00:00 2001 From: cirry <812852553@qq.com> Date: Sun, 12 Apr 2026 10:34:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=A6=96=E9=A1=B5=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/index.js | 21 ++++++++--- src/renderer/App.vue | 43 +++++++++------------- src/renderer/views/home/HomeView.vue | 53 ++++++++++++++++++++++++++-- 3 files changed, 83 insertions(+), 34 deletions(-) diff --git a/src/main/index.js b/src/main/index.js index b0376bb..f1de3be 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -103,12 +103,18 @@ function buildEnv(exeDir) { } function getExePath() { - // 开发模式:__dirname = .vite/build,往上两级到项目根 - // 打包模式:用 process.resourcesPath + // 根据平台和架构确定可执行文件名及目录 + const isWin = process.platform === 'win32'; + const exeName = isWin ? 'opencode.exe' : 'opencode'; + if (app.isPackaged) { - return path.join(process.resourcesPath, 'opencode.exe'); + return path.join(process.resourcesPath, exeName); } - return path.join(__dirname, '..', '..', 'resources', 'windows', 'x64', 'opencode.exe'); + + // 开发模式:__dirname = .vite/build,往上两级到项目根 + const platformDir = process.platform === 'darwin' ? 'darwin' : 'windows'; + const archDir = process.arch === 'arm64' ? 'arm64' : 'x64'; + return path.join(__dirname, '..', '..', 'resources', platformDir, archDir, exeName); } async function startOpencode() { @@ -121,11 +127,16 @@ async function startOpencode() { const exeDir = path.dirname(exePath); await fs.promises.access(exePath, fs.constants.F_OK); + // macOS/Linux 需要确保可执行权限 + if (process.platform !== 'win32') { + await fs.promises.chmod(exePath, 0o755); + } + opencodePort = await resolvePort(); opencodeProcess = spawn(exePath, ['serve', '--port', String(opencodePort)], { cwd: exeDir, - windowsHide: true, env: buildEnv(exeDir), + ...(process.platform === 'win32' ? { windowsHide: true } : {}), }); opencodeProcess.stdout?.on('data', (d) => console.log(`[opencode] ${d.toString().trim()}`)); diff --git a/src/renderer/App.vue b/src/renderer/App.vue index 9fd66b9..d10b529 100644 --- a/src/renderer/App.vue +++ b/src/renderer/App.vue @@ -13,7 +13,7 @@ appStore.collapsed ? 'justify-center px-0 py-3 mx-auto w-11 rounded-xl' : 'w-[216px] h-[37px] rounded-[10px] pl-3 pr-[146px] py-0 mx-auto', $route.path === item.index ? 'bg-[#DEE0E4] text-gray-900' : 'text-gray-500 hover:bg-gray-50 hover:text-gray-700', ]" - @click="router.push(item.index)" + @click="handleMenuClick(item)" >