Skip to content

更新日志 ​

2026.10.12 ​

  • KernelSU Next 模块横幅:增加模块背景横幅,使用ksu next管理器开启模块背景横幅可以给模块增加图片背景;
  • KernelSU 模块仓库:仓库根目录增加 module.yaml(便于提交 modules.kernelsu.org),为将模块提交至ksu官方模块仓库做准备
  • 音量键 volkey:bin/volkey(EVIOCGRAB)供安装 customize 与 Action 共用,避免 BakaSU 等管理器不吞键时弹出系统音量条;SukiSU 管理器常自吞 KeyEvent。缺二进制时回退 getevent
  • Lint:接入 lint:py(ruff)、lint:clang、lint:rust、lint:kotlin(缺工具本机跳过 / CI 强制);format:all 与 lint-staged 覆盖 py / C / Rust / Kotlin

2026.10.08 ​

  • 修复停充后反复「插入 / 再停」:假停充自愈误把放电负载电流(status=Discharging、|I| 仍大)当成「没停住」,还原 input_suspend 后又触发停充。现以 Discharging/Not charging 为准;节点仍为停充值时只重申不还原;调试日志带符号电流与节点当前值。
  • 快捷磁贴:增加「充满再停」磁贴,经自带 CLI cfg set 切换。优化「定量停充」磁贴样式
  • 修复 APP 部分配置项修改时卡 UI ,点击之后页面无变化需要切换页面才能看到配置变化
  • APP 底栏阴影加深

2026.09.25 ​

新增 ​

  • 安装方式简化:音量上默认安装(全量可用组件;有旧配置则保留核心);音量下自定义安装(逐项选择)。无人值守(install_auto)不变。
  • App 导出日志:动态页 /「我的 → 排障」打包 zip(运行日志、事件、XP、配置与标记)并走系统分享,方便反馈。
  • 简介 × LSPosed:边沿改为队列消费、总线文件权限可写;主服务可直接刷简介;息屏再亮、KSU 随机包名、无 XP 降级等一并打通,减少「在前台但不更新」。
  • 事件守护:Rust watch/wait-event 支持 --wake-file(与 viewer 同 poll);C 版仅做轻量 poll + burst drain。

修复 ​

  • App / 温控停充后充不回:无 battery_switch 时不再误套用电量门闩。
  • 热更新 / 假停充留下孤儿停充:清标记前先还原节点;插电周期性复检残留(未插电跳过,避免与 OEM 打架)。
  • 未插电过勤 / 挡 Doze:去掉盲 sleep 丢插拔与「无 XP 也整夜 5s」;lean 释放残留 wake_lock;race kill 不再把 130/137/143 当成功。
  • 默认日志:去掉管理器进出等刷屏文案。

2026.09.21 ​

机型过多适配困难,本版已引入详细调试日志开关

反馈问题请详细描述问题,并打开详细日志开关提供关键日志

