Sense v0.4.5.beta.4 - Skill long-press reliability hotfix
Pre-releaseSense v0.4.5.beta.4 预发布说明
版本
- Tag:
v0.4.5.beta.4 - Android:
versionCode 25,versionName 0.4.5.beta.4 - 发布资产:
Sense-v0.4.5.beta.4.apk - 平台:Android 10+,
minSdk 29,targetSdk 36 - 发布性质:GitHub Pre-release
本轮目标:恢复键盘刚显示时的 Skill 长按可靠性
极光、方向选择器和激活状态渲染链在 v0.4.5.beta.3 中仍然完整,但 IME 在
onStartInputView、onWindowShown 和 FileObserver catch-up 阶段可能连续发布同一份
Skill catalog。此前 KeyboardGestureCoordinator.updateKeyboardSkills(...) 不区分内容
是否变化,每次发布都会撤销当前手势。相同 catalog 若在按下后的
380 ms + 16 ms 激活窗口内送达,已开始的长按就会被取消并退回普通字符输入。
本版本完成以下修复:
- 对有界、冲突解析后的键盘 Skill 投影进行内容等价判断;
- 绑定与 active Skill 均未变化时直接保留正在等待或已经显示的长按会话;
- 只有键位、方向、Skill、显示名称或 active 状态真实变化时才取消旧手势;
- 等价刷新不再触发无意义的重绘、无障碍播报和手势定时器重建;
- Aurora 独立子层、方向 picker、普通字符 flick、Space AI 和 Delete repeat 行为保持不变。
Skills 设置页 revision Spinner 性能修复
真机诊断同时定位到一个独立的设置页事件循环:renderHistory(...) 每次发布状态都会
重新创建 revision Spinner adapter 并再次设置相同选项;异步 onItemSelected 随后又
选择同一 revision。此前 controller 会为这个无变化选择递增 generation、发布状态并
再次 render,于是静止页面也持续产生布局、绘制和无障碍事件,还可能让正在进行的历史
revision 读取失效。
本版本在 View 和 controller 两层收口:
- revision 标签未变化时复用现有 adapter;
- 目标 revision 已经选中时不再重复调用
setSelection(...); - controller 收到同一 revision 选择时保持幂等,不发布新状态、不递增 generation;
READING_REVISION阶段的重复选择不会取消或取代正在执行的历史读取。
这些判断只发生在设置页状态发布边界,不向键盘输入热路径增加比较、分配或 I/O。
绑定仍属于用户持久配置。覆盖升级不会擅自补回曾经解除的槽位;某个键没有绑定时,
长按该键继续按普通输入处理,可在“设置 → Skills”中重新选择 Skill、键位和方向。
回归验证
新增并执行以下回归:
- JVM 测试验证不同输入顺序、不同对象实例但解析结果相同的绑定集合保持等价;
- JVM 测试验证 Skill 或标签真实变化时投影仍被识别为不同;
- Android 设备测试在真实
SenseKeyboardView上执行
DOWN → 180 ms 时重复发布等价投影 → 超过 396 ms,要求方向 picker 仍按时出现; - JVM 设置页测试验证 READY 阶段重复选择不发布新状态,以及
READING_REVISION
阶段重复选择不会取消在途读取; - Android 16 / API 36、1080×2400 的 Xiaomi 15 Ultra 上检查六个出厂建议键位:
设备当前持久化目录中的A/R/C/T/F已绑定且均能完成长按、方向高亮和极光激活;
S + UP → smart_edit槽位此前已被解除,按持久化规则未被覆盖升级擅自补回。
需要恢复该默认操作时,在“设置 → Skills”中选择 smart_edit,将按键设为 S、方向
设为 UP 后保存即可;这一操作只补回目标槽位,不改动其他 Skill、revision 或绑定。
正式发布由 tools/local_release.ps1 -Publish 在同一 release HEAD 上执行完整本地
Python、JVM/Android unit test、Lint、AndroidTest APK assembly、debug/benchmark
构建、M0–M6 benchmark、X-02 source/artifact gate、release APK 元数据与签名验证,
随后上传并从 GitHub Release 下载资产复核。
固定发布签名
本版本继续沿用 Sense Release v1 固定签名,可从 v0.4.5.beta.1、
v0.4.5.beta.2、v0.4.5.beta.3 直接覆盖升级。
- 证书:
sense-release-v1-cert.pem - SHA-256:
76db888ff42b04d52d4d19a573fe8f8df2fa3af0ab36bd6a08c6f70a8aace984 - 算法:RSA-4096 / SHA256withRSA
- 仓库仅保存公开证书和指纹;固定 PKCS12 私钥材料保存在仓库外