当前实现以 Electron + React + TypeScript 为唯一运行架构,不再有 Go/Rust sidecar。当前交付与本轮交互调整范围如下;历史自动化结果见对应验证记录,本轮结果需单独记录,发布门仍需完成真实平台验证:
- 主进程唯一 TimerEngine:默认
30/5/30/5/30/10、开始/暂停/继续/下一轮/重置、专注手动暂停锁、休息继续参与自动化、自动暂停与恢复、睡眠/重启安全恢复。 powerMonitor.getSystemIdleTime()系统级输入采样,输入故障可见且进入手动安全回退。- active/desk 休息策略、设置持久化与当前轮/下一轮生效边界。
- SQLite 事务迁移、完成专注记录、今日/本周/最近 52 周统计。
- 托盘、通知、关闭到托盘、置顶、事件广播、浅色/深色/跟随系统主题。拖动窗口边缘可缩成 160×180 的挂件,高度最多为宽度的 1.5 倍。小窗仍显示轮次、剩余时间、暂停原因、圆形操作按钮和统计入口。
- 桌面挂件的普通置顶、macOS 桌面与全屏跟随、计时器局部自动淡化采用独立开关,新安装默认开启;旧设置保留已有置顶选择。本轮自动化、本机原生全屏与缩放、实际打包应用的 Cmd-Tab 探针已通过;桌面滑动、Split View、多屏及 Windows 仍需人工验收,见本轮验证记录。
- 受限 preload、严格 CSP、Zod 运行时 IPC 校验、Vitest 状态机测试和 Playwright Electron E2E。
- 单实例数据保护、锁屏门禁、检测故障下显式手动计时、字段级设置错误恢复、存储故障备份与用户选择重建、实时统计事件;静止检查点和托盘更新去重。
- 按用户明确需求增加 Phase 2 本地摄像头感知:默认触控,主动选择监控,MediaPipe/BlazeFace 本地推断,主进程按三态信号自动开始/暂停监控专注与活动休息;桌前休息继续使用输入。此范围变更不代表 Phase 1 的所有真机发布门已通过。
npm run lint、npm run typecheck、npm run test、npm run test:store、npm run build和适用的 E2E 全部通过。- macOS 手工验证真实输入、托盘、通知、睡眠/恢复,以及自动休息等待和手动开始。拖到 160×180,再保持宽 160 px 向下拉,核对内容高度止于 240 px。检查交通灯与统计入口的间距、圆形继续按钮,并从留白拖动窗口。
- Windows 手工验证真实 idle、托盘、通知、睡眠/恢复、原生模块重建和安装包。核对系统标题栏以下的内容区可缩到 160×180,按 Alt 后不被菜单挤占;高度上限按内容宽度计算,宽矮窗口仍可操作。验证拖动留白、查看统计、返回计时器和直接继续。
- SQLite 旧数据库升级、完成记录去重和跨日统计通过。
- 三个发布目标分别构建最终安装包并通过安装后检查:macOS ARM64 / Intel x64 的签名、资源与原生模块篡改拒绝、DMG 复制安装,Windows x64 的 NSIS 静默安装;安装后的应用均验证离线本地推断、计时、统计和挂件交互。
本轮为 0.1.0-beta.3 补齐最终安装包的自动化验收,执行结果、OS / 架构、构建和仍待执行的项目集中记录在 beta.3 发布验证。PR CI 和发布工作流均覆盖 macOS ARM64、macOS Intel x64 与 Windows x64,具体矩阵和检查范围见 CI 与合并门槛。
DMG 复制安装或 Windows 静默安装后启动成功,只证明对应产物通过已执行的自动化路径。模拟摄像头的离线真实模型推断不改变下方物理摄像头、操作系统首次授权 / 撤销、真实输入、通知、锁屏 / 睡眠和人工首次打开仍待验收的状态;macOS ad hoc 签名也不等于 Developer ID 或 Apple 公证。
本轮三项规则和取舍见设计记录。下列检查须记录 OS、架构、构建/提交和实际结果,自动化检查与实机结果分开填写:
- 验证新安装三个选项默认开启;真实 SQLite 的旧设置补齐新增字段,保留既有置顶选择和已保存的显式关闭,修改主题等无关设置不重置窗口选项。
- macOS 在普通桌面间左右滑动、进入其他应用原生全屏和 Split View 后验证跟随;关闭与重新开启跟随,重启和关闭重开后均按设置显示。检查 Dock 图标、Cmd-Tab、交通灯、键盘焦点、拖动与缩放;普通置顶独立控制,不使用屏保级层级。
- macOS 切换跟随引起窗口重建时,位置、尺寸、页面和 Main 计时进度保留。监控模式不因计划内重建而回退触控,旧会话停止,新窗口必须等待新样本;专注的手动暂停锁继续有效。外接屏下分别切换各屏的 Spaces,不把单窗口跟随记为多屏复制。
- 两个平台验证离开计时器两秒后背景与辅助信息淡化,数字、状态、暂停原因和操作保持可读可用。移入、键盘操作、菜单、拖动和缩放恢复清晰;设置与统计页保持不透明,浅色/深色主题与最小窗口都可使用。
- Windows 验证普通置顶和淡化开关、原生标题栏、托盘隐藏/重开及安装包;跨桌面选项不可操作,保留不透明原生窗口,核对拖动、缩放和最大化没有回归。
当前实机验收结果见桌面挂件验证。未执行的项目保留“待验收”,不能用 isVisibleOnAllWorkspaces() 或 CI 结果代替跨原生全屏、Dock 和 Cmd-Tab 的实测。
2026-11-05,在 Apple Silicon、macOS 26.4.1(25E253)、Electron 33.4.11 的本地开发构建上,通过系统鼠标事件拖动独立测试窗口的四条边和右下角。收窄至 160 px 或在宽 160 px 时拉高,内容高度均止于 240 px。在 160×180 窗口中实际点击开始、暂停、继续、统计和更多均成功,拖动圆环也能移动窗口。Windows 真机的窗口边框和拖动手感待验收。
本次实现经用户明确授权提前开展,不阻塞既有 Phase 1 真机验收。Renderer 在主动选择监控和 OS permission 后本地处理帧,只发送三态 presence 与主进程签发的检测代次;不做身份识别、医疗判断或强活体反欺骗。摄像头权限、模型、视频和心跳失败均回退触控并可见提示;手动暂停锁和默认输入策略保持有效。
自动化验证与真机验收分别记录,模拟媒体流和模拟电源事件不能替代操作系统权限及物理设备检查。
- 状态机覆盖源切换、监控专注自动开始且不受输入干扰、监控活动休息采用摄像头、桌前休息采用输入、unknown 安全暂停、专注手动暂停锁、休息暂停不锁自动化,以及睡眠/锁屏/重启后等待新样本。
- Renderer 验证默认触控不调用摄像头、右上角模式按钮位置、空格快捷键边界、休息准备期最后 10 秒可见倒数、按时长分配的周期条、初始化取消、模型/视频失败后释放资源,以及迟到异步结果清理。
- Electron E2E 验证严格 preload/IPC、旧代次拒绝、初始化/心跳超时回退和设置事件同步。原生 SQLite 验证监控设置重启保留、检查点没有在场状态、准备期倒数或检测代次;旧的手动暂停休息可恢复自动等待,专注锁保持有效。
- 打包产物应包含本地模型、SIMD/非 SIMD WASM 和许可证;断网时可初始化检测,CSP 不依赖远程脚本或模型。
| 真机项目 | macOS | Windows |
|---|---|---|
| 默认触控无摄像头请求;首次允许/拒绝授权及系统设置撤销 | beta.3 本机允许授权通过;拒绝/撤销待验收 | 待验收 |
| 正常光照下专注在场自动开始、活动休息离席开始、转头/回归;专注手动暂停锁 | beta.3 本机物理摄像头在场自动开始通过;其余待验收 | 待验收 |
| 外接摄像头拔出、设备占用、断网启动、重复切换释放指示灯 | 待验收 | 待验收 |
| 最小化/隐藏/托盘后台检测;睡眠/锁屏释放与恢复新样本;准备倒数重置 | 待验收 | 待验收 |
| 安装包摄像头用途声明、权限提示和实际资源加载 | beta.3 本机 ARM64 打包应用用途/entitlement、授权与物理设备初始化通过;下载隔离另验 | 待验收 |
本表在本次代码开发时不宣称真机通过。执行验收时补充 OS、架构、构建/提交及结果;任一平台未通过时不得把模拟 E2E 记为该平台已通过。
可增加手动站立预设、可访问性审计、Developer ID 签名、Apple 公证、更新和有界诊断;不推断实际姿态或健康结果。任何账号、云同步、日历和 Linux 支持都需单独需求确认。