新增 ​

  • 详细调试日志开关:App「我的 → 排障」、WebUI「测开关与缓存」、CLI qsc debug on|off;写 data/debug_on,约 2 秒内随开随关。开启后 log.log 记录插电判定、停充评估、节点写入/复核、假停充自愈、涓流电流与时间、电流控制、qscd 等待/唤醒等;默认关闭不影响日常。
  • 分级省电策略(config/power.conf):档位均衡/强力/自定义;息屏加强、夜间时段、深睡 DeepPark;未插电事件驱动驻停,插拔仍即时响应(非绝对零耗电)。WebUI「省电策略」、APP「进阶 → 省电策略」。
  • 配置拆分:省电键迁入 power.conf,通知迁入 notify.conf;旧 config.conf 启动时自动迁移。
  • 停充维持 × 息屏/夜间:非 MCA 息屏约 180s、夜间/深睡约 300s;MCA 仍按 loop_interval_maintain_sec 重申。
  • 夜间时段:模板默认 23:00-07:00(跨天);WebUI/APP 可编辑;开启「夜间省电」且无时段时自动写入该默认。
  • 简介按需刷新:检测到 Magisk/KSU/APatch/MMRL 等管理器在前台时勤刷电量;无人看列表时几乎不更新电量(停充/插拔等状态仍即时写)。内置含 Alpha / Kitsune、KSU Next / SukiSU / ReSukiSU、APatch Next / FolkPatch、WebUI X 等活跃分支;可选 desc_viewer_pkgs 追加包名。
  • LSPosed 管理器前台边沿:系统框架 Hook Activity 恢复;进出各 3s 稳定,确认离开后再 90s 超时写 qsc_xp_viewer leave。无 XP 时仍 dumpsys 轮询降级。与既有插拔 qsc_xp_wake(仅 qscd 不可用)独立。
  • LSPosed 前台包名总线:每次前台切换写 qsc_xp_fg;简介 / 游戏旁路 / App 停充共用;有 XP 时跳过认前台用的 dumpsys,无 XP 再降级。
  • LSPosed 辅助边沿(默认关):亮灭屏 → qsc_xp_screen(息屏策略优先读);Doze → qsc_xp_doze;白名单广播 → qsc_xp_bcast(可改 qsc_xp_bcast_actions)。APP「LSPosed / XP」面板开关;武装时亦可打断 qscd 回退 sleep。
  • XP 生效时事件驱动:简介后台长睡等边沿(非绝对零轮询);管理器进出各 3s 稳定 后才确认,确认离开后再 90s 超时 才停刷;会话未结束时切回不重复强制刷。观看中约 45–60s 复刷。游戏限流:前台或进程命中(后台子进程也维持),再套约 1s 进 / 30s 离 墓碑;App 停充同间隔(有 XP 以前台为准)。
  • 无 XP / XP 异常回退:alive 缺失、软关、或与 dumpsys 连续不一致时写 xp_fg_unreliable,简介与认前台改 dumpsys/进程路径;边沿恢复后自动切回 XP。漏边沿时 dumpsys 安全网仍能发现管理器。
  • 省电诊断统计:touch data/diagnostic_on 后按心跳写出 service_power_stats 与日志「省电统计」(skip/均睡/简介写盘/未插电 %/h);默认关闭,避免调试本身耗电。
  • 策略边沿日志与驻停总结:进入/退出息屏·夜间·深睡写 INFO;同段重合不重复结算;退出时总结唤醒次数、均睡、skip,并给出「接近少唤醒 / 偏勤」评判。管理器前台进出、配置热重载亦有日志。息屏加强须连续息屏约 90s 才进档;不足约 3 分钟的短驻停不写总结,减轻亮灭闪动刷屏。
  • CLI:help 汇总命令;缩写 st/cfg/diag/test/ver;stats 看省电证据;diagnostic on|off;debug on|off;未知命令提示相近指令。
  • 用户文档:功能/配置/WebUI/APP/FAQ/首页对齐分级省电与多 conf;顶栏增加「常见问题」。

优化 ​

  • stop_hold_wakelock=auto 不再日用常持锁:仅息屏/夜间持锁,亮屏释放,减轻对深度 Doze 的阻挡;强制 1 仍持续持锁。
  • 未插电 lean wait:确认未插电后主循环再入几乎只做「读 online + 策略/idle + wait」;简介/XP 管家仅在拔电首轮或配置变更时跑。配置本就按 mtime 哨兵,未变不重读全文;App/WebUI 保存另 bump conf_reload_req。
  • 深睡粘滞:已进 deep 后连续数次跳过亮度 sysfs,沿用 deep_idle_sec;约每 3 次醒全量探测一次以便亮屏退出。进入息屏加强/深睡时停简介 worker,离开驻停再拉起。
  • 未插电不再强制满轮:取消 FULL_MAX_GAP 定时 qsc_switch;qscd 失败回退未插电至少按 idle 地板(≥90s),避免短睡抖醒。
  • 管理器前台误报:息屏禁用 dumpsys 安全网与「在看」判定;退出驻停需亮屏滞回且连续两次非 deep;XP enter 要求亮屏。修复过夜周期性「管理器前台」假日志与短驻停无退出总结。

修复 ​

  • 管理器前台息屏后再亮简介卡静态:亮灭屏边沿补发 viewer enter(不依赖 want_screen);仅简介策略无 qsc_xp_fg 时 dumpsys 认管理器;观看循环每轮复核、离开息屏压制后立即安全网,避免一直停在静态文案。
  • 停充基线对齐 v2026.08.14:机型相关停充以 0814 为准(MCA 仅 mca=1、写成功即认、非 MCA 不抢 handle_state)。保留优化:全量盲写、假停充自愈、插电多信号、MCA raw echo、详细调试日志。事后电流硬复核改为 switch_hard_verify(默认关;App/WebUI「冷门/实验」可开)。
  • XP 前台门禁与分级:Magisk 同步 qsc_xp_fg_policy;简介/游戏限流/App 停充全关时 XP 不写前台盘(qsc_xp_fg_idle 热路径快判)。仅简介→只处理管理器且不写 qsc_xp_fg(只要 viewer);游戏/停充→列表包(离开再写一次)。未插电时游戏/停充不纳入 XP。非详细日志下 DEBUG 不进 logcat。
  • CI 通道检测版本落后于 Actions:publish-updates / publish-ci-dist 曾把整份 tip 拷进 STAGE 再推送,并发的 App/守护发布会把模块元数据回滚(如远端已是 .ci.315 却检测到 .ci.314)。改为只推送本产品文件,state.json 与 tip 合并。
  • (继承)充满拔线后 uevent 乱叫醒、停充持锁间隔等,见 2026.09.18。

