5.5 KiB
5.5 KiB
B02 交付 01:推荐技能安装状态与重复入口
日期:2026-10-21(Asia/Shanghai)。状态:源码已实现,离线自测通过,Windows UI 待验收。
- 接单基线:
9f1e583e233d176868a54b66a4a14ff3d19efb60。 - 受测代码 SHA:
14a1354c95a2081fb32e36917a1b05873b2a662b。 - 需求:B02-需求,YC-005 / YC-006;不改变 B01 的范围或验收结论。
- 修改 RecommendedSkills、SkillsPage、推荐局部 CSS 和测试;不改恢复源码、身份模型、下载/安装后端、权限或真实用户技能。
逐项实现与边界
| AC | 实现与验证 |
|---|---|
| AC5.1 | current 卡片传入 installed,使用原动作槽 .sm-use-btn / UseSkillIcon;不渲染 Plus 或添加按钮,不再保留卡片下方重复使用动作。DOM 已验证 |
| AC5.2 | 复用已有 REA 恢复卡片/图标与 24×24 槽、16×16 SVG;局部适配浅深 hover/focus/disabled。实际浏览器计算样式/截图未通过执行,不能宣称像素一致 |
| AC5.3 | 保留进度与宿主更新通知;安装后切 current,重开、外部安装/卸载更新已有 state。新 React DOM 夹具验证 |
| AC5.4 | 身份比对保持原逻辑,仍区分禁用、仅模型调用、损坏、同名本地、版本/来源不同、本地修改、workspace。不同来源且损坏仍是同名冲突/替换,不伪装成已安装推荐 |
| AC5.5 | 卡片与详情改为更新/替换/修复明确动作,保留已有来源和覆盖确认;补 current 防护,外部安装完成后旧确认也不发重复安装。后端确认、覆盖与工作区保护未放宽 |
| AC5.6 | 使用保持既有 draft callback,不自动发送;禁用先启用,失败不进入草稿;不可调用 current 禁用使用按钮且不恢复安装按钮。成功 toast 的使用动作保留(已有证据),卡片下方重复动作移除 |
| AC6.1 | 删除 footer DOM、专用 CSS 与 onViewInstalled prop,不是 CSS 隐藏 |
| AC6.2 | 保留顶部已安装导航及计数,进入/返回/重开 DOM 验证;原已安装搜索逻辑未修改,不声称新增推荐搜索功能 |
| AC6.3 | 推荐错误/空目录移除重复入口,新增重试加载;SkillHub/套件不可用分支改为提示使用顶部入口,不留重复按钮 |
| AC6.4 | 旧 UI 脚本改用顶部导航,断言 footer 不存在及 current 使用槽;保留安装确认/进度/取消/外部事件/旧帧等回归 |
现有 source manifest 的 WorkBuddy 5.8.2 与 REA Evidence 范围沿用需求文档;本轮未新取原版证据,不将当前未确认版本或不完整 REA 提取当作新样式结论。
实测结果
完整离线证据、45 项 DOM 报告、原生环境失败。Linux x64,Node 24.19.0、npm 11.9.0、jsdom 30.1.3;复用已安装依赖,无新增依赖或锁文件变化。
npm run build:退出 0,包含类型检查与三端构建。YCODE_TEST_DOM_MODULE=<已安装jsdom路径> npm run test:recommended-skills:dom:退出 0,45 项真实 React DOM/受控宿主断言通过。npm run test:recommended-skills:退出 0,受控后端检查通过;真实发布包夹具不存在,相关 real-package 项明确跳过,不能因脚本随后通用 PASS 行误报真实包验证通过。npm run test:composer-capabilities、设置 DOM 环境后的npm run test:alignment:均退出 0;SDK 部分为受控/mock,不启动真实 CLI/模型。node scripts/test-recommended-skills-dom.mjs --build-only:退出 0,仅编译夹具,不验证浏览器。npm run test:recommended-skills:ui:退出 1,DBus socket 权限与无 X server/DISPLAY 导致 Electron 初始化失败,未进入 renderer;没有绕过限制。脚本去掉原有禁 sandbox 参数,并新增 current 默认/hover/focus、浅深色计算样式及截图采集,须在可用环境重新执行。check:tokens:退出 1,仍为相同 6 个既存失败文件;recommended-flow 裸 px 22→21、skills-host 46→45,无新增漂移,不刷新 baseline。- 独立复审完成:14 项身份矩阵、45 项 DOM、语法/diff 检查通过,无生产代码阻塞发现。
本轮没有调用模型、网络下载技能、访问用户真实技能或原版应用。Windows、窄窗、实际 computed style、像素和完整真实应用安装/使用端到端结果仍未验证;离线 45 项不等于这些验证通过。
验收入口
在固定代码 SHA 的独立检出按协作流程安装并构建;任何完整应用启动必须使用全新隔离 YCODE_USER_DATA_DIR,不要复用正式数据。受控 UI 脚本自建临时 userData 和 mock IPC,不下载真实技能。
npm ci --legacy-peer-deps
npm run build
npm install --prefix .tmp/b02-dom --ignore-scripts --no-audit --no-fund jsdom@30.1.3
$env:YCODE_TEST_DOM_MODULE = Join-Path $PWD '.tmp/b02-dom/node_modules/jsdom'
npm run test:recommended-skills:dom
npm run test:recommended-skills
npm run test:composer-capabilities
npm run test:alignment
npm run test:recommended-skills:ui
重点复核安装前后动作槽、已安装卡壳、浅深/hover/focus/窄窗、禁用启用失败、版本/来源/本地修改区分、确认取消/重复点击、外部卸载/重装、目录错误重试,以及顶部导航计数和底部重复入口不存在。完整宿主草稿不自动发送须继续保持。
本交付记录可能在源码之后单独提交。只有远端 SHA 核对成功后才算 Git 交接完成;交付完成后推送窗口交回验收端,不预填验收通过。