chore: rebuild release package

This commit is contained in:
shiyue
2026-07-18 12:39:55 +08:00
parent a76de06c47
commit b90f5e1e44
14 changed files with 512 additions and 13 deletions

View File

@@ -0,0 +1,44 @@
# 调研记录
## 用户需求
- 顶部标题旁放置左侧菜单收起/展开按钮。
- 固定收起后仍保留一条窄侧边触发区。
- 鼠标移入触发区时侧栏以悬浮层临时展开,鼠标移出后自动收回。
- 先完成通用功能,再兼容现有主题。
## 视觉输入
- 参考截图:`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 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 个主题侧栏宽 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`,视觉与无障碍状态一致。
- 独立终审在媒体状态机修订后通过,未发现剩余中高风险问题。

View File

@@ -0,0 +1,19 @@
# 进度日志
- 2026-07-18确认交互语义读取仓库、Trellis、计划跟踪及主题架构规范。
- 2026-07-18确认代码索引可用且工作树干净建立持久化计划。
- 2026-07-18独立计划审查补充无障碍要求后通过完成侧栏、顶栏按钮、移动端抽屉和主题覆盖入口定位。
- 2026-07-18复用标题旁现有菜单按钮实现桌面固定状态、本地持久化、移动端原行为与动态无障碍状态JS 语法检查通过。
- 2026-07-18加入 14px 窄触发轨、hover/focus-within 临时展开和 reduced-motion 降级;共享交互层置于全部主题样式之后。
- 2026-07-18补齐浅色/暗色语义适配、gilded 暖铜轨、wasteland 暗金轨,并更新 CSS/JS cache bust移动端规则保持隔离。
- 2026-07-18新增 sidebar-collapse 专项回归目标,覆盖 DOM、无障碍、持久化、响应式分支、轨道交互、主题隔离与 cache bust专项回归通过。
- 2026-07-18旧主题首轮回归暴露 cache-bust 断言未同步,已更新 gilded/wasteland 契约,待重跑。
- 2026-07-18第二轮回归补齐共享暗色选择器中的 gilded再保留其后置暖色阴影覆盖。
- 2026-07-18第三轮统一验证通过app/regression 语法、sidebar-collapse、gilded-theme、wasteland-theme、全量 regression、git diff --check。
- 2026-07-18Firefox headless 首轮因默认无精细指针而无法进入桌面交互分支,未产生产品侧失败结论;准备使用显式桌面指针能力重测。
- 2026-07-18Firefox 第二轮已执行主要桌面/主题/移动状态,最终遮罩关闭因 WebDriver 中心点落在侧栏下被拦截;改用侧栏外坐标重测。
- 2026-07-18Firefox 第三轮完成 washi 1440 展开/收起/hover/移出/刷新持久化、wasteland 1672 主题悬浮、gilded/wasteland 500 窄屏抽屉与遮罩关闭;截图已人工复核,横向溢出为 0。
- 2026-07-18独立终审要求收敛 JS/CSS 媒体状态机;已拆分移动抽屉与桌面可收起模式,并明确 aria-expanded 只表达固定/抽屉状态,临时预览不修改它。
- 2026-07-18媒体状态机修订后的首轮专项回归因旧函数名正则失败已同步测试契约。
- 2026-07-18修订后再次通过语法、sidebar-collapse、gilded-theme、wasteland-theme、全量 regression 与 git diff --check。
- 2026-07-18Firefox BiDi 最终验收通过全部 11 个主题、键盘 focus、1672/1440/500/390 视口、移动遮罩关闭及 wide-no-hover 边界;独立终审通过,任务完成。

View File

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