2026.09.18 ​

相对 2026.09.16 的变更。本版起模块 versionCode 以 2026091701 为兼容切断线。

升级说明 ​

  • 自 09.16 及更早版本升级将触发一次强制完整重装:清空旧配置、运行数据与外部 /data/adb/qsc;重启后需重新设置。此后更新按正常路径保留配置。
  • 切断过程不执行旧版 uninstall.sh,且不删除 modules_update(修复 KernelSU 安装结束报 No such file)。
  • 建议刷入本版 zip 后重启,再通过 WebUI / APP 完成配置。

新增 ​

  • 涓流模式(charge_full_mode):在「充满再停」且停止电量=100% 时,可选自动 / 仅电流 / 仅时间(约 10 分钟)后再停充;WebUI「策略」、APP「策略」可配置。
  • 拔线立刻还原(unplug_restore,默认开):拔线后立即恢复充电节点;关闭则保留停充迟滞,再插电仍停至恢复电量。
  • 动态简介开关(description_enable,默认开):开启时管理器列表随状态刷新;关闭后写入固定产品简介并停止简介 worker,略减待机开销。入口:WebUI「省电策略」、APP「省电策略」。
  • 日志结果态:主徽章区分停充中 / 已恢复 / 已拔线 / 已关闭 / 停充失败等;成功停充标注「已停充」。

修复 ​

  • 过夜插电停充耗电偏高:stop_hold_wakelock=auto 在魅族或 MCA 机持锁时,旧逻辑仍约 8s 跑满轮。现非 MCA 持锁维持约 300s;MCA 仍按 loop_interval_maintain_sec(默认 30)重申,避免 handle_state 被改回后长时间回充。
  • 充满拔线后待机仍异常掉电:未插电时 qscd watch 未传阈值,退化为任意 power_supply uevent 都叫醒主循环(电流/电压/温度噪声),整夜无法 Doze。现未插电 / 停充维持仅响应插拔或超时;无 watch 的 C 版未插电改为纯 sleep。
  • APP 版本号卡住 0.3.1 并反复提示更新:正式版发版未向 Gradle 传入 qscVersionName / qscVersionCode,APK 一直用默认值,而远端清单已升号。现正式/预发布均写入发版号;默认值改为日期版对齐。
  • 停充后误判拔线(K60 等):input_suspend 停充后电池常报 Discharging,旧逻辑误还原节点。现以充电类型与 VBUS 为强证据,不再被假放电否决。
  • 强制升级后简介显示「核心脚本丢失」:切断前先停止旧服务与简介进程,避免未重启时旧进程写入异常简介。
  • 强制升级失败或循环刷入:切断时保留 modules_update;无人值守与 APP/WebUI 安装页避免重复触发刷入。
  • APP 启动反复提示更新:未安装事件守护时不再将本地 versionCode=0 判为可升级;「稍后」会记住当前远端版本集合,同一批不再重复提示。
  • 涓流模式选项换行异常:WebUI 改为与其它预设一致的 Chip 横排。
  • 安装残留:安装与热更新收尾后移除模块目录内仅安装期使用的 customize.sh、install/、apk/(仍包含于 zip)。
  • LSPosed:关闭热重载;作用域应勾选系统框架(system),不可仅勾选 android。

工程 ​

  • 仓库路径与内部命名对齐重构;用户侧模块 id 仍为 QSC_Battery。
  • 发版:正式 / 预发布 version 可空,按日期自动升号;versionCode 与日期对齐。
  • 发布工作流:伴侣 APK 输出路径与 apps/android 对齐,修复 CI 拷贝失败。
  • 切断实现:qsc_wipe_incompatible_module 仅删除 modules/QSC_Battery 与外部 qsc,保留 modules_update;切断线前跳过热更新。

2026.09.16 ​

