From 620ae40d4513500da88ceb6e49396d666f405456 Mon Sep 17 00:00:00 2001 From: digua Date: Mon, 18 May 2026 22:43:00 +0800 Subject: [PATCH] fix(web): show app version in sidebar instead of empty string Inject __APP_VERSION__ from package.json via Vite define, read it in WebPlatformAdapter.getVersion(), and call getVersion() on all platforms (not just Electron) in Sidebar onMounted. --- src/components/common/Sidebar.vue | 12 ++++++------ src/services/platform/web.ts | 4 +++- vite.web.config.mts | 2 ++ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/components/common/Sidebar.vue b/src/components/common/Sidebar.vue index 9ba03b23..efe0ce30 100644 --- a/src/components/common/Sidebar.vue +++ b/src/components/common/Sidebar.vue @@ -71,13 +71,13 @@ let unlistenImportCompleted: (() => void) | null = null onMounted(async () => { sessionStore.loadSessions() - if (IS_ELECTRON) { - try { - version.value = await usePlatformService().getVersion() - } catch (e) { - console.error('Failed to get version', e) - } + try { + version.value = await usePlatformService().getVersion() + } catch (e) { + console.error('Failed to get version', e) + } + if (IS_ELECTRON) { unlistenImportCompleted = window.apiServerApi.onImportCompleted(() => { sessionStore.loadSessions() }) diff --git a/src/services/platform/web.ts b/src/services/platform/web.ts index 31077c77..121ac51c 100644 --- a/src/services/platform/web.ts +++ b/src/services/platform/web.ts @@ -6,9 +6,11 @@ import type { PlatformAdapter, OpenDialogOptions, OpenDialogResult, RemoteConfigResult } from './types' +declare const __APP_VERSION__: string + export class WebPlatformAdapter implements PlatformAdapter { async getVersion(): Promise { - return 'web' + return typeof __APP_VERSION__ !== 'undefined' ? __APP_VERSION__ : 'web' } async fetchRemoteConfig(url: string): Promise { diff --git a/vite.web.config.mts b/vite.web.config.mts index 6faea65f..bfda98d9 100644 --- a/vite.web.config.mts +++ b/vite.web.config.mts @@ -11,6 +11,7 @@ */ import { resolve } from 'path' +import { readFileSync } from 'fs' import { spawn, type ChildProcess } from 'child_process' import * as net from 'net' import { defineConfig, type Plugin } from 'vite' @@ -112,6 +113,7 @@ export default defineConfig({ define: { __IS_ELECTRON__: JSON.stringify(false), __IS_BROWSER_STANDALONE__: JSON.stringify(false), + __APP_VERSION__: JSON.stringify(JSON.parse(readFileSync(resolve(__dirname, 'package.json'), 'utf-8')).version), }, plugins: [ vue(),