feat(ui): Core 2.0 入口、设置与布局整理,Linux 引导与视觉改进
- 主页前置下一步与真实服务状态,服务卡直达对应设置;概览与热力图排布调整 - 设置按任务分类并支持搜索、焦点返回与 Escape 语义;旧 section ID 保持稳定 - AI 分区拆分语言模型/语音识别/本地模型/连接;渠道列表与表单重构,设置实底 - 本地模型管理与下载目录重排,补空态、主操作与窄屏布局 - Core 生成 provider descriptor 公开目录供浏览器预览懒加载,原生 IPC 合同不变 - Linux egui 按开始/听写/AI 服务/模型/工具/手机输入/历史/设置组织页面并加环境引导 - 五语言文案与文档(体验梳理、架构、计划收口)同步
This commit is contained in:
1 parent
fc38edd1a3
commit
30e580fc37
44 files changed
+3955
-1845
No files matched your search
@@ -0,0 +1,85 @@
|
||||
# Core 2.0 体验梳理与页面改进
|
||||
|
||||
状态:draft;阶段:implementation-backed;更新:2026-09-07。
|
||||
|
||||
## 基线与结论
|
||||
|
||||
实时抓取 `Open-Less/openless` 后确认,#1019 将 Core 2.0 合并到默认主线 `beta`,提交 `fc38edd1a3da3a4f2fa56f433be84278c3456ed1`。稳定 `main` 是 1.3.18 的 `08d70601`。本次按用户授权删除应用仓库旧的未提交修改,用前者替换工作区,再建立 `feat/core-2-ux-linux`。
|
||||
|
||||
项目名为 OpenLess,迁移名为 **Core 2.0**;应用显示版本 `2.0.0-Beta.1` 与后端公开合同 `2.0.0` 是不同概念。范围仍以 [2.0 需求](2.0-requirements.md)为准。
|
||||
|
||||
2.0 的重要收益是业务状态、渠道、迁移与会话取消进入共享 Core。主要体验问题是新架构已就位,界面仍让用户自己推断操作顺序:主页以统计为主,设置混放大量任务,Linux 原有领域界面顺序堆叠。本次优先整理现有功能的入口与显示,不增加另一套业务规则。
|
||||
|
||||
## 迁移领域与页面影响
|
||||
|
||||
本次按 #1019 的变更清单、公开合同、领域出口、平台交接与实际页面梳理;下表是迁移面索引和体验判断,不是逐行安全审计或全部设备验收。
|
||||
|
||||
| 领域 / 桌面验收项 | 2.0 相关实现 | 体验判断与本次处理 |
|
||||
| --- | --- | --- |
|
||||
| 启动、生命周期 D01 | `App.tsx`、IPC `shared.ts`、Core `api.rs` | 保留所有窗口的合同检查;补可读启动状态、重查按钮与折叠错误详情 |
|
||||
| 听写、音频、风格/语言 D02/D03/D07 | Core `dictation_engine.rs`、`audio.rs`、`silence_auto_stop.rs`、`prompt_compose.rs` | 主页解释下一步;录音、外观语言拆分类;保留现有首帧、热键和停止语义 |
|
||||
| 云服务、渠道与凭据 D04/D05 | Core `provider_rules.rs`、`provider_service.rs`、`credentials.rs`;`ChannelList` | 主页按有效 traditional/Omni 状态展示服务,直接进入 AI 设置;渠道规则继续用 descriptor |
|
||||
| 本地模型 D06 | Core `model_store.rs`、`local_asr_service.rs`;React LocalAsr / Linux models | 仍放 AI 服务范围,保留原子激活与下载取消;Linux 管理深度缺口留在 L08 |
|
||||
| 快捷键与插入 D08/D09 | Core `hotkey_interpreter.rs`、`streaming_insert.rs`;各 Host 原生 Adapter | 单独的快捷键与选区分类;权限诊断可直达;不更改原生目标和回退策略 |
|
||||
| QA、选区、Agent D10–D12 | Core `qa_service.rs`、`selection*_service.rs`、`less_computer.rs` | 页头解释划词追问用途;Linux 分页仍保留全局待办、审批和取消 |
|
||||
| 历史、词典与纠错 D13/D14 | Core `history.rs`、`activity.rs`、`vocabulary.rs`、`correction.rs` | 统计置于主页次级;历史在窄窗口使用列表/详情;词汇页面沿用列表与编辑布局 |
|
||||
| 风格包与市场 D15/D16 | Core `style_pack_store.rs`、`style_packs.rs`、`marketplace.rs` | 保留主导航的风格分组;共同页头操作区允许换行,降低多语言窄窗拥挤 |
|
||||
| 手机输入 D17 | Core `remote_input_service.rs`、各 Host TLS/H5 | React 保留录音与输入内入口;Linux 独立手机页、连接状态与陈旧地址处理 |
|
||||
| 设置与维护 D18 | Core `settings.rs`、`preferences.rs`、React settings / Linux settings | 分类、搜索、自动保存提示、直接可见说明、焦点与滚动恢复 |
|
||||
| 旧数据 D19 | Core credentials/model/preferences 等迁移;Host vault/data roots | 本次不改变迁移;真实升级与回滚继续按桌面/Linux 清单验收 |
|
||||
| 合同与其他平台 | `backend-2.0.json`、事件 reducer、JNI 合同、构建入口 | 保留 Core/Host 边界;Android 不展示空的桌面快捷键分类;不改发布工作流 |
|
||||
|
||||
## 已落实的界面设计
|
||||
|
||||
- **主页**:下一步与状态刷新前置;未读取/读取失败/未配置分别处理;本地 ASR、云 ASR 和 Omni 依据已有真实状态呈现;服务卡有配置/管理入口。活动热力图置于近期结果之后,底部卡片自然延展而不被短窗口压扁。
|
||||
- **设置**:录音与输入、快捷键与选区、AI 服务与模型、外观与语言、权限与数据、实验与扩展、关于与更新。稳定的旧 section ID 保留;分类搜索支持当前语言的用途和关键词,不搜索或暴露凭据值。
|
||||
- **AI 分区**:语言模型、语音识别、本地模型、连接与扩展各自呈现,页签随滚动保留;Omni 模式使用对应入口,避免传统模型页变空白。设置实底,不透出背后的页面文字。
|
||||
- **操作细节**:搜索不卸载当前分类草稿;选分类回到页首;Escape 先清空查询、再关闭;打开时移动焦点、关闭时返回入口;已有下拉和快捷键录制优先处理自己的按键。
|
||||
- **页面排布**:设置关键解释直接可读;共享页头不再被内容压缩,操作按钮可换行;历史窗口小于1000像素时用列表/详情切换,缩窗保留正在查看的重润色结果;翻译和划词追问补上已有用途说明。
|
||||
- **入口修复**:空本地模型目录在布局阶段反复写入相同选择值,浏览器可复现最大更新深度错误。增加变化判断后,同一服务入口恢复正常。下拉选项补可访问关联,快捷键小菜单优先消费 Escape。
|
||||
- **渠道与表单**:列表改用统一分隔行,显示名称、模型、当前使用/停用、验证结果与时间;添加放在分区头部,验证/启停/编辑操作有标签。表单按服务连接、模型设置、连接验证组织,名称作为可选信息,删除仍需确认;顶部关闭、Tab循环、子菜单Escape与焦点返回已补齐。
|
||||
- **模型与下载**:管理页减少嵌套卡片,已下载/下载中模型与所选详情各有清楚位置;空态提供下载与重新读取。下载目录有模型大小、引擎、状态、仓库和简介;仅多引擎时显示筛选,窄屏按目录/详情切换,底部操作独立滚动。保留Windows原引擎操作与取消/激活合同。
|
||||
- **Linux**:实际界面行为统一记录在 [04 页面与领域操作](linux-egui-handoff/04-ui-domains.md),剩余事项统一记录在 [02 缺口登记](linux-egui-handoff/02-gap-register.md)。
|
||||
|
||||
## 下一轮建议与优先级
|
||||
|
||||
| 优先级 | 建议 | 依据与验收 |
|
||||
| --- | --- | --- |
|
||||
| P1 | 将单项配置检查连接成首次听写向导 | 渠道列表现已区分当前使用与上次验证;下一步串联麦克风、服务和目标输入检查,让新用户完成一条真实听写 |
|
||||
| P1 | 优先跑首装与升级后的第一条听写闭环 | 2.0 改动大量 Host/Core 边界。分别验证权限拒绝、设备断开、快捷键冲突、取消与最终落字,保留清楚的恢复入口 |
|
||||
| P1 | Linux 先完成输入环境和后台工作可达,再补领域功能 | L01–L03 涉及热键、上下文、录音,直接影响后续历史/纠错。真机覆盖 X11/Wayland 和常用目标应用;不以页面数替代功能闭环 |
|
||||
| P2 | 将主快捷键的编辑统一到一个明确目的地 | 当前录音页和快捷键页都有入口,属于既有行为;下一轮可保留录音页摘要并跳到快捷键编辑,需同步首次引导与迁移提示 |
|
||||
| P2 | 本地/云选择围绕用户需求表达 | 用离线、速度、语言和设备需求组织模型选择;模型实际可用、下载中、加载中、失败分别反馈,不默认“已下载”等于可识别 |
|
||||
| P2 | Linux 跟进模型、历史、词汇/风格/市场完整操作 | 具体范围已在 L04–L09;已有 Core API 可复用,优先交付有完整成功/失败/取消路径的一个领域 |
|
||||
| P2 | 页面能力来自 Host,并给不支持项明确原因 | Linux 能力快照中的 overlay/AppImage flag 不代表 UI/更新器已接好;后续能力合同可携带不可用原因,避免两端界面各自猜测 |
|
||||
| P3 | 按领域拆解持续增长的门面和原生 UI 文件 | `Core api.rs` 与 Linux `main.rs` 较大,增加定位和回归成本;在领域功能实际扩展时拆分,避免无业务目的的全面重写 |
|
||||
|
||||
## 浏览器预览目录
|
||||
|
||||
普通浏览器此前的 `listProviderDescriptors` 返回空数组,2.0 渠道编辑只能停留在加载态。现在浏览器分支懒加载 Core 生成的公开目录;原生分支仍执行同一个受启动合同保护的 IPC。该文件只有公开服务元数据,没有用户凭据或认证状态,Core 继续是规则的唯一来源。
|
||||
|
||||
生成文件:`openless-all/app/src/lib/ipc/provider-descriptors.generated.json`(generated,不手工维护)。在应用目录执行以下命令重新生成:
|
||||
|
||||
```sh
|
||||
cargo run --locked -p openless-core --example export_provider_descriptors
|
||||
```
|
||||
|
||||
生成器只调用 `openless_core::provider_rules::provider_descriptors`,没有启动应用、打开密钥环或请求外部服务。对应浏览器入口测试覆盖 ASR、LLM、Omni 目录可加载及协议字段完整性。
|
||||
|
||||
## 验证结果(2026-09-07 收口)
|
||||
|
||||
| 验证 | 本次结果与范围 |
|
||||
| --- | --- |
|
||||
| `npm test` | 构建与72个前端/合同测试模块通过,包含实际Core快捷键回归;最后运行退出码0 |
|
||||
| 既有渠道/提供商/本地模型/轮询/布局合同 | 通过;渠道重排后恢复保守布局的纵向操作区,没有通过改测试掩盖回归 |
|
||||
| 五语言 | 导航与搜索路径、服务分区、渠道和本地模型文案验证通过;中英切换经浏览器检查 |
|
||||
| Core目录导出 | 直接编译运行生成器通过;生成文件供预览按需加载;浏览器目录测试通过 |
|
||||
| 浏览器桌面 | 主页直达、分类搜索与空结果、服务页签、完整LLM与ASR表单、字段排布、菜单Escape、Tab循环与返回焦点通过 |
|
||||
| 浏览器窄屏 | 390×844下完整LLM表单和模型目录/详情;选择1.7B、返回目录保留选择、关闭返回下载入口通过。900×620历史无横向溢出;1280缩至990时重润色结果保留 |
|
||||
| Linux Host | 50个单元测试与4个Host合同测试通过;本次实际运行在macOS |
|
||||
| egui界面 | 临时macOS验证副本9项通过;追加Omni有效模式2项定向测试覆盖16种配置组合通过,先复现失败再修复 |
|
||||
| 差异与格式 | 最终差异空白检查通过;新增Core导出示例和Linux改动的定向格式检查通过 |
|
||||
|
||||
Linux目标交叉检查缺少对应`core/std`,Docker服务未运行,因此没有Linux原生编译通过证据。真机输入、音频、密钥环、窗口、真实模型下载/取消/推理与安装升级按[Linux验收](linux-egui-handoff/07-acceptance.md)及[桌面验收](2.0-desktop-acceptance.md)继续完成。浏览器使用预览数据,UI通过不代表真实服务、设备或分发验收通过。
|
||||
|
||||
本次确定的页面回归(历史缩窗状态、空目录布局更新、菜单与弹窗焦点、Omni状态)已修复;没有留下已知未处理的本轮问题。完整原生验收属于上述后续清单。代码保留在 `feat/core-2-ux-linux` 工作区,未提交或推送。
|
||||
@@ -0,0 +1,49 @@
|
||||
# Core 2.0 架构
|
||||
|
||||
状态:canonical;阶段:implementation-backed;更新:2026-09-07;源码基线:`fc38edd1`,应用版本 `2.0.0-Beta.1`,公开合同 `2.0.0`。
|
||||
|
||||
## 分层与入口
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
UI[React 桌面界面] --> IPC[typed IPC / 启动合同]
|
||||
IPC --> Tauri[Tauri Host]
|
||||
Egui[Linux egui 界面] --> Linux[Linux Host facade]
|
||||
Tauri --> Core[openless-core 共享业务]
|
||||
Linux --> Core
|
||||
Core --> Ports[Host interfaces]
|
||||
Ports --> Native[录音 / 系统凭据 / 热键 / 目标输入 / 窗口]
|
||||
Core --> Events[带 sequence 与 session 的事件]
|
||||
Events --> Tauri
|
||||
Events --> Linux
|
||||
```
|
||||
|
||||
应用工作目录为 `openless-all/app`。
|
||||
|
||||
| 层 | 实现位置 | 职责 |
|
||||
| --- | --- | --- |
|
||||
| React | `src/App.tsx`、`src/components/FloatingShell.tsx`、`src/pages/` | 启动显示、页面、草稿、操作与结果反馈 |
|
||||
| IPC | `src/lib/ipc/shared.ts`、`src/lib/ipc/` | `2.0.0` 启动检查,typed invoke,业务调用前等待 Core 可用 |
|
||||
| 共享 Core | `crates/openless-core/src/lib.rs`、`api.rs`、`domains.rs` | 公开门面、领域服务、状态机、配置、迁移与会话规则 |
|
||||
| 原生接口 | `crates/openless-core/src/ports.rs` | 录音、插入、资源、目标上下文、窗口等 Host effect 合同 |
|
||||
| Tauri Host | `src-tauri/src/commands/`、`core_adapters.rs`、`tauri_coordinator_host.rs`、`tauri_events.rs` | 连接现有 Windows/macOS 原生实现并桥接 React |
|
||||
| Linux Host/UI | `linux-egui/src/{backend,lib,main}.rs` | 共享 Core 接入、现有 Linux Adapter、egui 页面与事件显示 |
|
||||
| 合同 | `contract/backend-2.0.json`、`crates/openless-core/tests/`、前端 IPC 测试 | 版本、DTO、事件和领域行为回归 |
|
||||
|
||||
## 听写与状态
|
||||
|
||||
UI/热键发起 → Core 获取会话及真实目标 → Host 录音与识别 → Core 转写/润色 → Host 向原目标输入 → 真实结果、历史与事件反馈。停止录音、取消会话和正常结束分别调用已有门面,页面导航不接管录音资源。
|
||||
|
||||
主窗口与胶囊、问答、选区预览、Agent 等 WebView 共用启动合同检查。布局改进只改变启动说明,不跳过检查。`recordingReady` 由首帧 PCM 证据驱动,不能用定时器伪造就绪。
|
||||
|
||||
事件以 `sequence` 去重,以 `sessionId` 归属;Unicode delta 的 offset 是 scalar 数量。QA 全量 messages 校准与 Agent 多轮重放仍遵循各自规则。具体语义的规范来源是 [Linux 事件与会话合同](linux-egui-handoff/06-events-and-sessions.md)及对应代码。
|
||||
|
||||
凭据状态、provider descriptor 与有效 pipeline 由 Core 提供。UI 不在渠道 ID 上猜认证规则,不回显已有密钥,不把“已配置”当成设备或网络测试成功。普通写入、已发送粘贴、已复制回退和未知结果分别反馈。
|
||||
|
||||
## 平台边界
|
||||
|
||||
当前完整支持范围、Linux 交接要求与发布验收统一指向 [2.0 当前范围](2.0-requirements.md)。Linux 有运行与界面起点,但 [缺口登记](linux-egui-handoff/02-gap-register.md)仍存在。React 的 Linux 外观预览不能替代 egui 产品验收。
|
||||
|
||||
## 验证入口
|
||||
|
||||
`npm test` 会先构建 React,再跑前端与源码合同;其中 `check-hotkey-injection.mjs` 还会运行 Core 的实际快捷键测试。Core 全量验证使用 `cargo test -p openless-core --locked`;Linux 使用 `cargo test -p openless-linux-egui --locked`,原生目标验证遵循 [Linux 验收](linux-egui-handoff/07-acceptance.md)。本次实际执行结果在 [体验梳理](2.0-ux-review.md),不要将列出的命令视作已经执行。
|
||||
@@ -0,0 +1,13 @@
|
||||
# OpenLess 文档入口
|
||||
|
||||
状态:canonical;阶段:implementation-backed;更新:2026-09-07。
|
||||
|
||||
- [Core 2.0 当前范围](2.0-requirements.md):Windows/macOS 交付边界与 Linux 移交责任,范围的规范来源。
|
||||
- [2.0 架构](architecture.md):共享 Core、平台 Host、界面与事件如何连接。
|
||||
- [2.0 体验梳理与本次改进](2.0-ux-review.md):全部迁移领域的索引、页面变化、建议及验证记录。
|
||||
- [本次执行计划](plans/active/2026-09-06-core-2-ux.md):基线、范围、进度与回滚。
|
||||
- [桌面验收清单](2.0-desktop-acceptance.md):逐项功能保留和原生验收要求。
|
||||
- [Linux 接入交接](linux-egui-handoff/README.md):Linux 已有能力与剩余工作;从对应小文档继续阅读。
|
||||
- [Linux 引导的官方资料](knowledge/2026-09-06-linux-setup.md):来源、项目版本、有效期。
|
||||
|
||||
历史追溯按需阅读:[平台边界审计](core-platform-boundary-audit.md)、[#1019 复核](pr1019-2.0-final-review.md)、[桌面复审记录](pr1019-desktop-review-2026-09-06.md)。这些是带日期的实现与测试记录,不替代当前范围或新版本的设备验收。
|
||||
@@ -0,0 +1,11 @@
|
||||
# Linux 环境引导:官方资料
|
||||
|
||||
状态:canonical;阶段:implementation-backed;来源类型:外部知识。
|
||||
|
||||
|
||||
获取日期:2026-09-06;新鲜度:normal;复核期限:2026-09-16;置信度:高(官方文档/源码),具体桌面可用性仍依设备验证。项目使用egui/eframe 0.31.1;以下Fcitx 5与Secret Service资料是当日上游页面,不声明为本机安装版本。
|
||||
|
||||
- [Fcitx 5设置](https://fcitx-im.org/wiki/Setup_Fcitx_5):桌面启动、输入法框架与会话配置。
|
||||
- [Fcitx 5 on Wayland](https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland):配置依桌面与GTK/Qt等工具包而异。
|
||||
- [fcitx5-remote官方源码](https://github.com/fcitx/fcitx5/blob/master/src/tools/remote.cpp):`-r`调用`ReloadConfig`,不是插件安装/进程重启。
|
||||
- [Secret Service官方规范](https://specifications.freedesktop.org/secret-service/latest/):会话、集合锁定及解锁语义;不能从已有渠道配置推断当前vault可访问。
|
||||
@@ -1,6 +1,8 @@
|
||||
# 02:Linux 缺口登记与实施顺序
|
||||
|
||||
基线:`2b315572`;责任依据:[当前范围](../2.0-requirements.md)。以下是源码盘点,不是通过声明。
|
||||
状态:draft;阶段:partial-implementation;更新:2026-09-07。
|
||||
|
||||
初始盘点基线:`2b315572`;本次UI整理基线:`fc38edd1`,更新反映当前工作区。责任依据:[当前范围](../2.0-requirements.md)。以下是源码盘点,不是通过声明。
|
||||
|
||||
## 1. 状态定义
|
||||
|
||||
@@ -21,7 +23,7 @@
|
||||
| L06 | 界面:Marketplace service 已接入,市场页面缺失 | 浏览、安装、上传/下载、点赞/作品管理、设备 OAuth 登录/取消/退出;复用 Core 协议。[领域](./04-ui-domains.md) |
|
||||
| L07 | 界面+L03依赖:历史仅只读最近20条,缺完整历史/统计/录音操作 | 浏览和原有历史操作、重润色/重转写、录音播放/导出/清理与统计;真实归因不由 UI 拼装。[领域](./04-ui-domains.md) |
|
||||
| L08 | 界面:本地 Qwen 有下载/激活/取消,缺完整模型管理和运行时控制 | 路径/镜像、详情/状态、删除、预载/释放和准备/测试取消;真实推理另附证据。[领域](./04-ui-domains.md) |
|
||||
| L09 | 界面:多数 Linux 适用设置、Agent 检测/模型/路径/权限配置缺失 | 设置有实际消费者、revision/错误处理;保留现有 Less Computer 输出/审批/取消流程。[领域](./04-ui-domains.md) |
|
||||
| L09 | 界面部分改善:已增加领域导航、开始/环境引导、独立现有设置和手机输入页、跨页审批/取消;多数 Linux 适用设置、Agent 检测/模型/路径/权限配置仍缺失 | 设置有实际消费者、revision/错误处理;保留现有 Less Computer 输出/审批/取消流程。本次未关闭L09。[领域](./04-ui-domains.md) |
|
||||
| L10 | 接线+界面:无托盘/自启;通知仅状态栏,重启仅提示,AppImage能力判定不等于更新器 | 窗口/后台运行、通知、自启、检查/下载/安装更新与重启有真实 Host 效果。[原生](./05-native-host-and-data.md) |
|
||||
| L11 | 已实现待实测:fcitx5 输入/选区、CPAL、Secret Service、Qwen、CLI 进程、Remote TLS/H5 | 通过真实桌面/设备矩阵;未通过的逐项记录,不把整模块称为缺失。[验收](./07-acceptance.md) |
|
||||
| L12 | 已有包构建,待 Linux 产品验收与正式分发 | 完成上述应用缺口及 Linux 安装/升级/回滚、签名和更新证据;不阻塞 Windows/macOS 首批交付。[验收](./07-acceptance.md) |
|
||||
@@ -43,3 +45,9 @@
|
||||
|
||||
任务记录格式:`ID / owner / commit / 已完成效果 / 自动证据 / 设备证据 / 剩余限制`。
|
||||
“待实测”不是“未实现”,也不是“已完成”;新发现必须按层归属,不能仅因 Linux 故障就判定 Core 缺失。
|
||||
|
||||
## 5. 本轮 UI 进展(2026-09-06)
|
||||
|
||||
`L04/L07/L08/L09/L11 / Linux UI / 共享工作区未提交`:现有领域从单页拆为导航分页;开始页与环境准备解释fcitx/plugin、桌面会话、麦克风与Secret Service的实际可知状态。原生未连接时保留诊断步骤,未展示成功。Agent审批固定在页面外,QA/Selection/Agent后台事件保留操作或导航提示,未改变Core接口或扩充原生适配。
|
||||
|
||||
本轮只改善入口与显示,不关闭Selection Voice、完整历史/模型管理、Agent高级配置、托盘/更新器及Linux设备/分发缺口。实现、官方来源、定向命令和实际自动证据统一记录在[04本轮记录](./04-ui-domains.md#5-2026-09-06-导航与-linux-准备引导),不在此重复维护。
|
||||
@@ -1,5 +1,7 @@
|
||||
# 04:页面与领域操作
|
||||
|
||||
状态:draft;阶段:partial-implementation;更新:2026-09-07。页面实现与自动证据不等于 Linux 原生验收通过。
|
||||
|
||||
对应 L04–L09。现有[main.rs](../../openless-all/app/linux-egui/src/main.rs)是可复用的真实 UI 起点,但并非功能齐全的产品。
|
||||
接口查[Core api.rs](../../openless-all/app/crates/openless-core/src/api.rs)与[domains.rs](../../openless-all/app/crates/openless-core/src/domains.rs)。
|
||||
|
||||
@@ -17,8 +19,8 @@
|
||||
| 词典/纠错 | 无页面 | 接词条增删/启停、预设、规则;pending corrections接受/拒绝/清空。自动建议来源依赖L02 |
|
||||
| Marketplace | service和下载归档Host已有,无页面 | 接 `MarketplaceApi` 的列表/详情/安装/下载/上传、点赞/作品、设备OAuth启动/轮询/取消/退出 |
|
||||
| 历史/统计 | 仅最近20条只读和插入状态 | 完整浏览及历史操作、删除/清空、重润色/重转写、复制/导出、录音播放/定位/清理、活动统计;音频先补L03 |
|
||||
| 设置 | 仅streaming_insert、Agent启用、Remote开关/端口 | 补Linux适用的麦克风/静音、语言/翻译、模式/热键、QA历史、选区、隐私/日志和外观;每项必须有真实消费者 |
|
||||
| Remote Input | 开关、地址、PIN与重置已有,TLS/H5已接 | 补连接状态、陈旧地址/错误、二维码及LAN/证书信任说明;复用服务并进行真手机验收 |
|
||||
| 设置 | 环境准备与现有streaming_insert、Agent启用;Remote开关/端口独立到手机输入页 | 补Linux适用的麦克风/静音、语言/翻译、模式/热键、QA历史、选区、隐私/日志和外观;每项必须有真实消费者 |
|
||||
| Remote Input | 独立页面保留开关、地址、PIN与重置,增加服务状态/连接数/陈旧地址提示及LAN/证书说明,TLS/H5已接 | 继续补二维码、完整连接错误恢复与证书信任体验;复用服务并进行真手机验收 |
|
||||
|
||||
不要给 Linux 暴露无实现的 Windows TSF 或 macOS AX 权限按钮。当前 Linux 本地运行时为 Generic Qwen;Foundry/Apple MLX 不是这一轮要求跨平台移植的功能。
|
||||
|
||||
@@ -46,3 +48,65 @@ QA 内的预览必须传当前 turn token,使用 `QaApi::begin_edit_preview_ap
|
||||
|
||||
每个领域交付“用户入口 → Core调用 → Host效果 → 事件/持久化”的实际流程;验证成功、失败、取消、重新打开和重启。
|
||||
领域UI完成不自动关闭相关原生缺口;L02/L03/L01分别验收上下文、音频归档和全局热键。
|
||||
|
||||
## 5. 2026-09-06 导航与 Linux 准备引导
|
||||
|
||||
页面复用现有 Core 与 Linux Host 接口。
|
||||
|
||||
| 入口 | 当前行为 |
|
||||
| --- | --- |
|
||||
| 开始 | 环境准备 → AI 服务或本地模型 → 听写;按 Core 有效模式分别显示 ASR/LLM 或 Omni 配置,已配置与校验通过分开;连接后可直达问答、选区润色、Agent、手机输入、历史 |
|
||||
| 工作页面 | 听写、问答、选区润色、Less Computer 分页;每页独立滚动,草稿与会话保存在同一个 App 状态中 |
|
||||
| 准备与管理 | AI 服务保留原渠道操作;本地模型保留列表/下载/激活/取消;历史保留最近20条只读与插入结果分类 |
|
||||
| 环境与设置 | 只提供已有消费者的流式插入与Agent启用,保留revision保存;手机输入配置共用原设置草稿,保存/重新读取明确说明影响 |
|
||||
| 手机输入 | 配置、保存、状态刷新、连接数、配对码重置;停止、地址陈旧时隐藏PIN和URL,状态读取失败清除旧显示 |
|
||||
|
||||
宽窗口使用左侧导航;小于760逻辑像素时改用可换行的顶部导航。主循环仍先无条件`poll`再渲染当前页面,保留50ms重绘、sequence去重、session归属、lag重放、退出shutdown与Esc语音取消。
|
||||
|
||||
- QA/Selection/Agent与听写/模型/Remote后台事件给对应导航增加提醒,访问该页面只清除该页未读状态,不取消后台工作。
|
||||
- `ShowQa`、`ShowSelectionPreview`、`ShowLessComputer`打开所属页面;普通`ShowMain`保留当前页面。隐藏窗口/面板的既有Host语义保留。
|
||||
- Agent审批固定在页面滚动区外:显示原command与原token对应的允许/拒绝;所有页面可直接取消Agent。取消请求与审批结果仍走原Core facade。
|
||||
- QA有打开、原文本/语音操作、关闭及显式取消;全局任务栏保留问答取消、选区预览取消和当前语音取消。选区确认/撤回仍核验原session。
|
||||
- Agent `VoiceState`仅增加导航提示,不把录音session当聊天session,不伪造首帧或电平。完整typed语音反馈与投影恢复仍按[06](./06-events-and-sessions.md)继续接入。
|
||||
|
||||
### 环境状态的证据边界
|
||||
|
||||
启动失败仍能查看开始页与环境引导。现有插件安装检查的Ready/Updated/Missing/错误结果被保留;Updated/Missing仍阻止启动原生运行时。未连接Core的领域页面展示准备入口,不开放假可用操作。
|
||||
|
||||
- 桌面类型来自`LinuxCapabilitySnapshot`的环境判断,不是端到端桌面可用性测试。
|
||||
- fcitx探测是现有D-Bus Peer Ping,只能说明探测有响应;插件文件存在不能证明加载,加载不能证明任意目标应用落字。
|
||||
- “重新检测会话与D-Bus”在后台执行,只更新环境探测;不会重新安装插件或启动Core。本次启动的插件检查结果保留,修复后需重启OpenLess。
|
||||
- 麦克风显示未验证录音/当前环境不支持,不将Unknown当授权成功。Secret Service没有独立连接/解锁探测,UI明确说明未知,并引导用户解锁桌面密钥环后通过原渠道保存/验证获得真实结果。
|
||||
- 不因X11 overlay或AppImage auto-update能力flag显示假浮层、托盘或更新器,也不新增Windows/macOS专属设置。
|
||||
|
||||
可复制的`fcitx5-diagnose`用于诊断;`fcitx5-remote -r`仅重载配置,不能称为重新安装或重启插件。新插件仍未加载时,指引重新登录桌面并重启OpenLess。Wayland指向桌面/工具包对应官方指导,不给所有桌面统一写环境变量。
|
||||
|
||||
### 定向验证与剩余实测
|
||||
|
||||
导航状态位于[ui_state.rs](../../openless-all/app/linux-egui/src/ui_state.rs),可在非Linux平台测试。主文件定向测试覆盖后台审批跨页可见、迟到终态隔离、QA/Selection草稿与取消提示、启动失败引导、陈旧Remote地址/PIN隐藏,并保留原两轮QA/Agent回归。
|
||||
|
||||
在`openless-all/app`执行:
|
||||
|
||||
```sh
|
||||
rustfmt --edition 2021 --check --config skip_children=true linux-egui/src/main.rs linux-egui/src/ui_state.rs
|
||||
cargo test -p openless-linux-egui --locked
|
||||
```
|
||||
|
||||
完整主文件的`linux_app::tests`由Linux cfg控制;macOS直接运行上面的Cargo测试不会编译egui主界面。Linux机器还须执行:
|
||||
|
||||
```sh
|
||||
cargo check -p openless-linux-egui --all-targets --locked
|
||||
cargo test -p openless-linux-egui --bin openless-linux-egui --locked
|
||||
```
|
||||
|
||||
原生依赖沿用[07验收](./07-acceptance.md)与现有CI。真机仍须覆盖420×400短窄窗口与宽窗口、中文字体、后台QA/Selection/Agent触发、跨页审批/取消、插件首次安装及重载、X11/Wayland目标应用、麦克风、密钥环、真实Qwen/CLI与手机TLS。自动布局绘制不是实际窗口/设备验收。
|
||||
|
||||
本次实际自动证据(macOS,Homebrew rustc 1.97.1):
|
||||
|
||||
- `cargo test -p openless-linux-egui --locked`:50个Host单元测试、4个Host合同测试及首轮2个导航测试通过;设备测试在此平台为0个,不能作设备证据。
|
||||
- 为检查Linux cfg内的主界面,在独立临时crate复制本次`main.rs`/`ui_state.rs`,仅临时启用其UI编译,使用仓库已有eframe 0.31.1和同一Core/Linux Host路径依赖;`cargo test --offline`共9个测试通过(含最新3个导航测试、原2个事件回归和新增4个场景绘制测试)。未运行生产启动函数,未改变仓库Cargo清单或锁文件。该证据仅覆盖macOS上的UI类型、状态与无窗口绘制,Host仍使用macOS cfg。
|
||||
- 尝试`cargo check -p openless-linux-egui --all-targets --target x86_64-unknown-linux-gnu --locked`,因目标`core/std`缺失(E0463)失败;本机Docker服务未运行。**没有Linux目标编译通过证据**,须在配置好原生依赖的Linux环境执行上方两条命令。
|
||||
|
||||
### 官方资料
|
||||
|
||||
来源、版本、获取日期和有效期统一记录在[Linux 环境引导知识记录](../knowledge/2026-09-06-linux-setup.md)。
|
||||
@@ -0,0 +1,67 @@
|
||||
# Core 2.0 入口、设置与 Linux 界面整理
|
||||
|
||||
状态:historical;阶段:implementation-backed;更新:2026-09-07;任务状态:complete。
|
||||
|
||||
## 意图基线
|
||||
|
||||
用户要求用云端最新已合并主线替换本地内容,删除未提交修改;梳理 2.0 并提出改进建议,落实更直觉的入口、设置与页面布局,为 Linux 增加引导和设置准备。
|
||||
|
||||
- 应用仓库:`1-app`,远端 `Open-Less/openless`。官网、市场后台、训练与审计项目独立,不在本次修改范围。
|
||||
- 2026-09-06 实时 fetch:默认主线 `beta`,Core 2.0 在 #1019 合并,基线 `fc38edd1a3da3a4f2fa56f433be84278c3456ed1`;稳定 `main` 是 `08d70601`(1.3.18)。代码版本 `2.0.0-Beta.1`。
|
||||
- 已按授权 reset/clean 应用工作区,并切到 `feat/core-2-ux-linux`。
|
||||
|
||||
## 目标、非目标与约束
|
||||
|
||||
主页提供可操作的开始入口;设置按用户任务拆分,保留保存、平台能力和原有功能;Linux 在现有 egui 页面中增加导航和环境准备引导。梳理整个 2.0 迁移面,以界面改动为实施重点。
|
||||
|
||||
不重写共享业务、不扩展公开 IPC、不变更发布版本、不实现完整 Linux 原生适配、不操作其他项目或生产配置。使用现有 React/TypeScript/i18next、Tauri 2、Rust Core 与 egui/eframe 0.31;不增加依赖。Linux 已有功能、待接线功能、设备待验收分别表达。
|
||||
|
||||
## Read Set
|
||||
|
||||
- 本仓库唯一 `AGENTS.md`(本地入口)及 `docs/2.0-requirements.md`、`2.0-desktop-acceptance.md`、`core-platform-boundary-audit.md`。
|
||||
- `docs/linux-egui-handoff/README.md`、`02-gap-register.md`、`04-ui-domains.md`;其他交接小文档按需要读取。
|
||||
- `openless-all/app/src/components/{FloatingShell,SettingsModal,Onboarding}.tsx`、`src/pages/Overview.tsx`、`src/pages/settings/`、平台与 IPC 门面。
|
||||
- `openless-all/app/crates/openless-core/src/{lib,api,ports,events}.rs` 的公开结构;合同与测试;不逐行递归阅读全部旧迁移记录。
|
||||
- `openless-all/app/linux-egui/src/{main,capabilities,settings}.rs`、已有 Host 接线;包清单与测试入口。
|
||||
|
||||
## 方案与影响范围
|
||||
|
||||
1. React 主页将下一步和真实配置状态前置,服务卡片可直接进入设置;短窗口保留自然滚动。
|
||||
2. 设置保留稳定 ID general/services/privacy/advanced/about,增加 shortcuts、appearance,将长通用页按任务拆分。添加说明、可搜索的分类入口、键盘关闭和焦点返回;正确挂载/卸载原有区块。
|
||||
3. Linux 复用已有功能,按开始/听写/AI 服务/模型/工具/手机输入/历史/设置组织页面;环境指导使用现有能力信息,提供实际可执行的准备步骤,保留取消、审批和后台事件消费。
|
||||
4. 补文档入口与 2.0 架构/体验梳理,记录建议、落实项、Linux 剩余工作和验证范围。
|
||||
|
||||
## 里程碑
|
||||
|
||||
- [x] 实时核实并同步云端基线,清理本地改动。
|
||||
- [x] 核对 2.0 范围、平台边界、现有页面与验证方式。
|
||||
- [x] 桌面主页入口和概览布局改进。
|
||||
- [x] 设置分类、查找、布局及可访问性改进。
|
||||
- [x] Linux 原生导航与环境引导。
|
||||
- [x] 补齐中英及现有语言文案,文档与代码同步。
|
||||
- [x] 类型/构建、前端测试、可行 Rust 验证、浏览器桌面/窄屏检查、最终 diff 审阅。
|
||||
|
||||
## 用户追加的视觉改进(同一任务)
|
||||
|
||||
用户在预览后指出 LLM 设置元素不好看、排布不清楚,模型设置和下载也有同样问题。这是本次前端目标的继续细化。
|
||||
|
||||
- [x] 设置改为完全实底,消除透底文字干扰;AI 服务按语言模型/语音识别/本地模型/连接分类,Omni 模式保留真实配置入口。
|
||||
- [x] 渠道列表明确名称、模型、使用状态和验证结果,整理添加/编辑/启停操作;编辑表单分组。
|
||||
- [x] 本地模型管理与下载目录减少嵌套卡片,完善空态、主操作和窄屏排布。
|
||||
- [x] 浏览器检查 LLM、编辑页、模型管理与下载页,并对最终代码重新构建/测试。
|
||||
|
||||
第一轮已通过前端构建及71个测试模块;990像素进入服务页时的空目录布局更新循环已复现并修复;历史重润色结果从宽窗缩至990像素已验证保留。Linux Host50+合同4、macOS临时UI9及追加Omni2项测试通过;原生Linux目标编译仍缺环境,不作通过声明。最终结果以追加视觉改进后的收口记录为准。
|
||||
|
||||
## 验收与回滚
|
||||
|
||||
主页服务入口能打开对应设置;录音/快捷键/外观/服务/隐私/高级/关于均可达;移动端没有丢失录音或语言设置;查找与空结果可恢复;设置支持关闭和焦点返回。Linux 每个旧操作保留真实调用,导航不停止事件消费或丢弃会话。
|
||||
|
||||
使用 `npm test`(含构建)、必要的定向行为测试;Linux 源文件格式检查、Host/Core 测试及能执行的目标检查;浏览器检查常规桌面、短窗口与窄屏。当前主机是 macOS,Linux 原生桌面效果须明确留给 Linux 设备验收,不能以 macOS 上 cfg 排除的构建冒充。
|
||||
|
||||
改动均保持在此分支,按文件撤销可回到 `fc38edd1`;已删除的用户未提交修改不作可恢复承诺。风险集中在设置入口迁移、短窗口溢出、平台 gating 和 Linux 隐藏页面的会话状态。
|
||||
|
||||
## 最终收口
|
||||
|
||||
追加视觉改进已实现并完成浏览器检查。最终 `npm test` 构建及72个测试模块通过;Core公开目录生成器编译运行通过。渠道编辑焦点、供应商下拉可访问性、快捷键菜单Escape、保守布局、历史缩窗结果保留与空模型目录白屏均已关闭。预览目录由Core生成,原生IPC合同不变。
|
||||
|
||||
验证详情、设备边界与下一轮建议统一见[体验梳理](../../2.0-ux-review.md#验证结果2026-09-07-收口)。原生Linux编译/真机与真实服务验收仍在已有交接清单内;本任务没有宣称完成这些产品发布门。
|
||||
Reference in new issue
Block a user