新增 ​

  • 全量盲写开关 switch_batch_blind(默认开):全量写节点并在条件满足时每轮重申;关闭则只写首个成功节点后重申。WebUI「更多选项 → 冷门/实验」、APP「进阶策略 → 停充行为」可改
  • APP 启动检测正式版更新:打开伴侣 APP(完成引导后)静默查一次正式通道;有模块 / APP / 守护可升级时弹窗,可「去更新」或「稍后」;失败或已最新不提示
  • 更新通道(正式 / 预发布 / CI):APP「更新」与 WebUI「我的」可切换通道;检测统一读 updates 分支(stable / prerelease / ci),下载分别为 Pages / GitHub Release / ci-dist;可分别检测并更新 模块 · APP · 守护;本地高于当前通道时可「切换」安装通道版;CI 可选用 CDN(jsDelivr,默认关;正式/预发布不展示),关 CDN 时检测与下载链接均回退 GitHub raw
  • 通道安装体验:模块支持写 install_auto 后 CLI 无人值守刷入(失败再打开管理器;WebUI 成功后硬刷新);APP 模块更新进命令行风格安装页;守护按当前 native_impl(Rust/C)下载,APP/WebUI 可预拉清单与二进制经 QSCD_LOCAL_BIN 安装;守护 分侧 versionCode(只升变更一侧);版本展示 CI 为 ….ci.N、预发布为 ….pre;停在预发布/CI 时旁路提示正式版
  • 发版与 CI 产物:ci-dist 分目录 module/ · app/ · qscd/(仅完整产物);工作流按路径拆分构建;versionCode 跨通道单调递增且按产品增量;发版勾选多产物;Pages / updates 元数据与清单字段对齐
  • WebUI 信息架构:「策略 / 我的」改为 Hub + 二级子路由(日常项留一级,开关排障 / 运行采样 / 守护、机型社区 / 工具说明 / 关于进子页)

修复 ​

  • 停充回归:以可靠基线收敛——① Not charging+|I| 不再误判为放电(否则会否决插电、charge_eval 进不去,K60U/K90U 等多机失效);② 常规节点恢复 盲写整批,取消电流硬回滚;③ MCA 写成功即认(不因单次大电流拉黑);④ 停充条件仍满足时每轮重申;⑤ 未识别 MCA 不盲扫 handle_state;⑥ dumpsys powered:true 作插电正证据兜底。末位电流墙仍校验;省电/快照等优化保留在不破坏上述语义的前提下

构建 ​

  • APP 迁到 AGP 内置 Kotlin;CI Actions 升到 artifact/setup-gradle/Pages v5–v6,消除 Node 20 弃用警告;WebUI 固定 js/app.js 等路径并生成 webroot/.qsc-files,热更整目录替换以免 HTML/JS 不一致

2026.09.13.2 ​

  • 模块在线更新改为指向 -full;原无后缀主包改为 -sh;新增无 WebUI / 无内嵌 APK 的 -lite
  • 安装文档补充 Release 各文件说明(模块 zip / APK / qscd),方便按需选择下载

2026.09.13 ​

伴侣 APP ​

  • 新增 Compose 伴侣 APP(com.qsc.battery):首页 / 策略 / 动态 / 我的;Root 读写模块配置与状态,不挂后台保活;minSdk 26 / targetSdk 35
  • Charge 设计系统:浅/深/AMOLED/动态取色、调色板、首启引导、模块与 APP 分通道更新、配置档;快捷设置磁贴切换模块软开关
  • 模块 zip 可内嵌 APK,安装时可选写入;写入成功后删除模块目录内临时 APK
  • 桌面动态电量图标(约 10% 分档,充电闪电标黄);默认关闭;切换 activity-alias 改为先启后禁,失败回退默认入口(避免「装完桌面无图标」)
  • 可选 LSPosed(libxposed API 102):作用域勾选 系统框架 (system);仅在 qscd 不可用时插拔边沿唤醒;/data/system 通道、存活探测与独立 XP 面板(服务连接 / 作用域 / 注入)
  • 「动态」增加 LSP 子页(合并多路径 XP 日志);从 XP 详情进入时自动切到 LSP 并加载

模块 ​

  • 新增 bin/qsc.sh CLI(status / on|off|toggle / config / log / events / diagnose / test-switch / detect / daemon 等);C 包装安装到 /data/adb/qsc/bin/qsc(不挂载 system/bin)
  • 新增 充电事件日志 data/charge_events.log 与 learn_stats.sh;可选常显功耗通知 notify_power_status(默认关)
  • 新增 设备档案库:device.profile 压缩归档 / 一键还原;WebUI 可复用;扩展旁路节点列表,并移除危险旁路自动探测
  • 插电判定:简介与供电标记不再单信 status=Charging 或 dumpsys powered(一加等假充电);也不再把无端口证据的孤立 Not charging 当成已插电(小米 17 / K90U 等未插电却显示充电中);MCA 无 online 时仍认 present / VBUS,明显放电时忽略粘住的 present
  • 待机省电:修复事件等待时父 shell 每秒轮询抵消 qscd;服务心跳写盘改为约 180s;未插电 idle / native 默认拉长;简介 worker 未就绪短重试、未插电拉长周期;同 tick 缓存插电判定;qscd 失败时可武装 XP,回退 sleep 可被 qsc_xp_wake 打断
  • 保留更新:音量上只迁移停充阈值/温控/通知/开关/时段等核心项;power_saver 与 loop_interval_* 一律用新版默认,避免旧间隔盖掉省电优化
  • 热更新:接管校验改为确认 service PID、主循环与心跳即可,不再强依赖简介 worker 的 last_refresh 窗口(修复近期「热更新未完成 / 接管检验失败」)
  • 原生守护补充:Rust plugged / diagnose、精简 wake;C 版 cat / stat

