Sidebar session menu and drag on every page (issue #116)
Rename, delete with confirmation, pin, share and reorder moved from Home's session hook into the shared (app) shell, so /chart, /ephemeris, /reports and /people rows get the same menu and drag as /. Home only adds its paging cursor, what the open conversation does when deleted, and which local chats are unsaved. BUG-1467. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
36fd4b2c83
commit
0f0fea325e
+23
-1
@@ -19982,7 +19982,7 @@
|
||||
|
||||
## BUG-1466 | 首页输入框整块发灰;首页会话列表每行把手加「…」很乱
|
||||
|
||||
- 状态:resolved(输入框、列表样子);其他页面会话行没有菜单另见下文,未改
|
||||
- 状态:resolved(输入框、列表样子);其他页面会话行没有菜单,已在 BUG-1467(issue #116)改掉
|
||||
- 首次发现:2026-10-27(issue #114 产品评论,附三张截图)
|
||||
- 最近更新:2026-10-27
|
||||
- 影响面:首页和对话页的输入框;首页侧栏会话列表。
|
||||
@@ -19995,3 +19995,25 @@
|
||||
- 相关记录:BUG-1433(K1 外壳换组件库)、BUG-1453;TASK-sidebar-unify-20260916。
|
||||
- 复发自:无
|
||||
- 修复版本:分支 `codex/chart-ui-114-20261027` 第四轮。
|
||||
|
||||
## BUG-1467 | 星盘、星历、报告、档案页的侧栏会话没有「…」,也不能拖动
|
||||
|
||||
- 状态:resolved(自动化);真机待产品
|
||||
- 首次发现:2026-10-27(issue #114 产品评论;产品选 A,另开 issue #116)
|
||||
- 最近更新:2026-10-28
|
||||
- 影响面:`(app)` 外壳下除首页外的所有页面的侧栏会话列表;首页的同一列表。
|
||||
- 用户现象:首页侧栏的会话行有「…」菜单(收藏、重命名、转发、删除),也能拖动排序;到星盘、星历、我的报告、星盘档案页,同一列表只有标题和日期,点了只能跳回首页。
|
||||
- 触发条件:登录后打开任何非首页页面。
|
||||
- 根因:列表本身早已放在外壳的 store 里,但会话管理(重命名、删除确认、收藏、转发、排序,以及它们的乐观更新和失败回滚)写在首页的 `use-session-management.ts` 里,经 `use-home-shell-registration.ts` 只在首页挂着时登记给外壳。别的页面外壳拿不到这些回调,侧栏按 TASK-sidebar-unify-20260916 D1 的约定渲染成只读链接。外壳兜底列表也不按收藏 / 排序号排序,即使能拖,其他页面也看不到拖动结果。
|
||||
- 修复:新增 `hooks/use-shell-session-actions.ts`,由 `(app)/layout.tsx` 调用,直接改共用 store。这五项连同删除确认框(`components/session-delete-dialog.tsx`)、翻页兜底,在每个页面都可用。菜单开合与待删会话放进 `session-store`。首页不再自己维护一套,只经 `sessionHooks` 补三件首页才知道的事:一、自己的翻页游标;二、删掉当前打开的会话时清掉校正授权并跳到下一条(`onSessionDeleted`);三、哪些新对话还没落库(`isSessionSaved`)。侧栏的 `sessionControls` 从首页专属的 `controls` 里拆出,成为独立入参;不在首页时点一行用 `navigateAppPath` 去 `/?c=<id>`。外壳兜底列表改为 `sortSessions` 排序。转发时若这一行还没读过聊天内容,先读再复制,剪贴板接一个待定的 Blob,Safari 仍算这次点击。未登录或账户未读到时仍是只读链接。
|
||||
- 验证:新增 `frontend/tests/shell-session-actions-20261028.test.tsx` 三条:
|
||||
- 没有首页控制时行上有「…」、没有只读标记;旧侧栏没有这个入参,测试失败。
|
||||
- 删除先弹确认,确认后乐观删行、通知首页、服务端拒绝时退回原样。
|
||||
- 未登录不给控制。
|
||||
另外,前端全量 5262 条与 staging `36fd4b2c8` 基线逐条对比,没有新失败,也没有测试名消失。
|
||||
tsc 0 错,lint 0 error,警告数与基线相同。`/` 仍 Static。首屏 gzip 679693 → 681714(+0.30%)。Python 快速门通过。
|
||||
改了七个按源码断言的测试,三栏说明都写在测试里:`chat-session-url`、`order-batch`、`home-sidebar-rerender`、`session-list-lifecycle`;`home-surface.ts` 和两份 Python 首页清单加了新文件。
|
||||
- 防复发:上面的新测试;首页表面清单(TS 与 Python)包含外壳会话文件,删除 / 排序的源码断言跟着文件走。
|
||||
- 相关记录:BUG-1466、BUG-1433、BUG-989(新对话首问才落库)、BUG-725 / BUG-1329(外壳拿稳定包装、调用最新回调);TASK-sidebar-unify-20260916 D1(只读侧栏的约定,本条推翻其中「别的页面不写」一项,产品 2026-10-27 选 A 授权)。
|
||||
- 复发自:无
|
||||
- 修复版本:分支 `codex/session-shell-116-20261027`。
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
# 进度 · 侧栏会话菜单搬进共用外壳(issue #116)
|
||||
|
||||
- 执行方:Claude 直接执行(产品 2026-10-27 指定;issue #114 讨论选 A)
|
||||
- 分支:`codex/session-shell-116-20261027`,基线 `origin/staging` `36fd4b2c8`
|
||||
- Bug:BUG-1467(BUG-1466 的后续)
|
||||
|
||||
## 做了什么
|
||||
|
||||
- `hooks/use-shell-session-actions.ts`:重命名、删除(确认 + 乐观删除 + 失败回滚)、收藏、转发、排序、翻页兜底,由 `(app)/layout.tsx` 调用,改共用 store。
|
||||
- `components/session-delete-dialog.tsx`:删除确认框从首页搬到外壳,文案不变。
|
||||
- `session-store`:加 `sessionMenuId`、`pendingSessionDeletion`。
|
||||
- 首页 `use-session-management.ts` 删掉这五项和两份状态,只留 `onSessionDeleted`(清校正授权、删当前会话时跳下一条)与 `isSessionSaved`;`use-home-shell-registration.ts` 经 `sessionHooks` 发布翻页游标和这两项,均为稳定包装。
|
||||
- `AppSidebar`:`sessionControls` 拆成独立入参;`onOpenSession` 在非首页把行导向 `/?c=<id>`。
|
||||
- 外壳兜底列表按 `sortSessions` 排序。
|
||||
|
||||
## 验收(本机)
|
||||
|
||||
| 项 | 结果 |
|
||||
| --- | --- |
|
||||
| tsc | 0 错 |
|
||||
| lint | 0 error;警告数与基线一致(改动文件里多出的一条已清掉) |
|
||||
| 前端全量 | 5262 条;失败 28 条,全部在基线 29 条之内(DB / 部署套件,无 Docker);无测试名消失,新增 3 条 |
|
||||
| Python 快速门 | 通过(临时环境;字体切片测试需补装 brotli,属环境) |
|
||||
| `next build` | `/` 仍 Static |
|
||||
| 首屏 gzip | 679693 → 681714(+0.30%);同一脚本量基线和新版 |
|
||||
| 首页 useState / useRef | 未增加(`home-shell-growth-contract` 通过) |
|
||||
|
||||
## 改动的既有断言
|
||||
|
||||
三栏说明都写在测试文件里:`chat-session-url.test.ts`(删除跳下一条)、`order-batch.test.ts`(读新文件)、`home-sidebar-rerender.test.tsx`(重命名改为翻页验证稳定包装)、`session-list-lifecycle.test.tsx`(入参)。`home-surface.ts`、`tests/test_session_management_entrypoints.py`、`tests/test_supabase_user_data_contract.py` 的首页文件清单加上两个新文件。
|
||||
|
||||
## 环境缺口
|
||||
|
||||
- 无登录态浏览器:真机清单见 `docs/testing/session-shell-116-20261028.md`。
|
||||
- 本机工作区与 `.venv` 曾被其他会话清理腾盘,重建后验收;不影响结果。
|
||||
@@ -541,4 +541,5 @@
|
||||
| `TASK-lagna-precheck-fix-20261027.md` | — | **#112 第 1 次打回**:已有进行中的校正时点链接报冲突(应走首页续上);别人的星盘页不该给校正链接 | 待执行 | `codex/lagna-precheck-20261027` |
|
||||
| `TASK-voice-reading-20261027.md` | `PROGRESS-voice-reading-20261027.md` | **#113 选 R1 C1**:报告前面加一段模型写的「解读」(八节,素材只用引擎事实,失败不影响报告);对话依据写进正文、宫位带生活领域、时间最多三件(BUG-1460、BUG-1461) | Claude 直接执行,待验收 | `codex/voice-reading-20261027` |
|
||||
| — | `PROGRESS-chart-ui-114-20261027.md` | **#114 星盘页一页铺开**:南北印度可点盘、检视、深读四页、对话右栏完整盘面(直接执行) | 待推 staging | `codex/chart-ui-114-20261027` |
|
||||
| — | `PROGRESS-session-shell-116-20261028.md` | **#116 侧栏会话菜单搬进外壳**:每个页面都能「…」和拖动(直接执行,BUG-1467) | 已推 staging | `codex/session-shell-116-20261027` |
|
||||
| `TASK-home-crash-saved-people-20261027.md` | `PROGRESS-home-crash-saved-people-20261027.md` | **#115 首页崩溃**:存过别人的账户一进首页就「页面出错了」——人物列表的资料缺两个字段,启程引导一读就报错;入口补齐默认值(BUG-1464) | 待验收 | `codex/home-crash-saved-people-20261027` |
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
# 侧栏会话菜单搬进共用外壳 · 真机清单(issue #116,BUG-1467)
|
||||
|
||||
需要登录后的真实账户;用测试账户,不要用别人的资料。手机(iPhone Safari)和电脑(Chrome)各走一遍。
|
||||
|
||||
| # | 操作 | 应该看到 |
|
||||
| --- | --- | --- |
|
||||
| 1 | 打开「星盘」页,看侧栏会话 | 电脑:鼠标移到一行上出现「…」;手机:「…」常驻 |
|
||||
| 2 | 星盘页,点「…」→ 收藏 | 这条移到「收藏」组;刷新后仍在 |
|
||||
| 3 | 星盘页,「…」→ 重命名,改一个名字 | 标题立刻变;切到首页,名字一样 |
|
||||
| 4 | 星盘页,「…」→ 删除 | 先弹「删除聊天记录?」确认框;点取消什么都不变 |
|
||||
| 5 | 再删一次,点「确认删除」 | 这一行消失;回到首页列表里也没有 |
|
||||
| 6 | 星历页,按住一行拖到另一行下面(手机长按约 0.25 秒再拖) | 松手后停在新位置;切到首页,顺序一样;刷新后仍在 |
|
||||
| 7 | 拖完松手 | 不会顺带打开那条对话 |
|
||||
| 8 | 报告页,「…」→ 转发 | 提示「已复制当前聊天」;粘贴出来有完整对话内容 |
|
||||
| 9 | 档案页,点一条会话 | 回到首页并打开这一条 |
|
||||
| 10 | 首页打开一条对话,在首页删掉它 | 跳到下一条(或新对话),不留空白 |
|
||||
| 11 | 首页正在生成回答时,看其他行的「…」 | 暂时点不了,回答结束后恢复 |
|
||||
| 12 | 断网后在星盘页删除一条 | 行先消失,随后退回原样并提示删除失败 |
|
||||
| 13 | 退出登录,打开星盘页 | 侧栏没有会话菜单,底部是「去登录」 |
|
||||
Reference in New Issue
Block a user