pi-ele Phase 1: Electron 骨架(主进程+托盘+preload,可复用 web/src)
- web/electron/main.cjs: BrowserWindow 加载 dist/index.html(prod)或 vite dev server 托盘(进托盘/退出/单击恢复),关闭按钮隐藏到托盘而非退出(用户要求) - web/electron/preload.cjs: contextBridge 暴露 gatewayUrl/versions/platform - web/package.json: 加 main 指向 main.cjs、dev:electron / build:win / build:linux 脚本、 electron 44.2.0 + electron-builder 26.15.3 依赖、build 配置(NSIS/AppImage/deb) - .gitignore: /release/ 验证(headless + xvfb): - Electron 加载 Gateway WebUI 成功(title=AgentMail, body 渲染) - Tray API 可用,BrowserWindow 正常 - prod 模式真实 main.cjs 无报错
This commit is contained in:
25
web/electron/preload.cjs
Normal file
25
web/electron/preload.cjs
Normal file
@ -0,0 +1,25 @@
|
||||
/**
|
||||
* AgentMail Electron preload —— 通过 contextBridge 暴露安全 API 给渲染进程。
|
||||
*
|
||||
* 渲染进程是 web/src 的 React,跑在 sandbox: true 下(无 nodeIntegration)。
|
||||
* 需要桌面能力时(文件选择、通知、托盘角标、SSE 转发)走这里暴露的桥。
|
||||
*
|
||||
* Phase 1 只暴露最小集;后续 Phase 逐步加。
|
||||
*/
|
||||
|
||||
const { contextBridge, ipcRenderer } = require('electron');
|
||||
|
||||
contextBridge.exposeInMainWorld('agentmail', {
|
||||
/** Gateway 基础地址(主进程 env 或默认 127.0.0.1:8180) */
|
||||
gatewayUrl: () => ipcRenderer.invoke('get-gateway-url'),
|
||||
|
||||
/** 版本信息(渲染进程可显示在 About 页) */
|
||||
versions: {
|
||||
electron: process.versions.electron,
|
||||
chrome: process.versions.chrome,
|
||||
node: process.versions.node,
|
||||
},
|
||||
|
||||
/** 平台标识:win32 / linux / darwin */
|
||||
platform: process.platform,
|
||||
});
|
||||
Reference in New Issue
Block a user