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

@@ -147,12 +147,12 @@ func (pv *ParsedVersion) ToVersionString() string {
return fmt.Sprintf("%d.%d.%d.%d", pv.Major, pv.Minor, pv.Patch, pv.Beta)
}
// ToDisplayVersion 将版本转换为显示格式 (v4.4.0 或 v4.4.1-beta3)
// ToDisplayVersion 将版本转换为显示格式 (4.4.0 或 4.4.1-beta3)
func (pv *ParsedVersion) ToDisplayVersion() string {
if pv.Beta == 0 {
return fmt.Sprintf("v%d.%d.%d", pv.Major, pv.Minor, pv.Patch)
return fmt.Sprintf("%d.%d.%d", pv.Major, pv.Minor, pv.Patch)
}
return fmt.Sprintf("v%d.%d.%d-beta%d", pv.Major, pv.Minor, pv.Patch, pv.Beta)
return fmt.Sprintf("%d.%d.%d-beta%d", pv.Major, pv.Minor, pv.Patch, pv.Beta)
}
// GetChannel 根据版本返回渠道 (stable 或 beta)
@@ -174,5 +174,16 @@ func (pv *ParsedVersion) IsNewer(other *ParsedVersion) bool {
if pv.Patch != other.Patch {
return pv.Patch > other.Patch
}
// 对于相同的主版本号正式版本Beta=0比beta版本Beta>0更新
// 例如4.4.1.0(正式版)> 4.4.1.3beta3
if pv.Beta == 0 && other.Beta > 0 {
return true // 正式版比beta版更新
}
if pv.Beta > 0 && other.Beta == 0 {
return false // beta版比正式版旧
}
// 如果都是beta版本比较beta版本号
return pv.Beta > other.Beta
}