Files
2026-07-18 12:39:55 +08:00

3.9 KiB
Raw Permalink Blame History

调研记录

用户需求

  • 顶部标题旁放置左侧菜单收起/展开按钮。
  • 固定收起后仍保留一条窄侧边触发区。
  • 鼠标移入触发区时侧栏以悬浮层临时展开,鼠标移出后自动收回。
  • 先完成通用功能,再兼容现有主题。

视觉输入

  • 参考截图: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 的现有主题契约包含 gildedwasteland 等侧栏断言,新增共享交互需避免破坏这些移动端规则。
  • 无障碍要求:顶部按钮需提供可访问名称、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;暗色主题统一提高悬浮层阴影,gildedwasteland 分别补暖铜和暗金触发轨,避免共享轨道破坏主题质感。

浏览器证据

  • Firefox 152headless + geckodriver在 1440 桌面精细指针下:展开侧栏宽 280px、正文起点 x=280固定收起后侧栏范围 x=-266..14、正文起点 x=14hover 后侧栏恢复 x=0..280,正文仍保持 x=14移出与刷新后均恢复固定收起。
  • 按钮桌面状态从 aria-expanded=true / 收起左侧菜单 正确切到 false / 固定展开左侧菜单;缓存资源实际加载 20260718-sidebar-collapse-1
  • wasteland 1672 视口截图确认 316px 暗金侧栏悬浮完整展开并覆盖正文而不推动正文;washi 收起/悬浮截图确认轨道和层级正常。
  • 500px 窄屏下沿用移动抽屉:关闭时侧栏位于视口外,打开后 aria-expanded=true 且遮罩显示,点击侧栏外坐标后关闭;横向溢出均为 0。
  • Firefox headless 普通窗口接口的内容区最小宽度为 500px下一轮使用 WebDriver BiDi setViewport 补测精确 390px。
  • WebDriver BiDi 稳态验收覆盖全部 11 个现有主题10 个主题侧栏宽 280pxwasteland 为 316px每个主题收起右边界均为 x=14、hover 左边界均为 x=0、正文起点保持 x=14、横向溢出为 0。
  • 键盘 :focus-within 在 1440×900 下完整展开侧栏而不改变固定状态;精确 1672×941、500×844、390×844 均通过。
  • 宽屏无 hover / 无精细指针的真实浏览器边界:即使本地持久化值为收起,侧栏仍完整显示,按钮隐藏且 aria-expanded=true,视觉与无障碍状态一致。
  • 独立终审在媒体状态机修订后通过,未发现剩余中高风险问题。