发布说明

版本更新历史。完整变更日志在 GitHub Releases

下载最新版

v1.5.2 · 稳定性修复 & 账号迁移

● 当前版本

2026-09 发布

v1.5.1 休眠恢复大改之后的稳定性修复版。集中修复两个严重 Bug:并发字典迭代导致的偶发崩溃,以及冷启动时托盘图标状态不刷新。同时完成 GitHub 用户名从 Martlnezawakaze 的全线迁移。

🐛 关键修复

  • 字典并发 re-key 崩溃 — 冷启动 model 为空的设备首次连接成功后做原地 re-key,Flyout 与 App 的 5 处 live dict view 遍历抛 RuntimeError: dictionary changed size during iteration,导致弹窗中断或进程退出。修复:统一改用 list(self._lights.items()) 快照遍历
  • MonitorSleepListener 重启后双回调 → 唤醒不复原 — 旧 stop() 未 join 旧窗口线程,新旧两个 HWND 同时订阅同一广播,on_monitor_sleep 被触发两次后 pre_sleep_state 被覆盖成 False,唤醒时直接跳过恢复。修复:stop() 新增 join(timeout=3.0) + 消息泵安全帽
  • 灯启动时托盘图标没有变亮 — 启动路径中状态推送窗口过早创建 / 事件顺序错乱,灯明明是开的但图标仍暗色。重构启动时的状态推送流程,确保初始状态完整传递后再刷新聚合态

🔧 工程 & 基础设施

  • CI Release Job 自动从 release-notes/RELEASE_NOTES_<tag>.md 读取 Markdown 作为 GitHub Release Body,不用再手工粘贴
  • 新增 tests/test_concurrency_regressions.py — 4 passed · 1 skipped,覆盖 list() 快照并发安全、stop() 等待线程退出、卡死泵不会死锁,并含阳性对照用例

🧭 账号迁移

  • GitHub 用户名 Martlnez → awakaze
  • 仓库地址、所有源码、文档、Release Notes 中的 URL 全线同步更新

v1.5.1 · 休眠恢复自动刷新 & Flyout 体验优化

2026-08

2026-08 发布

集中修复 v1.5.0 上线后反馈最强烈的两类问题:电脑从休眠/显示器息屏恢复后,灯一直显示"离线",以及弹窗(Flyout)打开时滑块跳变、刷新卡顿、总开关不好用

🐛 关键修复 · 恢复后永不离线

  • 电源事件监听器改为常驻 — v1.5.0 里只有勾选了"息屏/休眠开关灯"才会启动监听窗口,三个都不勾的用户永远收不到 PBT_APMRESUMEAUTOMATIC,恢复后 UDP 会话过期 → 一直离线。v1.5.1 常驻监听,刷新无条件执行,开关灯按勾选决定
  • 系统唤醒 → 三轮补刀刷新(t+0s / +3s / +8s) — 覆盖 WiFi/扩展坞网卡平均 1~3s 才就绪的场景;只有第 0 秒会按"唤醒开灯"发 power-on,后面两轮只 refresh,不覆盖用户中途关的灯
  • 显示器点亮 → 刷新全部设备 — 之前只对勾选了"息屏关灯"的设备做还原;现在所有设备并行 refresh,息屏期间用户用物理按钮改的参数也会同步回来
  • 显示器息屏时 完整记录每台设备 pre-sleep 开关状态,不再只记录托管设备

✨ Flyout / 托盘 体验全面优化

  • 打开弹窗秒显缓存值 + 每设备独立线程并行刷新 — 旧版串行逐个 refresh,一台离线卡死整列;新版先同步显示最后已知值,再后台并行校正,单台慢不阻塞
  • 亮度/色温滑块用缓存初始化(旧版硬编码 50 / 4000,肉眼可见先跳 50 再跳到真实值)
  • 离线状态保留最后已知开关信息:旧版直接显示「离线 — error」,新版显示 已开灯 (离线) / 已关灯 (离线),用户一眼看清真实状态
  • 底部 ⏻ 智能总开关:有灯亮 → 高亮(点=全关);全灭 → 暗色(点=全开)。不再跳过 cached unreachable 的设备(修复"唤醒后按了没反应")
  • 托盘图标启动时默认暗(旧版先亮 2~3 秒再闪暗,对用户造成"程序自动开了灯"的误解)
  • 设备名截断放宽到 34 字符Mijia Computer Monitor Light Bar 2 这种官方长名完整显示,取消固定列宽

✨ 启动即并行刷新

