mirror of
https://github.com/Gloridust/WechatOnCloud.git
synced 2026-06-16 19:53:53 +08:00
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:
@@ -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">
|
||||
|
||||
@@ -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}"
|
||||
|
||||
Reference in New Issue
Block a user