fix(更新日志): 面板随指定版本下拉联动;本机已是最新时展示本机条目
- 「指定版本更新」下拉选中版本时日志切到该版本自身的条目(升级/回退统一语义), 未收录显示"暂无更新说明"(区块不消失),选回空项回默认区间; 列表加载后自动默认选中第一条不触发切换 - 本机版本==线上最新时回退显示本机版本条目(原来整块消失),灰度/回滚仍隐藏 - 精简 4.0.20/4.0.21 超长文案,修复既有红测试(更新说明限 40 字)
This commit is contained in:
@@ -28,14 +28,14 @@ export const CLIENT_CHANGELOG: ClientChangelogEntry[] = [
|
||||
version: '4.0.21',
|
||||
date: '2026-09-15',
|
||||
items: [
|
||||
'新增设备标识文件:客户端程序目录下会生成 code.txt,遇到问题时把文件里的标识发给客服,可快速查询本机日志',
|
||||
'客户端目录会生成 code.txt,遇到问题时把它发给客服,可快速查本机日志',
|
||||
],
|
||||
},
|
||||
{
|
||||
version: '4.0.20',
|
||||
date: '2026-09-15',
|
||||
items: [
|
||||
'新增运行日志自动同步:本地日志会(压缩后)上传到云端后台,遇到问题客服可远程排查,不用再手动发日志文件(云端保留 7 天)',
|
||||
'本地日志会自动上传到云端(保留 7 天),遇到问题客服可远程排查,不用手动发日志',
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -214,12 +214,15 @@ export function newestChangelogVersion(entries: ClientChangelogEntry[] = CLIENT_
|
||||
*
|
||||
* - latestVersion 为空(检测未完成/失败)时按数据文件里最新版本兜底;
|
||||
* - currentVersion 为空(旧客户端无版本桥)时只给最新版本一条,不把整段历史倒给用户;
|
||||
* - 本机版本已高于线上(灰度/回滚)时返回空数组,由调用方隐藏该区块。
|
||||
* - 本机版本已高于线上(灰度/回滚)时返回空数组,由调用方隐藏该区块;
|
||||
* - includeCurrent 为 true(面板展示用)时,本机 == 线上(无更新可看)退回展示
|
||||
* 本机版本自身的条目——刚升级完的用户最想知道"这个版本改了什么"。
|
||||
*/
|
||||
export function selectChangelogEntries(options: {
|
||||
currentVersion?: string
|
||||
latestVersion?: string
|
||||
entries?: ClientChangelogEntry[]
|
||||
includeCurrent?: boolean
|
||||
} = {}): ClientChangelogEntry[] {
|
||||
const entries = options.entries ?? CLIENT_CHANGELOG
|
||||
if (!entries.length) return []
|
||||
@@ -231,5 +234,21 @@ export function selectChangelogEntries(options: {
|
||||
const newest = inRange.find((entry) => compareVersions(entry.version, upper) === 0)
|
||||
return [newest ?? inRange[0]]
|
||||
}
|
||||
return inRange.filter((entry) => compareVersions(entry.version, current) > 0)
|
||||
const newer = inRange.filter((entry) => compareVersions(entry.version, current) > 0)
|
||||
if (newer.length || !options.includeCurrent) return newer
|
||||
// 本机 == 线上:展示本机版本条目;本机高于线上时 inRange 里没有它,仍为空(不展示低版本日志)
|
||||
return inRange.filter((entry) => compareVersions(entry.version, current) === 0)
|
||||
}
|
||||
|
||||
/**
|
||||
* 取指定版本自身的条目("指定版本更新"下拉选中时展示,升级/回退/同版统一语义)。
|
||||
* 版本未收录或版本号为空时返回空数组——不倒推相邻版本,避免张冠李戴。
|
||||
*/
|
||||
export function selectVersionEntry(
|
||||
version: string,
|
||||
entries: ClientChangelogEntry[] = CLIENT_CHANGELOG,
|
||||
): ClientChangelogEntry[] {
|
||||
const target = normVersion(version)
|
||||
if (!target) return []
|
||||
return entries.filter((entry) => compareVersions(entry.version, target) === 0)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user