From d189d94c3b85c3768f989c9d6022361b20e692fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E8=87=AA=E8=BE=BE?= <980324341@qq.com> Date: Wed, 16 Sep 2026 01:02:13 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=9B=B4=E6=96=B0=E6=97=A5=E5=BF=97):=20?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E9=9A=8F=E6=8C=87=E5=AE=9A=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E4=B8=8B=E6=8B=89=E8=81=94=E5=8A=A8=EF=BC=9B=E6=9C=AC=E6=9C=BA?= =?UTF-8?q?=E5=B7=B2=E6=98=AF=E6=9C=80=E6=96=B0=E6=97=B6=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E6=9C=AC=E6=9C=BA=E6=9D=A1=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 「指定版本更新」下拉选中版本时日志切到该版本自身的条目(升级/回退统一语义), 未收录显示"暂无更新说明"(区块不消失),选回空项回默认区间; 列表加载后自动默认选中第一条不触发切换 - 本机版本==线上最新时回退显示本机版本条目(原来整块消失),灰度/回滚仍隐藏 - 精简 4.0.20/4.0.21 超长文案,修复既有红测试(更新说明限 40 字) --- .../src/pages/home/DesktopHomePage.vue | 5 +- .../src/pages/login/DesktopLoginPage.vue | 5 +- frontend-vue/src/shared/client-changelog.ts | 27 ++++++-- .../src/shared/components/UpdateLogList.vue | 14 +++- .../src/shared/components/VersionPicker.vue | 17 ++++- .../shared/composables/useVersionUpdate.ts | 34 ++++++++-- frontend-vue/tests/client-changelog.test.ts | 67 ++++++++++++++++++- 7 files changed, 152 insertions(+), 17 deletions(-) diff --git a/frontend-vue/src/pages/home/DesktopHomePage.vue b/frontend-vue/src/pages/home/DesktopHomePage.vue index 457017f4..c0a2a2bc 100644 --- a/frontend-vue/src/pages/home/DesktopHomePage.vue +++ b/frontend-vue/src/pages/home/DesktopHomePage.vue @@ -23,7 +23,7 @@
{{ hint }}
- +
@@ -92,6 +93,8 @@ const { checked, progress, changelog, + changelogEmptyText, + setSelectedVersion, versions, versionListLoading, versionListError, diff --git a/frontend-vue/src/pages/login/DesktopLoginPage.vue b/frontend-vue/src/pages/login/DesktopLoginPage.vue index 8c5da842..1db82ed5 100644 --- a/frontend-vue/src/pages/login/DesktopLoginPage.vue +++ b/frontend-vue/src/pages/login/DesktopLoginPage.vue @@ -31,7 +31,7 @@
{{ hint }}
- + @@ -148,6 +149,8 @@ const { checked, progress, changelog, + changelogEmptyText, + setSelectedVersion, versions, versionListLoading, versionListError, diff --git a/frontend-vue/src/shared/client-changelog.ts b/frontend-vue/src/shared/client-changelog.ts index 36353538..862aa0df 100644 --- a/frontend-vue/src/shared/client-changelog.ts +++ b/frontend-vue/src/shared/client-changelog.ts @@ -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) } diff --git a/frontend-vue/src/shared/components/UpdateLogList.vue b/frontend-vue/src/shared/components/UpdateLogList.vue index 471c8787..d4fbfd52 100644 --- a/frontend-vue/src/shared/components/UpdateLogList.vue +++ b/frontend-vue/src/shared/components/UpdateLogList.vue @@ -1,7 +1,8 @@