diff --git a/.ua/backlog.json b/.ua/backlog.json index 64fa847..7707d49 100644 --- a/.ua/backlog.json +++ b/.ua/backlog.json @@ -2357,6 +2357,15 @@ "status": "done", "notes": "reveal(col, cells, fallback) 三参:findIndex 到 is-active 就用它,否则退到 clamp(fallback, 0, len-1);打开时 fallback 取 new Date() 的 getHours() 与 floor(getMinutes()/step)(步长大于 1 时分列下标与分钟数不同,必须折算);manifest 步骤 2 同步「还没选过时停在此刻」;时间源用系统时钟不引额外状态,选中后仍以 value 为准", "domain": "tune" + }, + { + "id": "g219", + "title": "verify 增加重复 @keyframes 检测", + "motivation": "刚才把 7 份复制的浮层入场动画合并掉了,但没有门禁阻止下一个人再复制一份:帧体完全相同、只改名字的动画会让方向与时长各写各的(翻转态朝反方向入场就是这么来的),而 CSS 层面完全合法,review 也容易漏。", + "acceptance": "ua verify 新增 checkDuplicateKeyframes:对皮肤包样式表里每个 @keyframes 取帧体(剥注释、空白归一)比对,出现相同帧体即报错并指出两个动画名;负向自检(临时追加一份同体动画)必须报错;顺带清掉现存重复(ua-switch-spin 与 ua-spin 帧体相同,开关转圈改为复用 ua-spin);AGENTS.md 同步该职责;npm run check 全绿。", + "status": "done", + "notes": "checkDuplicateKeyframes 接在 checkSkinCss 之后(同走 skin 包样式表遍历):@keyframes 正则抠出「名字 + 帧体」,帧体剥 /* */ 注释、空白压成单空格后进 Map,撞车即报「A 与 B 帧体完全相同」;负向自检临时追加 ua-dup-test(同 rotate(360deg) 帧体)被拦下并点名 ua-spin,验证后移除(踩坑:/tmp 备份在跨命令时不稳,改用正则精确剥离测试块,git diff 确认只剩预期的 2 增 4 删);现存 ua-switch-spin 与 ua-spin 同体,删掉前者、开关 loading 复用 ua-spin;verify OK 汇总文案与 AGENTS 职责描述同步", + "domain": "tooling" } ] } diff --git a/.ua/iterations.log b/.ua/iterations.log index f233c07..7df3942 100644 --- a/.ua/iterations.log +++ b/.ua/iterations.log @@ -263,3 +263,4 @@ {"ts":"2026-10-26T19:57:26+08:00","id":"g216","result":"done","commit":"17da561","summary":"timePicker 补 clearable:有值时右侧出现 ×(不进 Tab 序),Delete/Backspace 等价清空,清空写回空串并收起弹层"} {"ts":"2026-10-26T19:58:47+08:00","id":"g217","result":"done","commit":"34985ff","summary":"新增 frame 内核冒烟 14 条(跑 dist、无 DOM),顺带修掉 effect 的两个真缺陷:注销是空实现、重跑不清理旧依赖"} {"ts":"2026-10-26T19:59:28+08:00","id":"g218","result":"done","commit":"ed2dd15","summary":"timePicker 未选值时两列改停在此刻(分钟按步长折算并钳在列长内),打开即可就近选,不用从 00:00 往下翻"} +{"ts":"2026-10-26T20:00:36+08:00","id":"g219","result":"done","commit":"f042c66","summary":"verify 新增重复关键帧检测(帧体剥注释归一后比对,报出两个动画名),首跑即抓出 ua-switch-spin ≡ ua-spin,开关转圈改为复用"}