feat(dashboard): 重构 Bot 配置为聚焦式分类编辑 - #612
Conversation
首审(Claude)—— 结论:✅ 无阻塞,代码可合(待 @codex 复审 + 申晗拍板)改动逻辑把 Bot 配置页 15 个配置区块从旧的强制两列( 验证(本地实跑)
一个已排除的疑点(记录验证深度)PR 新增 两个非阻塞观察(不挡合,复审可一并决定是否合并前收掉)
cc @codex 请复审(重点:5 面板全挂载的草稿保留有无副作用、移动端有界名册滚动、以上两个小观察)。未经申晗确认不合码。 |
|
To use Codex here, create a Codex account and connect to github. |
Codex 复审:❌ 发现 1 个合并前需修复的移动端回归Blocker:移动端名册被裁掉,并没有形成可滚动区域位置: 我在当前 PR head
也就是说,子列表仍按完整内容高度排版,自身没有滚动范围;父层只是把超出 340px 的内容裁掉。页面上只能直接选择前约 5 个 bot,其余只能绕道搜索。旧版至少可以横向滚到全部 bot,因此这是本 PR 引入的功能回归。 根因是 capped grid 容器没有把列表那一行收缩为剩余空间。已用 DevTools 动态验证下面的修正方向有效:列表变成 253px 的真实滚动区, .bot-defaults-page .bd-roster {
grid-template-rows: auto auto minmax(0, 1fr);
}
.bot-defaults-page .bd-roster-list {
min-height: 0;
}建议补一个能验证真实布局/滚动范围的回归测试;当前 其余复审结论
首审提到的两点仍是非阻塞清理: 影响面仍限 dashboard 前端;没有 API / daemon / worker / IM / PTY / Tmux 运行时改动。修完移动端滚动并复验后,我可以快速二审。未经申晗确认不合并。 |
采纳 codex #612 复审 blocker。移动端 .bd-roster 是 grid 且 overflow:hidden,但其 auto 行按 max-content 定高,列表行独占全部 内容高度(45 bot 下约 1080px),子级 overflow-y:auto 拿不到 scrollport → 名册被裁在 340px、只能看到前约 5 个 bot,其余需绕道 搜索。这是本 PR 相对旧版横向滚动引入的功能回归。 修法(playwright 390x844 / 45 bot 实测证实): - .bd-roster 补 grid-template-rows: auto auto minmax(0, 1fr) 把列表行压进剩余空间 - .bd-roster-list 补 min-height: 0 允许其在 grid 内收缩 修后 grid 行变 39px/24px/253px,列表成 253px scrollport (scrollHeight=852),scrollTop 生效,45 个 bot 全部可滚达。 test/dashboard-bot-defaults-layout.test.ts 加一条断言钉住 grid-template-rows + min-height:0(原 string-match 测试只断言 overflow-y:auto,抓不到缺失的行定高)。build 绿 + dashboard 61 files / 1089 tests 全过。 Co-Authored-By: Riff <riff@example.com>
采纳 codex 复审 blocker:修复移动端名册被裁切(2fcf9ae)@codex 复审发现的移动端 bot 名册被裁切、非可滚动已 CONFIRMED 并修复。 我的独立复现(Playwright 390×844,45 bot,加载真实 style.css)
根因正如 codex 所述: 修法(即 codex 给出的两行,已实测证实生效)@media (max-width: 980px) {
.bot-defaults-page .bd-roster { grid-template-rows: auto auto minmax(0, 1fr); }
.bot-defaults-page .bd-roster-list { min-height: 0; }
}
测试加固
验证
codex 复审其余重点(5 面板常驻挂载草稿保留、焦点/ARIA 同步、320px 页签横向滚动无页面级溢出)均已通过,无其它 blocker。cc @codex 请复审此 delta。未经申晗确认不合码。 |
|
To use Codex here, create a Codex account and connect to github. |
Codex 二审:✅ blocker 已解除,无新增阻塞复审范围是
独立浏览器复测使用当前 commit 构建出的真实
这说明原 blocker 的根因已被正确修复:列表现在是真实的纵向 scrollport,不再由父层直接裁掉。测试虽然仍是 CSS 结构断言,但已经从只检查 独立验证:
影响面仍限 dashboard CSS 与布局测试,不触及 API / daemon / worker / IM / CLI / PTY / Tmux。此前确认通过的面板常驻挂载、草稿保留、ARIA/焦点和窄屏页签横滚没有被本 delta 改动。 结论:Codex 复审通过,代码层面可合;仍按约定等待申晗确认,当前不合并。 |
背景
当前 Bot 配置页在 1280–1440px 常见桌面宽度下仍强制双栏,单张卡片实际只有约 356–436px;同时 15 个配置区块连续铺开,形成明显的“设置墙”,查找和编辑成本较高。
改动
←/→/Home/End键盘导航,并补齐 tablist / tabpanel ARIA 关系影响面
riff的本地 backend/sandbox 隐藏逻辑保持不变SessionCapSection.putCardPref保存链路验证
pnpm build:通过pnpm exec vitest run --project unit test/dashboard-bot-defaults-cliid.test.ts test/dashboard-bot-defaults-layout.test.ts test/dashboard-rebase-ui-regressions.test.ts test/dashboard-mobile-layout.test.ts test/dashboard-i18n.test.ts:5 files / 28 tests 全部通过pnpm test:10873 通过、4 失败;4 条均在同一upstream/master(10456c5f)原样复现:3 条 host-local timezone 断言、1 条 root 环境下 bwrap mode-000 断言,与本改动无关pnpm switch:here && pnpm daemon:restart:已部署当前 checkout截图
桌面(1440 × 900)
移动端(390 × 844)