Repository navigation
Releases: LiangyuLu-lly/L-Mechrevo
Releases · LiangyuLu-lly/L-Mechrevo
Release list
0.290.6
- 修复:自定义模式切换统一入口、过滤过时回包、取消旧请求,并在固件合并窗口后补发;切换失败会保留待同步参数。
- 修复:电池档位重放、开机充电上限、旧机型 MICommonInterface 后端、主窗口图标、驱动检查与配置并发写入。
- 新增:Intel/AMD 运行时 CPU 调整入口;缺少 PawnIO 时可校验后安装官方驱动。选项按实际型号、能力与固件开放,本机 275HX 固件拒绝降压,不承诺全系超频可用。
- 优化:错误日志约 3 秒合并落盘、最短 15 秒上传间隔,断网自动退避重试,重启后补传;服务器确认批次、字节数和 SHA-256 后删除待传记录。
- 修复:正常日志不再挤掉独立错误记录;崩溃同步留下待传证据;服务器保存最近故障历史、重复批次去重,并修复中文尾部截取。
- 修复:下拉框字号变化后的文字裁切、校色框宽度,以及小分辨率高缩放下 CPU 窗口的尺寸限制。
验证:完整回归 3314 项通过、1 项本机 GCU 集成检查跳过;最后的界面回归 85 项通过,782 张界面截图审计发现 0 项问题。beta21 客户端已实际下载并校验安装包;本机覆盖安装成功,57 个性能配置键保留,GCU/PawnIO 服务运行正常,新客户端日志已获服务器回执。
日志上传遵守匿名统计开关及告知状态;离线队列最多保留 32 个脱敏快照,服务器保留最近 96 KiB 历史。断电或直接结束进程仍可能失去尚未落盘的最后几秒。
CPU 调整取决于型号、接口和固件权限;本机 Intel Core Ultra 9 275HX 的固件拒绝降压。AMD 不可独立回读的命令在界面中明确标记,不宣称全系超频或稳定性已验证。
附件包含安装包、精确版本的对应源码与 SHA256 校验文件。源码标签:v0.290.6。
0.289.0-beta18
beta18: fan-server updates, installer restart prompt, single GCU payload, zh/en language, smaller app payload.
v0.289.0-beta17
0.289.0-beta17 — 待发布
修复
- 更新器:一次下载被中断后(旧的部分包文件被占用,日志里连续四次相同的 IOException 重试、留下 2.22MB/74MB 的残包),用户从此永远无法更新 → 四处修复:每次下载写入独立的 attempt 目录,旧文件不再与新尝试冲突;包文件用 CreateNew 创建并显式收窄写句柄的作用域,删除路径不会与仍持有的句柄竞争;下载开始时尽力清理历史 attempt 与旧版本残留,删不掉的逐项记日志、不再静默吞掉;失败原因以可读形式返回给界面,不再只返回 null。下载前的主机白名单与强制 SHA-256 校验规则不变。
- 键盘灯:睡眠/空闲恢复后键盘灯永久熄灭 → 根因是恢复时固件回帧里的亮度字段被误当成渲染亮度并持久化;现在只跟随真实接管帧,不再镜像该回帧的亮度。
- 键盘灯:恢复时「进入自定义帧模式」被执行两次,表现为亮灭三次 → 恢复周期只进一次。
- 自定义档:切换卡顿且偶发「切换未确认→稍后已确认」→ 点击当帧即反馈,每次切换只落盘/应用一次,后一次点击接管前一次。
- 双开崩溃:启动第二个实例时正在运行的实例会崩溃 → 收尾改为幂等(
Application.Exit会对非模态 owned 窗体触发两次 FormClosed)。 - 显卡切换:40 系机型由独显直连切回混合/核显会「白重启一次」→ 路由为空时不再触发重启并明确报错;→独显直连路径行为不变(有测试钉住)。
- 水冷:经 GCU 永远连不上、总提示要用直连 → 连接前先用状态里的设备 MAC 武装目标再 Connect;且直连不再以「官方 GCU 不在」为前提(官方通道走不通即自动直连、不再弹窗;两边都失败才如实报错)。
- 功耗:蛟龙 16 Pro(AMD)无法设置 PL4 → AMD 改走
CpuAmdFPPT(原始瓦数、回读确认,界面标签改标 fPPT);Intel 的 PL4 路径与半瓦换算不变。
新增功能
- 键盘灯光 GCU 兜底:键盘控制器不支持软件灯光控制的机型,现在键盘电源与亮度改走官方 GCU 通道(亮度为 5 级,亮度滑条不禁用、仍可按 5 个离散档位调节),键盘行保持可见并显示一条状态说明;已有灯效保持不变(调亮度时重发 GCU 自己上报的灯效,不发明效果名)。探测瞬时失败按「未知」处理、保持原有行为,不会把能用的机器降级;睡眠唤醒后不重新探测,恢复时序不变。
行为改变
- 手改过 config.json 的用户注意:
disable_osd、flat 主题开关、topmost、sensors_always四个配置键被移除。它们从未有任何写入路径,对应的开关本来就不可能打开;现在代码直接写明实际行为:OSD 提示始终显示、flat 主题分支删除(日/夜主题不受影响)、窗体置顶保持默认、传感器刷新固定 2000ms 节流并跟随窗体可见性。普通用户无感知。 - 温度显示锁定为摄氏度:华氏度配置键已删除(它同样没有写入路径,温度一直是摄氏度),格式化行为有测试钉住。
- 删除了几个永远无法响应的死界面入口:Fn 锁按钮与键盘下拉(从未被订阅事件,连同
fn_lock读取点一起删除)、空的「刷新电池健康」路径、以及显卡切换前那个永远不会出现的「GPU 占用中」确认(其判定恒为假,删除后切换行为不变)。
内部
- 删除死代码与死文件:零引用的能力模型与官方控制台目录、归档的 WPF 原型
src/MechrevoLite/、无引用图标,以及源码树里遗留的 219MB exe + 78MB zip 陈旧构建产物;并加防回归扫描防止它们回来。 - 905 行的
HandleMessage分发器拆分为按主题的处理方法(905 → 104 行),路由顺序与异常语义不变,新增 25 个特征化测试钉住。 - MQTT 主题字面量改为命名常量(
Hardware/MqttTopics.cs):拼错主题从静默失效变成编译错误,订阅与分发契约有测试锁定。 - 9 个吞异常的空 catch 块现在各写一条带上下文的日志(控制流不变;清理/释放路径的空 catch 有意保留)。
- 编译器警告 4 → 0。
- 测试:全量 1746 通过 / 0 失败 / 1 跳过。
安装器里的两个 40 系 GCU 变体(供参考)
- 安装器打包四套 GCU 载荷,40 系默认装
GCU-40-51751,另有GCU-40-51749。三套官方控制台覆盖的是同一批 24 个 ProjectID 机型家族,无法按机型区分;目前没有可靠的机型→控制台对应表(每套服务里的支持列表被混淆/反篡改销毁、静态不可读),而且同一版本号不代表同一个二进制——GCUBridge 1.0.1.10同时出现在三个不同文件里,51749带有独有的机型代码PH4PG5F,51751则等价于5.56,"哪套更新"无法判定。所以安装器保持按代际自动选择,并提供/GCUVARIANT=手工覆盖;不要为了省体积删任何一套载荷。 - 需要澄清的是:我们的键盘灯光走纯 HID 路径,从不经过 GCU;GCU 只在兜底路径(键盘控制器不支持软件灯光控制的机型)上承载键盘电源与亮度,走哪条路的唯一判据就是键盘控制器是否支持软件灯光控制。GCU 驱动的非键盘灯(灯带/Logo)已实测跨代际可用(某 40 系机器装 50 系 GCU 后键盘灯不亮,是该机键盘控制器不支持软件灯光控制所致,与 GCU 变体无关;同机上灯带/Logo 正常)。
验证基准
- Debug / Release x64 全量重编译:0 错误 / 0 警告。
- 全量测试 1746 通过 / 0 失败 / 1 跳过。
- UI 审计按类别与 beta16 基线持平:650 张截图 / 86 项(文字裁切 48、父容器溢出 27、停靠根溢出 11)。
0.289.0-beta16
L-Mechrevo 0.289.0-beta16 更新日志(草稿 · 待发布)
发布状态:尚未发布。 本文件是 beta16 的更新文案草稿,供 owner 真机测试与后续发布引用。
在 owner 明确授权之前,不得创建 GitHub Release、上传安装包、或在 GitHub/OSS 改写线上更新 JSON。
本轮未改动仓库根CHANGELOG.md;仓库根更新日志.txt(发布流水线强制的随包文档)已加入 beta16 小节。
- 版本:
0.289.0-beta16(AssemblyVersion/FileVersion保持0.289.0.0不变) - 源码提交:
591cd08;源码快照标签:v0.289.0-beta16 - 三件产物的绝对路径 / 大小 / SHA256 见
TEST-KIT.md与sizes.txt
新增功能
- 导出诊断包:底栏新增「诊断」键(托盘右键菜单同入口)。选择保存路径后,一键把
系统信息.txt、说明.txt、日志/(有界截断)与配置/(附README-配置.txt说明每个文件是什么)打包成一个 zip,便于反馈问题时附带完整现场。目的地不可写 / 权限不足 / 路径非法时明确报错,不做静默降级。 - GCU 连接状态指示灯:显示 GCU 已连接 / 连接中 / 未连接 / 状态未知四态;每个状态在颜色之外另有文字与「●」圆点作形状信号(无障碍,非仅色差)。曾连上后断线一律如实报「未连接」——服务停了就是停了,恢复后自动变绿。
修复
- 显卡超频:非管理员下的诚实状态 + 「以管理员身份重启」:直连 NVAPI 写入在非提权进程里恒被拒(
NVAPI_INVALID_USER_PRIVILEGE)。现在非提权时不再假装可写——超频开关禁用、显示「超频需要管理员权限」并提供「以管理员身份重启」入口;UAC 只在用户点这个显式动作时征求同意,应用自身启动 / 写入绝不自动弹 UAC。提权后控件恢复可编辑。 - 开机自启动(遮挡 + 持久路径):修复自启动项可能被写成指向单文件自解压临时目录(
%TEMP%)、清理后开机静默失效的问题——从临时副本运行时不重写持久任务。同时修复固定底栏遮挡内容控件导致「拨不动」的回归(UI 审计新增页脚遮挡检测)。 - 电池充电限制持久化与显示:显示改为以 EC 实际阈值为唯一真源(读不到时回退已持久化值);写入回读延迟时按实际阈值成功收尾,未知值如实显示「—」,不再显示
-1或回退。 - 更新窗口一次关闭:更新键的
Click曾在构造函数与部分类中重复绑定,一次点击会先后弹出两个模态更新窗口(关掉第一个后第二个才出现)。已移除重复接线。 - 底部图标行 DPI 对齐:底栏图标按钮按 DPI 对齐,修正缩放下的错位。
- 空带与门控回流排版:设置里隐藏内容时同步收起行高,不再留下「有高度无内容」的空白带;不支持机型隐藏功能入口后,其余内容正常回流,不再错位。
- 空分组标题消失:分组内没有任何可见行时,标题与行一起隐藏。
- 息屏(不睡眠)(回归项,beta14 首发):亮度归零并阻止系统空闲休眠,动鼠标 / 键盘即恢复,另有 30 分钟看门狗兜底。
- 灯光休眠三设备对齐(回归项,beta14 首发):键盘 / 灯带 / Logo 的熄灭与恢复走「单周期、先下发、确认不参与关键路径」,恢复对齐。
- Fn 调亮度不闪回(回归项,beta14 首发):检测到固件接管后立即重申自定义帧模式(配合代际守卫,单次重申),不再等到 180ms。
- 二级弹窗首帧定位(回归项,beta14 首发):首次绘制之前就确定尺寸与位置,不再先闪到屏幕左上角再跳回。
- 液冷自动档刷新策略:抽为
LiquidCoolingAutoPolicy纯策略,自动档刷新只重申固件自动、不退回固定档位写入。
安全
- 更新客户端迁移到业主自建的 OSS 静态 JSON 后端(对象键
lmechrevo-oss/api/update_check.php,匿名只读),并新增 7 条 fail-closed 安全规则(src/MechrevoLiteWin/Updates/UpdatePolicy.cs):- 必备合法 SHA-256:必须为 64 位十六进制;缺失 / 长度不符 / 含非法字符一律拒绝下载与自动安装,绝不降级成「只做结构校验」。
- 仅 HTTPS:下载地址非 HTTPS 即拒绝(仅回环
http://127.0.0.1供本地联调)。 - 下载主机白名单:仅
github.com、objects.githubusercontent.com、lmechrevo.oss-cn-hangzhou.aliyuncs.com。 - 基址非法只回退业主 OSS:base URL 不合法时记录日志后回退到业主 OSS 默认基址,绝不静默改打第三方域名。
- 版本号合法性:
latest_version必须「像样」(字符集 / 长度 / 至少一位数字),垃圾值(HTML、空白、路径、纯字母)整体拒绝。 - 拒绝降级:服务端报有更新但版本并不比本机新时按无更新处理,绝不降级安装;版本比较一律用客户端自身版本,不用静态 JSON 里冻结的
current_version。 - 校验失败即删除临时包:哈希不匹配 / 包非法时删除临时下载文件并中止,运行中的程序与用户配置保持不变。
- 未提供合法 SHA-256 时,更新窗口 禁用自动安装,只保留「打开下载页」手动路径。
内部
- 清理零引用死代码(7 个文件 + 移除 NAudio 依赖)。
- UI 审计新增防回归检测:停靠根溢出、绝对列溢出、空带(有高度无内容)、底栏遮挡(固定
panelFooter覆盖可交互控件);本轮新增发现 0(既有集合:48 FirstRunGuide 文本裁剪 + 11 KeyboardRgb 停靠根溢出 + 27 Settings)。 - 新增 / 扩充测试:诊断包、GCU 连接指示灯、GPU 超频提权门控、更新安全硬化、更新窗口单次关闭、空带 / 页脚遮挡、电池充电限制显示修复、液冷自动策略等。
- 全量测试:1609 通过 / 0 失败 / 1 跳过 / 1610;Debug + Release 构建 0 错误(仅既有 4 条警告)。
备注(发布前按 owner 决定裁剪)
息屏(不睡眠)、灯光休眠三设备对齐、Fn 调亮度不闪回、二级弹窗首帧定位、空分组标题分别在 beta14 / beta15 首发,beta16 做回归确认并纳入本机复测清单(见 TEST-KIT.md)。beta16 的全新内容以「新增功能 / 安全」及「修复」中未标注回归项的条目为准。
0.289.0-beta15
0.289.0-beta15
本版为热修复,未新增功能特性,仅修复以下三项。
- GPU 超频:开关与滑条状态被硬件回读覆盖,界面一直停在「状态未确认」→ 引入用户意图状态(
_gpuOcArmed):零偏移的「开启」驱动无法确认,开关不再被回读弹回;关闭开关时仍保留用户设置的数值。 - 显卡切换模式:确认后重启被静默拒绝 → 根因是确认框之后的 500ms 硬件延时耗尽了
HasFreshUserInput的新鲜输入窗口;改为在用户手势处捕获一次性通行证(Helpers\UserGestureLease.cs),动作用时消费。 - 电池充电限制:配置键缺失时
-1被原样显示、写入被静默忽略 → 手势处捕获通行证后再应用,未知值显示—,被拒绝时记录日志并如实回显。
自更新包为未签名的单文件自包含发布(L-Mechrevo-0.289.0-beta15-unsigned.zip)。
0.289.0-beta14
0.289.0-beta14 — 2026-09-14
新增功能
- 「更多开关」新增「深度睡眠」:走 GCU 动作修改"重启后生效"的关机/睡眠策略,带 pending 状态与重启提示。
- 「更多开关」新增「开机自启动」:实现为用户级计划任务(非注册表 Run 键),无需管理员权限;开关状态读取真实系统状态,写入失败会自动回滚。
- 「仅关闭显示器」重做为「息屏(不睡眠)」:亮度归零并阻止系统空闲休眠,动鼠标/键盘即恢复,另有 30 分钟看门狗兜底;亮度读取失败时不执行,避免盲操作。
- 屏幕校色改为「屏幕」行头的圆角下拉(仅 默认 / sRGB),删除 P3 / AdobeRGB 选项与整个二级弹窗。
- 「静音狂暴」入口按机型支持情况门控:不支持或未知时不显示入口。
修复
- 灯光睡眠后键盘灯不亮:根因是键盘电源"未确认"被当成致命错误,导致
StartMode被跳过;现在电源回读未确认不再阻止本地 HID 效果恢复。 - 灯光睡眠后灯带/Logo 不恢复:根因是效果重放被"电源回读"卡住、令牌只在确认时记录导致无重试;现在外置通道确认失败时按通道有界重试,直到确认。
- 键盘/灯带/Logo 熄灭与恢复不同步:根因是两条技术路径各自为政、各被独立的 GCU 确认门卡住;改为"单周期、先下发、确认不参与关键路径",实测恢复对齐差值 9ms(旧实现差 3.65–5.46 秒)。
- 按 Fn 调键盘亮度时闪回厂商灯效:检测到固件接管后立即重申自定义帧模式(配合代际守卫,单次重申),不再等待 180ms。
- 自定义模式切换时先闪「切换未确认」再变「已激活」:确认窗口过短所致;改为显示「切换中…」并加宽限轮询。
- GPU 超频首次打开状态不同步:按钮显示关、滑条却可以拉。
- 关闭 GPU 超频后数值被复位为 0:现在关闭时保留用户设置的数值。
- 设置弹窗出现多余的空分组标题:分组内没有任何可见行时,标题与行一起隐藏。
- 二级界面先闪到屏幕左上角再跳回主窗旁:改为首次绘制之前就确定尺寸与位置。
- 「仅关闭显示器」导致整机进入 Modern Standby 休眠(S0 机型上"关屏"即待机):已随「息屏(不睡眠)」重做修复。
- 唤醒后控制台卡死:根因是在 UI 线程上同步执行阻塞式
SendMessage广播(SC_MONITORPOWER),广播期间系统进入待机会把 UI 线程挂住;已移除该广播路径。
安全加固
- 破坏性操作加固:4 处
shutdown /r重启与「开机自启动」「深度睡眠」的系统写入,改为只接受真实点击 + 500ms 内的新鲜真实输入;回显/程序化赋值(含 UI 自动化)一律不触发;重启改在后台线程执行。 - 测试接缝收口:把绕过测试接缝的旧自启动 API 改为统一走接缝,避免测试触碰真实计划任务。
内部
- 删除 7 个零引用文件(Keystone / Audio / ColorUtilities / IconHelper / Slider / RTrackBar / NumericUpDownWithUnit)并清理残留引用;移除 NAudio.Wasapi 依赖。
- UI 审计新增防回归检测:设置弹窗与更新窗纳入审计范围;新增「停靠根溢出」「绝对列溢出」检测。
- 无障碍名称与界面文字对齐(狂暴/静音狂暴按钮)。
- 新增/扩充测试:灯光对齐、键盘恢复、破坏性操作守卫、GPU 超频状态、二级界面首帧、空分组标题、设置分组等;全量测试 1483 通过 / 0 失败 / 1 跳过。