feat: TS 构建管线、Spine 抓取器与 wallpapers/ 唯一真相来源

把项目从「手写 dist/」改成「wallpapers/ 是唯一真相来源,dist/ 由 pnpm build 生成」,
并补上配套的类型、门禁与抓取器。一次提交落地整条管线,因为拆开会留下不能构建的中间态。

- src/:运行时与模拟器源码(TS,strict),编译到 build/ 再拷进各分发
- tools/:build / dev / check-{syntax,paths,dist},以及抓取器与回归门禁 tools/checks/
  (.scratch/ 下那批一次性脚本移入 tools/checks/ 并入库为长期门禁)
- wallpapers/:七档壁纸的源数据 + README.md(id/音频/预设的完整规范)
- docs/adr/0005-0008:构建管线与分发拓扑、模拟器契约、自包含 sim、每骨架资源布局
- .gitignore:排除 .scratch/ 的参考资料副本(上游 spine 整仓克隆 ~1.2 GB、
  抓取侦查数据 ~680 MB)与调试转储;这些是本地调查材料,补偿会让仓库无法克隆
- 归一化 .gitignore/CONTEXT.md 行尾(工作区 CRLF、索引 LF 造成的整文件假 diff)

同时修掉三档卡住构建的未完工壁纸:
- kv45 的 meta.json 里 id 还是抓取期场景名 scene_main,经 downloader promote 正名为 kv45
- shajin / zhigengniao_juheye 的 meta.json 误用了骨架描述文件(name/spine/animations/pages)、
  且都缺 preset.template.json;现按规范重建:骨架沉到 spines/<名>/(spine-ts 按 atlas 所在
  目录解析贴图页)、补上元数据与单骨架预设,并清掉 zhigengniao 骨架里指向作者机的绝对路径
- 顺带 promote 已在 sources.yml 里的 kv46(月升之前,与兽共舞)

pnpm check 五道门全绿:10 个分发 / 7 档壁纸 / 141 处引用自包含。
This commit is contained in:
Shuery committed 2026-10-02 01:27:02 +08:00
1 parent b8eee05d78
commit 3f11426964
297 files changed
+216627 -1926

No files matched your search

