* 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
5.9 KiB
5.9 KiB
OpenLess 2.0:当前需求与交付范围
更新:2026-09-06。本文是本轮范围与验收的权威入口,优先于此前迁移计划、复核记录中的旧范围。
初始盘点基线为 2b3155722758a2b027f94e7032accf468d03106c;后续实现/合同修复以本文件所在提交及桌面复审记录为准。
1. 目标
- Windows、macOS 是本批 2.0 完整支持的平台。 各自在 Tauri 1.x 中实际已有的用户功能,必须在 2.0 保留并完整实现。
- Linux 本批交付可接入的 Core。 egui 团队接管 Linux Host Adapter 的剩余实现、生产接线、egui UI 与 Linux 产品验收。
- Linux 交接采用独立目录中的小文档;逐项说明现成能力、真实缺口、接口、实施责任与验收条件。
2. Windows/macOS 的“完整”
- 比较的是用户可执行的完整操作:入口 → Core 业务 → 原生效果 → 结果/历史/错误反馈。只有类型、接口、按钮或 fixture 不算实现。
- 以迁移前各平台实际交付的 1.x 功能为基线。现有源码锚点是
v1.3.18-tauri和 PR 的 1.x basefc9824ee;还须覆盖其中较新的 Beta 能力及本 PR 已承诺的功能。 - 不得因修改架构而丢失功能、设置效果、旧数据、快捷键、取消、异常恢复或平台行为。
- Windows 的 TSF/Foundry/Sherpa、macOS 的 AX/TIS/Apple Speech/MLX 等按各自原有 OS/架构支持范围验收,不要求移植另一平台的专有机制。
- Windows Less Computer 等本 PR 已明确增加的交付仍保留,不借重新定义 1.x 基线撤销。
- 1.x 的预留字段或未实现设计不自动成为“已交付功能”;也不能把真实存在的实现误标为从未支持。每项须有源码/产品入口证据。
- 原生能力必须以真实结果表达,不能用
Unsupported、no-op、伪成功或仅有单元测试替代该平台原先可用的功能。
详细功能与平台验收见桌面验收清单。该清单是需求,不是“全部已通过”的声明。
3. 责任划分
| 交付 | 本轮 Core/Tauri 工作 | egui 团队接手 |
|---|---|---|
| 共享业务 | Core 领域实现、状态机、配置/凭据/模型迁移、取消/错误/结果规则 | 调用 Core;发现业务接口缺项时回报 Core 负责人 |
| Windows/macOS | Tauri/React 接线、原生 Adapter、完整 1.x 功能保留、自动与设备验收 | 不属于 Linux 接入任务 |
| Linux 接入面 | 可用的公开接口、DTO/事件、Adapter 合同、fixture、示例和缺口文档 | Linux 原生 Adapter 剩余实现、全局热键、窗口/托盘/权限/更新等宿主效果 |
| Linux UI | 提供已有代码和行为合同作起点 | egui/eframe 页面、交互、事件消费、错误展示、完整产品流程 |
| Linux 发布 | 保留现有验证脚本与已有证据供复用 | Linux 打包、真实桌面/设备、安装升级回滚与正式发布验收 |
这里的“egui 团队”包含本次明确移交的 Linux Host 工作。egui 框架本身不会自动完成系统全局热键、音频、Secret Service 或安装器。
4. Core 对 Linux 的交付门
“预留 Core”要求能接入、能验证,不是未来再实现的空接口:
- Linux 可依赖
openless-core,Core 不依赖 Tauri/egui 或要求调用 Tauri 私有模块。 - 业务规则有真实实现;平台动作由明确的 Host Interface 承接。缺 Linux 原生效果可以标注未接入,不能把缺少 Core 业务实现推给 UI。
- 提供
2.0.0启动合同、DTO、事件顺序/重放、session/取消、错误和能力语义。 - 提供可运行的无设备 fixture/headless 示例及对应 contract tests。
- Linux 现有 Adapter、UI 和包构建作为可复用起点保留;每项分别标明“已有实现”“接线缺口”“原生验证待补”。
- 确定缺口在交接目录有责任、实现位置、Core 调用点、依赖与验收要求。
5. 本批 2.0 完成条件
| 范围 | 完成条件 |
|---|---|
| Windows | 各项原有能力完成真实生产接线;无未关闭的确定功能/迁移缺陷;通过必要自动测试、安装与目标应用/设备验收 |
| macOS | 同上,并覆盖所声明支持的 Intel/Apple Silicon 与权限、输入源、原生模型、签名分发要求 |
| 共享 Core | 跨平台依赖/合同/迁移/会话与错误语义通过验证,可供 Linux 团队直接接入 |
| Linux 本轮移交 | 本文第4节及拆分交接资料完整;无需等待 Linux 应用所有功能、UI、真实设备和安装升级完成 |
Linux 应用侧的未完成项不再阻塞本批 Windows/macOS 2.0 交付。 但缺陷若位于共享 Core、会破坏 Windows/macOS,或使承诺的 Linux Core 接口不可调用,仍是本轮问题。
验收报告必须区分:源码已实现、自动测试通过、目标平台编译通过、安装运行通过、设备交互通过。CI 和内部审查不替代正式发布所需的真实行为证据。
6. 现有成果和其它平台
- 已完成的 PR 修复、Linux 代码、构建和测试不回退、不删除;本次调整的是责任与完成条件。
- Android 不纳入本次新增的“首批完整支持”目标;若保留现有构建,其已有合同不能因共享 Core 修改而无故破坏。
- 本次是需求与交接范围更新;当前代码版本快照仍为
2.0.0-Beta.1。版本号、标签与正式发布按项目发布流程执行。 - 此前复核记录保留历史问题和证据;其中旧 Linux 发布阻塞条件以本文为准。
7. 后续报告口径
- 分别报告“Windows 2.0 完成度”“macOS 2.0 完成度”“Core 移交完成度”“Linux 团队待办”。
- Linux 宿主未接线应写作“Core 已有,Linux Host/UI 待实现”,不要写作“Core 缺失”,也不要写作“Linux 功能已完成”。
- 若接口本身尚不足以承载原有业务,列为 Core 缺口并由本轮团队修复。