merge: task/ui-golden-ui-golden-ref 合入 v2-on-ui

任务 ui-golden(1 个提交)经 task-worktree 回收:
- chore(ui-golden): 像素黄金参考 ref/*.bin 入库(把门禁改成可移植)
This commit is contained in:
2026-10-23 12:22:02 +08:00
21 changed files with 52 additions and 23 deletions
+11 -3
View File
@@ -9,8 +9,15 @@ default_install_hook_types: [pre-commit, commit-msg]
# tests/*.py、两份配置与 README)。整目录豁免 = 自研代码落在所有钩子之外(连
# lv-conf-sync 都拦不到);实测把 simulator/ 纳入 cppcheck 后,立刻揪出
# sim_syslog.c 一处真实的空指针解引用。真正的生成物/第三方(`simulator/build/`、
# `simulator/SDL2/`、`simulator/tests/ref/`、`simulator/shot*.{bin,png}`、`__pycache__/`)
# **已在 .gitignore 里**,永远不会进 git 索引 → 无需在此重复豁免,故直接删掉该条。
# `simulator/SDL2/`、`simulator/shot*.{bin,png}`、`__pycache__/`)**已在 .gitignore 里**,
# 不会进 git 索引 → 无需在此重复豁免,故直接删掉该条。
# ⚠ 例外(2026-10-22):`simulator/tests/ref/*.bin`(ui-golden 的像素黄金参考)已从
# 「整目录 gitignore」改为**入库**——基线不入库时任何新克隆 / 新工作树都必然报
# 「缺黄金参考」,这条门禁就只在有老副本的机器上真实存在。入库前提是实测可复现:
# 两份各自独立构建的 lvgl_sim(不同构建目录、相隔 11 天的代码)对同一批 11 个 .bin
# SHA-256 全部一致。改写型钩子(trailing-whitespace / end-of-file-fixer)声明
# `types: [text]`,位图含 NUL → 被判二进制自动 Skipped(实测「索引 blob == 磁盘 ==
# 参照」三方一致),无需为它另加 exclude。
exclude: |
(?x)^(
\.opencode/node_modules/|
@@ -510,7 +517,8 @@ repos:
# golden FAIL 且点名 `[dc] FAIL 与参考页不一致(1366 px 差异)`、退出码 1;还原后 diff 干净。
# ⚠ 两条 golden 按"整棵菜单树 + 全量参考图"工作、不接受文件参数,故包装器有意忽略
# argv 并 pass_filenames: false(pre-commit 传的变更名对它无意义)。
# ⚠ 参考图 simulator/tests/ref/*.bin 是判据本身,改动它等于改判据——评审时必须盯紧,
# ⚠ 参考图 simulator/tests/ref/*.bin 是判据本身,改动它等于改判据——它已入库,
# 评审时看 `git diff -- simulator/tests/ref` 必须逐页过目并在提交正文说明;
# 任何时候都不得用 --update 刷基线来"让钩子变绿"。
# ⚠ pre-commit 4.x 无 `always: true` → files 必须覆盖所有能改变像素的触发面。
# ⚠ 已知瞬时现象:首次实测时在"连续注入/还原的紧邻重建"之间偶发失败一次,