Files
openless/docs/2.0-desktop-acceptance.md
T
Chris233 fc38edd1a3 refactor: consolidate Core 2.0 and restore cross-platform behavior (#1019)
* refactor: split Linux egui host from shared backend

* fix: keep CI contracts portable across runners

* fix(ci): preserve CRLF while removing qwen dependency

* fix(ci): regenerate target lockfile and install ripgrep

* fix(ci): gate desktop-only selection voice module

* ci: limit native build parallelism on cross-platform runners

* fix(host): expose blocking task seam to coordinator

* fix(settings): avoid macOS default hotkey collision

* docs: record cross-platform CI evidence

* ci: expose Linux validation package artifact

* ci: grant reusable Linux package permissions

* refactor: remove legacy coordinator dictation facade

* ci: skip unsupported MSI prerelease builds

* ci: install minisign only for signed Linux releases

* fix: keep test-only coordinator session helper

* refactor: move style preview diagnostics into core

* fix: import shared preferences type from core

* refactor: centralize enabled vocabulary projection

* ci: install ripgrep for Linux package gates

* test: make source contract line-ending agnostic

* fix: keep Linux desktop entry standards compliant

* docs: expose core style diagnostics contract

* ci: resolve Linux package version in app directory

* refactor: centralize ASR vocabulary priority

* fix: use shared vocabulary note constant

* refactor: keep vocabulary priority inside core

* test: retain starting-stop queue coverage

* ci: scope Linux updater URL to the current repository

* docs: close implementation and artifact evidence

* docs: record final CI artifact evidence

* fix(android): align updater plugin versions

* fix(android): pin updater crate exactly

* refactor(core): remove unused type anchor

* docs: record final artifact runs

* fix(remote-input): preserve beta status fields

* fix(tauri): finish beta host merge

* fix(asr): pass scoped operation to native qwen adapter

* fix(macos): bundle mlx metallib as a resource

* test(remote-input): update status wire contract

* feat: share Less Computer voice flow with Linux

* refactor(core): centralize host-independent runtime policy

* refactor(core): complete 2.0 backend consolidation

* fix(ci): prepare Sherpa after cache restore

* fix(macos): route native model paths through Core store

* fix(macos): use ModelStore catalog API

* fix(ci): serialize macOS native test build

* test(ci): preserve macOS cargo diagnostics

* fix(macos): release input source lock before await

* test(core): replace legacy hotkey injection gate

* test(core): move Codex sandbox contract into Core

* fix(core): close final runtime policy gaps

* fix(windows): terminate coding agent process trees

* fix(core): complete local model migration

* fix(credentials): align Core LLM model account

* fix(core): restore 1.x parity across shared backend

* fix(android): complete shared backend stubs

* fix: close cross-platform migration review gaps

* fix: complete migration lifecycles and platform compatibility

* docs: define desktop 2.0 acceptance and Linux handoff

* fix: close desktop parity and session lifecycle gaps

* fix: finish voice lifecycle and desktop feedback parity

* fix: close desktop cancellation and feedback race gaps

* fix: honor proxy settings and reject stale session effects

* fix: dispatch native cleanup on host runtimes and order events

* fix: keep optional recording effects best effort

* fix: close desktop agent model and QA lifecycle gaps

* fix: preserve desktop raw voice and QA turn ownership

* fix: finalize desktop dictation and QA feedback
2026-09-06 18:39:46 +08:00

7.6 KiB

Windows / macOS 2.0 功能保留验收

范围依据:当前2.0需求。本清单定义必须验收什么,不预填“已通过”。 基线:各平台实际交付的 Tauri 1.x 能力,以及 PR #1019 已明确承诺的 2.0 能力。

1. 逐项保留的用户能力

每一行均检查入口、成功路径、失败/取消、重启后状态和旧数据;不能只检查接口存在。

ID 功能组 必须保留并验收
D01 启动与生命周期 首次配置、权限引导、正常/最小化启动、单实例、第二次启动动作、原有CLI入口、退出释放资源
D02 主听写 Hold/Toggle/Auto、自定义组合键、停止/Esc、组合键仲裁、去抖/收尾冷却、无声停止、设备故障与重试
D03 音频与反馈 默认/指定麦克风、设备刷新/切换、音量预览互斥、录音静音及恢复、提示音、胶囊状态和终态可见性
D04 云ASR/LLM/Omni 各平台1.x已支持provider的认证、模型、批量/实时、润色/翻译、代理、超时/取消和错误反馈;实验总开关有效
D05 渠道与凭据 创建/改名/删除/启停/排序/活动渠道、端点/模型/自定义头等设置、验证/列模型、无鉴权自建端点、OAuth既有流程
D06 本地模型 原平台目录/镜像/下载/续传/取消/删除、准备/加载/保活/释放、原子激活、模型切换、真实推理与失败补偿
D07 风格/语言 原文/轻度/结构化/正式等原有模式、工作语言、目标语言、简繁、上下文窗口和前台应用归因
D08 全局快捷键 听写、翻译、QA、选区、切换风格、打开主窗、指定风格包及各平台实际提供的Agent入口;冲突、重绑与重启恢复
D09 插入 普通/流式、Unicode/换行、原目标恢复、final reconciliation、剪贴板恢复/降级;Inserted/PasteSent/CopiedFallback/OutcomeUnknown不混淆
D10 QA 文本/语音、多轮、选区/上下文、实时输出、停止/取消/关闭/重开、历史偏好;慢启动/转写期间仍可取消
D11 选区操作 原有润色、预览、确认/取消/撤回、stale保护;原平台及本PR承诺的Selection Voice意图与编辑流程
D12 Less Computer 已承诺的文本/语音入口、多轮、增量/工具/审批、拒绝/取消、CLI检测/配置/工作目录、进程树清理
D13 历史/录音/统计 列表与原有操作、原始/最终文本、真实provider/model/耗时、重新润色/转写、录音播放/导出、独立保留上限、统计热图
D14 词典与纠错 增删/启停、预设、规则顺序、词条命中、建议接受/拒绝;平台已有编辑观察及隐私开关
D15 风格包 创建/编辑/启用/激活/重置/删除、提示词诊断、ZIP导入导出、快捷键和活动状态联动
D16 风格市场 原有列表/详情/安装/下载/上传、点赞/收藏/作品管理、GitHub登录/取消/退出及错误恢复
D17 手机输入 服务/端口/PIN、地址和二维码、TLS/H5、默认模式、手机PCM、电脑落字开关、停止/取消/断连、连接隔离
D18 设置和维护 原有主题/字号/语言、胶囊、托盘、启动选项、网络诊断/日志、更新渠道及检查/下载/安装/重启
D19 1.x数据 preferences、渠道/凭据、风格包、词典/规则、历史/录音、模型及自定义目录;幂等、失败保留来源、不覆盖新配置

功能是否属于1.x必须核对实际入口和生产路径;仅有预留配置字段或旧路线图不算已交付。

2. Windows 原生验收

  • 左右修饰键、组合键、全局监听及原有应用内回退;停止/重绑时注销旧监听。
  • TSF DLL安装、Profile/category注册、键盘列表选项、管道/会话生命周期、原窗口/控件指纹和输入法恢复。
  • TSF/SendInput/Paste、非TSF降级开关、CRLF/Unicode;原生timeout/cancel和派发后断连不得触发重复落字。
  • 普通编辑器、浏览器、聊天框、终端,以及无权限/目标失效场景;不能把假成功写入历史。
  • Foundry/Sherpa按当前实际支持模型与运行时验证,包含取消、异常、保活及旧释放任务不得卸载新模型。
  • 托盘/任务栏/窗口、自启与系统麦克风;真实CLI满stdin、取消、孤孙和自然完成行为。
  • 新装、1.x升级、更新/卸载/回滚;只把实际生成并验证的安装包类型列为通过。跳过MSI不能算MSI成功。

3. macOS 原生验收

  • 麦克风/Accessibility拒绝与重新授权,Secure Input、密码等敏感场景边界。
  • 关闭光标上下文时零文档读取;前台应用元数据仍用于既有归因/换行规则。
  • AX选区/上下文、TIS输入源准备/恢复、普通与流式落字,Auto/ShiftReturn/LineFeed/Return。
  • AppKit主线程、NSPanel、胶囊、菜单栏/Dock、多显示器、窗口重开和焦点行为。
  • Apple Speech、Qwen/MLX/C、Whisper按原有OS/架构支持矩阵交付;不把Apple Silicon能力当作Intel能力。
  • Finder启动时的PATH、外部CLI检测与取消、Keychain及自启。
  • 声明支持的arm64/x86_64构建、安装/升级/更新,正式分发的签名、公证与Gatekeeper。

当前2.0 macOS普通听写复用了选区路径的app/PID级目标恢复;1.x普通听写未调用该恢复路径,不能将它描述为既有基线能力。精确恢复同应用内原控件/光标仍未得到证明。

4. 证据与阻塞规则

每个D编号按Windows/macOS分别记录:

字段 记录内容
基线与范围 1.x版本/提交、实际入口、OS/架构;原平台不支持的明确写“不适用”
2.0生产路径 UI/热键/CLI → Tauri Adapter → Core → 原生效果/事件,指出删除的旧业务副本
自动证据 行为回归、类型/编译/链接、目标runner与精确head;不把mock结果称作设备成功
设备/安装证据 安装包、OS/目标应用、步骤、期望/实际、日志或截图;涉及数据须用测试资料
结论 已实现且验证 / 已实现待设备验收 / 未实现 / 原平台不适用
  • 原平台已有功能出现未实现、错误结果、数据丢失或取消失效:本批桌面2.0阻塞项。
  • 平台声明支持但只有构建/fixture证据:保留待验收,不直接标“完整支持”。
  • Linux应用/UI/原生验收未完成:移交egui团队,不单独阻塞本批桌面2.0;共享Core缺陷仍阻塞。
  • 正式GitHub评审、签名和发布权限按项目流程处理;内部子代理通过不替代这些门禁。

5. 2026-09-06 发布收口决定

按维护者决定,优先完成2.0交付;本次提交收口后不再启动新的全面审查轮次。影响输入目标、结果正确性、数据和主要流程的已确认问题保留修复;低影响显示边界暂缓,不将其扩大为新的发布阻塞。

  • QA语音启动极快失败、首条Recording尚未被事件桥消费时,胶囊可能没有错误提示;QA面板仍接收Core错误事件。
  • 极短跨会话切换中,尚未呈现首帧的QA与旧Selection Voice自动隐藏定时器,仍可能出现胶囊提示被忽略或提前隐藏。已呈现QA的旧事件/定时器覆盖后继原生提示已补epoch检查。
  • 上述为源码时序分析的显示风险,不宣称已在真实设备稳定复现,也不等于数据、回答或录音结果错误。完整显示origin接线及旧Selection Voice定时器统一留待后续体验修复。

现有设备、安装包、签名、公证和最终head CI证据仍分别记录;本次收口不把未执行项改写为通过。详细修复及验证见第九轮记录。