-
released this
2026-09-17 05:18:08 +08:00 | 10 commits to main since this release⚠️ 本版已被 v0.2.4 取代(建议直接用 v0.2.4):
v0.2.4 把编码取整与契约参考实现对齐(-2.5的取整口径差异),
并修掉了「发布包内夹带开发/验收工具」——本版OpenDance.pck里含有
构建探针与一个故意违反协议的测试夹具(res://build/integration/*.gdc),
体积占 pck 的 54%(315,464 B → v0.2.4 的 145,400 B)。
功能不受影响,但不该被用户拿到。OpenDance Studio -- Windows 客户端 v0.2.3
跨端集成验收 + 两个真实缺陷修复。建议所有用户改用本版。
契约快照不变:
rest-api 0.5.0/websocket-keypoints 0.2.0/data-models 0.7.0/
skeleton-topology 0.2.0/model-formats 0.5.0/database 0.4.0
(与 opendance-web / opendance-android 逐字节一致)。一、新增:跨端集成验收(拿发布包里的客户端打真实服务端)
本仓单测用的是假 HTTP 夹具,Web 端测试只验自己那一侧 —— 两端各自绿灯,
不代表契约字段真的对得上(字段名、嵌套、null、单位、范围都可能一侧对一侧错)。
所以本版加了build/accept-integration.sh:用--main-pack加载包内 pck,
打真实 Web 服务端,逐项断言:[integration] Windows 包内客户端 × 真实 Web 服务端:http://127.0.0.1:3100 ✓ GET /health 200(服务端版本 0.7.4);契约 6 项全部一致 ✓ 目录指纹非空;目录四类资源齐备:songs=… motions=… models=… scenes=… ✓ defaultModelId 解析为默认模型 ✓ 重力 y=-3.50;基础风 (2.0,0.0,-1.0);阵风 4.0 m/s @ 0.50 Hz;风坐标系 world ✓ 地面摩擦/坡度 0.80/30°;碰撞体 mesh;出生点 yaw 90°;相机 orbit/6.0/2.0 ✓ 环境光 2.0/雾 0.20;风采样 t=0 等于基础风;场景 GLB 可下载且魔数正确 ✓ 动作内部标准 mediapipe33@0.1.0;客户端解析 2901 帧 == 服务端 2901 帧 ✓ 无解析失败行;首帧 33 点;每帧带服务端关节角;30.00 fps;96.67 s ✓ 动作缩略图可下载且为 PNG;模型 vrm/默认模型/文件可下载 [integration] ✓ 跨端集成探针全部通过播种用的是真实素材(
示例文件/下的真 VMD → 内部标准 33 点;真 PMX → VRM)。二、探针首次运行就抓到的两个真实缺陷
1.
Motion.thumbnailUrl被客户端丢掉 —— 服务端catalog/export从
data-models 0.6.0起一直在发该字段(同一文件的Model/Scene都有解析),
客户端类型里却没有。已补字段与解析(缺失时为"",兼容旧服务端),
并新增tests/test_catalog_types.gd(4 项 / 20 条断言)用服务端真实报文形状锁住;
同时显式记录一处刻意不消费的差异:Model.usable/unusableReason
(目录只下发可用模型,恒为 true,不可用模型的可见性由 Web 管理端负责)。2. 二进制响应白做 UTF-8 解码 ——
ApiClient._request()对所有响应无条件
raw.get_string_from_utf8()。数据本身没错(二进制路径返回原始字节),但:- 每下载一个文件都会打印一条
Unicode parsing error … Invalid UTF-8 leading byte (N)噪声(探针里第一次注意到); - 白白把整个文件(模型可达数十 MB)解码成一份 String 拷贝后丢弃。
已改为只在需要文本时解码。
顺带修掉测试里写死的契约版本:
tests/test_api_integration.gd断言三项契约均为
0.1.0。该用例只在服务端可达时才跑、平时一直 skip,所以契约升到 0.5.0 后没有任何
地方发现它。现改为从仓库contracts/VERSION读期望值并与/health比对。三、附件与解压(重要)
资产 说明 opendance-windows-v0.2.3.zip单个完整包,不分卷: OpenDance.exe+OpenDance.pck(必须同目录)+THIRD_PARTY.md+README.txt+README.md+contracts/SHA256SUMS裸文件名,下载目录内直接 sha256sum -c SHA256SUMS解压需要 7-Zip / WinRAR / PeaZip:本包用 LZMA 压缩(26,644,121 B)以绕过本站
前置 IIS 的maxAllowedContentLength = 30,000,000字节上限
(同内容 deflate 包约 38 MB,会 HTTP 413)。Windows 10 资源管理器不支持
LZMA(method 14) 的 zip,双击会报错。上限放开后可用
ZIP_METHOD=deflate bash build/package-release.sh 0.2.3重打包为可直接双击解压的包。四、发布前自检(本版实测)
$ bash build/check-version.sh 0.2.3 ✓ 版本一致:v0.2.3(project.godot = project.yaml = export_presets.cfg = 期望值) $ bash build/check-pe-version.sh <exe> 0.2.3 ✓ PE 版本资源一致:FileVersion 0.2.3.0 / 资源字符串 0.2.3 $ GODOT_BIN=... bash build/accept-release.sh dist-release/opendance-windows-v0.2.3.zip ✓ 包内 application/config/version = 0.2.3 / AboutScreen.app_version() = 0.2.3 ✓ 主场景 / autoload / 15 项关键资源 / pck 内契约表与快照一致 发布包级验收全部通过 $ bash build/verify.sh == 结果:820 通过 / 0 失败,5 跳过 ==五、未在本环境验证的部分(诚实声明)
- 本仓库在 Linux 上导出 Windows 产物,没有 Windows 机器与真机 30 分钟联调:
运行行为仍以「无头断言 + 包内 pck 启动 + 包内探针」为证据; - 跨端集成验收需要已部署的 Web 服务端(本项目不部署它,契约边界如此)。
Downloads
- 每下载一个文件都会打印一条