diff --git a/packages/ui/package.json b/packages/ui/package.json
index fa23227..e19fa08 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -40,6 +40,7 @@
"electron-updater": "^6.1.7",
"minimist": "^1.2.8",
"node-machine-id": "^1.1.12",
+ "pinia": "^3.0.2",
"puppeteer": "20.1.0",
"puppeteer-extra-plugin-stealth": "2.11.2",
"uuid": "^11.1.0"
diff --git a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/index.ts b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/index.ts
index bdd9941..8d2409c 100644
--- a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/index.ts
+++ b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/index.ts
@@ -5,7 +5,6 @@ import './app-menu'
import initIpc from './ipc'
import gtag from '../../utils/gtag'
import initPublicIpc from '../../utils/initPublicIpc'
-import { checkUpdateForUi } from '../../features/updater'
export function openSettingWindow() {
// TODO: singleton lock; how can we check if there is another process should run as singleton with arguments?
if (!app.requestSingleInstanceLock()) {
@@ -66,6 +65,4 @@ export function openSettingWindow() {
globalShortcut.unregister('Command+Option+Shift+/')
})
})
-
- checkUpdateForUi()
}
diff --git a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts
index fe2def6..82af5f5 100644
--- a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts
+++ b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts
@@ -50,6 +50,7 @@ import {
readNoReplyReminderLlmMockWindow
} from '../../../window/readNoReplyReminderLlmMockWindow'
import { RequestSceneEnum } from '../../../features/llm-request-log'
+import { checkUpdateForUi } from '../../../features/updater'
export default function initIpc() {
ipcMain.handle('fetch-config-file-content', async () => {
@@ -579,6 +580,10 @@ export default function initIpc() {
ipcMain.on('close-read-no-reply-reminder-llm-mock-window', () =>
readNoReplyReminderLlmMockWindow?.close()
)
+ ipcMain.handle('check-update', async () => {
+ const newRelease = await checkUpdateForUi()
+ return newRelease
+ })
ipcMain.handle('exit-app-immediately', () => {
app.exit(0)
diff --git a/packages/ui/src/renderer/src/main.ts b/packages/ui/src/renderer/src/main.ts
index 464baf0..b6b7cec 100644
--- a/packages/ui/src/renderer/src/main.ts
+++ b/packages/ui/src/renderer/src/main.ts
@@ -2,13 +2,15 @@ import { createApp } from 'vue'
import ElementPlus, { ElMessage } from 'element-plus'
import App from './App.vue'
import router from './router'
+import { createPinia } from 'pinia'
import 'normalize.css'
import './style/public.scss'
import 'element-plus/dist/index.css'
import 'virtual:uno.css'
import 'animate.css'
-createApp(App).use(router).use(ElementPlus).mount('#app')
+const pinia = createPinia()
+createApp(App).use(pinia).use(router).use(ElementPlus).mount('#app')
electron.ipcRenderer.on('toast-message', (_, payload) => {
ElMessage(payload)
})
diff --git a/packages/ui/src/renderer/src/page/MainLayout/index.vue b/packages/ui/src/renderer/src/page/MainLayout/index.vue
index ff3e210..e242260 100644
--- a/packages/ui/src/renderer/src/page/MainLayout/index.vue
+++ b/packages/ui/src/renderer/src/page/MainLayout/index.vue
@@ -96,13 +96,43 @@
+