侧栏会话菜单(重命名/删除/置顶/转发/拖动排序)在所有页面都能用 #117

Closed
opened 2026-10-28 01:41:53 +08:00 by Claude · 1 comment
Collaborator

(来自 #114 第四轮,产品 10-27 选 A)

现象

首页侧栏每条对话有「…」菜单,也能拖动排序;进星盘、人物、报告、合盘、星历页后,同一个侧栏里的对话只能点开,没有「…」,也拖不动。

原因(已查)

侧栏组件是同一个(AppSidebar)。区别在「会话管理」:重命名、删除确认、置顶、转发、排序以及失败时退回原样,都写在首页的 use-session-management.ts 里,经 use-home-shell-registration.ts 只在首页登记给外壳;其他页面外壳拿不到这些操作,侧栏就只读。对话列表本身已经放在全站共用的 session store(Zustand)里,所以操作可以搬到外壳,不需要首页在场。

要做的

  1. 把列表级操作(重命名、删除及确认弹窗、置顶、转发、排序、菜单开合)从首页搬进外壳共用的一处((app)/layout.tsx 下),直接改 session store;首页改用这一份,不再自己登记这些操作。
  2. 首页只保留和「当前打开的那条对话」有关的事:删掉的正好是当前对话时切到下一条或新建、清理生时校正同意状态。用订阅 store 的方式做,不要让外壳反过来调首页。
  3. 转发要整段对话内容:其他页面上列表行没有消息正文,转发前先读详情再复制;读失败给提示,不复制半截。
  4. 失败退回原样、提示文案与首页现在一致(顶部浮层提示全站都能出)。
  5. 其他页面上点「…」里的操作不跳回首页;点对话本身仍跳回首页打开。

验收

  • 星盘、人物、报告、合盘、星历页侧栏都有「…」且四项操作和拖动可用;首页行为不变。
  • 断网/接口报错时重命名、删除、置顶、排序都退回原样并提示。
  • 在其他页面删掉的对话,回首页后不再出现;删掉的是首页上次打开的那条时,首页打开下一条。
  • Home() 的 useState/useRef 数不增(应当减少);首屏 gzip ±2%;tsc、lint 0;npm test 与基线逐条比,按源码断言的合同测试(sidebar-contract、home-sidebar-rerender、tests/test_session_management_entrypoints.py 等)同轮改并写三栏。
  • 真机清单写进 docs/testing/。

红线

  • 不改数据库、不改接口。
  • 不新造菜单/弹窗,用现有 shadcn 组件。
  • 和首页 page.tsx 有冲突的单串行做。

BUG 号从 BUG-1467 起(开工时再核对最大号)。

产品 10-28 定:由 Claude 直接改,不交 Grok。

(来自 #114 第四轮,产品 10-27 选 A) ## 现象 首页侧栏每条对话有「…」菜单,也能拖动排序;进星盘、人物、报告、合盘、星历页后,同一个侧栏里的对话只能点开,没有「…」,也拖不动。 ## 原因(已查) 侧栏组件是同一个(AppSidebar)。区别在「会话管理」:重命名、删除确认、置顶、转发、排序以及失败时退回原样,都写在首页的 `use-session-management.ts` 里,经 `use-home-shell-registration.ts` 只在首页登记给外壳;其他页面外壳拿不到这些操作,侧栏就只读。对话列表本身已经放在全站共用的 session store(Zustand)里,所以操作可以搬到外壳,不需要首页在场。 ## 要做的 1. 把列表级操作(重命名、删除及确认弹窗、置顶、转发、排序、菜单开合)从首页搬进外壳共用的一处(`(app)/layout.tsx` 下),直接改 session store;首页改用这一份,不再自己登记这些操作。 2. 首页只保留和「当前打开的那条对话」有关的事:删掉的正好是当前对话时切到下一条或新建、清理生时校正同意状态。用订阅 store 的方式做,不要让外壳反过来调首页。 3. 转发要整段对话内容:其他页面上列表行没有消息正文,转发前先读详情再复制;读失败给提示,不复制半截。 4. 失败退回原样、提示文案与首页现在一致(顶部浮层提示全站都能出)。 5. 其他页面上点「…」里的操作不跳回首页;点对话本身仍跳回首页打开。 ## 验收 - 星盘、人物、报告、合盘、星历页侧栏都有「…」且四项操作和拖动可用;首页行为不变。 - 断网/接口报错时重命名、删除、置顶、排序都退回原样并提示。 - 在其他页面删掉的对话,回首页后不再出现;删掉的是首页上次打开的那条时,首页打开下一条。 - `Home()` 的 useState/useRef 数不增(应当减少);首屏 gzip ±2%;tsc、lint 0;npm test 与基线逐条比,按源码断言的合同测试(sidebar-contract、home-sidebar-rerender、tests/test_session_management_entrypoints.py 等)同轮改并写三栏。 - 真机清单写进 docs/testing/。 ## 红线 - 不改数据库、不改接口。 - 不新造菜单/弹窗,用现有 shadcn 组件。 - 和首页 page.tsx 有冲突的单串行做。 BUG 号从 BUG-1467 起(开工时再核对最大号)。 产品 10-28 定:由 Claude 直接改,不交 Grok。
Claude added the agent/试点agent/规划中 labels 2026-10-28 01:41:55 +08:00
Author
Collaborator

@jesse 这一单和 #116 重复:另一个 Claude 会话昨晚已经开了 #116,今天 01:52 做完推上 staging(0f0fea325),正在部署。我这边写到一半发现了,已停手,没有推任何代码。

后续都跟 #116 走,这一单可以关掉(关单留给你)。

<!-- agent:claude escalate duplicate-of=116 --> @jesse 这一单和 #116 重复:另一个 Claude 会话昨晚已经开了 #116,今天 01:52 做完推上 staging(`0f0fea325`),正在部署。我这边写到一半发现了,已停手,没有推任何代码。 后续都跟 #116 走,这一单可以关掉(关单留给你)。
Claude removed the agent/规划中 label 2026-10-28 01:57:02 +08:00
jesse closed this issue 2026-10-28 06:39:43 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: root/Jyotisha#117