Releases: Sillybomo/OWC
Release list
OWC v1.4.10 — 复归累计确认 / cleanup 幂等化 / 归因修复
OWC v1.4.10
亮屏快充守护的稳定性修复版。四项改动,全部来自 2026-09-16 真机实测发现的问题。
核心语义不变:安全栏 = 保险丝(不到阈值不干涉,一到阈值立即熔断并完全交还系统)。
阈值全局统一,不区分游戏。
1. 复归确认「连续」→「累计/去尖刺」
问题:v1.4.8 的复归死区 + 连续 3 次确认,在真实游戏负载下从未走完过 3/3。
实测日志(异环 + 亮屏快充,2026-09-16 00:18~00:21):
| 时刻 | CPU | 状态 |
|---|---|---|
| 00:18:22 | 83300 | 复归确认中 1/3 |
| 00:18:27 | 94200 | 熔断持续(+10900,跨回熔断线) |
| 00:19:21 | 91500 | 复归确认中 1/3 |
| 00:19:27 | 93800 | 熔断持续(+2300) |
| 00:19:39 | 91500 | 复归确认中 1/3 |
| 00:19:44 | 93800 | 熔断持续 |
| 00:20:45 | 90700 | 复归确认中 1/3 |
| 00:20:51 | 93400 | 熔断持续 |
全日志统计:1/3 出现 4 次,2/3 与 3/3 各 0 次。
根因:单次采样尖刺(±5.5°C)比确认窗口更宽,"连续 N 次"是个永远攒不满的窗口。
分子恒为 1,紧接着必被一次撞线清零。
曾评估把
RESUME_CONFIRM从 3 降到 2 —— 实测证明无效:分子只到 1,降为 2 同样攒不满。
修法:达标次数累加,尖刺不再立即清零;仅当「连续尖刺」超过容差才重置。
新增 RESUME_SPIKE_TOLERANCE=2。
熔断判定(TRIP_*)与保险丝行为零变化 —— 仅放宽"必须连续"。
2. cleanup 幂等化(根治 trap 并发重入)
问题:同一秒执行 4 次 restore。
实测日志:
00:11:18 守护进程退出,恢复所有系统状态 ×4
00:11:18 已交还 cool_down 降流控制权 ×4
00:11:38 守护进程退出 ×2 已交还 ×2
根因:trap cleanup EXIT INT TERM 三个信号指向同一函数,而函数内 exit 0
会再次触发 EXIT,叠加外部并发信号即造成重入。
修法:RESTORE_DONE 幂等标志 + mkdir 原子锁做退出互斥。
单测抓到的坑:初版在"抢锁失败"分支也置位了
RESTORE_DONE=1,会导致抢锁失败者
既不还原也不复位标志 ⇒ 锁释放后 restore 永不执行、系统状态静默卡住。
已修正为「抢锁失败不置位」,保留重试机会。
3. 来源=unknown 归因修复
问题:WARP_GUARD_SRC 只在真熔断时赋值,而守护退出 / 用户关磁贴 / 断充
都会直接调用 restore_warp_charge,此时为空 ⇒ 日志打印 来源=unknown。
修法:restore_warp_charge 接受归因参数,5 处调用点显式传入:
- 过热熔断 →
cpu/gpu/battery/shell - 守护退出 →
shutdown - 用户操作 / 断充 →
user
4. 运行位置统一 vtools/
问题:原设计把脚本拷入 tmp/ 运行,导致 tmp/ 与 vtools/ 各存一份内容相同的
warp_charge.sh,核查时无法判断"哪个在跑",且曾造成版本号滞后。
修法:脚本在 vtools/ 原地运行,tmp/ 只放运行时产物(日志/锁/过滤名单)。
warp_charge.sh 路径逻辑本就兼容两种位置,故本次只改 service.sh / watchdog.sh
两处启动方,核心脚本零改动。
验证
- 复归状态机单测 21/21 通过(含「达标夹尖刺」—— v1.4.8 会失败的场景)
- cleanup 幂等单测 11/11 通过(含上述初版 bug 点)
- 四脚本语法检查全绿,无 CRLF
- 真机热更验收:双守护
PPID=1稳定存活,亮屏快充正常激活11984 1 sh .../OWC/vtools/warp_charge.sh 12165 1 sh .../OWC/vtools/watchdog.sh 19:29:28 亮屏快充已激活(充电接入|游戏=0) - 归因修复当场验证生效:日志打出
来源=shutdown(旧版此处为unknown)
升级
直接刷入 OWC_v1.4.10.zip 覆盖安装即可,无需清数据。
App(控制中心磁贴)随包更新,APK 沿用旧版签名,可正常覆盖。
versionCode 18 → 19。
@author bomo
OWC v1.4.2 — 亮屏快充安全栏改为温度驱动(游戏不再单独暂停)
OWC v1.4.2
修复:亮屏快充「一进游戏就停」
问题:进入游戏后亮屏快充被限制,而当时温度远未达到安全阈值。
根因:主循环里游戏判断写在温度判断之前,游戏态直接 restore,温度判断被短路:
if [ "$GAME_ACTIVE" = "1" ]; then
restore_warp_charge # 游戏态无条件停
else
real_temp=$(get_real_temp) # 温度判断躲在 else 里,游戏时根本执行不到日志实测:21:58 充电接入时因游戏态未激活;22:02 心跳 电池=383(38.3°C)、CPU=73300(73.3°C),
两条阈值(46°C / 85°C)都没到,亮屏快充却已停用。
变更:安全栏由「场景驱动」改为「温度驱动」
- 新增
warp_temp_hot()作为唯一暂停依据:电池 ≥ 46°C 或 CPU/SoC ≥ 85°C → 暂停;
游戏运行不再单独触发暂停,只写入日志便于回溯 CLI apply(磁贴 / App 热开关)与「游戏退出立即恢复」两处同步加温度守卫,防止绕过- 原「游戏运行中暂停」的设计意图保留在注释中作为历史依据(shell-temp 伪装本身就是骗温控)
顺带修复
is_game_running检测链:补ResumedActivity标记(ColorOS 16 无 AOSP 的
topResumedActivity=/mResumedActivity:),并修正head -1的位置 —— 前台为通知栏 /
输入法时mCurrentFocus不含包名,原写法会掐断整条检测链WARP_ACTIVE补初始化:此前未赋值,导致心跳打印为空、且「游戏退出立即恢复」分支静默失效
实测(PLZ110 / ColorOS 16,充电中)
| 场景 | 结果 |
|---|---|
| 游戏态 + 温度未到阈值 | 亮屏快充保持生效 ✅ |
| 温度超限(门槛临时调 25°C 验证) | 日志 亮屏快充已暂停(电池温度 275 >= 250) ✅ |
校验
- 包内
vtools/warp_charge.shmd5f09700ebf77359f7769a4ebe6f2addb7 - 三处一致:dev 源 / 本发布仓 / 设备已装(热更验证)
升级方式
模块管理器直接刷入本 zip 后重启。App 侧无改动,app/OWC-App.apk 与 v1.3.3 起签名一致(md5 7c2ab7c5…)。
OWC v1.4.1 — 文档与注释清理 + 机型识别修复
本次更新(v1.4.1)
🐞 修复
- 安装流程:机型识别改用
device + model + name + board联合匹配(统一大写比较)。
此前仅匹配ro.product.device,在本机(device=OP64DDL1、model=PLZ110、board=canoe)
会把正版机型误判为"未验证",安装时停在音量键确认并超时取消,管理器报
Failed to install module script。现在直接识别通过。
🔧 优化
- 冲突检测名单精简:直接写充电节点的同类模块改由广扫描正则兜底
(cool_down/oplus_chg温度 /shell-temp/ horae),检出覆盖不变。 - 文档与脚本注释整理:移除对其他项目的归属与版本引用;技术要点全部保留
(热失控教训、单位换算事故、有界等待、trip 节点排除)。 - README:兼容性段落与致谢精简,版本 badge 更新至 v1.4.1。
📦 升级方式
- 直接刷入本 zip 覆盖即可,无需先卸载,刷完重启生效。
- 磁贴 App 无改动,与本版内置 APK 一致(md5
7c2ab7c5267a3ee12322e71a4b603647)。 - 已装旧版的用户:管理器里覆盖刷入后重启;状态文件
/data/adb/owc/enabled保持不变。
说明
- 仅一加 15T(PLZ110 · ColorOS 16 · Android 16)完整实测可用,其他机型自测、随缘适配。
v1.4.0 — 安装流程修复:机型不符改音量键确认
修复
① 卡死修复(根因)
旧版安装脚本在机型不符提示后,用 grep -r 递归扫描全部模块目录做充电模块冲突检测。该扫描会顺着模块目录内的符号链接 / 运行期 bind-mount 递归进巨型目录,扫描规模不可预期,导致安装界面在打印「继续安装...」后长时间卡住。
v1.4.0 改为有界 glob(仅模块目录 1~2 层的 *.sh),不递归、不跟随符号链接,扫描成本恒定。
② 机型确认交互
机型不符不再静默继续,改为音量键显式确认:
音量上= 继续安装音量下= 取消安装- 10 秒无操作 = 自动取消(安全默认)
变更文件
customize.sh / module.prop (versionCode 9) / README.md
校验
bash -n语法通过、zip 全文件 LF 校验通过- 本地 stub 模拟 4 条分支(已验证机型直通 / VOL+ 继续 / VOL- 取消 / 超时取消)全部符合预期
- APK 与 v1.3.3 发布版完全一致(md5 7c2ab7c5267a3ee12322e71a4b603647,App 无改动)
⚠️ 仍仅在一加 15T (PLZ110) 实测验证,其他机型请自测。
OWC v1.3.3
⚡ 一加 15T 实测:亮屏充电 ~22W → ~45W(磁贴热切换,App 内置自动安装)。
v1.3.3 卸载安全性加固:
- cool_down 卸载时交还系统控制(防 SIGKILL 场景残留)
- 防御性清扫电池类 emul_temp 残留
- 覆盖审计缺口:此前卸载仅恢复 ORMS/horae
OWC v1.3.2
⚡ 一加 15T 实测:亮屏充电 ~22W → ~45W。
- 磁贴 App 已内置 zip,刷入模块时自动安装(pm install)
- 事件驱动热切换:控制中心磁贴秒级生效
- cool_down 亮屏降流对抗 + 壳温/电池温度伪装
- 安装时兼容性检查(机型提示 + 充电模块冲突自动终止)
- 卸载零残留(含模块外状态文件)
安装后:管理器内给 OWC App 授予 root → 控制中心添加「亮屏快充」磁贴