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

38 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 左侧菜单收起与悬浮展开
## 目标
在不改变现有会话业务逻辑的前提下,为桌面端左侧菜单增加固定收起/展开按钮;收起后保留窄触发条,鼠标移入临时悬浮展开,移出恢复收起,并兼容所有现有主题。
## 阶段
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 个阶段全部完成;独立终审复核通过。
- 无新增主题、资产或远程运行时依赖;所有现有主题共用功能层,富视觉主题仅覆盖轨道视觉。