# 更新日志

[English](../CHANGELOG.md)

## 未发布

## [0.2.0](https://github.com/Sidney-sunny/MoonSpoof/releases/tag/v0.2.0) - 2026-10-30

基线：下列变更相对 GitHub v0.1.0 tag；后续 Mooncakes 0.1.0 已含许多字系/状态/数字 API，详见[发布与迁移说明](RELEASE_0.2.0_zh.md)。

### 新增

- 新增公开 `get_library_version()`，注册元数据从中读取版本，并验证 0.1.0 到 0.2.0 的显式重建；发行归档检查干净提交的构建元数据、引擎/站点哈希、完整声明及独立校验值，性能测量覆盖两种键与批量策略。
- 新增 MoonBit 0.10.18 验收检查、CI 精确编译器核验、逐目标显式检查/构建/测试及干净公开注册表消费验证；保留 Unicode/Manrope 许可证、生成数据署名及演示分发副本。0.2.0 分发携带这些声明，不覆盖注册表 0.1.0。
- 新增可选且校验值固定的 ICU4J 76.1 / Unicode 16 对照工具，包含 42 组语料、全部 12 处已观察字段差异的精确基线、双语机制覆盖矩阵及独立 CI 作业；增加长组合序列、非 BMP/控制字符、稳定键和双字符串/批量回归，工具测试拒绝未复核或失效差异及损坏产物。
- 新增可选十进制混用 API，覆盖 Unicode 16.0.0 全部 76 个 Nd 数字系统，提供首个冲突的类型化证据及版本化注册迁移；完整码点来源验证共运行 4,456,448 项属性断言，现有策略和键保持不变。
- 新增 Identifier_Status 查询与可选原始码点过滤，提供首个失败字符的类型化证据；注册示例展示使用新应用策略版本启用过滤，并在迁移时复核新增拒绝账号。不声明规范等价闭包或完整 General Security Profile 合规。
- 新增完整字系查询及 UTS #39 增广/解析字系集合，处理共享字符约束和日文/韩文/Han-Bopomofo 书写系统；对全部 1,114,112 个码点执行官方属性对照验证。
- 固定 ScriptExtensions、PropertyValueAliases、IdentifierStatus 三份来源，新增严格属性解析和完整底层 Unicode 属性表；现有字系分类与默认标识符策略保持不变。
- 使用公开 API 的账号注册参考存储，明确选择语法/Unicode 策略、敏感或折叠键，区分允许、重复、碰撞和拒绝，并提供字符证据。
- 版本化快照、经过校验的恢复，以及根据原始名称全量重建索引；旧元数据、篡改键、重复账号和迁移新增碰撞都会明确失败，不返回部分索引。
- 可运行的 `moon run cmd/registration` 演示、20 项接入验收测试、双语接入说明，以及 WASM、JavaScript、native 三目标 CI 执行；接入通过公开库 API 完成。

### 文档

- 新增初审后的双语路线图，列出可执行验收条件和拟议 v0.2.0 发布门槛；M1–M3 在声明范围内完成，M4 完成状态见路线图及发布证据。
- 更新面向库接入开发者的产品定位与 README 导航，明确区分计划工作、参考示例和真实应用采用。

### 修复

- 官方 NFD 验证直接读取已通过校验值检查的来源文件，拒绝空或格式错误的测试集，不再依赖可能静默减少覆盖量的派生 JSON 缓存。
- Unicode 新下载在原子写入缓存前验证校验值，中断或异常响应不再留下阻断后续重试的错误缓存。
- Unicode 再生成现在要求预先存在完整且已审核的来源清单，在下载或生成前校验固定版本、URL 和校验值字段，不再根据缓存数据重写清单；离线回归检查已接入 CI。
- CI、Pages 和 Copilot 环境统一安装 `.moon-version` 中记录的编译器版本，避免最新工具链变化引入未经审核的格式化和接口变更。

## [0.1.0](https://github.com/Sidney-sunny/MoonSpoof/releases/tag/v0.1.0) - 2026-10-12

MoonSpoof 首个公开版本：使用纯 MoonBit 实现 Unicode 易混淆字符与标识符风险分析引擎，并提供双语浏览器演示站。

### 新增

- 固定使用 Unicode 16.0.0 的易混淆映射、脚本、规范分解、完整默认大小写折叠和默认可忽略字符数据；六份官方来源文件均记录 SHA-256 校验值。
- 稳定的应用 skeleton：支持 NFD 规范化、Hangul 算法分解、默认可忽略字符移除，以及全角 ASCII 和表意空格折叠。
- 大小写敏感和不敏感的双字符串比较，以及基于哈希的批量碰撞分组；保留首次出现顺序和重复条目。
- 逐字符证据、混合脚本限制等级估计、可配置标识符策略，以及不可见字符、控制字符、双向覆盖和文件扩展名伪装启发式规则。
- MoonBit 公共 API、命令行演示、JavaScript 浏览器绑定，以及 WASM、JavaScript 和 native 编译目标支持。
- 中文/英文 React 演示站，包含字符串比较、字符诊断、批量扫描、双向文本渲染、Worker 引擎和 GitHub Pages 部署。
- 单元、回归、白盒、属性、浏览器 ABI 和 Worker 生命周期测试；官方 Unicode 规范化与映射校验，以及可复现的基准工具。
- 双语 API、架构、实现范围、基准和品牌文档。

### 发布前开发阶段的修正

- 使用 Unicode 数据支持的 NFD 和完整默认 C/F 折叠替代不完整的规范化与大小写处理。
- 大小写不敏感比较仅依据折叠键相等，与对应批量分组保持一致。例如，`I` 与 `l` 在敏感模式下碰撞，在折叠模式下不同；两种模式是独立的等价关系。
- 使映射与规范化输出达到稳定状态，覆盖 Hangul 和规范化后再次命中映射的目标字符。
- 修正诊断 JSON 控制字符转义、非 BMP 码点处理、CJK 限制等级估计、批量顺序和 Worker 失败处理。
- 使生成的 Unicode 来源清单排序在不同平台上保持一致。

### 范围与兼容性

- MoonSpoof 实现部分 UTS #39 机制，不声称完整符合标准；键匹配或风险信号不代表恶意意图。
- 脚本分析提供十一类命名脚本和 Unknown。本版本不实现 Script_Extensions、Identifier_Status、混合数字检测、NFKC/NFKD 或双向 skeleton 重排。
- 标识符策略属于应用层检查，调用方需要自行校验标识符语法；文件扩展名伪装检测属于启发式规则。
- 全角折叠和稳定键规范化属于应用扩展。持久化键时应同时保存库版本和 Unicode 数据版本，并在升级时重新计算。

参阅[实现范围](SPECIFICATION_zh.md)、[API 契约](API_SPECIFICATION_zh.md)和[在线演示](https://sidney-sunny.github.io/MoonSpoof/)。
