Files
cc-web/.planning/sidebar-collapse-hover/task_plan.md
2026-07-18 12:39:55 +08:00

2.8 KiB
Raw Blame History

左侧菜单收起与悬浮展开

目标

在不改变现有会话业务逻辑的前提下,为桌面端左侧菜单增加固定收起/展开按钮;收起后保留窄触发条,鼠标移入临时悬浮展开,移出恢复收起,并兼容所有现有主题。

阶段

  1. COMPLETE — 建立基线并定位侧栏、标题栏与主题入口
  2. COMPLETE — 实现固定收起状态与顶部标题旁按钮
  3. COMPLETE — 实现窄触发条和移入悬浮展开、移出收回
  4. COMPLETE — 补齐现有主题及桌面/窄屏样式兼容
  5. COMPLETE — 增加侧栏交互、无障碍与主题契约回归测试
  6. COMPLETE — 执行语法、专项回归和全量相关测试
  7. COMPLETE — 使用真实浏览器验收多主题与关键交互状态

关键决策

  • 固定状态和悬浮预览状态分离,悬浮不修改用户固定选择。
  • 功能层使用共享 DOM/JS/CSS主题层只覆盖语义变量或受主题 ID 限定的视觉声明。
  • 移动端沿用现有响应式侧栏逻辑,避免桌面悬浮规则破坏触屏操作。
  • 顶部按钮提供可访问名称、aria-expanded、键盘原生激活与可见焦点;悬浮触发条不进入 Tab 顺序,避免 hover-only 交互阻断键盘用户。

错误记录

  • 第一次把共享侧栏交互层移动到 CSS 文件末尾时,补丁上下文误用了相邻的暗金主题选择器,未命中且未产生文件改动;随后按精确边界重新移动。
  • 首轮旧主题专项回归因 gilded / wasteland 契约仍断言旧 cache-bust URL 而失败;同步更新为本次版本后重跑。
  • 第二轮 wasteland 回归识别到新增共享暗色 :is(...) 未列出 gilded,违反既有“共享暗色选择器包含全部暗色主题”契约;已纳入后再由专属变量覆盖暖色阴影。
  • 首轮 Firefox headless 验收会话默认报告无精细指针,桌面按钮按媒体查询隐藏并导致 WebDriver 点击失败;改为在桌面验收会话显式模拟 fine + hover 指针能力。
  • 第二轮 Firefox 已完成主要状态测量,但 WebDriver 点击移动遮罩时选择了被侧栏覆盖的元素中心点并被拦截;改用侧栏外 x=350 的真实指针点击验证关闭。
  • 独立终审发现 JS 的移动输入判断与桌面收起 CSS 能力条件不完全一致,宽屏无 hover 设备可能出现视觉与 aria 状态不一致;拆分 drawer / desktop-collapse 媒体对象并与 CSS 对齐。
  • 状态机修订后首轮 sidebar-collapse 回归仍匹配旧 isMobileInputMode() 函数名而失败;断言同步为 drawer → desktop-collapse 两分支顺序后重跑。

完成结论

  • 7 个阶段全部完成;独立终审复核通过。
  • 无新增主题、资产或远程运行时依赖;所有现有主题共用功能层,富视觉主题仅覆盖轨道视觉。