跳转至

手机操作与 OneGUI 收口验收 · 2026-10-20

历史记录 / Historical record:本文保留当时的计划、研究或验收证据,不代表 0.11 当前能力全集。现行说明见 文档入口;英文入口见 English overview。

本轮使用 Chrome 移动视口(390×844、320×740、844×390),通过 CDP Input.dispatchTouchEvent 和 Playwright 真实触摸/键盘输入操作。未向目标元素派发伪造 PointerEvent,未使用 force click 绕过遮挡;记录的触摸事件均 isTrusted=true。截图已逐张抽查阅读态、放大拖动、边角调整、横向平移和横屏。

这不是实体 Android 设备验收。 当前 adb devices -l 没有设备;Android WebView、系统键盘、原生文件选择器及设备 NFC 不在本报告覆盖范围内。

本次查出并修正的问题

  1. 保存倍率被覆盖:自由摆放开关每次写 500%,重载又把低于 450% 的已保存值强制改回 500%。现在只在缺少保存记录时初始化;明确保存的 100%、300% 均保留,手机竖屏与横屏/桌面视图独立。极简/实用模式中隐藏的白板也不会偷偷初始化完整模式的倍率。
  2. 触摸拖动半途被浏览器取消:只给外层条目设置 touch-action:none,内层可滚组件仍能接管纵向触摸。原生触摸 48×36 屏幕像素,原来只写入约 10×7 世界坐标;修复后按当前倍率完整写入约 30×22。自由画布的内层让位给拖动,阅读顺序保留原生滚动。
  3. 选中时误按浮条:选中插入按钮,触摸松开时可能点中刚出现在手指下的“固定”。现在吞掉该次选中/拖动派生的点击,下一次独立触摸及键盘激活仍正常。自由摆放浮条去掉仅阅读顺序需要的上下移/增减高度。
  4. 边角难以命中与倍率偏移:边角扩大到共享大控件的触摸区域,保持屏幕尺寸与角点对齐;390 和 320 下实际命中后拖动宽高,重载继续保持。
  5. 平移后退出入口消失:阅读顺序/自由摆放开关移到固定工具列,画布横移后仍可操作;不与 OneShot、OH 胶囊重叠。旧白板提示语同步移到顶栏下方,避免被 OneShot 盖住。

横向滚动本身属于 .explorer-panel,不是 document。原生空白处左右滑动已验证可以到达屏幕外内容;保留普通页面的 overflow-x:clip,没有为白板错误地放开全站横向溢出。

OneGUI 收口

  • 自定义卡面颜色回归共享媒体语义令牌;Reference 仍是唯一色料源。
  • 图片取景使用新增可复用 FocalImage(受控焦点/缩放,已登记组件目录和画廊)。
  • 卡面缩放使用 OneGUI Slider,保留键盘调整。
  • OH 限额提示、手机文字排布与设置样式从旧应用 CSS 迁入共享 recipes,尺寸改为结构令牌。
  • 没有修改、提高或豁免 OneGUI baseline。旧样式表从 9888 行降到 9742 行(既有上限 9753);库内字面颜色/尺寸违规为 0。

检查结果

  • node tools/phone-board-browser-test.mjs:55 项通过,详情见 report.json。
  • pnpm guard:onegui:9 类专项规则通过;scope 继承、主题切换、action/accent 隔离和 46 组语义对比度通过。
  • pnpm guard:完整常规守卫通过;手机策略守卫随样式迁移改读共享 recipe,原有排布/429检查继续保留,并禁止样式回流旧表。
  • pnpm --filter @onethu/desktop typecheck:通过。
  • board-view-test.mjs、board-drag-test.mjs:通过,包含显式保存 100% 与尚未初始化视图区分。
  • 最终整合后的名片浏览器回归共 23 项通过并自然退出,包含卡面/取色/缩放/上传、通讯录与组织流程;组织资源使用隔离模拟服务,不代表真实双账号联调。

截图

  • 320-reading.png、390-reading.png:默认阅读顺序。
  • 320-panned.png、390-panned.png:500% 自由画布的原生横向平移,固定模式按钮仍可见。
  • 320-resized.png、390-resized.png:真实边角触摸调整后的卡片与操作区。
  • 320-landscape.png、390-landscape.png:横屏桌面布局。
  • 320-scrolled.png、390-scrolled.png:阅读顺序的原生纵向滑动。