feat(panel): surface dev-build version in UI, bot, and CLI

A dev build now shows its `dev+<commit>` identity instead of a misleading stable-looking version in the sidebar badge, dashboard card, update modal, Telegram status report, startup log, and `x-ui -v`. Adds a shared formatPanelVersion helper (single v prefix; dev labels shown verbatim) and fixes the mobile-tag double-v.

Renames the version getters for clarity: config.GetVersion to GetBaseVersion (raw embedded version), config.GetReportedVersion to GetPanelVersion (advertised/displayed), and the xray process GetVersion to GetXrayVersion.
This commit is contained in:
MHSanaei
2026-06-25 02:36:41 +02:00
parent 2adb59bd64
commit e4b881e58a
14 changed files with 75 additions and 36 deletions
+6 -7
View File
@@ -37,6 +37,7 @@ import {
} from '@ant-design/icons';
import { HttpUtil, SizeFormatter, TimeFormatter, ClipboardManager, FileManager } from '@/utils';
import { formatPanelVersion } from '@/lib/panel-version';
import { useTheme } from '@/hooks/useTheme';
import { useStatusQuery } from '@/api/queries/useStatusQuery';
import { useMediaQuery } from '@/hooks/useMediaQuery';
@@ -104,7 +105,7 @@ export default function IndexPage() {
}, []);
const displayVersion = useMemo(
() => panelUpdateInfo.currentVersion || window.X_UI_CUR_VER || '?',
() => window.X_UI_CUR_VER || panelUpdateInfo.currentVersion || '?',
[panelUpdateInfo.currentVersion],
);
@@ -240,10 +241,8 @@ export default function IndexPage() {
{isMobile && displayVersion && (
<Tag color={panelUpdateInfo.updateAvailable ? 'orange' : 'green'}>
{panelUpdateInfo.updateAvailable
? panelUpdateInfo.channel === 'dev'
? panelUpdateInfo.latestVersion
: `v${panelUpdateInfo.latestVersion}`
: `v${displayVersion}`}
? formatPanelVersion(panelUpdateInfo.latestVersion)
: formatPanelVersion(displayVersion)}
</Tag>
)}
</Space>
@@ -272,8 +271,8 @@ export default function IndexPage() {
{!isMobile && (
<span>
{panelUpdateInfo.updateAvailable
? `${t('update')} ${panelUpdateInfo.latestVersion}`
: `v${displayVersion}`}
? `${t('update')} ${formatPanelVersion(panelUpdateInfo.latestVersion)}`
: formatPanelVersion(displayVersion)}
</span>
)}
</Space>,
@@ -5,6 +5,7 @@ import { CloudDownloadOutlined } from '@ant-design/icons';
import axios from 'axios';
import { HttpUtil, PromiseUtil } from '@/utils';
import { formatPanelVersion } from '@/lib/panel-version';
import './PanelUpdateModal.css';
export interface PanelUpdateInfo {
@@ -140,7 +141,7 @@ export default function PanelUpdateModal({
{isDev ? (
<Tag color="green">{info.currentCommit || '?'}</Tag>
) : (
<Tag color="green">v{info.currentVersion || '?'}</Tag>
<Tag color="green">{formatPanelVersion(window.X_UI_CUR_VER || info.currentVersion) || '?'}</Tag>
)}
</div>
{info.updateAvailable ? (