
Jesse_ChenandClaude Fable 5.1
d9d347236f
refactor(ui): 侧栏统一成一个组件,次级页共享外壳,跳转不再整页刷新
BUG-744 / BUG-745 / BUG-746,任务书 TASK-sidebar-unify-20260916。
T1 侧栏只剩一个组件。`AppSidebar` 收编次级页那份另写的侧栏:会话操作与
账户菜单收进可选的 `controls`,不传就渲染只读模式。只读行仍是同一个
`SidebarSessionRow`、同一套 `.session-row > .session-main` 标记,只是
`.session-main` 是 `<Link>`、不渲染菜单按钮,并用 `data-readonly="true"`
去掉那一列从不使用的 44px 空位;页脚是同一个 56px `.profile-trigger`,
渲染成去 `/` 的链接。只读模式只少菜单按钮、chevron、账户菜单三样。
`app-nav-rail.tsx`、`use-nav-rail.ts` 与 `.nav-rail-*` 两段 CSS 删除。
T2 四个次级路由移进 `app/(secondary)/` 路由组,`layout.tsx` 承载
`SidebarProvider + AppSidebar(只读) + SidebarInset`。`SecondaryShell` 拆剩
46px 顶栏并改名 `SecondaryHeader`,14 处调用同步。路由组不进 URL,四个
地址与四个渲染标记均未变。
T3 `sidebar-data-cache.ts`:模块级、按账户 id 键、60 秒的内存缓存,同步读
再后台刷新,不落 localStorage。`use-session-management.ts` 的新建 / 重命名 /
删除 / 归档 / 收藏成功后失效,401 清空。
T4 三个页面项改 `<SidebarMenuLink href=…>` 客户端跳转,`persistLoginSessionReturn()`
保留在 `onClick` 里,`/login` 仍是硬跳转。顺带删掉从未被调用的死 prop
`onOpenReports`;它删掉后 `page.tsx` 的 `router` 再无消费者,`useConsultationRun`
里同样解构成 `_router` 的死参数一并删。
T5 折叠状态存 localStorage 的 `sidebar_state`(不用 cookie:`/`、`/chart`、
`/ephemeris` 都是 Static,服务端读 cookie 会让三条路由掉出静态渲染)。移动端
抽屉不记。整页加载首帧仍可能闪一下,属让步顺序第 1 条,写在 BUG-746 与真机清单。
`Home()` 的 useState 36 / useRef 37 均未增长,`page.tsx` 净删 1 行。
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-16 11:23:11 +00:00
..
2026-08-31 19:57:08 +08:00
2026-09-06 12:37:21 +08:00
2026-09-07 14:19:21 +08:00
2026-08-08 17:29:17 +08:00
2026-09-16 18:35:27 +08:00
2026-09-03 23:57:27 +08:00
2026-08-29 09:44:53 +08:00
2026-09-07 12:18:50 +08:00
2026-08-23 17:02:06 +08:00
2026-08-15 07:06:19 +08:00
2026-09-06 15:16:18 +08:00
2026-08-19 19:40:50 +08:00
2026-09-15 14:48:03 +08:00
2026-09-03 23:22:50 +08:00
2026-08-07 12:07:57 +08:00
2026-08-17 18:42:54 +08:00
2026-08-22 20:48:01 +08:00
2026-09-04 00:26:57 +08:00
2026-07-21 16:06:30 +08:00
2026-07-19 10:39:47 +08:00
2026-07-20 14:45:08 +08:00
2026-08-21 15:29:58 +08:00
2026-07-20 14:58:57 +08:00
2026-07-19 09:12:45 +08:00
2026-07-19 09:12:45 +08:00
2026-07-20 14:58:57 +08:00
2026-07-19 09:12:45 +08:00
2026-07-19 04:38:20 +08:00
2026-07-21 22:16:18 +08:00
2026-07-19 19:40:37 +08:00
2026-07-19 04:38:20 +08:00
2026-07-19 04:38:20 +08:00
2026-07-19 04:13:12 +08:00
2026-07-21 22:16:18 +08:00
2026-07-19 09:12:45 +08:00
2026-07-19 14:48:02 +08:00
2026-07-19 08:25:33 +08:00
2026-07-19 08:46:59 +08:00
2026-08-31 05:50:17 +08:00
2026-07-20 01:37:06 +08:00
2026-07-21 22:16:18 +08:00
2026-07-19 06:42:17 +08:00
2026-07-25 11:50:41 +08:00
2026-07-19 22:23:29 +08:00
2026-07-19 04:13:12 +08:00
2026-07-19 07:20:40 +08:00
2026-07-19 06:42:17 +08:00
2026-07-21 16:06:30 +08:00
2026-07-19 10:12:18 +08:00
2026-07-19 22:23:29 +08:00
2026-07-19 10:12:18 +08:00
2026-07-18 18:40:23 +08:00
2026-07-19 20:24:44 +08:00
2026-07-21 16:06:30 +08:00
2026-07-18 18:40:23 +08:00
2026-09-07 12:18:50 +08:00
2026-07-19 06:42:17 +08:00
2026-09-03 23:49:42 +08:00
2026-09-03 16:33:46 +08:00
2026-09-04 00:26:57 +08:00
2026-07-20 14:58:57 +08:00
2026-07-25 01:17:14 +08:00
2026-07-19 07:20:40 +08:00
2026-07-20 14:58:57 +08:00
2026-07-19 08:46:59 +08:00
2026-09-04 00:26:57 +08:00
2026-07-20 01:37:06 +08:00
2026-07-19 06:42:17 +08:00
2026-07-20 14:58:57 +08:00
2026-07-19 22:23:29 +08:00
2026-09-03 23:49:42 +08:00
2026-09-03 23:49:42 +08:00
2026-09-04 00:26:57 +08:00
2026-07-19 06:42:17 +08:00
2026-07-19 08:25:33 +08:00
2026-07-19 07:20:40 +08:00
2026-08-07 12:55:32 +08:00
2026-07-19 06:42:17 +08:00
2026-07-19 07:20:40 +08:00
2026-07-19 22:23:29 +08:00
2026-09-04 02:16:00 +08:00
2026-08-21 15:29:58 +08:00
2026-07-21 22:16:18 +08:00
2026-07-19 07:20:40 +08:00
2026-07-19 07:20:40 +08:00
2026-07-19 08:25:33 +08:00
2026-07-19 06:42:17 +08:00
2026-07-20 15:55:59 +08:00
2026-08-30 11:19:50 +08:00
2026-09-01 21:38:21 +08:00
2026-09-06 18:29:51 +08:00
2026-09-15 22:51:15 +08:00
2026-09-15 16:27:50 +08:00
2026-09-15 22:51:15 +08:00
2026-09-15 22:51:15 +08:00
2026-09-16 00:22:00 +08:00
2026-09-16 08:06:12 +00:00
2026-09-15 22:51:15 +08:00
2026-09-15 16:27:50 +08:00
2026-09-15 12:27:16 +08:00
2026-08-23 01:49:05 +08:00
2026-09-02 04:29:01 +00:00
2026-09-02 04:29:01 +00:00
2026-09-01 21:38:21 +08:00
2026-08-17 14:16:05 +08:00
2026-09-01 19:51:19 +08:00
2026-07-21 11:58:42 +08:00
2026-09-15 17:10:53 +08:00
2026-09-16 07:38:36 +08:00
2026-08-17 18:42:54 +08:00
2026-08-06 12:52:05 +08:00
2026-08-17 14:16:05 +08:00
2026-07-15 22:23:17 +08:00
2026-08-23 14:38:50 +08:00
2026-09-09 17:38:08 +08:00
2026-08-31 09:59:53 +08:00
2026-09-07 09:10:37 +08:00
2026-08-18 17:47:02 +08:00
2026-09-15 12:27:16 +08:00
2026-08-22 09:10:47 +08:00
2026-09-06 15:16:18 +08:00
2026-08-06 20:15:08 +08:00
2026-08-21 15:29:58 +08:00
2026-08-18 15:44:19 +08:00
2026-07-21 16:56:20 +08:00
2026-09-07 09:10:37 +08:00
2026-08-23 17:02:06 +08:00
2026-09-16 07:38:36 +08:00
2026-09-03 20:58:47 +08:00
2026-09-15 12:27:16 +08:00
2026-08-17 18:10:00 +08:00
2026-08-19 15:35:38 +08:00
2026-08-22 23:47:57 +08:00
2026-09-03 16:33:46 +08:00
2026-09-15 16:40:56 +08:00
2026-09-16 08:06:12 +00:00
2026-08-06 20:15:08 +08:00
2026-08-31 03:37:44 +08:00
2026-07-16 20:59:36 +08:00
2026-08-15 23:55:57 +08:00
2026-08-17 18:42:54 +08:00
2026-09-03 16:33:46 +08:00
2026-08-15 21:52:02 +08:00
2026-08-26 20:21:49 +08:00
2026-09-15 17:10:53 +08:00
2026-09-15 17:40:17 +08:00
2026-09-06 14:34:30 +08:00
2026-09-02 04:29:01 +00:00
2026-09-06 18:29:51 +08:00
2026-08-17 18:42:54 +08:00
2026-09-06 18:29:51 +08:00
2026-09-06 15:16:18 +08:00
2026-08-07 20:03:20 +08:00
2026-09-09 15:11:00 +08:00
2026-07-18 18:40:23 +08:00
2026-08-07 18:24:16 +08:00
2026-08-31 09:59:53 +08:00
2026-08-31 04:08:20 +08:00
2026-09-04 21:33:27 +08:00
2026-08-06 12:43:10 +08:00
2026-09-04 23:09:21 +08:00
2026-08-09 00:54:55 +08:00
2026-09-07 14:19:21 +08:00
2026-09-04 23:09:21 +08:00
2026-09-04 20:10:52 +08:00
2026-08-15 05:10:37 +08:00
2026-08-30 22:59:17 +08:00
2026-09-05 11:10:44 +08:00
2026-09-06 21:46:16 +08:00
2026-09-06 21:46:16 +08:00
2026-09-07 11:08:00 +08:00
2026-09-09 15:11:00 +08:00
2026-09-07 14:19:21 +08:00
2026-09-07 11:08:00 +08:00
2026-09-03 02:07:18 +08:00
2026-09-09 03:30:15 +00:00
2026-09-09 03:30:15 +00:00
2026-08-30 22:59:17 +08:00
2026-08-30 22:59:17 +08:00
2026-08-15 05:10:37 +08:00
2026-08-06 12:43:10 +08:00
2026-09-06 21:46:16 +08:00
2026-09-06 21:46:16 +08:00
2026-09-06 21:46:16 +08:00
2026-08-15 23:28:49 +08:00
2026-08-31 10:00:03 +08:00
2026-08-15 06:04:23 +08:00
2026-08-15 06:04:23 +08:00
2026-08-06 20:15:08 +08:00
2026-09-09 17:38:08 +08:00
2026-09-06 13:08:43 +08:00
2026-09-16 07:06:57 +08:00
2026-08-15 17:50:51 +08:00
2026-09-14 23:20:15 +08:00
2026-09-16 06:44:49 +00:00
2026-08-12 21:21:26 +08:00
2026-07-25 11:50:41 +08:00
2026-09-16 07:06:57 +08:00
2026-09-15 14:48:03 +08:00
2026-09-15 14:48:03 +08:00
2026-09-14 18:23:54 +08:00
2026-09-15 17:10:53 +08:00
2026-09-04 12:46:10 +08:00
2026-09-16 18:35:27 +08:00
2026-09-07 10:03:28 +08:00
2026-08-07 18:24:16 +08:00
2026-09-07 09:10:37 +08:00
2026-09-09 15:11:00 +08:00
2026-09-09 18:44:14 +08:00
2026-09-04 02:11:57 +08:00
2026-09-03 23:57:27 +08:00
2026-09-15 16:40:56 +08:00
2026-09-07 11:08:00 +08:00
2026-09-06 21:46:16 +08:00
2026-09-16 07:38:36 +08:00
2026-09-06 14:34:30 +08:00
2026-09-06 14:34:30 +08:00
2026-09-06 14:34:30 +08:00
2026-08-06 20:15:08 +08:00
2026-09-06 14:34:30 +08:00
2026-09-06 19:22:43 +08:00
2026-09-06 14:34:30 +08:00
2026-09-06 18:29:51 +08:00
2026-09-16 11:23:11 +00:00
2026-09-16 11:23:11 +00:00
2026-08-19 10:25:55 +08:00
2026-08-21 10:29:43 +08:00
2026-09-15 12:27:16 +08:00
2026-09-09 17:38:08 +08:00
2026-09-02 04:29:01 +00:00
2026-08-11 16:22:02 +08:00
2026-08-29 12:12:06 +00:00
2026-08-21 15:29:58 +08:00
2026-07-22 00:07:42 +08:00
2026-07-16 20:59:36 +08:00