# STLKIT 0.1.2

- Mooncakes：[`mik1e80/stlkit@0.1.2`](https://mooncakes.io/docs/mik1e80/stlkit@0.1.2/)
- 固定源码：[`v0.1.2`](https://github.com/mik1e80/stlkit/tree/v0.1.2)
- GitHub Release：[`STLKIT 0.1.2`](https://github.com/mik1e80/stlkit/releases/tag/v0.1.2)
- 旧版 `0.1.1` 和 `v0.1.1` 保留；本次修复不覆盖旧包或移动旧标签。

## 本次修复

1. PLY 每个 vertex 元素都必须具有各一个标量 x、y、z；缺失、list 型或重复坐标声明在读取正文前报错。ASCII、大小端二进制与显式逐行兼容模式规则一致。合法零值和属性重排不受影响。
2. CLI 在任何写入前比较规范化绝对输出路径，处理 `result.stl` / `./result.stl`、`..`、重复分隔符和 Windows 大小写。完全相同的字符串在 0.1.1 已拒绝，本版补齐其他等价写法。比较属于词法规范化，不检测符号链接 / 硬链接指向同一文件。
3. CI 明确运行 Wasm、Wasm-GC、JS、Native 四个后端的测试，分别显示结果；全目标类型检查不替代测试执行。
4. 仓库描述和 Topics 对齐 STL / OBJ / 3MF / PLY 网格工具链定位，为旧版及本版补齐正式 GitHub Release。

## 安装与复核

```sh
moon add mik1e80/stlkit@0.1.2
```

源码使用固定标签，记录完整 commit：

```sh
git clone --branch v0.1.2 --depth 1 https://github.com/mik1e80/stlkit
cd stlkit
git rev-parse HEAD
moon update
moon check --target all --deny-warn
moon test --target wasm
moon test --target wasm-gc
moon test --target js
moon test --target native
node cmd/main/smoke.cjs
bash web/build.sh
node web/smoke.cjs
node scripts/review-cases.cjs
git diff --exit-code -- examples/review
```

本版库测试为每个后端 321 项，CLI 回归另外验证路径冲突时已有文件保持不变、新文件未被创建，网页验证缺失坐标错误。测试通过不表示完整格式认证或可打印保证。

新增自制反例：`moon run cmd/main examples/missing-z.ply` 应报 `PLY vertex 缺少 z 标量属性` 并以 1 退出。缺失坐标不会被当作 z=0 的合法平面。

## 兼容说明

旧版接受的缺失 / list 型 / 重复坐标声明现在会失败；修复 PLY header 与正文，不通过兼容模式绕过。CLI 输出路径的相同目标写法会提前失败，应指定两个不同文件。

其他接口及迁移范围沿用 [0.1.1 发布说明](https://github.com/mik1e80/stlkit/blob/v0.1.1/docs/releases/0.1.1.md)。重新申报填写 `0.1.2`、`v0.1.2` 与标签对应的完整 commit SHA；浮动 main 或旧版本的安装结果不用于复核本次修复。
