fix: update workbar tab titles when switching language
Derive application and default terminal titles from the current locale while preserving renamed and unmarked legacy terminal titles. Add locale-switch and layout-restoration regression coverage. File-level scope also includes existing browser popup selection and close handling in the sidebar, its regression test, and workbar documentation updates. Validation: 74 focused tests passed; typecheck and lint passed. Full test runs timed out with failures in settings navigation, Agent packaging, and database migration tests. Electron verification remains outstanding. Release note: Workbar application and new default terminal titles now follow the interface language, including after restoring a layout; custom and legacy terminal names are preserved.
This commit is contained in:
@@ -1,5 +1,37 @@
|
||||
# 工作栏实现与验证进度
|
||||
|
||||
## 2026-09-15 会话置顶与浮动操作菜单
|
||||
|
||||
已核对当前源码差异:置顶经专用 IPC 写入 SQLite,schema 36 迁移保留已有会话;会话操作
|
||||
改为 body Portal 菜单。规则分别见[会话置顶](./execution-history-storage.md#会话置顶)和
|
||||
[菜单界面](../application-tool-navigation/ui-design.md#会话置顶与操作菜单)。
|
||||
|
||||
本次任务提供的已验证聚焦测试结果为 backend **135 项通过**、renderer **283 项通过**。
|
||||
本轮仅更新文档,未重新运行测试;任务未提供这两组的完整命令或原始日志路径。
|
||||
已核对 `assistant-database.test.ts` 与 `App.test.tsx` 中相关回归,覆盖持久化与重开、
|
||||
schema 35 升级、最近 100 条之外的置顶、自动保存隔离、草稿先保存、通道会话、失败保留
|
||||
状态、旧刷新竞态,以及 Portal、窗口边界、键盘与外部关闭。
|
||||
|
||||
原生 Electron 视觉与完整应用交互尚未验证,不能据组件测试声明实际菜单排版、原生浏览器
|
||||
遮挡或跨主题/窗口尺寸视觉验收通过;本轮也未运行全量测试、类型检查、lint 或构建。
|
||||
|
||||
## 2026-09-15 工作栏标签标题国际化修复
|
||||
|
||||
实现与兼容规则见[多终端页签 PRD 第 10 节](./terminal-tabs-prd.md#10-实例session-与持久化)。
|
||||
任务中心、工作区、成果和带默认编号的终端标题由 Sidebar 按当前语言派生;重命名清除默认
|
||||
编号。浏览器标题保持原行为,未修改工作栏壳层。本次只涉及桌面标题显示与布局描述,不改变
|
||||
本机或远程 PTY、Runtime、Agent 协议或桌面到 Agent 的执行路径。
|
||||
|
||||
聚焦验证:
|
||||
|
||||
- `npx vitest run src/renderer/src/RightAssistantSidebar.resize.test.tsx src/shared/workbar-contracts.test.ts src/renderer/src/WorkbarShell.test.tsx`:3 个文件、74 项通过。
|
||||
- Sidebar 新增 6 项行为回归,覆盖中英切换且不改写布局、默认终端编号持久化与跨语言恢复、
|
||||
重命名后恢复,以及中文默认名、英文默认名和自定义名三种无标记旧终端。测试使用真实
|
||||
Sidebar、WorkbarShell 和布局 Schema,终端面板使用测试替身,未启动 Shell。
|
||||
- `npx eslint src/renderer/src/RightAssistantSidebar.tsx src/renderer/src/RightAssistantSidebar.resize.test.tsx src/shared/workbar-contracts.ts`:通过。
|
||||
- 首轮测试有一处新增浏览器文案断言错误,修正为现有“未绑定会话”后通过。按用户要求未运行
|
||||
全量测试、全量 typecheck、全量 lint 或构建;本轮未进行 Electron 实机验证。
|
||||
|
||||
## 2026-09-15 Desktop 0.13.6 发布准备
|
||||
|
||||
用户批准两项性能修复的中英文更新说明,指定 Desktop 0.13.6,不发布 Agent 或
|
||||
|
||||
@@ -90,7 +90,8 @@ SSH 连接池,但尚不存在工作栏应用实例模型、终端 IPC、终端
|
||||
工作栏 Tab 是应用的一次打开实例。每个实例具有独立 ID、标题、应用类型和状态。Tab 行只
|
||||
显示已经打开的实例,不把全部能力同时渲染为 Tab。
|
||||
|
||||
实例持久化字段只有 `id`、`appId`、`title` 和可选 `targetRef`。`targetRef` 使用公开引用:
|
||||
实例持久化字段为 `id`、`appId`、`title`,以及可选的 `targetRef`、`defaultTitleNumber`。
|
||||
默认标题编号的保存和兼容规则见第 10 节。`targetRef` 使用公开引用:
|
||||
终端接受 `local` 或 `projectId`,浏览器接受 `conversationId`。Main 签发的 Browser Tab ID、
|
||||
Terminal Session ID、元素引用、凭据、路径和运行状态不进入工作栏布局。
|
||||
|
||||
@@ -179,8 +180,12 @@ stdio fallback。首期远程终端随 SSH Channel 结束,不提供跨 SSH 或
|
||||
- 每个实例使用独立 `tab` 和 `tabpanel`。
|
||||
- “+”固定在 Tab 行末尾,但位于 `tablist` 之外。
|
||||
- Tab 过多时实例区域单行横向滚动,“+”保持可见;不换行、不自动隐藏实例。
|
||||
- 标签全部可见时隐藏左右滚动按钮,“+”紧随最后一个标签;溢出时两端显示左右箭头,点击滚动约一屏,边界方向禁用。“+”固定在右箭头外侧。切换或新增激活标签时将其滚入可见区域。未激活标签使用灰蓝底色和边框,激活标签保留亮底与强调色顶线。
|
||||
- 终端 Tab 默认使用递增标题,例如“终端 1”“终端 2”;状态栏持续显示项目、Host、
|
||||
工作目录和 Shell。用户可以重命名终端。
|
||||
- 任务中心、工作区、成果及新建终端的默认标题随界面语言切换,恢复布局时也使用当前语言。
|
||||
终端自定义名称保持原文;旧布局中的终端名称保持原值,即使看起来像“终端 1”。浏览器
|
||||
标题沿用现有行为,不在本次标题国际化范围内。
|
||||
- 当前 Tab 同时使用连续内容表面、选中边框、顶部强调线、图标和较高字重,不能只靠文字颜色。
|
||||
- Tab、关闭按钮和“+”入口沿用共享控件圆角;终端面板外框和终端顶部工具栏按钮使用直角,
|
||||
保持紧凑的停靠式终端界面。
|
||||
@@ -345,6 +350,7 @@ type WorkbarTabInstance = {
|
||||
id: string
|
||||
appId: WorkbarAppDefinition['id']
|
||||
title: string
|
||||
defaultTitleNumber?: number
|
||||
targetRef?:
|
||||
| { type: 'local' }
|
||||
| { type: 'project'; projectId: string }
|
||||
@@ -373,6 +379,12 @@ type WorkbarLayoutPreferences = {
|
||||
Shell。
|
||||
- 运行期间切换项目不会改变已经创建的终端目标。用户需要新目标时通过“+”创建新终端。
|
||||
|
||||
新建终端保存正整数 `defaultTitleNumber`,沿用同一目标已有终端数量加一的编号规则。
|
||||
Sidebar 在渲染时按当前语言派生应用和默认终端标题,再交给 Tab 壳层与终端面板;切换语言
|
||||
不改写持久化标题。用户重命名时清除此字段并保存输入的 `title`。缺少标记的旧终端直接显示
|
||||
原 `title`,不通过名称模式推断默认标题。布局存储键保持 `goodbuddy.workbar-layout.v1`;
|
||||
旧版本使用严格 Schema,不能读取带新增字段的布局,本变更不提供降级兼容。
|
||||
|
||||
## 11. 生命周期与关闭语义
|
||||
|
||||
| 用户或系统动作 | Tab | Shell Session |
|
||||
|
||||
Reference in New Issue
Block a user