# 变更日志 所有重要的项目变更都将记录在此文件中。 本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。 ## [未发布] ### 新增 - 初始化 Monorepo 项目结构 - 创建 Rust workspace (bat-cas-engine, bat-assetbundle, bat-patch, bat-ffi) - 创建 Go module 结构 - 配置 Docker Compose 支持本地和远程数据库 - 添加 Makefile 统一构建入口 - 创建架构文档和开发指南 - 完成 CAS V1:原子写入、BLAKE3 校验、SQLite 引用计数、GC、并发写入测试和损坏检测 - 新增官方日服资源同步链路:auto-discover、pull plan、snapshot、marker diff、本地 manifest audit/repair - 新增 Rust 官方同步 binary,当前正式入口为 `bat`,支持 one-shot、`--watch`、默认 1 小时间隔、人类可读默认输出和 `--json` 结构化 report - 官方同步正式入口统一为 `bat`,新增 `--daemon` 后台模式和基于 `bat.sock` 的 Unix socket JSON-RPC 控制面,管理命令覆盖 `status`、`stop`、`restart`、`reload`、`refresh`、`logs`、`verify`、`repair`、`doctor`、`clean-stable` - 新增 daemon 控制锁 `bat-control.lock`、daemon 与前台同资源目录写入互斥,以及失效/损坏 PID 和锁文件恢复逻辑 - 新增官方同步路径安全边界:拒绝危险输出目录和 snapshot 路径逃逸,下载目标、manifest、daemon PID/status/log/control 文件不跟随 symlink,daemon 状态文件默认使用 `0600` 权限 - 新增官方资源原子发布布局:非 dry-run 下载先进入 `.staging/`,校验和 manifest/snapshot 写入完成后发布到 `versions/`,再原子切换 `current` symlink - 新增 daemon 可观测性:`bat-events.jsonl` 结构化 JSONL 日志、日志轮转、status 中的当前下载进度、最后成功时间、下次检查时间和最后错误摘要 - 新增运行时下载与校验 progress log:总体下载进度、单文件开始/完成状态、官方 `.hash`、本地 BLAKE3、需修复项和 ZIP 结构校验摘要 - 新增官方资源同步生产部署模板:release binary symlink 路径、systemd unit、运行用户、日志位置、升级和回滚流程 - 新增真实官方网络全量拉取 smoke:`scripts/official-full-pull-smoke.sh`、`make official-smoke` 和 `docs/guides/official-full-pull-smoke.md` - 新增官方资源下载校验:官方 URL 拒绝、`.part` 续传、重试、本地 size+BLAKE3、官方 seed `.hash` 校验 - 新增下载失败分类与 quarantine:403/404/普通 4xx 不重试,5xx/429/网络类错误重试,最终失败写入 `official-download-quarantine.json` 并阻止发布不完整资源;旧 launcher 包支持官方 primary/backup CDN 切换 - 新增官方版本状态管理:`official-version-state.json` 持久化当前已完成版本、正在拉取版本、上一个可用版本和失败版本,并在 `bat status` 中暴露状态摘要 - 优化资源导入链路:CAS 导入会写入 `ResourceRepository`,AssetBundle 记录 UnityFS 摘要,TextAsset/Table/Media 按资源类型分类并可被索引 - 新增离线回归 fixture:当前 catalog、上一个版本 catalog、catalog 结构变化、403、404 和官方 seed hash mismatch 样本 - 新增 Addressables 当前真实形态 fixture/golden 测试 - 新增 SQLite Resource Repository 和粗粒度 FFI JSON 接口 - 补齐官方资源运行、架构、状态、缺口和交接文档 ### 修复 - 修正 Unity 版本范围比较:改为按 `(major, minor, patch)` 数值比较,`2021.3.9f1` 等带发布后缀的正式版本号不再被字典序误判越界 ### 安全 - 代理凭据不再落入世界可读位置:传给 curl 子进程时经 `ALL_PROXY` 环境变量而非 `--proxy` 参数,不进 curl 的 `/proc//cmdline`;`--daemon` 模式下代理凭据经环境变量下传后台子进程,不进子进程 argv 或 `bat-status.json`,复用凭据单独存于 `0600` 的 `bat-proxy.secret` 并在 `clean-stable` 后台停止后清除;日志与 `status` 输出对带凭据代理 URL 脱敏(含无 `scheme` 形式);推荐带凭据代理用 `HTTPS_PROXY` 等环境变量配置 ### 计划 - [x] 实现 CAS 存储引擎 - [x] 实现 Rust 官方资源同步核心链路 - [ ] 实现 Go CLI 最小可用入口 - [x] 固化真实官方网络全量下载 smoke test 文档和可重复命令 - [ ] 实现 AssetBundle 解析器 - [ ] 实现翻译系统 - [ ] 实现 Patch 引擎 - [ ] 实现 API Server - [ ] 实现 Web 管理后台 ## [0.1.0] - 2026-06-27 ### 新增 - 项目初始化 - 基础架构搭建