diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c49f66..de3ee33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,24 @@ ## [未发布] +### 计划 +- [ ] 实现 Go CLI 最小可用入口(默认经 daemon RPC 或 `bat --json` 进程边界) +- [ ] 官方同步结果接入 CAS + ResourceRepository 的用户级工作流 +- [ ] 实现 AssetBundle 解析器(UnityFS header/block/directory 起步) +- [ ] 继续逆向 Addressables catalog 可校验字段 +- [ ] 实现翻译系统 +- [ ] 实现 Patch 引擎 +- [ ] 实现 API Server +- [ ] 实现 Web 管理后台 + +## [0.2.0] - 2026-07-17 + ### 新增 +- 引入统一 `BAT-ERR` 错误码模型(`ErrorCode` / `ApiError`:数字码、kind、域、位置、可重试标记),接入下载、launcher/metadata、server-info/marker 与配置校验路径;新增 `USERGUIDE.md` 用户指南(命令、选项、退出码、错误码参考、RPC 接口) +- daemon 的 `bat.sock` Unix socket JSON-RPC 扩展为面向 Go 服务层的 Rust Resource Backend API:统一应用层 envelope(`ok`/`status`/`data`/`error`/`request_id`),方法覆盖 `daemon.*`(status/logs/stop/reload/refresh)、`resource.*`(state/sync/verify/manifest)、`catalog.*`(status/versions/diff/refresh)、`task.*`(status/list/cancel/logs) +- 新增异步任务执行器:`resource.sync` / `resource.verify` / `catalog.refresh` 入队即返回 `task_id`,单 worker FIFO 串行执行并与 watch 循环互斥,支持进度日志与协作式取消 +- 任务历史文件态持久化 `/bat-tasks.json`(版本化、`0600` 原子写):daemon 重启后任务历史仍可查,中断任务标记 `task_interrupted`(`BAT-ERR-700005`) +- 新增 `.env` 无参启动:`bat` 首次启动在二进制所在目录释放配置模板(`0600`)并自动加载,优先级为命令行参数 > 进程环境变量 > `.env` > 内置默认值,Redis 配置键预留 - 初始化 Monorepo 项目结构 - 创建 Rust workspace (bat-cas-engine, bat-assetbundle, bat-patch, bat-ffi) - 创建 Go module 结构 @@ -35,21 +52,13 @@ ### 修复 - 修正 Unity 版本范围比较:改为按 `(major, minor, patch)` 数值比较,`2021.3.9f1` 等带发布后缀的正式版本号不再被字典序误判越界 +- 将 curl 进程启动时的 `ETXTBSY`(可执行文件忙)归为可重试的瞬时竞态并加短退避,消除多线程测试环境下的偶发失败 +- 修正对抗性审查发现的 launcher 链错误码误归类:非官方 CDN 根归 `non_official_url`、远端 manifest/包内容缺陷归 `launcher_response_invalid`、解压失败归完整性域 +- 串行化 `bat-status.json` 的读-改-写,消除 daemon 状态文件并发写竞态 ### 安全 - 代理凭据不再落入世界可读位置:传给 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 ### 新增 diff --git a/Cargo.lock b/Cargo.lock index b187416..4230c43 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -66,7 +66,7 @@ checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" [[package]] name = "bat-adapters" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anyhow", "async-trait", @@ -83,7 +83,7 @@ dependencies = [ [[package]] name = "bat-assetbundle" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anyhow", "hex", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "bat-cas-engine" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anyhow", "async-trait", @@ -112,7 +112,7 @@ dependencies = [ [[package]] name = "bat-core" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anyhow", "async-trait", @@ -125,7 +125,7 @@ dependencies = [ [[package]] name = "bat-ffi" -version = "0.1.0" +version = "0.2.0" dependencies = [ "bat-adapters", "bat-infrastructure", @@ -136,7 +136,7 @@ dependencies = [ [[package]] name = "bat-infrastructure" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anyhow", "async-trait", @@ -157,7 +157,7 @@ dependencies = [ [[package]] name = "bat-patch" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anyhow", "blake3", diff --git a/Cargo.toml b/Cargo.toml index 0a7dee8..64f9d6e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ members = [ ] [workspace.package] -version = "0.1.0" +version = "0.2.0" edition = "2021" authors = ["BlueArchive Toolkit Team"] license = "MIT"