跳到主要内容

工作区标签页导航

通知列表、系统通知、托盘和跨产品入口必须按目标类型选择标签页。 navigateTo 对内置任务、项目空间、智能体、已注册 DSH 路由及应用地址派发共享导航事件, 仅跨产品界面时由 navigateWorkspaceTab 选择目标,避免将当前项目空间标签改成任务标签。 路由类型由 resolveWorkspaceTabKind 统一解析,供导航与标签类型推断共用。

通知和托盘统一使用任务深链。任务首先按设备 ID 和任务 ID 匹配已有会话标签;否则依次复用同类型的当前标签、 固定标签或其他标签,没有同类型标签时才创建。重复点击不增加标签。 同一界面内的普通导航保留原路径更新,不同步重选标签;任务和辅助页面属于同一工作台界面, 页内打开应用或返回新建会话不创建标签,也不重置当前会话的状态更新。 目标任务若已在另一个标签中打开,则先按设备和任务身份选择该标签,保留当前任务标签。 设置页临时覆盖当前界面并保存返回位置;带 workspaceTab 的路由明确指定目标, 不再派发导航事件。登录等不属于工作区的路由保持页面导航。

会话状态读取​

会话缓存拥有消息、目标、计划、子任务状态和发送队列。输入框通过外部状态订阅读取这些值, 不再把它们复制到另一组组件状态。空队列快照保持引用稳定,普通进度块不会触发队列状态变化。 消息展示沿用帧级订阅;编辑、重试和问答操作读取缓存中的最新消息,不依赖尚未刷新的界面快照。

恢复固定标签标题​

默认协作标签统一显示“协作”,不显示 Beta 后缀。普通会话标签和固定标签偏好设置 都复用 normalizePersistedTab 更新旧标题,包括首次加载和偏好设置异步加载后的同步。 仅更新指向协作首页的内置旧标题;具体项目标签的自定义标题保持不变。 WorkspaceTabsContext.test.tsx 覆盖中英文旧标题、启动恢复和异步固定标签加载。

回归验证​

notification-tab-navigation 已接入桌面 checkpoint 和 GitHub Core 分片。 场景通过真实本地任务、执行器和 Electron 托盘完成以下验证,仅模型响应使用测试服务:

  1. 在任务执行期间切到项目空间,通过托盘打开任务,复用原任务标签。
  2. 返回项目空间后让任务完成,从通知列表打开任务,清除未读并显示完成内容。
  3. 再次切到项目空间,通过系统通知打开同一任务,不增加标签。
  4. 每次返回原项目空间标签,仍显示项目空间路由。

使用 pnpm --filter wework e2e:desktop --segment notification-tab-navigation 单独执行。 场景自行创建所需项目和任务,由共享 runner 清理隔离目录与进程。 单元测试另覆盖内置路由、已有目标会话、重复点击、设置页及明确指定标签的导航。

应用地址包括声明的原生路径、/app/<id> 及其子路径,避免应用切换入口覆盖当前标签。

2026-10-24 本地验证:聚焦 Vitest、TypeScript、ESLint、 格式检查及 CI 分类测试通过;上述 checkpoint 在隔离的 macOS Electron 中通过。 CI 的新建会话及标签页内应用导航回归保留原有断言,修复后本地 workspace-tabs 与 priority-filter checkpoint 通过。 另用 ai:verify 验证不可用设备的任务通知:选择任务标签后仍可返回原项目空间。 临时证据保留在本地 wework/test-results/,不提交运行目录或会话文件。