docs(B02): deliver installed skill card changes and bounded test evidence
This commit is contained in:
1 parent
14a1354c95
commit
0fbc1616e5
4 files changed
+393
No files matched your search
@@ -0,0 +1,60 @@
|
||||
# B02 交付 01:推荐技能安装状态与重复入口
|
||||
|
||||
日期:2026-10-21(Asia/Shanghai)。状态:**源码已实现,离线自测通过,Windows UI 待验收**。
|
||||
|
||||
- 接单基线:`9f1e583e233d176868a54b66a4a14ff3d19efb60`。
|
||||
- **受测代码 SHA:`14a1354c95a2081fb32e36917a1b05873b2a662b`**。
|
||||
- 需求:[B02-需求](B02-需求.md),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 提取当作新样式结论。
|
||||
|
||||
## 实测结果
|
||||
|
||||
[完整离线证据](evidence/B02-delivery-01/verification.txt)、[45 项 DOM 报告](evidence/B02-delivery-01/dom-report.json)、[原生环境失败](evidence/B02-delivery-01/native-ui-blocked.txt)。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,不下载真实技能。
|
||||
|
||||
```powershell
|
||||
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 交接完成;交付完成后推送窗口交回验收端,不预填验收通过。
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"result": "PASS",
|
||||
"checks": [
|
||||
"uninstalled uses add slot",
|
||||
"normal footer removed from DOM",
|
||||
"current uses installed CardFrame",
|
||||
"current removes Plus/add DOM",
|
||||
"current use occupies status slot exactly once",
|
||||
"use invokes one draft callback without installation",
|
||||
"use does not open install detail",
|
||||
"top nav count reflects installed list",
|
||||
"reopen retains current state",
|
||||
"enable failure prevents draft invocation",
|
||||
"disabled skill enabled before callback",
|
||||
"non-invocable current cannot use or reinstall",
|
||||
"outdated installed identity distinction",
|
||||
"outdated not represented as first add",
|
||||
"outdated requires explicit confirmation",
|
||||
"modified installed identity distinction",
|
||||
"modified not represented as first add",
|
||||
"modified requires explicit confirmation",
|
||||
"broken installed identity distinction",
|
||||
"broken not represented as first add",
|
||||
"broken requires explicit confirmation",
|
||||
"same-name local installed identity distinction",
|
||||
"same-name local not represented as first add",
|
||||
"same-name local requires explicit confirmation",
|
||||
"broken same-name local installed identity distinction",
|
||||
"broken same-name local not represented as first add",
|
||||
"broken same-name local requires explicit confirmation",
|
||||
"different source installed identity distinction",
|
||||
"different source not represented as first add",
|
||||
"different source requires explicit confirmation",
|
||||
"workspace is not treated as managed current",
|
||||
"external current while confirming prevents duplicate installation",
|
||||
"first install confirms provenance and scripts",
|
||||
"duplicate confirmation issues only one request",
|
||||
"real host progress rendered",
|
||||
"install success automatically switches action DOM",
|
||||
"external uninstall restores add",
|
||||
"external install blocks new add",
|
||||
"external terminal progress clears block",
|
||||
"unavailable has no duplicate installed entry",
|
||||
"catalog retry recovers in place",
|
||||
"empty catalog has no footer",
|
||||
"SkillHub has only top installed navigation",
|
||||
"套件 has only top installed navigation",
|
||||
"no uncaught renderer errors"
|
||||
],
|
||||
"calls": [
|
||||
[
|
||||
"enable",
|
||||
"user:rec"
|
||||
],
|
||||
[
|
||||
"enable",
|
||||
"user:rec"
|
||||
],
|
||||
[
|
||||
"install",
|
||||
"archify",
|
||||
{
|
||||
"operationId": "ea0ad528-74c3-4dfe-83a3-e3b848527616",
|
||||
"overwrite": false
|
||||
}
|
||||
]
|
||||
],
|
||||
"errors": [],
|
||||
"limits": "Real React in offline jsdom; callback boundary tested, not production composer dispatch. No native Chromium, computed layout, screenshot, theme/hover/focus pixels, model SDK, actual install or network."
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
Transcribed tool output (not a fresh run; no retry).
|
||||
Tool exec chunk_id: 19846a
|
||||
Command: npm run test:recommended-skills:ui
|
||||
Working directory: /workspace/scratch/0aaa9774aecc/single-package-staging/ycode
|
||||
Observed exit code: 1
|
||||
The launcher sandbox-disabling flags had been removed before this invocation.
|
||||
|
||||
npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
|
||||
|
||||
> ycode@0.0.7 test:recommended-skills:ui
|
||||
> node scripts/test-recommended-skills-ui.mjs
|
||||
|
||||
[28:1021/135441.068080:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to open socket: Operation not permitted
|
||||
(node:28) [UNDICI-EHPA] Warning: EnvHttpProxyAgent is experimental, expect them to change at any time.
|
||||
(Use `electron --trace-warnings ...` to show where the warning was created)
|
||||
[28:1021/135441.222925:ERROR:ui/ozone/platform/x11/ozone_platform_x11.cc:250] Missing X server or $DISPLAY
|
||||
[28:1021/135441.222954:ERROR:ui/aura/env.cc:257] The platform failed to initialize. Exiting.
|
||||
|
||||
Boundary: Electron failed before renderer assertions. No native UI pass, screenshots, computed-style verification, Windows theme/narrow/focus parity, or original-app 1:1 result is established by this command. No sandbox bypass or alternate native launch was attempted. Later native-script assertions were syntax-checked only.
|
||||
@@ -0,0 +1,244 @@
|
||||
B02 offline delivery evidence
|
||||
Code: 14a1354c95a2081fb32e36917a1b05873b2a662b
|
||||
Base: 9f1e583e233d176868a54b66a4a14ff3d19efb60
|
||||
Linux x64; Node24.19.0/npm11.9.0/jsdom30.1.3. No real model/SDK, original app, or real skill download.
|
||||
Native UI did not start; do not interpret DOM/build-only as layout evidence.
|
||||
Backend real-package fixture was SKIPPED despite its following generic PASS phase label.
|
||||
Independent review: 14 identity cases and 45 DOM checks passed; no blocking finding.
|
||||
|
||||
===== skills-dom-final.txt: exit 0 =====
|
||||
npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
|
||||
|
||||
> ycode@0.0.7 test:recommended-skills:dom
|
||||
> node scripts/test-recommended-skills-dom.mjs
|
||||
|
||||
{"result":"PASS","checks":45,"output":"/workspace/scratch/0aaa9774aecc/single-package-staging/ycode/.tmp/recommended-skills-dom-H0MqNz"}
|
||||
|
||||
===== backend.txt: exit 0 =====
|
||||
npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
|
||||
|
||||
> ycode@0.0.7 test:recommended-skills
|
||||
> esbuild scripts/recommended-skills-backend-regression.ts --bundle --platform=node --format=esm --external:esbuild --outfile=.tmp/recommended-skills-backend-regression.mjs --log-level=warning && node .tmp/recommended-skills-backend-regression.mjs
|
||||
|
||||
{"result":"PASS","checks":50,"phase":"archive"}
|
||||
{"result":"SKIP","phase":"real-package","reason":"published package not present in .tmp"}
|
||||
{"result":"PASS","checks":60,"phase":"real-package"}
|
||||
|
||||
===== composer.txt: exit 0 =====
|
||||
npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
|
||||
|
||||
> ycode@0.0.7 test:composer-capabilities
|
||||
> node scripts/run-composer-capabilities-regression.mjs
|
||||
|
||||
prompt-queue-regression: cap, payload, order, isolation, delivery, stop, recovery and unknown checks passed
|
||||
{
|
||||
"result": "PASS",
|
||||
"checks": [
|
||||
{
|
||||
"name": "parallel same-instance enqueues preserve exactly 19 items",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "duplicate take is serialized to one winner",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "delivering item is immutable and notify does not duplicate delivery",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "clear removes a non-delivering session queue and is idempotent",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "first enqueue after an empty queue was paused resumes a new run without unpausing existing work",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "incoming payload is validated before host side effects and persistence",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "host-rebuilt capability labels are validated before persistence",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "two queue instances cannot overwrite one another",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "corrupt queue cannot redirect or duplicate item identity",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "invalid revision, status and payload permission are rejected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "post-delivery removal failure becomes paused unknown instead of stuck delivering",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "stale owner nonce is recovered without trusting a reused PID",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "stale and expired lock files are reclaimed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "live foreign lock times out with an explicit error",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "blocked notify does not create a state revision",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "host resolver applies dispatch-time permission downgrade without mutating stored payload",
|
||||
"pass": true
|
||||
}
|
||||
]
|
||||
}
|
||||
input-composition-regression: precedence, takeover, queue preservation, task placement, toolbar and escape rules passed
|
||||
{"result":"PASS","checks":30}
|
||||
{
|
||||
"result": "PASS",
|
||||
"tests": [
|
||||
"serial model writes + frozen active turn",
|
||||
"send failure retry",
|
||||
"late result/event session isolation",
|
||||
"draft settings during first session creation",
|
||||
"nextRequestSettings whitelist"
|
||||
]
|
||||
}
|
||||
context-usage-regression: latest, previous, active-run, summary identity and failure cases passed
|
||||
{"result":"PASS","checks":36,"directory":"/workspace/scratch/0aaa9774aecc/single-package-staging/ycode/.tmp/claude-capabilities-CFQh8h"}
|
||||
npm notice
|
||||
npm notice New major version of npm available! 11.9.0 -> 12.2.0
|
||||
npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.0
|
||||
npm notice To update run: npm install -g npm@12.2.0
|
||||
npm notice
|
||||
|
||||
===== alignment.txt: exit 0 =====
|
||||
npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
|
||||
|
||||
> ycode@0.0.7 test:alignment
|
||||
> node scripts/run-alignment-regression.mjs
|
||||
|
||||
PASS model alignment: fresh/legacy migration, new/edit/default/delete/reload, valid selection (offline host fixtures)
|
||||
PASS model settings: deferred owner switch, rename mapping, addition selection, empty deletion, immutable history
|
||||
PASS session factory: first-send preference, mode preservation, invalid permission rejection (isolated ports)
|
||||
{"historyMessages":10000,"bytes":747781,"parseMs":3.0333960000000104,"storeHydrationMs":0.13541899999999885,"note":"Node parsing/store benchmark only, not browser rendering or Windows IPC performance"}
|
||||
session-composer-alignment: loading/cache/retry/races/model/permissions/modes/SSR passed
|
||||
alignment-conversation: local groups, original expanded order, question projection and truthful status passed
|
||||
A01 native MessageBubble identity aliases, immutable inputs and ordinary raw output passed
|
||||
A01 imported native card, linked dedup and unknown-position compatibility passed
|
||||
question-answer-shell: structural and recovered CSS contracts passed
|
||||
question-answer-shell: DOM hierarchy, controls linkage, click, Enter, Space and inert contracts passed
|
||||
Runtime progress, session-grant scope and approval lifecycle regressions passed
|
||||
Permission intercept static rendering passed; interactive keyboard/focus remains UI acceptance
|
||||
Claude host approval policy unit checks passed (no SDK process/application/matching verification)
|
||||
Mock SDK replay lifecycle passed: fail closed, retry, session isolation, independent mode guard
|
||||
task popconfirm DOM regression: 34 checks passed (jsdom, not pixel validation)
|
||||
question-interaction: 24 DOM behavioral checks passed
|
||||
question-identity: 30 A01 DOM checks passed (not Electron/pixel/SDK acceptance)
|
||||
completed-fold-nested: real question/tool/thinking/local-summary remount, event, keyboard and identity contracts passed
|
||||
completed-fold-native-identity: real reducer done correction, native IDs, insertion/reorder, repeated outer toggles, message isolation and legacy fallback passed
|
||||
Permission intercept DOM: 14 checks passed (not pixel/SDK verification)
|
||||
{"checks":37,"passed":true,"scope":"Isolated React DOM and CSS contracts; no native keyboard/layout/pixel acceptance"}
|
||||
npm notice
|
||||
npm notice New major version of npm available! 11.9.0 -> 12.2.0
|
||||
npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.0
|
||||
npm notice To update run: npm install -g npm@12.2.0
|
||||
npm notice
|
||||
|
||||
===== build.txt: exit 0 =====
|
||||
Successful full build tail (command includes typecheck):
|
||||
out/renderer/assets/chunk-DU6HZSFF-BPbiNeHj.js 271.07 kB
|
||||
out/renderer/assets/architectureDiagram-5GKGNRK7-o5LZFHEn.js 318.23 kB
|
||||
out/renderer/assets/katex-Y9ra-ykP.js 497.35 kB
|
||||
out/renderer/assets/texmath-Bkeg3ZLn.js 594.25 kB
|
||||
out/renderer/assets/wasm-CVjZL0jK-2Bi6p3c3.js 622.62 kB
|
||||
out/renderer/assets/cpp-9jHBA231-CtHklR8a.js 626.73 kB
|
||||
out/renderer/assets/app-BYh1ERuc.js 675.57 kB
|
||||
out/renderer/assets/emacs-lisp-DjtOxg4j-CUUa7aOE.js 780.06 kB
|
||||
out/renderer/assets/cytoscape.esm-bVGYt-iW.js 869.69 kB
|
||||
out/renderer/assets/ArtifactPierreDiff-D5xhRc5y.js 1,119.58 kB
|
||||
out/renderer/assets/chunk-FOHPRMQF-BCllzKJD.js 1,154.18 kB
|
||||
out/renderer/assets/index-K0c2JUwW.js 3,761.37 kB
|
||||
out/renderer/assets/editor.api2-dPwET-7w-BYIQ9bT3.js 4,889.23 kB
|
||||
|
||||
✓ built in 1.94s
|
||||
npm notice
|
||||
npm notice New major version of npm available! 11.9.0 -> 12.2.0
|
||||
npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.0
|
||||
npm notice To update run: npm install -g npm@12.2.0
|
||||
npm notice
|
||||
===== fixture-build.txt: exit 0 =====
|
||||
{"result":"BUILD_ONLY","output":"/workspace/scratch/0aaa9774aecc/single-package-staging/ycode/.tmp/recommended-skills-dom-Ka7Yeh","limits":"Compiled real React/CSS only; no UI execution or visual verification."}
|
||||
|
||||
===== tokens-before.txt: exit 1 =====
|
||||
npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
|
||||
|
||||
> ycode@0.0.7 check:tokens
|
||||
> node scripts/check-design-tokens.mjs
|
||||
|
||||
设计 token 漂移检查(静态)
|
||||
扫描:src/renderer/src 共 367 个文件(用时 46 ms)
|
||||
baseline:scripts/design-token-baseline.json(334 个文件)
|
||||
门禁分类:adapter 8 | core 6 | local 279(合计 293 个文件)
|
||||
合计:裸 hex=611 裸 px=2682 !important=6 --wb-* 定义=525 var(--yc-*) 使用=1642 var(--wb-*) 使用=1201
|
||||
非门禁分类:vendor 2 | recovered 22 | source 47 | tokenSource 3(合计 74 个文件,仅记录不阻塞)
|
||||
合计:裸 hex=10642 裸 px=13642 !important=920 --wb-* 定义=17966 var(--yc-*) 使用=77 var(--wb-*) 使用=19638
|
||||
非门禁相对 baseline:文件 +0;裸 hex +78 裸 px +64 !important +0 --wb-* 定义 +0 var(--yc-*) 使用 +22 var(--wb-*) 使用 -120
|
||||
|
||||
结果:失败,共 6 项:
|
||||
[新增门禁文件] src/renderer/src/capabilities/recommended-flow.css(local):裸 px=22
|
||||
[新增门禁文件] src/renderer/src/capabilities/skill-detail-shell.css(local):裸 px=21
|
||||
[回归] src/renderer/src/capabilities/skills-host.css(local):裸 px 25 → 46(+21)
|
||||
[新增门禁文件] src/renderer/src/workbuddy/composer/capability-picker.css(local):裸 hex=26,裸 px=48
|
||||
[回归] src/renderer/src/workbuddy/composer/composer.css(local):裸 hex 23 → 38(+15);裸 px 83 → 139(+56)
|
||||
[新增门禁文件] src/renderer/src/workbuddy/composer/prompt-queue.css(local):裸 hex=8,裸 px=35
|
||||
|
||||
提示:确认变更符合预期后运行 `node scripts/check-design-tokens.mjs --update-baseline` 刷新 baseline;
|
||||
否则请改用 --yc-* token、复用现有值,或去掉重复的 --wb-* 定义。
|
||||
提示(不失败,仅记录):3 个门禁文件 token 使用数上升:
|
||||
src/renderer/src/capabilities/skills-host.css(local):var(--wb-*) 使用 12 → 19(+7)
|
||||
src/renderer/src/workbuddy/composer/composer.css(local):var(--yc-*) 使用 35 → 47(+12);var(--wb-*) 使用 0 → 1(+1)
|
||||
src/renderer/src/workbuddy/conversation/conversation.css(local):var(--yc-*) 使用 0 → 4(+4)
|
||||
提示(不失败):baseline 中 8 个文件已不存在:src/renderer/src/components/ReportedRunUsage.tsx;src/renderer/src/workbuddy/subagents/SourceMemberIcon.tsx;src/renderer/src/workbuddy/subagents/SubagentCollaboration.tsx;src/renderer/src/workbuddy/subagents/SubagentDetailPanel.tsx;src/renderer/src/workbuddy/subagents/adapters.css;src/renderer/src/workbuddy/subagents/member-view.ts;src/renderer/src/workbuddy/subagents/source.css;src/renderer/src/workbuddy/subagents/theme.css
|
||||
提示:新增门禁文件 36 个且无受控计数(允许):src/renderer/src/capabilities/CapabilityMaintenance.tsx(local);src/renderer/src/capabilities/RecommendedSkills.tsx(local);src/renderer/src/capabilities/SkillAvatar.tsx(local);src/renderer/src/capabilities/SkillDetailShell.tsx(local);src/renderer/src/capabilities/SkillModalPortal.tsx(local);src/renderer/src/capabilities/skill-modal-focus.ts(local);src/renderer/src/components/SessionLoading.tsx(local);src/renderer/src/components/TaskPopconfirm.tsx(local);src/renderer/src/components/session-loading.css(local);src/renderer/src/components/task-popconfirm.css(local);src/renderer/src/components/updates/UpdateSidebarCard.tsx(local);src/renderer/src/components/updates/update-ui-model.ts(local);src/renderer/src/components/updates/update-ui-store.ts(local);src/renderer/src/components/updates/updates-ui.css(local);src/renderer/src/ui/Button.tsx(local);src/renderer/src/ui/IconButton.tsx(local);src/renderer/src/ui/Input.tsx(local);src/renderer/src/ui/Popover.tsx(local);src/renderer/src/ui/Select.tsx(local);src/renderer/src/ui/Switch.tsx(local);…(还有 16 项,详见 --json)
|
||||
|
||||
===== tokens-after.txt: exit 1 =====
|
||||
npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
|
||||
|
||||
> ycode@0.0.7 check:tokens
|
||||
> node scripts/check-design-tokens.mjs
|
||||
|
||||
设计 token 漂移检查(静态)
|
||||
扫描:src/renderer/src 共 367 个文件(用时 46 ms)
|
||||
baseline:scripts/design-token-baseline.json(334 个文件)
|
||||
门禁分类:adapter 8 | core 6 | local 279(合计 293 个文件)
|
||||
合计:裸 hex=611 裸 px=2680 !important=6 --wb-* 定义=525 var(--yc-*) 使用=1650 var(--wb-*) 使用=1209
|
||||
非门禁分类:vendor 2 | recovered 22 | source 47 | tokenSource 3(合计 74 个文件,仅记录不阻塞)
|
||||
合计:裸 hex=10642 裸 px=13642 !important=920 --wb-* 定义=17966 var(--yc-*) 使用=77 var(--wb-*) 使用=19638
|
||||
非门禁相对 baseline:文件 +0;裸 hex +78 裸 px +64 !important +0 --wb-* 定义 +0 var(--yc-*) 使用 +22 var(--wb-*) 使用 -120
|
||||
|
||||
结果:失败,共 6 项:
|
||||
[新增门禁文件] src/renderer/src/capabilities/recommended-flow.css(local):裸 px=21
|
||||
[新增门禁文件] src/renderer/src/capabilities/skill-detail-shell.css(local):裸 px=21
|
||||
[回归] src/renderer/src/capabilities/skills-host.css(local):裸 px 25 → 45(+20)
|
||||
[新增门禁文件] src/renderer/src/workbuddy/composer/capability-picker.css(local):裸 hex=26,裸 px=48
|
||||
[回归] src/renderer/src/workbuddy/composer/composer.css(local):裸 hex 23 → 38(+15);裸 px 83 → 139(+56)
|
||||
[新增门禁文件] src/renderer/src/workbuddy/composer/prompt-queue.css(local):裸 hex=8,裸 px=35
|
||||
|
||||
提示:确认变更符合预期后运行 `node scripts/check-design-tokens.mjs --update-baseline` 刷新 baseline;
|
||||
否则请改用 --yc-* token、复用现有值,或去掉重复的 --wb-* 定义。
|
||||
提示(不失败,仅记录):3 个门禁文件 token 使用数上升:
|
||||
src/renderer/src/capabilities/skills-host.css(local):var(--wb-*) 使用 12 → 19(+7)
|
||||
src/renderer/src/workbuddy/composer/composer.css(local):var(--yc-*) 使用 35 → 47(+12);var(--wb-*) 使用 0 → 1(+1)
|
||||
src/renderer/src/workbuddy/conversation/conversation.css(local):var(--yc-*) 使用 0 → 4(+4)
|
||||
提示(不失败):baseline 中 8 个文件已不存在:src/renderer/src/components/ReportedRunUsage.tsx;src/renderer/src/workbuddy/subagents/SourceMemberIcon.tsx;src/renderer/src/workbuddy/subagents/SubagentCollaboration.tsx;src/renderer/src/workbuddy/subagents/SubagentDetailPanel.tsx;src/renderer/src/workbuddy/subagents/adapters.css;src/renderer/src/workbuddy/subagents/member-view.ts;src/renderer/src/workbuddy/subagents/source.css;src/renderer/src/workbuddy/subagents/theme.css
|
||||
提示:新增门禁文件 36 个且无受控计数(允许):src/renderer/src/capabilities/CapabilityMaintenance.tsx(local);src/renderer/src/capabilities/RecommendedSkills.tsx(local);src/renderer/src/capabilities/SkillAvatar.tsx(local);src/renderer/src/capabilities/SkillDetailShell.tsx(local);src/renderer/src/capabilities/SkillModalPortal.tsx(local);src/renderer/src/capabilities/skill-modal-focus.ts(local);src/renderer/src/components/SessionLoading.tsx(local);src/renderer/src/components/TaskPopconfirm.tsx(local);src/renderer/src/components/session-loading.css(local);src/renderer/src/components/task-popconfirm.css(local);src/renderer/src/components/updates/UpdateSidebarCard.tsx(local);src/renderer/src/components/updates/update-ui-model.ts(local);src/renderer/src/components/updates/update-ui-store.ts(local);src/renderer/src/components/updates/updates-ui.css(local);src/renderer/src/ui/Button.tsx(local);src/renderer/src/ui/IconButton.tsx(local);src/renderer/src/ui/Input.tsx(local);src/renderer/src/ui/Popover.tsx(local);src/renderer/src/ui/Select.tsx(local);src/renderer/src/ui/Switch.tsx(local);…(还有 16 项,详见 --json)
|
||||
|
||||
Reference in new issue
Block a user