diff --git a/README.md b/README.md index 5b57c7a..f69c18a 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@

- version + version electron typescript license @@ -256,7 +256,7 @@ npm start ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ npm run dist ``` -产出:`release/Metona Ollama Setup v0.12.5.exe` +产出:`release/Metona Ollama Setup v0.12.9.exe` ## 🛠️ 常用命令 @@ -507,7 +507,7 @@ npm start ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ npm run dist ``` -Output: `release/Metona Ollama Setup v0.12.5.exe` +Output: `release/Metona Ollama Setup v0.12.9.exe` ## 🛠️ Common Commands diff --git a/package-lock.json b/package-lock.json index 68094e7..a263547 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "metona-ollama-desktop", - "version": "0.12.5", + "version": "0.12.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "metona-ollama-desktop", - "version": "0.12.5", + "version": "0.12.9", "license": "MIT", "dependencies": { "ffmpeg-static": "^5.2.0", diff --git a/package.json b/package.json index b7ece6d..d13d3fc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metona-ollama-desktop", - "version": "0.12.5", + "version": "0.12.9", "description": "Metona Ollama - TypeScript + Electron \u684c\u9762 AI \u804a\u5929\u5ba2\u6237\u7aef", "main": "dist/main/main.js", "author": "thzxx", diff --git a/src/main/ipc.ts b/src/main/ipc.ts index 68cb9cd..dfabb34 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -130,6 +130,14 @@ export async function setupIPC(): Promise { return result.filePath; }); + ipcMain.handle('dialog:openDirectory', async () => { + const result = await dialog.showOpenDialog(mainWindow!, { + properties: ['openDirectory'] + }); + if (result.canceled) return null; + return result.filePaths; + }); + ipcMain.handle('fs:readFile', async (_, filePath: string) => { try { const check = checkPathAllowed(path.resolve(filePath), 'read'); diff --git a/src/main/menu.ts b/src/main/menu.ts index 39a6c8c..b707874 100644 --- a/src/main/menu.ts +++ b/src/main/menu.ts @@ -101,7 +101,7 @@ export function createMenu(): void { dialog.showMessageBox(mainWindow!, { type: 'info', title: '关于 Metona Ollama', - message: 'Metona Ollama Desktop v0.12.5', + message: 'Metona Ollama Desktop v0.12.9', detail: 'TypeScript + Electron Ollama AI 聊天客户端\n\nhttps://gitee.com/thzxx/metona-ollama', icon: getIconPath() }); diff --git a/src/main/preload.ts b/src/main/preload.ts index 35bb05b..0211920 100644 --- a/src/main/preload.ts +++ b/src/main/preload.ts @@ -19,7 +19,8 @@ contextBridge.exposeInMainWorld('metonaDesktop', { }, dialog: { openFile: (options?: unknown) => ipcRenderer.invoke('dialog:openFile', options), - saveFile: (options?: unknown) => ipcRenderer.invoke('dialog:saveFile', options) + saveFile: (options?: unknown) => ipcRenderer.invoke('dialog:saveFile', options), + openDirectory: () => ipcRenderer.invoke('dialog:openDirectory') }, fs: { readFile: (filePath: string) => ipcRenderer.invoke('fs:readFile', filePath), diff --git a/src/renderer/components/settings-modal.ts b/src/renderer/components/settings-modal.ts index 007e18c..ea241e8 100644 --- a/src/renderer/components/settings-modal.ts +++ b/src/renderer/components/settings-modal.ts @@ -267,12 +267,11 @@ export function initSettingsModal(): void { btnBrowseWorkspace.addEventListener('click', async () => { const bridge = window.metonaDesktop; if (!bridge?.isDesktop) return; - const paths = await bridge.dialog.openFile({ - filters: [{ name: '文件夹', extensions: ['*'] }] - }); - // Electron openFile 对话框不能直接选文件夹,这里用 saveFile 代替 - // 或者让用户手动输入路径 - showToast('请在输入框中直接修改路径', 'info'); + const paths = await bridge.dialog.openDirectory(); + if (paths && paths.length > 0) { + inputWorkspaceDir.value = paths[0]; + inputWorkspaceDir.dispatchEvent(new Event('blur')); + } }); // 双击输入框解锁编辑 inputWorkspaceDir.addEventListener('dblclick', () => { diff --git a/src/renderer/index.html b/src/renderer/index.html index 6002790..99e035f 100644 --- a/src/renderer/index.html +++ b/src/renderer/index.html @@ -28,7 +28,7 @@

Metona Ollama - v0.12.5 + v0.12.9