feat: 改进会话列表、模型标签显示与后端服务恢复#102
Open
MiunaQwQ wants to merge 39 commits into
Open
Conversation
- 在活动会话树中注入仅由后代活动触发的祖先节点,避免深层子会话脱离父级结构。 - 覆盖祖先注入、同级排序、自身活动优先和循环保护场景,确保树结构可稳定回归验证。
- 保存子会话目录信息,并从活动树后代向上推导祖先会话的拉取目标。 - 让仅由子会话推断出的祖先节点也能被正确获取完整会话数据,避免侧边栏显示缺少标题或目录。
- 将活动会话树接入侧边栏渲染,并为后代活动的祖先行提供中性状态展示。 - 在已有元数据足够时允许祖先行被点击选择,避免用户无法打开仍有活跃子会话的祖先会话。
- 为侧边栏内部操作按钮显式声明按钮类型,避免默认提交行为影响交互。 - 顺手清理项目移除处理中的回调块结构,让批量操作逻辑更稳定易读。
- 为活动子会话状态补充英文和简体中文文案,保证新增祖先行状态能正常本地化。 - 避免侧边栏在不同语言下出现缺失翻译键或硬编码文案。
- 将活动会话树中的祖先目标纳入异步会话解析,确保祖先行可以拿到完整会话信息。 - 移除基于 entry 元数据临时构造可选中会话的回退逻辑,避免未解析的祖先行被错误点击或拖拽。 - 补充 unresolved 祖先行与无可用目录分支的测试覆盖,防止缺失元数据时产生无效交互。
- 将活动子会话提示改为更中性的“下方有活动会话”表达。 - 同步更新英文文案为 “Active below”,避免暗示只存在直接子会话。
- 在活动会话树中注入仅由后代活动触发的祖先节点,避免深层子会话脱离父级结构。 - 覆盖祖先注入、同级排序、自身活动优先和循环保护场景,确保树结构可稳定回归验证。
- 保存子会话目录信息,并从活动树后代向上推导祖先会话的拉取目标。 - 让仅由子会话推断出的祖先节点也能被正确获取完整会话数据,避免侧边栏显示缺少标题或目录。
- 将活动会话树接入侧边栏渲染,并为后代活动的祖先行提供中性状态展示。 - 在已有元数据足够时允许祖先行被点击选择,避免用户无法打开仍有活跃子会话的祖先会话。
- 为侧边栏内部操作按钮显式声明按钮类型,避免默认提交行为影响交互。 - 顺手清理项目移除处理中的回调块结构,让批量操作逻辑更稳定易读。
- 为活动子会话状态补充英文和简体中文文案,保证新增祖先行状态能正常本地化。 - 避免侧边栏在不同语言下出现缺失翻译键或硬编码文案。
- 将活动会话树中的祖先目标纳入异步会话解析,确保祖先行可以拿到完整会话信息。 - 移除基于 entry 元数据临时构造可选中会话的回退逻辑,避免未解析的祖先行被错误点击或拖拽。 - 补充 unresolved 祖先行与无可用目录分支的测试覆盖,防止缺失元数据时产生无效交互。
- 将活动子会话提示改为更中性的“下方有活动会话”表达。 - 同步更新英文文案为 “Active below”,避免暗示只存在直接子会话。
Preserve the upstream child-session refresh dependency in SidePanel without relying on a bare expression, so the rebased ancestor-session flow continues to pass lint and validate cleanly.
- 将后端进程 PID 改为通过互斥状态管理,避免并发启动命令覆盖进程所有权 - 在启动、停止和关闭应用流程中复用统一的 owned PID 关闭逻辑,避免误停外部后端或重复杀进程 - 将 401 health 响应视为服务已运行,并补充并发启动、外部服务、超时和关闭行为测试
- 在 layoutStore 中新增子会话排序偏好,并持久化到 localStorage。 - 将排序偏好纳入设置备份导入导出,保证旧备份缺少该字段时仍回退到默认正序。
- 在子会话列表渲染前按创建时间正序或倒序排序,并避免修改原始数组。 - 增加子会话排序测试,覆盖传入 children、异步拉取 children 和相同时间戳的稳定顺序。
- 在工作区侧边栏设置中加入子会话排序分段控件,支持切换创建时间正序和倒序。 - 补充中英文设置文案与交互测试,确保设置项位置和点击行为可验证。
- 将设置备份模块从 store barrel 导入改为按具体 store 文件导入。 - 降低备份工具对聚合导出的耦合,避免新增布局备份类型时依赖不清晰。
- 将子会话排序偏好从 createdAsc/createdDesc 迁移为 activeAsc/activeDesc - 为旧的创建时间排序存储值保留兼容映射,避免已有用户设置失效 - 更新布局存储测试,覆盖默认值、持久化、备份导入和旧值恢复场景
- 将工作区设置中的子会话排序选项切换为活跃时间排序 - 同步英文和简体中文文案,说明“刚刚”区间会保持稳定顺序 - 更新设置组件测试,确保选项选中状态和切换行为匹配新偏好值
- 使用会话更新时间作为子会话排序依据,并在缺失时回退到创建时间 - 对仍处于“刚刚”区间的会话保持稳定顺序,减少列表频繁跳动 - 让忙碌中的刚活跃子会话优先显示,并补充对应排序测试
Resolve the in-progress merge by keeping the newer child session metadata subscription model from origin/main while preserving local sidebar behavior updates.
保留 origin/main 中较新的子会话元数据订阅方案,同时保留本地侧边栏行为更新。
- 为侧栏菜单按钮补充显式 `type="button"`,避免在表单上下文中触发默认提交行为 - 将子会话元数据版本依赖标记为显式读取,保持刷新依赖语义并避免无效表达式问题
- 在全局快捷键处理里先校验事件目标类型,再访问 DOM 属性与 `closest` - 增加 document 级 keydown 回归测试,避免非 HTMLElement 目标导致快捷键崩溃
- 增加 `modelLabelFormat` 主题状态、localStorage 持久化与备份导入支持 - 通过 `useTheme` 暴露读取和更新接口,并补充 themeStore 持久化测试
- 在 step finish 的模型信息设置下新增模型代码/模型名称显示格式切换 - 补充中英文设置文案和组件测试,确保设置项只在启用模型信息时展示
- 根据主题偏好在 step finish 信息中显示模型代码或解析后的模型名称 - 按 provider 和 model id 匹配模型,重复 id 时优先使用对应 provider 的名称并保留回退逻辑
- 新增 showModelVariant 主题状态、读取器与更新方法,并使用 localStorage 持久化。 - 将模型变体显示偏好纳入主题备份导入流程,避免设置迁移时丢失该选项。 - 添加单元测试覆盖默认值、严格 true 解析、持久化与订阅通知行为。
- 在聊天设置中新增模型变体显示开关,并通过 useTheme 暴露对应状态。 - 补充中英文设置文案,使该选项只在模型信息展示启用时出现。 - 添加设置页测试覆盖显示顺序、可见性与交互更新。
- 为消息渲染器传入父级用户消息,并在启用偏好时追加请求模型变体标签。 - 新增消息 ID 映射,避免依赖消息相邻关系查找 assistant 的父消息。 - 收紧消息可见性与渲染细节,避免 observer 过期依赖、按钮默认行为和不稳定 key 影响新展示路径。 - 添加 ChatArea 与 MessageRenderer 测试,覆盖父消息映射和变体标签展示。
- 抽取设置入口点击处理逻辑,打开设置面板后同步关闭侧栏菜单。 - 避免设置入口点击后菜单残留,保持侧栏交互状态一致。
- 结束当前已解决冲突但尚未提交的 merge 状态 - 保留本地侧栏相关后续提交历史,作为后续推送与远端同步的基础
- 新增服务所有权标记文件,记录由应用启动的 opencode 后端 PID 与启动时间。 - 在桌面启动时用应用数据目录初始化 ServiceState,让重启后的应用能恢复仍存活的自管后端。 - 清理关闭路径上的所有权标记,避免陈旧 PID 影响后续服务判断。
- 将 \start_opencode_service\ 的返回值从布尔值扩展为 \spawnedNow\ 与 \�ppOwned\。 - 让自动启动和设置页根据所有权状态区分新启动、自管遗留进程和外部已运行进程。 - 补充 Rust 启动流程测试,覆盖已运行、自管恢复和新启动等路径。
- 将后端所有权标记从易受时区/语言环境影响的启动时间迁移到平台稳定的进程标识。 - 兼容旧版 started_at 标记并在可恢复时自动迁移,避免重启后误判或清理仍归属本应用的后端进程。 - 新增 Linux/macOS/Windows 对应的进程标识读取与回归测试,覆盖旧标记迁移、漂移清理和解析边界。
- 在 Unix 启动 opencode serve 时创建独立进程组,并在关闭时优先向整个进程组发送 SIGTERM。 - 保留旧版单 PID 终止回退,避免没有进程组的历史子进程无法被清理。 - 新增 Unix 进程组关闭、单进程回退和 PID 校验测试,防止子进程残留。
Owner
|
我靠,你变更量我有点不敢合 |
Contributor
Author
>︿< 那等我再用一段时间吧,自用了两天好像没啥问题 |
Contributor
Author
+的大部分是test,佬可以给点建议,比如我按功能拆分重新pr( |
Owner
|
只能先一直开着了,有空的话,我才能够挨个看,如果后面不好合的话,我就根据你需求重写。现在实在是没有太多时间。 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
变更概述
主要改动
1. 侧边栏会话树与子会话体验优化
2. 模型标签显示偏好增强
3. Tauri 后端服务稳定性增强
4. 其他修复与补充
影响范围
src/features/chat/sidebar/*src/features/message/*src/features/settings/*src/store/*src/hooks/*src-tauri/src/app/*测试说明
本次改动包含多处测试补充与更新,重点覆盖:
预期收益