@@ -0,0 +1,17 @@
main_cao_h.png
size:116,138
filter:Linear,Linear
t_a
bounds:69,10,66,47
rotate:270
t_b
bounds:0,0,27,63
rotate:90
t_c
bounds:0,86,7,52
t_d
bounds:0,33,37,87
rotate:90
t_e
bounds:7,76,62,66
rotate:270
@@ -0,0 +1 @@
{"skeleton":{"hash":"M4542Bu5+hI","spine":"4.2.43","x":-86,"y":-55,"width":172,"height":110,"images":""},"bones":[{"name":"root"},{"name":"t_c","parent":"root","length":48.96,"rotation":89.81,"x":-81.85,"y":-55.08},{"name":"t_b","parent":"root","length":28.08,"rotation":91.95,"x":-41.66,"y":-33.39},{"name":"t_b2","parent":"t_b","length":34.3,"rotation":-19.54,"x":28.08},{"name":"t_d","parent":"root","length":36.98,"rotation":85.05,"x":-17.27,"y":-51.25},{"name":"t_d2","parent":"t_d","length":53.26,"rotation":-12.84,"x":36.98},{"name":"t_e","parent":"root","length":33.2,"rotation":58.75,"x":5.22,"y":-10.11},{"name":"t_e2","parent":"t_e","length":37.01,"rotation":-7.1,"x":33.2},{"name":"t_a","parent":"root","length":36.48,"rotation":41.63,"x":21.01,"y":-20.15},{"name":"t_a2","parent":"t_a","length":35.72,"rotation":-4.25,"x":36.59,"y":0.12}],"slots":[{"name":"t_e","bone":"t_e","attachment":"t_e"},{"name":"t_d","bone":"t_d","attachment":"t_d"},{"name":"t_c","bone":"t_c","attachment":"t_c"},{"name":"t_b","bone":"t_b","attachment":"t_b"},{"name":"t_a","bone":"t_a","attachment":"t_a"}],"skins":[{"name":"default","attachments":{"t_a":{"t_a":{"type":"mesh","uvs":[0,1,0.10223,1,0.39218,0.69022,0.66521,0.43236,1,0.35771,1,0,0.43325,0,0.39942,0.2695,0.16989,0.57825,0,0.81576],"triangles":[1,8,2,8,1,9,1,0,9,2,7,3,2,8,7,5,4,3,3,7,6,3,6,5],"vertices":[1,8,-1.31,0.04,1,1,8,3.73,-4.45,1,1,8,27.7,-6.28,1,2,8,49.22,-9.19,0.07143,9,13.29,-8.35,0.92857,1,9,32.98,-18.97,1,1,9,43.18,-5.62,1,1,9,13.46,17.09,1,1,9,4,8.38,1,2,8,20.24,7.4,0.97644,9,-16.85,6.05,0.02356,1,8,4.44,6.51,1],"hull":10}},"t_b":{"t_b":{"type":"mesh","uvs":[1,1,0,1,0,0.66667,0,0.33333,0,0,1,0,1,0.33333,1,0.66667],"triangles":[3,4,5,6,3,5,2,3,6,7,2,6,1,2,7,0,1,7],"vertices":[2,2,-0.35,-21.67,0.99028,3,-19.54,-29.93,0.00972,2,2,0.57,5.32,0.99999,3,-27.7,-4.19,1e-05,2,2,21.56,4.6,0.99862,3,-7.69,2.16,0.00138,1,3,12.33,8.5,1,1,3,32.35,14.85,1,1,3,40.51,-10.89,1,2,2,41.63,-23.1,0.05533,3,20.49,-17.23,0.94467,2,2,20.64,-22.38,0.66713,3,0.47,-23.58,0.33287],"hull":8}},"t_c":{"t_c":{"x":26.08,"y":0.73,"rotation":-89.81,"width":7,"height":52}},"t_d":{"t_d":{"type":"mesh","uvs":[0.5259,0.98167,0,1,0,0.66667,0,0.33333,0.05176,0,1,0,0.99999,0.315,0.46987,0.64284],"triangles":[1,2,0,2,7,0,2,3,7,7,3,6,3,4,6,6,4,5],"vertices":[2,4,3.11,-14.51,0.99998,5,-29.8,-21.67,2e-05,1,4,-0.16,4.74,1,1,4,28.73,7.24,1,1,5,17.97,14.09,1,1,5,46.18,21.12,1,1,5,56.89,-12.29,1,1,5,30.79,-20.66,1,2,4,32.3,-9.9,0.4589,5,-2.36,-10.69,0.5411],"hull":8}},"t_e":{"t_e":{"type":"mesh","uvs":[0,1,0.3662,0.73037,0.72114,0.54916,1,0.4815,1,0,0.04469,0,0,0.21331,0,0.44768,0.06269,0.52258,0.03697,0.68688],"triangles":[0,9,1,9,8,1,1,8,2,3,2,6,6,2,8,4,3,6,6,5,4,6,8,7],"vertices":[1,6,-0.88,-0.28,1,2,6,26.12,-10.45,0.6788,7,-5.74,-11.25,0.3212,2,6,47.76,-23.07,4e-05,7,17.3,-21.09,0.99996,1,7,31.52,-31.88,1,1,7,56.45,-12.16,1,2,6,56.99,31.59,0.00178,7,19.7,34.29,0.99822,2,6,43.51,26.66,0.06066,7,6.94,27.73,0.93934,2,6,30.29,18.63,0.35633,7,-5.19,18.13,0.64367,2,6,28.08,12.75,0.61442,7,-6.66,12.02,0.38558,2,6,17.98,8.49,0.99308,7,-16.15,6.54,0.00692],"hull":10}}}}],"animations":{"animation":{}},"extra":{"t_c":{"rootBoneName":"t_c","animation":{"default":{"name":"","mode":0},"animation":{"name":"default","mode":1,"rotateCenter":0,"rotateTime":2,"rotateRange":3,"rotateOffset":0,"childOffset":0.25,"spring":0,"affectByLevel":0.1,"springLevel":0}}},"t_b":{"rootBoneName":"t_b","animation":{"default":{"name":"default","mode":0},"animation":{"name":"default","mode":1,"rotateCenter":0,"rotateTime":2,"rotateRange":3,"rotateOffset":0.021437542043265756,"childOffset":0.25,"spring":0,"affectByLevel":0.1,"springLevel":0}}},"t_d":{"rootBoneName":"t_d","animation":{"default":{"name":"default","mode":0},"animation":{"name":"default","mode":1,"rotateCenter":0,"rotateTime":2,"rotateRange":3,"rotateOffset":-0.2864744243043229,"childOffset":0.25,"spring":0,"affectByLevel":0.1,"springLevel":0}}},"t_e":{"rootBoneName":"t_e","animation":{"default":{"name":"default","mode":0},"animation":{"name":"default","mode":1,"rotateCenter":0,"rotateTime":2,"rotateRange":3,"rotateOffset":0.3415772787344784,"childOffset":0.25,"spring":0,"affectByLevel":0.1,"springLevel":0}}},"t_a":{"rootBoneName":"t_a","animation":{"default":{"name":"default","mode":0},"animation":{"name":"default","mode":1,"rotateCenter":0,"rotateTime":2,"rotateRange":3,"rotateOffset":-0.1011431250658883,"childOffset":0.25,"spring":0,"affectByLevel":0.1,"springLevel":0}}}},"extraSlot":{},"extraConfig":{"timeScale":1}}
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

@@ -0,0 +1,16 @@
{
"name": "main_cao_h",
"spine": "4.2.43",
"animations": [
"animation"
],
"skins": [
"default"
],
"pages": [
"main_cao_h.png"
],
"source": "https://act.mihoyo.com/ys/event/e20260520invite-19ccy4/index.html?game_biz=hk4e_cn&mhy_presentation_style=fullscreen&mhy_auth_required=true&mhy_landscape=true&mhy_hide_status_bar=true",
"originalImages": null,
"fetchedAt": "2026-09-21T11:49:29+00:00"
}