T-WIN-013:API 升级与场景选择 - 契约快照同步到 rest-api 0.5.0 / data-models 0.7.0 / database 0.4.0 - catalog_types.gd 新增 SceneConfig(物理/环境/出生点/相机)与 Scene; CatalogBundle 增加 scenes[];from_dict 按契约 7.1 再收敛一次 (缺项默认、越界夹紧、非法枚举回退),与服务端 normalizeSceneConfig 同规则 - 新增 src/scene/scene_runtime.gd:GLB 载入 -> 碰撞体(mesh 三角网 / auto 命名约定 *_col、*_colonly / none 不兜底)-> 场景级重力(Area3D SPACE_OVERRIDE_REPLACE,不改全局 ProjectSettings)-> 风(每物理帧 apply_central_force,阵风正弦叠加,支持 local 坐标系)-> 环境光与雾 -> 出生点与相机(follow/fixed/orbit);无碰撞体时兜底地面 - CatalogStore 增加 scenes/default_scene/find_scene/ensure_scene_cached/ fetch_thumbnail(场景缓存带 sha256 指纹,避免换包后仍用旧 GLB) - 主界面改为 2x2 四个选择器(曲目/动作/模型/场景)+ 场景参数面板 (缩略图 + 重力/摩擦/弹性/碰撞体/风摘要) - 游戏界面载入场景并落地物理,角色落在出生点;场景缺失/下载失败/ 解析失败一律回退内置空场景并提示,不阻塞开始跟练 T-WIN-012:「关于」清单展示当前版本号 - 版本唯一来源为 project.godot 的 application/config/version(v0.2.0) - about_manifest() 输出版本/引擎/契约/协议/地址/隐私清单; 无头测试无 autoload,读取 AppConfig 走 get_node_or_null 容错 - Credits 的单个 CONTRACT_VERSION 常量改为 CONTRACT_VERSIONS 字典 (六项契约各自独立递增),并双向核对 contracts/VERSION T-WIN-014:发布必须是单个完整包 - build/package-release.sh 重写:只产出单个 zip + SHA256SUMS, 清理历史 .partN,超限时告警而非回退分卷;新增源产物与解压后完整性 自检(PE 头 MZ / pck 魔数 GDPC / exe+pck 同目录同名)与体积-上限对比 - deploy/proxy 相关的 Gitea IIS 256MB 上限说明见 opendance-web 测试:tests/test_scene_config.gd(12 例)+ tests/test_about.gd(4 例); 无头测试 687 通过 / 0 失败(10 个套件),verify.sh 全部通过
1.9 KiB
1.9 KiB
T-WIN-012 「关于」清单展示当前版本号
- 状态: done
- 依赖: T-WIN-010
- 文档: v1.6 §11(版本号展示)
目标
Windows 客户端在**「关于」清单**中展示当前运行版本号,且版本号只有一处权威定义。
方案
| 项 | 做法 |
|---|---|
| 唯一来源 | project.godot 的 application/config/version(运行期用 ProjectSettings.get_setting 读取) |
| 界面位置 | 关于页面新增「清单」区块,逐行「标签:值」 |
| 禁止重复 | 界面代码中不出现版本号字面量;由 test_about.gd 反例防护 |
src/ui/about_screen.gd 新增两个可直接单测的纯函数:
app_version()—— 返回vX.Y.Z的来源值(唯一来源);about_manifest()—— 返回清单各行(版本 / 引擎 / 契约版本 / 接收协议 / 接收地址 / 服务端地址 / 隐私说明)。
about_manifest() 读取 AppConfig 时走 get_node_or_null("AppConfig"),
因为无头测试以 --script 运行没有 autoload,直接引用会在解析期报错。
顺带修正:契约版本不能再用单个常量
Credits.CONTRACT_VERSION 原为单个常量 0.1.0,但六项契约现在各自独立递增
(rest-api 0.5.0 / data-models 0.7.0 / skeleton-topology 0.2.0 …)。
改为 Credits.CONTRACT_VERSIONS 字典 + version_of() / summary(),
并让 test_credits.gd 逐项与 contracts/VERSION 双向核对
(新增契约若忘记同步展示,测试直接失败)。
验收(文档 §11.3)
| 验收项 | 结果 |
|---|---|
关于清单可见 vX.Y.Z |
✅ 清单首行「客户端版本:v0.2.0」 |
| 与导出产物文件名一致 | ✅ opendance-windows-v0.2.0.zip |
与 project.yaml / project.godot 一致 |
✅ 测试 test_version_is_semver_and_matches_project_yaml 核对 |
| 界面代码无版本号字面量 | ✅ 测试 test_version_not_hardcoded_in_ui_sources 核对 |