Improve controller behavior and update project requirements
This commit is contained in:
@@ -72,3 +72,13 @@ MOBILE-RECONNECT/MOBILE-ERRORS 补充:断线清除旧画面、状态、缩
|
||||
- MOBILE-STATUS:顶栏长文字自动向左无限循环(30 dp/秒、每轮间隔1秒),短文字静止;菜单固定,完整语义文字保留。
|
||||
- MOBILE-DISCOVERY/CONNECTION:握手成功后扫描条目显示已连接及断开按钮;再次扫描保留当前连接条目,旧扫描信号不作实时信号。断开、失败和异常清理会话关联;其他条目仍可连接,连接期间禁止重复操作。
|
||||
- MOBILE-PREVIEW:两处设备画面、标题、等待与过期提示按整个卡片居中,刷新按钮固定右侧;标题预留对称空间,放大字体不与按钮重叠。
|
||||
|
||||
## 按影响选测
|
||||
|
||||
MOBILE-TEST-SELECTION:先评估直接及共享依赖影响,再选最低有效层级。纯逻辑用 JVM;普通 UI 用独立模拟器;真实通信、权限/后台厂商差异用定向真机。未改页面不因发布新功能重复测试。root 仅约束登记真机输入,模拟器使用标准 Compose 测试 API。测试授权不等于每轮执行义务。矩阵及证据格式见测试入口。
|
||||
|
||||
## 2026-09-29 内容缓存
|
||||
|
||||
MOBILE-LIBRARY-CACHE:显示内容的全部条目先请求 16×16 预览,再在预览阶段全部完成一次尝试后逐项取得 64×64 完整画面。缓存按持久设备 ID、类型、条目 ID、修订和档位隔离;连接、进入内容页及内容页前台定期检查设备目录修订,未变复用本地目录与图片,变化后先完整读取目录再清理失效缓存。离线不显示旧列表。单张失败显示占位且不阻塞后续项目;旧设备退回现有图库读取方式。当前设备画面不参与此缓存。
|
||||
|
||||
MOBILE-CACHE-CLEAR:软件设置显示内容缓存大小,确认后仅清空内容目录与图片缓存;不清除昵称、设备记忆、当前帧或设备内容。内容页前台才进行图片后台补传,控制操作优先,切页、后台、断线停止队列。
|
||||
|
||||
@@ -59,6 +59,8 @@ ClientHello 字段:`protocol_major:1, protocol_minor:0, public_key, random`。
|
||||
| `wifi.set` | `expected_revision, ssid, security, password_action, password?, ipv4_mode, address?, prefix?, gateway?, dns_servers, activation` | password_action 为 keep/replace/none;none 仅开放网络;activation 为 immediate/next_boot;返回配置修订与可选 task_id。 |
|
||||
| `task.get` | `task_id` | `state:pending/running/succeeded/failed, stage, error?`;只允许查询本协议产生的有界任务,不提供任意系统任务入口。 |
|
||||
| `library.list` | `cursor?, limit` | 默认 20、最大 50;返回库修订、条目和下一游标。条目含 type、id、revision、name、is_demo、playable、thumbnail_revision。翻页库变化返回 CONFLICT。 |
|
||||
| `library.summary` | 空 | 返回 `library_revision,item_count`;与 `library.list` 使用同一目录视图和修订,供新版 App 判断缓存是否可复用。 |
|
||||
| `library.preview` | `type,id,revision` | 返回 `mime:image/png, data_base64`,16×16 静态预览;动画使用首帧。 |
|
||||
| `library.thumbnail` | `type,id,revision` | 返回 `mime:image/png, data_base64`,64×64 静态缩略图;动画使用首帧。 |
|
||||
| `content.play` | `type,id,revision` | 使用既有内容解析与显示服务;过期拒绝,不能顺便修改默认内容。 |
|
||||
| `content.default.get` | 空 | 当前默认内容元数据。 |
|
||||
@@ -74,6 +76,8 @@ settings 与 wifi 的 revision 为设备生成的不透明字符串,相关状
|
||||
|
||||
BLE 只接收白名单方法。旧客户端遇新能力忽略;旧设备缺某能力时客户端明确提示。不兼容主版本停止控制并返回列表。蓝牙关闭、主服务重启、OTA 维护或适配器消失时失效会话不可复用;恢复后重新握手,不恢复旧密钥。
|
||||
|
||||
协议 1.1 增加 `library_progressive` capability;仅声明该能力的设备可调用 `library.summary` 和 `library.preview`。协议 1.0 的 `library.list`、`library.thumbnail` 和当前帧接口保持原义;旧 App 忽略新能力,新 App 遇旧设备读取完整目录并沿用 64×64 图。内容缓存不参与设备设置或控制写入。
|
||||
|
||||
## 6. 契约测试要求
|
||||
|
||||
共享固定的测试私钥、hello 原始字节、HKDF 输出、双向密文与分片向量;测试密钥明确仅为公开夹具,不能来自设备。Python 与 Kotlin 双向互验,覆盖 MTU 23、大 MTU、边界分片、非 ASCII 昵称、错误公钥、篡改、重放、断线、库翻页冲突、任务失败和主版本拒绝。接口最终字段模型及黄金向量必须随实现提交,未经测试不能写成协议验收通过。
|
||||
|
||||
@@ -58,3 +58,11 @@ Android 断线清理与旧扫描回调隔离已通过模拟及 Activity 真机
|
||||
## 2026-09-27 Android 0.2.1 界面优化
|
||||
|
||||
MOBILE-STATUS/DISCOVERY/PREVIEW:顶栏自动循环、扫描条目断开与连接保留、设备画面居中。仅修改手机界面及会话显示状态;协议1.0、设备接口、广播仲裁和驱动不变,不要求设备升级。不推进设备发布版本或 FEATURE_UPDATED_AT。
|
||||
|
||||
## 2026-09-29 Android 测试流程
|
||||
|
||||
新增按影响选测、场景运行器和独立模拟器 uiTest。仅测试基础设施和协作规则变化;产品 App、设备接口、协议、驱动及部署契约不变,不升级版本、不发布 APK,不改设备功能时间。旧无场景默认真机命令改为显式 --scenario;迁移命令见测试入口。
|
||||
|
||||
## 2026-09-29 内容图库缓存
|
||||
|
||||
DEVICE-MOBILE-LIBRARY-CACHE/MOBILE-LIBRARY-CACHE:设备协议 1.1 在主版本 1 下新增 `library_progressive`、`library.summary` 和 16×16 `library.preview`,保留既有 64×64 `library.thumbnail` 与旧目录契约。Android 0.2.2 使用分档缓存和渐进加载,旧设备回退现有方式;旧 App 可继续连接新设备。设备与 App 本轮均获用户明确迭代和部署授权。验证证据待本轮测试归档,不涉及驱动或当前帧输出。
|
||||
|
||||
Reference in New Issue
Block a user