feat(version): 优化版本比较和显示逻辑

- 修改版本比较逻辑,优先比较主版本号,然后是次版本号和修订号
- 增加对 beta版本的特殊处理,正式版比 beta 版更新
- 优化版本显示格式,移除不必要的 "v" 前缀
- 在主界面和日志中使用优化后的版本显示格式
This commit is contained in:
2025-08-04 00:12:36 +08:00
parent 8948d0fb18
commit 23b3691a13
3 changed files with 59 additions and 12 deletions

View File

@@ -176,13 +176,8 @@ func compareVersions(v1, v2 string) int {
parts1 := parseVersionParts(v1)
parts2 := parseVersionParts(v2)
// 比较个组件
maxLen := len(parts1)
if len(parts2) > maxLen {
maxLen = len(parts2)
}
for i := 0; i < maxLen; i++ {
// 比较前三个组件 (major.minor.patch)
for i := 0; i < 3; i++ {
var p1, p2 int
if i < len(parts1) {
p1 = parts1[i]
@@ -198,6 +193,32 @@ func compareVersions(v1, v2 string) int {
}
}
// 如果前三个组件相同比较beta版本号
var beta1, beta2 int
if len(parts1) > 3 {
beta1 = parts1[3]
}
if len(parts2) > 3 {
beta2 = parts2[3]
}
// 特殊处理beta版本比较
// - 如果一个是正式版(beta=0)另一个是beta版(beta>0),正式版更新
// - 如果都是beta版比较beta版本号
if beta1 == 0 && beta2 > 0 {
return 1 // 正式版比beta版更新
}
if beta1 > 0 && beta2 == 0 {
return -1 // beta版比正式版旧
}
// 都是正式版或都是beta版直接比较
if beta1 < beta2 {
return -1
} else if beta1 > beta2 {
return 1
}
return 0
}
@@ -265,6 +286,7 @@ func parseVersionParts(version string) []int {
break
}
}
// Beta版本号保持正数但在比较时会特殊处理
parts = append(parts, betaNum)
} else {
// 非beta版本添加0作为beta版本号