WebUI ​

  • 充放电曲线:等距降采样、单调 Hermite、范围切换、增量刷新与健康趋势;打开时刷新间隔改为 60s;修复强制刷新仍走旧缓存的问题
  • 日志页拆成运行日志 / 充电事件 Tab;常显功耗开关入口;我的页接入档案库与配置档增强,守护卡片与安装流程对齐

构建与发版 ​

  • APP 独立更新清单 app-update.json;发版工作流可分项勾选模块 zip / 守护 / APK
  • CI:停充用例适配 MCA「供电中」简介文案;统一 checkout@v5 / setup-node@v5;抽取 setup-android;Vitest 迁至 apps/webui/test/unit

2026.09.01 ​

  • 修复因充放电曲线导致的webui卡顿,优化页面加载性能
  • 接入Rust与C编写的二进制文件运行时日志

2026.08.30 ​

  • 重新设计热更新实现方案以解决热更新之后服务挂起无法启动导致的一系列问题
  • 修复热更新之后停充失效
  • 修复热更新之后简介不再刷新

2026.08.29 ​

  • 修复webui首页电池电量与温度不显示
  • 修复状态文案不更新
  • 修复充放电曲线数据不更新

2026.08.28.3 ​

  • 扩展统一电池快照:Shell、Rust 与 WebUI 统一优先读取 battery / bms / soc 节点并规范化温度,缺项时保留 fallback;Rust 自检新增快照来源、电量、温度、状态和缺失原因诊断
  • 增强 Rust 只读事件引擎:保留 Shell 负责停充决策和节点写入,Rust 增加 watch 阈值过滤、事件风暴合并、严格的 /proc 包名匹配和 MCA Not charging / fake sysfs fixture 覆盖,不直接修改充电节点
  • 修复原生等待器失败后的恢复路径:记录 netlink / 超时 / 接收失败原因、返回码和时间;失败时退回轮询并按 30s、60s、300s、900s 递增退避,后续可自动重试恢复,不再永久锁死在单一状态
  • 降低服务与历史采样写盘:增加服务心跳、循环/原生唤醒/简介写入/历史 pending 指标;历史采样先批量写入 pending,新增 data/diagnostic_on 可选详细诊断采样,默认不增加高频写盘
  • 完善守护版本一致性检查:远程 manifest 版本改为逐段比较,并强制校验 SHA-256 格式;即使版本号相同但本地文件校验不一致,也可直接重新下载修复
  • 改进 WebUI 守护交互:显示下载阶段和进度、本地/远程版本、文件校验、安装包自带或升级继承来源及等待器失败状态;远程版本异常时提供重新下载与修复操作
  • 补齐安装、升级和 CI 契约:保留守护版本元数据和升级继承状态,加入 fake qscd 服务失败/恢复测试、历史 pending fixture、Rust fmt / clippy -D warnings / cargo test 门禁及独立发布契约检查

2026.08.28.2 ​

  • 重构免重启更新的安全兜底:热更新前先将完整模块保存到管理器不会清理的外部副本,复制和关键文件校验全部通过后才清除 update / modules_update;任一步失败都保留标准重启更新,成功后立即清理副本与 worker,卸载时同步清理遗留临时资源,并支持开机恢复中断的热更新任务

2026.08.28 ​

  • 修复停充后无法恢复充电(重要):完善停充节点恢复和状态清理流程;关闭模块、异常中断或温控 / App 停充持续命中时不会再无提示地长期锁定充电,电量低于 20% 时强制恢复充电,恢复失败会保留告警便于排查
  • 补强 K90U / MCA 停充判定:MCA 接管后即使 battery/status=Not charging、usb/online=0,也会结合 present、充电口类型、VBUS 电压等信号识别仍在插线,避免省电快路径跳过停充评估;开启 data/debug_on 后可记录评估结果、MCA 节点路径、请求值与读回值
  • 优化免重启热更新体验:暂存目录复制完成后立即清除更新标记并启动 hotinstall.sh,残留清理转为后台处理;增加同模块互斥锁,避免重复拉起收尾作业,兼容管理器或第三方安装器的延迟收尾
  • Rust 守护新增阈值事件过滤与原生进程检测:watch 仅在插拔或接近停充阈值时唤醒 shell,pkgs 直接遍历 /proc/<pid>/cmdline 检测目标进程;不支持这些子命令时自动退回 shell 实现
  • 增加原生守护专用轮询间隔:新增 loop_interval_idle_native_sec 与 loop_interval_plugged_native_sec,守护可用时分别控制未插电和插电兜底间隔,事件仍可即时唤醒
  • 降低事件守护的定时唤醒与 shell 空转:接收超时改为按截止时间一次等待,并减少待机快路径中的配置检查与无效简介写入
  • 明确 Rust / C 守护的职责边界:Rust 版继续承载新功能,C 版维持 wait-event、probe、selftest 等轻量能力;WebUI 与文档同步展示能力差异
  • 扩充停充决策测试:增加假 sysfs 回归测试,覆盖 MCA 的 Not charging 状态、无 online 节点、阈值判定和节点写入结果;生产代码统一支持测试用 sysfs 根目录

