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,33 @@
main_tree_b.png
size:734,1450
filter:Linear,Linear
图层 1
bounds:473,914,246,250
树_28
bounds:0,106,592,165
树_32
bounds:211,1198,46,26
offsets:10,10,66,46
树_33
bounds:297,1130,404,320
offsets:2,0,406,323
rotate:180
树_35
bounds:211,1120,88,41
offsets:10,10,108,61
树_36
bounds:487,298,330,234
rotate:270
树_4
bounds:476,0,244,247
offsets:3,0,250,249
rotate:90
树_5
bounds:570,634,196,164
offsets:10,10,216,184
rotate:90
树_6
bounds:211,486,353,964
rotate:180
树_7
bounds:0,277,515,1173
@@ -0,0 +1 @@
{"skeleton":{"hash":"LrdpDL3LbG8","spine":"4.2.43","x":-366,"y":-586.5,"width":883.92,"height":1173,"images":""},"bones":[{"name":"root"},{"name":"树_8","parent":"root","length":704.06,"rotation":67.19,"x":-296.79,"y":-232.22},{"name":"树_5","parent":"树_8","length":52.31,"rotation":-67.19,"x":430.05,"y":13.96},{"name":"树_6","parent":"树_5","length":109.48,"rotation":36.55,"x":52.31},{"name":"树_7","parent":"树_6","length":138.66,"rotation":14.89,"x":109.48},{"name":"图层 1","parent":"树_7","length":74.51,"rotation":-20.17,"x":-70.34,"y":-1.77},{"name":"图层 2","parent":"图层 1","length":76.76,"rotation":16.54,"x":74.51},{"name":"图层 3","parent":"图层 2","length":76.68,"rotation":-1.6,"x":76.76},{"name":"树_28","parent":"树_8","length":113.27,"rotation":-19.21,"x":694.3,"y":-10.17},{"name":"树_29","parent":"树_28","length":112.5,"rotation":-13.97,"x":113.27},{"name":"树_30","parent":"树_29","length":143.41,"rotation":-0.66,"x":112.5},{"name":"树_31","parent":"树_8","length":117.93,"rotation":10.56,"x":597.41,"y":118.52},{"name":"树_32","parent":"树_31","length":133.07,"rotation":-17.09,"x":117.93},{"name":"树_9","parent":"root","length":99.74,"rotation":5.23,"x":-108.41,"y":-362.52},{"name":"树_10","parent":"树_9","length":289.63,"rotation":84.47,"x":51.71,"y":-0.22},{"name":"树_11","parent":"树_10","length":266.41,"rotation":-22.47,"x":289.63},{"name":"树_12","parent":"树_11","length":235.4,"rotation":0.83,"x":266.41},{"name":"树_13","parent":"树_12","length":262.15,"rotation":-5.81,"x":235.4},{"name":"树_4","parent":"树_11","length":101.52,"rotation":-46.22,"x":81.45,"y":3.32},{"name":"树_14","parent":"树_4","length":137.31,"rotation":25.78,"x":102.23,"y":-0.27},{"name":"树_15","parent":"树_14","length":122.54,"rotation":13.95,"x":137.31},{"name":"树_33","parent":"树_15","length":86.22,"rotation":-4.99,"x":-26.96,"y":3.14},{"name":"树_34","parent":"树_33","length":89.92,"rotation":-2.52,"x":89.58,"y":0.45},{"name":"树_35","parent":"树_34","length":130.94,"rotation":-22.21,"x":94.32,"y":0.45},{"name":"树_36","parent":"树_35","length":121.37,"rotation":-16.55,"x":135.62,"y":-1.04},{"name":"树_37","parent":"树_14","length":99.92,"rotation":-34.97,"x":79.03,"y":-7.44},{"name":"树_38","parent":"树_12","length":86.34,"rotation":-8.68,"x":150.96,"y":-7.73},{"name":"树_39","parent":"树_38","length":102.83,"rotation":-25.81,"x":86.99,"y":0.39},{"name":"树_40","parent":"树_39","length":153.01,"rotation":-25.88,"x":102.83},{"name":"树_41","parent":"树_39","length":75.63,"rotation":2.12,"x":108.82,"y":5.97},{"name":"树_42","parent":"树_41","length":111.24,"rotation":-10.64,"x":83.88,"y":-0.79}],"slots":[{"name":"树_36","bone":"树_38","attachment":"树_36"},{"name":"图层 1","bone":"图层 1","attachment":"图层 1"},{"name":"树_35","bone":"树_42","attachment":"树_35"},{"name":"树_33","bone":"树_33","attachment":"树_33"},{"name":"树_32","bone":"树_37","attachment":"树_32"},{"name":"树_28","bone":"树_31","attachment":"树_28"},{"name":"树_7","bone":"树_8","attachment":"树_7"},{"name":"树_6","bone":"树_9","attachment":"树_6"},{"name":"树_5","bone":"树_5","attachment":"树_5"},{"name":"树_4","bone":"树_4","attachment":"树_4"}],"skins":[{"name":"default","attachments":{"图层 1":{"图层 1":{"type":"mesh","uvs":[0.28458,0.99682,0.07683,0.92563,0.01309,0.90379,0,0.49353,0.20216,0.25262,0.48093,0,0.76696,0,0.92453,0.09042,1,0.28124,0.8712,0.5627,0.80817,0.85609,0.58031,0.93003,0.28458,0.73444,0.4882,0.47683,0.65303,0.19776],"triangles":[13,3,4,13,4,14,4,5,14,14,5,6,9,14,8,14,7,8,14,6,7,10,11,13,10,13,9,13,14,9,0,12,11,0,1,12,1,2,12,2,3,12,11,12,13,12,3,13],"vertices":[2,5,-0.62,-66.8,0.9324,6,-91.03,-42.65,0.0676,2,5,-35.07,-25.06,0.99986,6,-112.18,7.17,0.00014,2,5,-45.64,-12.26,0.99995,4,-117.4,2.46,5e-05,2,5,4.84,77.09,0.35237,4,-39.21,68.91,0.64763,2,5,78.61,102.76,0.00071,4,38.88,67.57,0.99929,1,4,131.02,53.32,1,2,7,95.47,39.51,0.36265,4,174.88,-1.7,0.63735,2,7,105.98,-4.11,0.96575,4,181.36,-46.1,0.03425,2,6,159.71,-52.87,0.02488,7,84.4,-50.53,0.97512,3,5,179.06,-48.92,0.00238,6,86.3,-76.66,0.62176,7,11.68,-76.36,0.37586,3,5,127.74,-103.57,0.12397,6,21.55,-114.44,0.86505,7,-51.99,-115.93,0.01098,2,5,70.23,-90.28,0.42697,6,-29.8,-85.33,0.57303,2,5,33.42,-10.73,0.98973,6,-42.44,1.41,0.01027,2,6,38.92,7.56,0.81957,4,38.92,-22.39,0.18043,2,7,40.39,25.52,0.23474,4,118.75,-10.61,0.76526],"hull":12}},"树_4":{"树_4":{"type":"mesh","uvs":[0.0322,0.7195,0.01551,0.89192,0.10853,1,0.42816,0.87037,0.67384,0.63807,0.82411,0.3938,0.9863,0.01063,0.89328,0.01302,0.70246,0.26448,0.58558,0.49438,0.36137,0.69315],"triangles":[5,8,7,5,7,6,9,8,5,4,9,5,10,9,4,3,10,4,2,0,10,2,10,3,1,0,2],"vertices":[1,18,26.35,49.18,1,1,18,7.06,10.59,1,1,18,19.13,-22.87,1,2,18,105.29,-21.38,0.19884,19,-6.42,-20.34,0.80116,1,19,77.79,-25.5,1,2,19,147.84,-11.24,0.22338,20,7.51,-13.45,0.77662,1,20,110.57,-2.19,1,1,20,98.68,17.81,1,2,19,150.49,32.97,0.16771,20,20.74,28.82Line truncated
Binary file not shown.

After

Width:  |  Height:  |  Size: 489 KiB

@@ -0,0 +1,16 @@
{
"name": "main_tree_b",
"spine": "4.2.43",
"animations": [
"animation"
],
"skins": [
"default"
],
"pages": [
"main_tree_b.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"
}