3.9 KiB
3.9 KiB
调研记录
用户需求
- 顶部标题旁放置左侧菜单收起/展开按钮。
- 固定收起后仍保留一条窄侧边触发区。
- 鼠标移入触发区时侧栏以悬浮层临时展开,鼠标移出后自动收回。
- 先完成通用功能,再兼容现有主题。
视觉输入
- 参考截图:
sessions/_attachments/1c730846-9ff5-4b5e-a522-afdd2c5aa9e0.png。 - 截图显示标题位于主内容顶栏左侧,左侧菜单与主内容之间有明确竖向边界。
- 本任务不新增主题和图片资产,截图仅用于按钮位置与侧栏层级参考。
工程基线
codebase-memory-mcp项目home-cc-web索引状态为ready,节点 3883、边 8420。- 任务开始时
git status --short无输出,工作树干净。 - 主题技能要求共享功能与主题专属视觉分层,并在真实浏览器覆盖动态状态和多视口。
- Trellis 开发者为
shiyue;当前 Trellis 任务仍是既有的07-17-gilded-wasteland-theme,按工作流规则不覆盖当前任务指针。
初步代码定位
public/app.js已有openSidebar()/closeSidebar()和触屏滑动逻辑,现状服务于移动端.open状态。scripts/regression.js的现有主题契约包含gilded、wasteland等侧栏断言,新增共享交互需避免破坏这些移动端规则。- 无障碍要求:顶部按钮需提供可访问名称、
aria-expanded、原生键盘激活与可见焦点;窄触发条不进入 Tab 顺序。 public/index.html已有#menu-btn,位置正好在#chat-title之前;无需新增第二个按钮。#menu-btn当前只在max-width: 768px显示并切换.sidebar.open,桌面端可复用同一按钮切换新的.app.sidebar-collapsed固定状态。- 桌面收起可通过“完整宽度侧栏 + 负右外边距 + translateX”仅占用窄轨道宽度;hover 时只恢复 transform,因布局占位不变,不会推动正文。
- 主题侧栏宽度统一来自
--sidebar-width,包括暗金荒野的 316px;共享几何规则应继续引用变量,主题只需补触发轨颜色/阴影。 - 通用浅色主题直接继承各自的
--bg-secondary/--border-color/--accent;暗色主题统一提高悬浮层阴影,gilded与wasteland分别补暖铜和暗金触发轨,避免共享轨道破坏主题质感。
浏览器证据
- Firefox 152(headless + geckodriver)在 1440 桌面精细指针下:展开侧栏宽 280px、正文起点 x=280;固定收起后侧栏范围 x=-266..14、正文起点 x=14;hover 后侧栏恢复 x=0..280,正文仍保持 x=14;移出与刷新后均恢复固定收起。
- 按钮桌面状态从
aria-expanded=true / 收起左侧菜单正确切到false / 固定展开左侧菜单;缓存资源实际加载20260718-sidebar-collapse-1。 wasteland1672 视口截图确认 316px 暗金侧栏悬浮完整展开并覆盖正文而不推动正文;washi收起/悬浮截图确认轨道和层级正常。- 500px 窄屏下沿用移动抽屉:关闭时侧栏位于视口外,打开后
aria-expanded=true且遮罩显示,点击侧栏外坐标后关闭;横向溢出均为 0。 - Firefox headless 普通窗口接口的内容区最小宽度为 500px,下一轮使用 WebDriver BiDi
setViewport补测精确 390px。 - WebDriver BiDi 稳态验收覆盖全部 11 个现有主题:10 个主题侧栏宽 280px,
wasteland为 316px;每个主题收起右边界均为 x=14、hover 左边界均为 x=0、正文起点保持 x=14、横向溢出为 0。 - 键盘
:focus-within在 1440×900 下完整展开侧栏而不改变固定状态;精确 1672×941、500×844、390×844 均通过。 - 宽屏无 hover / 无精细指针的真实浏览器边界:即使本地持久化值为收起,侧栏仍完整显示,按钮隐藏且
aria-expanded=true,视觉与无障碍状态一致。 - 独立终审在媒体状态机修订后通过,未发现剩余中高风险问题。