2026.08.27 ​

省电(待机功耗) ​

  • 新增 power_saver(默认开)与三档轮询间隔:未插电 30s 且该轮只读 online 节点、不再 fork qsc_switch.sh,插电离阈值较远 10s,进入阈值附近(默认 3%)回到 loop_interval_sec;三档均可在 WebUI 调整
  • 主循环不再每轮 dumpsys battery:电量/状态/温度优先读 sysfs,缺项才回退,不再把 system_server 从 doze 唤醒;配置解析改为一次内建遍历,单轮进程数从约 60 降到个位数
  • 去掉每轮无条件写盘:调试日志仅在开启调试时写,data/loop_sleep 仅在值变化时写,充放电曲线仅插电期间采样,日常待机对 charge_history.csv 零写入
  • 按 App 停充改为每 10 秒最多检测一次,且 ps 只取一次快照(原先每个包名各跑一遍)
  • 新增事件唤醒守护 bin/qscd:阻塞在内核 power_supply uevent 上,未插电时零定时唤醒、插拔即时响应。提供 Rust 与 C 两套等价实现,由 native_impl(rust / c / off)选择,native_daemon 可整体关闭;仅 arm64 / armv7,装不上或自检失败自动退回定时轮询

停充兼容与修复 ​

  • 修复 MCA 机型(红米 K90U 等)完全无法停充:2026.08.25 起停充要求 status 为充电中(2)/已满(5),但这类机型充电由 mca_charger 接管,插电充电时 battery/status 也可能一直报 Not charging,导致停充分支一次都进不去。现改为「status 明确在充电」或「当前不是本模块停充的状态」二者之一即评估停充,原先防止停充后每轮全量重写开关的目的不变;按 App 停充与电流控制卡在同一门槛上,一并放宽
  • 修复按 App 停充后可能反复充断:停充使 status 变为 Not charging,原判定跳过前台检测而误判应用已退出并立即恢复充电
  • 通用节点停充后校验是否真的停了:写入成功但无效的节点自动回滚并换下一个(MCA 常延迟生效,仅做软复核不回滚)
  • 自动跳过策略类节点(night_charging / cool_mode / batt_protect / adapter_cc_mode 等),不再扫描与盲写;用户显式配置的 power_switch 仍可用,WebUI 手填时给出警告
  • 温度停充更及时:插电且温度距停充阈值不足 3°C 时切回最短间隔,不再最多晚一个轮询间隔
  • 新增 power_stop_schedule:仅在设定时段内触发电量停充(温度停充不受限)
  • 新增 wireless_policy(same / ignore)、停充校验等待秒数、维持间隔等配置项
  • 服务启动时清理旧版本遗留的 data/startup.log / data/debug.log(老版本每轮追加,可能已积到很大)

发布与安装 ​

  • 非首次更新支持免重启热更新:无开机挂载类变更时切换模块目录并重拉 service.sh,管理器支持热更新接口时优先走该路径;模块简介同步显示热更新状态,不再一直停在「等待重启」
  • 修复热更新经常不生效(modules_update 残留、模块目录留下 update 标记):目录切换作业改用 setsid 脱离安装器会话,不再被安装结束时连带杀掉;等待方式从固定 5 秒改为等暂存目录稳定,避免与管理器写 update 标记赛跑,并在覆盖后持续清理残留;覆盖前校验暂存关键文件齐全,中断的暂存不会盖掉正在用的模块;过程记入 /data/adb/qsc/runtime/diagnostics/hot_update.log,诊断报告可见
  • 发布改为 4 个变体包,脚本内容完全一致,差别只在带哪套守护二进制:主包(无后缀)不带二进制、体积最小,update.json 指向它;-rust / -c 各带一套;-full 两套都带,安装时按 native_impl 逐个自检选用
  • 主包安装时会问一次是否现在联网下载守护(可选 Rust / C),跳过或下载失败都只提示、不中断安装,之后可在 WebUI 重试;升级时已下载的守护会自动保留
  • 守护二进制与含 sha256 的 manifest.json 随发版托管到模块官网,下载落盘前校验,校验或自检不过一律回滚
  • 安装时迁移本次新增的配置项,升级不丢已有设置

