v0.12.10: 修复工作空间目录设置不生效 + 版本号更新

fix: 工作空间目录设置三处断链修复
  - ipc.ts: setDir 时持久化到 SQLite,启动时自动恢复
  - settings-modal.ts: 设置成功后通知 workspace-panel 刷新
  - workspace-panel.ts: 监听目录变更事件,立即重载文件列表

chore: 版本号 0.12.9 → 0.12.10
This commit is contained in:
紫影233
2026-06-24 10:58:49 +08:00
parent 2d3ea85255
commit d7275b08e8
8 changed files with 63 additions and 15 deletions
+3 -3
View File
@@ -14,7 +14,7 @@
</p>
<p align="center">
<img src="https://img.shields.io/badge/version-v0.12.9-E8734A?style=flat-square" alt="version">
<img src="https://img.shields.io/badge/version-v0.12.10-E8734A?style=flat-square" alt="version">
<img src="https://img.shields.io/badge/electron-33+-47848F?style=flat-square&logo=electron" alt="electron">
<img src="https://img.shields.io/badge/typescript-5.7+-3178C6?style=flat-square&logo=typescript" alt="typescript">
<img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="license">
@@ -256,7 +256,7 @@ npm start
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ npm run dist
```
产出:`release/Metona Ollama Setup v0.12.9.exe`
产出:`release/Metona Ollama Setup v0.12.10.exe`
## 🛠️ 常用命令
@@ -507,7 +507,7 @@ npm start
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ npm run dist
```
Output: `release/Metona Ollama Setup v0.12.9.exe`
Output: `release/Metona Ollama Setup v0.12.10.exe`
## 🛠️ Common Commands
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "metona-ollama-desktop",
"version": "0.12.9",
"version": "0.12.10",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "metona-ollama-desktop",
"version": "0.12.9",
"version": "0.12.10",
"license": "MIT",
"dependencies": {
"ffmpeg-static": "^5.2.0",
+7 -2
View File
@@ -1,7 +1,7 @@
{
"name": "metona-ollama-desktop",
"version": "0.12.9",
"description": "Metona Ollama - TypeScript + Electron \u684c\u9762 AI \u804a\u5929\u5ba2\u6237\u7aef",
"version": "0.12.10",
"description": "Metona Ollama - TypeScript + Electron 桌面 AI 聊天客户端",
"main": "dist/main/main.js",
"author": "thzxx",
"license": "MIT",
@@ -73,5 +73,10 @@
"dependencies": {
"ffmpeg-static": "^5.2.0",
"sql.js": "^1.11.0"
},
"allowScripts": {
"electron@33.4.11": true,
"esbuild@0.21.5": true,
"ffmpeg-static@5.3.0": true
}
}
+17 -6
View File
@@ -279,12 +279,14 @@ export async function setupIPC(): Promise<void> {
return { dir: getWorkspaceDir(), defaultDir: getWorkspaceDir() };
});
// 设置工作空间目录
ipcMain.handle('workspace:setDir', (_, dir: string) => {
try {
setWorkspaceDir(dir);
return { success: true, dir: getWorkspaceDir() };
} catch (err) {
// 设置工作空间目录
ipcMain.handle('workspace:setDir', (_, dir: string) => {
try {
setWorkspaceDir(dir);
// ── 持久化到 SQLite,重启后恢复 ──
saveSetting('workspaceDir', getWorkspaceDir());
return { success: true, dir: getWorkspaceDir() };
} catch (err) {
return { success: false, error: (err as Error).message };
}
});
@@ -344,6 +346,15 @@ export async function setupIPC(): Promise<void> {
await initDatabase();
sendLog('success', '📦 SQLite 数据库已初始化');
// ── 恢复工作空间目录 ──
try {
const savedWsDir = getSetting<string>('workspaceDir', '');
if (savedWsDir) {
setWorkspaceDir(savedWsDir);
sendLog('info', '📁 恢复工作空间目录', savedWsDir);
}
} catch { /* ignore */ }
// Sessions
ipcMain.handle('db:saveSession', (_, session) => {
try { return { success: true, id: saveSession(session) }; }
+1 -1
View File
@@ -101,7 +101,7 @@ export function createMenu(): void {
dialog.showMessageBox(mainWindow!, {
type: 'info',
title: '关于 Metona Ollama',
message: 'Metona Ollama Desktop v0.12.9',
message: 'Metona Ollama Desktop v0.12.10',
detail: 'TypeScript + Electron Ollama AI 聊天客户端\n\nhttps://gitee.com/thzxx/metona-ollama',
icon: getIconPath()
});
+12
View File
@@ -288,6 +288,8 @@ export function initSettingsModal(): void {
if (result.success) {
showToast('工作空间目录已更新', 'success');
logSetting('工作空间目录', result.dir!);
// ── 通知工作空间面板刷新目录 ──
window.dispatchEvent(new CustomEvent('workspaceDirChanged', { detail: { dir: result.dir } }));
} else {
showToast(`设置失败: ${result.error!}`, 'error');
// 恢复原值
@@ -308,6 +310,16 @@ export function openSettingsModal(): void {
updateMemoryVectorStatus();
loadTimeoutSettings();
loadWatchdogSetting();
// 刷新工作空间目录显示
const bridge = window.metonaDesktop;
if (bridge?.isDesktop) {
const wsInput = document.querySelector('#inputWorkspaceDir') as HTMLInputElement;
if (wsInput) {
bridge.workspace.getDir().then((info: { dir: string }) => {
wsInput.value = info.dir;
}).catch(() => {});
}
}
}
/** 加载看门狗设置到输入框 */
@@ -237,6 +237,26 @@ export async function initWorkspacePanel(): Promise<void> {
// 绑定 UI 事件
bindEvents();
// ── 监听工作空间目录变更(来自设置面板)──
window.addEventListener('workspaceDirChanged', ((e: CustomEvent) => {
const newDir = e.detail?.dir;
if (newDir && newDir !== workspaceDir) {
workspaceDir = newDir;
currentFileDir = newDir;
logInfo('工作空间目录已刷新', newDir);
// 如果当前在文件页签,立即重新加载
if (activeTab === 'files') {
loadFiles(newDir);
}
// 刷新终端空闲状态中的目录显示
if (activeTab === 'terminal') {
renderTerminal();
}
// 刷新文件页签(即使不在当前 tab,下次切过去就是新路径)
renderPanel();
}
}) as EventListener);
// 创建唯一终端
terminal = {
id: genId(),
+1 -1
View File
@@ -28,7 +28,7 @@
<div class="header-left">
<span class="logo">🦙</span>
<span class="app-title">Metona Ollama</span>
<span class="app-version">v0.12.9</span>
<span class="app-version">v0.12.10</span>
<button class="icon-btn help-btn" id="btnHelp" title="使用帮助">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/>