fix(panel): 开发版构建的版本展示,不再误标「已是最新」

本地/未发布构建(dev / dev-<sha>)无法与发布版做语义化比较,之前会错误显示
「· 已是最新」。现在:

- 「关于」卡:当前版本非 vX.Y.Z 时标「开发版」,仅把最新发布版作为信息展示
  (当前版本 dev-xxx · 最新发布 v1.2.0),不显示「已是最新」、不触发红点。
- build-local.sh 默认烤入 dev-<短SHA>(而非裸 dev),便于辨识本地构建。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Gloridust
2026-06-15 00:35:30 +08:00
Unverified
parent 7293285d1a
commit 0abb5f8bdf
2 changed files with 18 additions and 6 deletions
+15 -4
View File
@@ -92,13 +92,19 @@ function AboutSection({ isAdmin }: { isAdmin: boolean }) {
api.getVersion().then(setInfo).catch(() => {});
}, []);
// 当前版本是否为正式发布版(语义化 vX.Y.Z)。dev / dev-<sha> 等本地构建无法与发布版比较,
// 既不显示「已是最新」也不显示红点,只把最新发布版作为信息展示。
const isRelease = !!info && /^v?\d+\.\d+\.\d+$/.test(info.current);
const check = async () => {
setChecking(true);
try {
const r = await api.checkUpdate();
setInfo(r);
if (r.hasUpdate) toast(`发现新版本 ${r.latest}`, 'ok');
else if (r.error) toast('检查失败:' + r.error, 'error');
const rel = /^v?\d+\.\d+\.\d+$/.test(r.current);
if (r.error) toast('检查失败:' + r.error, 'error');
else if (r.hasUpdate) toast(`发现新版本 ${r.latest}`, 'ok');
else if (!rel) toast(`最新发布 ${r.latest ?? '未知'}(当前为开发版)`, 'ok');
else toast('已是最新版本', 'ok');
} catch (e: any) {
toast(e.message || '检查失败', 'error');
@@ -116,7 +122,7 @@ function AboutSection({ isAdmin }: { isAdmin: boolean }) {
<div className="inst-card">
<div className="inst-head">
<span className="inst-name"> · WechatOnCloud</span>
{info?.hasUpdate && <span className="tag tag-warn"></span>}
{info?.hasUpdate ? <span className="tag tag-warn"></span> : info && !isRelease ? <span className="tag"></span> : null}
</div>
<div className="inst-sub">
<b>{info?.current ?? '…'}</b>
@@ -125,7 +131,12 @@ function AboutSection({ isAdmin }: { isAdmin: boolean }) {
{' · '} <b>{info.latest}</b>
</>
)}
{info && !info.hasUpdate && info.latest && !info.error && <>{' · '}</>}
{isRelease && info && !info.hasUpdate && info.latest && !info.error && <>{' · '}</>}
{!isRelease && info?.latest && !info.error && (
<>
{' · '} <b>{info.latest}</b>
</>
)}
</div>
{info?.hasUpdate && (
<div className="ver-hint">
+3 -2
View File
@@ -10,9 +10,10 @@ set -euo pipefail
OWNER="${WOC_IMAGE_OWNER:-gloridust}"
TAG="${WOC_VERSION:-latest}"
# 烤进面板镜像的版本号:设了 WOC_VERSION 就用它(如 v1.2.0),否则 dev(dev 不会触发「有新版」红点)。
VER="${WOC_VERSION:-dev}"
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
# 烤进面板镜像的版本号:设了 WOC_VERSION 就用它(如 v1.2.0),否则用 dev-<短SHA>(本地构建标识)。
# 开发版不是正式发布版,面板「关于」会标「开发版」、不会触发「有新版」红点。
VER="${WOC_VERSION:-dev-$(git -C "$ROOT" rev-parse --short HEAD 2>/dev/null || echo local)}"
PANEL_IMAGE="ghcr.io/${OWNER}/woc-panel:${TAG}"
WECHAT_IMAGE="ghcr.io/${OWNER}/wechat-on-cloud:${TAG}"