WebUI / Action ​

  • 页面布局重构;冷门项(循环间隔、无线忽略、按 App 硬停充等)默认收起,避免抢主路径
  • 概览新增充放电曲线:电量与温度两条线,左轴电量 % / 温度 °C、右轴电流 A,时间刻度可直接读值;放电段合并系统自带电池记录,无需自行采样也能成图,卡片标注其中多少点来自系统
  • 新增「显示充放电曲线」开关:关闭时连采样一起停并置灰采样开关;重新打开不自动恢复采样,只提示采样仅影响电流线,由用户自行决定
  • 新增「事件唤醒(守护)」卡片:开关 + Rust/C 二选一的下载与切换 + 删除,显示当前实现、来源与自检结果;没有守护文件时开关置灰并说明原因
  • 机型节点社区分享:分享文本复制/粘贴,本机预制档与仓库预制档双入口,可从仓库同步到本地缓存(device-presets.json),不必等模块发版
  • 首选停充开关可视化编辑(preferred_* / reassert);命名配置档与导入导出(含 preferred / MCA);一键清除开关缓存;进阶电流项进表单(重申 / 漂移 / 台阶 / 路径)
  • 新增停充持锁(关/自动/开)、电量停充时段、停充失败提示、通知分控(停充 / 恢复 / 失败)与勿扰时段(失败仍通知)
  • 日志页新增「会话」视图,按停充→恢复折叠
  • 新增快捷开关路径说明与 AccA 等冲突提示
  • 测开关改为后台执行并轮询结果,降低管理器超时掐断;Action 音量下:插电快速测开关,未插电则诊断
  • 诊断报告新增充电状态判定:battery/status 原始值、各 online 节点、data/power_switch 与 data/active_switch

工程 ​

  • 引入 Vitest:日志会话折叠、策略节点识别、预制档解析、配置钳位等单测,挂入 npm run check

2026.08.25 ​

  • 修复部分机型充电几分钟后反复断电又恢复:停充需同时「插电」且 status 为充电中/已满,停充后不再每轮全量盲写开关
  • 修复魅族等机型息屏「回充亮屏 → 再断电」死循环:新增 stop_hold_wakelock(默认 auto,魅族/Flyme 或检测到 MCA 时自动持锁;恢复充电、关闭模块或卸载时释放)
  • 改善小米 17、红米 K90 等停充不生效:实时探测 MCA handle_state(优先 mca_business_charger),直接 echo 且不 chmod;补充 stop_handle_charge
  • 停充更稳:优先写首个成功节点并记录 active_switch 单点重申,降低与系统充电服务互抢
  • 电流墙与端口 input_suspend 改为末位兜底;night_charging / cool_mode / mi_charge_enable 等保留在主列表
  • 关闭模块时不再维持停充与持锁;卸载时同步恢复充电并释放 wakelock

2026.08.14 ​

  • 运行日志:日志增加 INFO/WARN/ERROR/DEBUG 等级;日志页按等级着色,并支持筛选(默认 Info,记住上次选择)
  • WebUI:自定义供电开关改为只读预览,点按打开大屏代码编辑弹层;编辑器支持自动换行
  • WebUI:机型/系统改为多厂商 getprop 兜底(一加/OPPO/vivo 等),修复空属性导致只显示 Android

2026.08.13 ​

  • 文档:增加 WebUI 文档与WebUI截图
  • WebUI:Tab 切换改用 replace,侧滑/虚拟返回可直接退出而非回退上一 Tab
  • 支持 power_switch 自定义供电开关(config.conf / WebUI);扩充停充与电流节点兜底列表
  • 适配 Android 16:dumpsys 电量取首个行首 level:;补 night_charging / charging_suspend_battery / OPPO一加 mmi_charging_enable;list_switch 扫描失败时保留旧列表
  • WebUI:拆分策略 / 我的 / 日志 / 概览默认主题为独立组件,抽离表单与外观逻辑
  • WebUI:Tab/主题/旁路等改为 TS enum;链接、存储键与主题预设集中配置
  • WebUI:Vant 改为按需引入样式,去掉全量 index.css

2026.08.12 ​

  • Action:重新设计Action功能,保证脚本不会被提前终止
  • WebUI:增加电池信息展示(健康度,设计容量,真实容量,循环次数)
  • WebUI:设计电池图标与充电动画
  • WebUI:引入 Pinia,useAppStore / useTheme 改为 setup store
  • WebUI:抽离 useBatteryInfo / useConfigForm / useThemePackClass composable
  • 修复 MIUIX 深色 + 莫奈:宿主浅色 --background 洗白页面导致文字无对比度

