rack:刷机模式界面与事件;事件 21 新增 254「断电自动退出」

- 单板页「更多 → 刷机模式(1 小时)/ 加钟 30 分钟」,chg>0 时蓝色「刷机模式 · 充电中」、FLT 显示为「反向阻断」
- 协议白名单 flash_mode;事件 21 命名:开 / 手动关 / 到期 / 加钟 / 断电自动退出
- ⚠️ 254 带 0x80 位,必须先于「加钟」判断,否则显示成「加钟 126 分钟」

48 例全绿,已部署。

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
这个提交包含在:
zhou yang
2026-09-29 08:16:48 +08:00
共同撰写人 Claude Opus 5.5
父节点 9fb5bba367
当前提交 86d9e2a7d4
共修改 8 个文件,包含 777 行新增和 637 行删除
+7
查看文件
@@ -188,6 +188,13 @@ def create_app(hub: Hub, rec: RecoveryManager, static_dir: Optional[str] = None,
if d["arg"] == 3:
d["name"] += ":" + protocol.OTA_ERR_NAMES.get(d["mv"], str(d["mv"]))
d["severe"] = d["arg"] in (3, 5)
elif d["type"] == 21:
a = d["arg"]
d["name"] += "(%s)" % ("手动关" if a == protocol.CHG_EV_OFF else
"到期" if a == protocol.CHG_EV_EXPIRED else
"断电自动退出" if a == protocol.CHG_EV_DROPPED else
"加钟 %d 分钟" % (a & 0x7F) if a & protocol.CHG_EV_EXTEND else
"开 %d 分钟" % a)
elif d["type"] == 19:
failed = bool(d["arg"] & protocol.BOOT_CHECK_FAILED)
d["name"] += "(按了 %d 次,%s)" % (d["arg"] & 0x0F, "没开起来" if failed else "开起来了")