旧版只对缺 model / device_id 的设备 refresh,其余全是"默认离线",托盘图标启动后长期是错的。新版启动后立刻并行刷新所有完整配置的设备,图标几秒内落到真实聚合态。

v1.5.0 · 多灯并行管理

2026-07

2026-07 发布

一次围绕 多灯并行管理 的大重构。核心从"一个实例控制一盏灯"升级为"一个实例控制任意多盏灯,每盏独立配置、独立控制"。

✨ 新功能 · 多灯连接

  • 无上限的设备数量 — 一个实例可同时管理任意多盏米家 / Yeelight 灯,共享一份托盘图标、一份弹窗、一份快捷键路由
  • 图形化设备列表 — 全新的设置界面,卡片式展示每盏灯的名称 / IP / 型号 / 状态;支持添加、编辑、删除
  • 拖拽排序 — 按住每张卡片左侧的 ⋮⋮ 图标即可拖动,顺序决定弹窗中的显示位置
  • 云端一键多选导入 — 扫码登录小米账号后可勾选多盏设备,一次性批量添加,Token 全部自动填入
  • 配置自动迁移 — 从 v1.4.x 升级时,旧的顶层 device 单对象会被无感转换为 devices: [...] 数组

✨ 新功能 · 弹窗重构

  • 每设备一节 — 弹窗按设备列表顺序为每盏灯渲染独立的一节:设备名、状态、⏻ 开关按钮、亮度 / 色温滑杆
  • 窗口高度自适应 — 一盏灯与旧版差不多,两盏灯约翻倍高,以此类推
  • 关闭所有灯一键按钮 — 底部新增 ⏻ 按钮,一次关掉所有在线设备
  • 设备名智能截断 — 名称过长时自动截断为 xxxx...,按钮位置保持固定
  • 每设备独立防抖器 — 多盏灯拖滑杆时互不干扰

✨ 新功能 · 每设备独立配置

  • 五项电源策略独立开关:软件启停、显示器休眠、系统休眠 / 唤醒
  • 两项显示控制:亮度 / 色温滑杆的可见性
  • 四个全局快捷键:亮度 +/-、色温 +/-,以及独立的调整步进值
  • 快捷键在输入框内按下即捕获右键输入框直接清空

🐛 修复

  • 设置页"检查更新"按钮走完整的托盘菜单同款流程(含"已是最新版本"弹窗、缓存更新、菜单刷新徽标)
  • 恢复了 v1.4.3 的按键捕获实现(event.state 位掩码解析 + 特殊键 keysym 映射),并接到每设备 hotkey_manager 上
  • 修正 _on_config_saved 保存后重建的灯回调签名((state)(state, device_id)
  • 清理弹窗遗留的 self._light 引用,色温 clamp 时不再报 AttributeError

v1.4.3 · 电源事件监听

2026-07

✨ 新功能

  • 灯随显示器休眠开关 — Windows 关闭显示器时灯自动关,唤醒时恢复到关闭前的状态
  • 系统休眠时关灯 — 电脑进入睡眠 / 休眠时自动关灯
  • 系统唤醒时开灯 — 电脑从睡眠 / 休眠恢复时自动开灯
  • 三个独立开关,可根据需要自由组合

🐛 修复

  • 修正 GUID_MONITOR_POWER_ON(Win8 已废弃)改用 GUID_CONSOLE_DISPLAY_STATE,Modern Standby 系统也能触发
  • 移除 55 秒空闲判断,避免播放视频时误关灯
  • 使用顶级窗口而非 HWND_MESSAGE,确保能收到系统级广播
  • 调用 RegisterSuspendResumeNotification 显式订阅休眠事件

v1.4.2 · 快捷键清空

2026-07

🐛 Bug 修复

  • 在快捷键输入框上右键,可通过"清空快捷键"菜单禁用不需要的快捷键

v1.4.1 · 全局快捷键 + 自动更新

2026-07

🎮 全局快捷键

使用系统级热键调节亮度和色温,全屏游戏中也能响应。支持长按连续调整、按键录入配置。

🔔 自动更新检测

启动时后台检查 GitHub Release,有新版本弹窗提示,可在托盘菜单手动检查或关闭。

更早版本

v1.4.0 之前的历史版本可以在 GitHub Releases 页面 查看,包括:

  • v1.4.0 — 云端 Token 提取、桌面小部件(感谢 @zengzoxiong PR #1)
  • v1.3.x — bulk MIoT 设备库(2100+ 机型)、CT 单位过滤、灯随软件启停
  • v1.2.x — 开机自启动、Flyout 体验完善、多网卡广播
  • v1.1.x / v1.0.x — 初期版本,基础托盘与滑杆功能