2026.08.10 ​

  • WebUI 体验优化
  • 电流控制:旁路增加总开关(关则隐藏子项;不触发旁路与回补)
  • 电流控制:漂移重申逻辑优化,减少频繁读写

2026.08.09 ​

  • 模块显示名改为「充电控制」,管理器简介随运行状态动态更新
  • 新增可选「电流控制」(current.json,默认关闭):模拟旁路、慢充、温控限流、游戏限流;未安装则不写入相关文件,WebUI 不显示入口
  • 旁路可按电量、温度或时段自动开启(时段支持跨天);旁路方式可选模拟写电流或探测本机旁路节点
  • 新增兼容模式:与其它快充 / 限流模块同装时,可只保留电量 / 温度停充
  • Action 支持实测停充开关并锁定首选节点
  • 安装时自动卸载「QSC定量停充」与「QSC定量停充_独立开关版」(不迁移配置)
  • WebUI 重构为 Vue 3 底部 Tab 界面;支持默认 / MD3 / MIUIX 三套主题(MIUIX 含莫奈、悬浮底栏与液态玻璃)

2026.07.24 ​

  • 全新品牌图标:色底横放电池用于模块列表 / 文档导航,竖立加粗浮动标区分深浅主题用于文档 Hero
  • WebUI 顶栏与「关于」页接入品牌图标,浮动标随浅色 / 深色主题自动切换;发布包同步打入 icon.png

2026.07.23 ​

  • MCA / K90U 兼容改为按本机节点动态探测,写入 data/device.profile,不再对所有机型统一硬编码路径
  • 支持在模块管理器执行 Action 做现场诊断:音量上刷新权限与状态(默认),音量下进入诊断菜单,可逐项运行只读诊断或重新探测设备(调试包另含写入类检测)
  • 正式包与调试包分离:正式包仅含只读 diagnose;testing / diag2 仅打入 -debug 包
  • 模块脚本按功能拆分到 bin/lib/(util / keys / profile / charge),主循环与安装/Action 共用同一套库

2026.07.22.2 ​

  • 增强红米 K90U(骁龙8至尊版)兼容:优先写入 MCA handle_state,停充期间持续重申,避免系统改回节点导致停充失效

2026.07.22 ​

  • 修复电量与温控同时触发后提前恢复充电、继而再次停充的问题;现在会记录停充原因,并等待所有条件恢复
  • 统一换算不同设备上摄氏度、十分之一度、百分之一度和千分之一度的电池温度,避免误触发温控
  • 安装前增加音量键确认,按音量下或 20 秒未确认会安全取消
  • 更新同 ID 模块时可选择安全迁移旧配置或使用新版默认配置;迁移时仅保留合法字段和数值
  • WebUI 改为可选安装,未安装时核心停充逻辑与 Action 状态检查仍可正常使用
  • 重做普通深色配色与卡片层次;莫奈深色改为跟随系统色相 / MD3 token,不再与固定深色共用一套写死色值
  • 移除深色顶栏浅色状态栏条,改为依赖 color-scheme 与 theme-color 同步状态栏

2026.07.21.2 ​

  • WebUI「关于」页面新增在线使用文档入口
  • 新增文档站更新日志页面,可直接查看历史版本变更
  • 发版时优先保留已手写的当前版本日志,缺失时再根据提交记录自动生成
  • 将 changelog.md 同步部署到 GitHub Pages
  • 将 Release 模块 ZIP 镜像到 GitHub Pages,改善模块更新与下载体验
  • 发版完成后自动触发 Pages 文档重新构建

2026.07.21 ​

  • 优化深色模式文字、卡片与分隔线对比度
  • 修复深色模式下状态栏时间、电量等信息难以辨认的问题
  • 修复开启莫奈取色后手动切换深色模式仍显示浅色配色的问题
  • 主题切换后同步页面、系统状态栏与 color-scheme

2026.07.17 ​

  • 修复在线更新:versionCode 改为 yyyyMMdd * 100 + 修订号(如 2026071701)
  • 发版规范:首发 2026.07.17;同日再发 2026.07.17.2
  • WebUI:悬浮分页、莫奈开关、卡片紧凑、顶栏固定等

2026.07.16 ​

  • 仓库更名为 QSC-Battery,模块 id 更名为 QSC_Battery
  • 安装时若检测到旧版 QuantitativeStopCharging_switch,自动卸载旧版(不再迁移配置)
  • WebUI:外观主题支持浅色 / 深色 / 跟随系统,同步状态栏 theme-color
  • 模块:接入 Magisk / KernelSU 在线更新(updateJson)

充电控制 · QSC_Battery · Magisk / KernelSU / APatch