Skip to content

设置页「工具」节与会话页认项目的方式不同,部分会话里用不了 #1361

Description

@jinjunnn

设置页新增的「工具」节按项目分区显示,它认项目的方式和会话页不是同一套:会话页认服务端给的会话信息,设置页认侧栏那份项目清单。多数情况两者一致,但侧栏会过滤掉一些会话(已归档的、直接以用户主目录为根的、非本机 sidecar 服务上的)。撞上这些时,你在会话页里用得好好的,打开设置页的「工具」节却会看到「先打开一个项目」,设不了。它不会把设置写错到别的项目上 —— 拒绝而不是猜。不修的话,这些会话下改不了工具权限,得先切到一个正常项目。

Impact

packages/ui-mac/src/renderer/alpha-ui/settings-directory.ts 经侧栏 store(sidebar/use-projects.ts)解析目录;会话页用 serverSync().session.data.info[id](alpha-session-workspace.tsx:48)。被 worktree-filter.ts:15-19 过滤或不在 sidecar server 上的会话,两者不一致 ⇒「工具」节只剩「先打开一个项目」态。发现于 PR #1358 第 2 轮审计的 out-of-round 观察(2026-09-18),判为 fail-closed、不拦合并。

Expected / Actual

  • Expected:会话页能用的会话,设置页「工具」节就能解析出它的项目。
  • Actual:侧栏清单过滤掉的会话解析为 undefined,整节退化为「先打开一个项目」。

Fix acceptance

  • 两个面用同一份目录真相(或设置页在侧栏 store 缺失时回落到会话信息);一条测试覆盖「侧栏过滤掉的会话」这一格,改前红。
  • 不得为此放宽 fail-closed:解析不出目录时仍然是拒绝,不得落到默认项目。

Boundary

packages/ui-mac/src/renderer/alpha-ui/settings-directory.ts 与其数据来源;必要时 renderer/index.tsx 的装配。

Out of scope

侧栏过滤规则本身(worktree-filter.ts);#1130 已交付的其余部分。

Metadata

Metadata

Assignees

Labels

type:bugSomething is incorrect or regressed

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions