nyaKazuha
|
9d4f8d903c
|
feat(addressables): 补全 catalog 可校验字段
bat-rust / Build and test Rust (push) Canceled after 0s
bat-rust / Build and test Go API (push) Canceled after 0s
补充 JSON/compact catalog 的 provider ID、bundle name、资源类型、hash、size、CRC 和依赖字段,并贯通 ResourceEntry、SQLite 资源索引和回归 golden。对 compact extra data 与 resource type index 的损坏返回明确错误,不再把 bundle name 当作 hash fallback。\n\n验证:cargo fmt --check;cargo test -p bat-core --locked;cargo test -p bat-adapters --locked;cargo test -p bat-infrastructure --locked;git diff --check。\n\nClippy 仍受既有 core/src/domain/game_client.rs:141 的 needless-question-mark 和 items-after-test-module 基线问题影响,未混入本 issue 修复。\n\nFixes #2
|
2026-08-19 23:10:16 +08:00 |
|
nyaKazuha
|
72c1a879a3
|
feat(bat): 补全工作流命令与人工校对状态
bat-rust / Build and test Rust (push) Canceled after 0s
bat-rust / Build and test Go API (push) Canceled after 0s
Refs #43
|
2026-08-19 21:33:33 +08:00 |
|
nyaKazuha
|
550ee7fd9a
|
feat(bat): 补全翻译工作台编辑命令
bat-rust / Build and test Rust (push) Canceled after 0s
bat-rust / Build and test Go API (push) Canceled after 0s
Refs #43
|
2026-08-12 09:33:14 +08:00 |
|
nyaKazuha
|
974a6e18c3
|
feat(bat): 暴露翻译任务状态控制
Refs #43
|
2026-08-12 09:11:09 +08:00 |
|
nyaKazuha
|
1933d6acb0
|
feat(bat): 补全工作流校验与调度过滤
bat-rust / Build and test Rust (push) Canceled after 0s
bat-rust / Build and test Go API (push) Canceled after 0s
新增 parse clear-cache 和 i18n validate,补齐 schedule 的作用域过滤与单轮执行上限,并将列表过滤参数暴露给 bat-api dashboard。同步 RPC、OpenAPI、用户文档和回归测试。
Refs #43
|
2026-08-03 23:47:59 +08:00 |
|
nyaKazuha
|
0784d5b532
|
feat(bat): 完善工作流调度与 dashboard RPC
bat-rust / Build and test Rust (push) Canceled after 0s
bat-rust / Build and test Go API (push) Canceled after 0s
补全资源拉取、解析、翻译、重打包和本地化发布命令,支持单次、限定次数与周期调度。移除 TUI 计划并通过 schedule.* RPC 暴露给 bat-api dashboard。
Closes #43
|
2026-08-03 22:18:52 +08:00 |
|
nyaKazuha
|
3b103be8a9
|
docs: 对齐全部文档状态
bat-rust / Build and test Rust (push) Canceled after 0s
bat-rust / Build and test Go API (push) Canceled after 0s
|
2026-08-03 12:19:06 +08:00 |
|
nyaKazuha
|
a2e2ae8ac5
|
docs: 对齐 RPC 接口文档
bat-rust / Build and test Rust (push) Canceled after 0s
bat-rust / Build and test Go API (push) Canceled after 0s
|
2026-08-03 11:47:51 +08:00 |
|
nyaKazuha
|
7c863d10d1
|
fix: 稳定并发 worker 回归测试
bat-rust / Build and test Go API (push) Canceled after 0s
bat-rust / Build and test Rust (push) Canceled after 0s
|
2026-08-03 00:57:29 +08:00 |
|
nyaKazuha
|
9a5b3ba39b
|
fix: 拆分 bat 控制面
|
2026-08-03 00:43:11 +08:00 |
|
nyaKazuha
|
2b053e247d
|
fix: 抽象官方库存与 sidecar hash 策略
|
2026-08-02 23:12:25 +08:00 |
|
nyaKazuha
|
ba28e067c9
|
fix: 明确并发下载报告按计划顺序输出
|
2026-08-02 22:47:21 +08:00 |
|
nyaKazuha
|
6442c7661d
|
fix: 保持官方资源 adapter URL 错误契约
|
2026-08-02 22:44:09 +08:00 |
|
nyaKazuha
|
8b64cc94f3
|
fix: 完成下载并发与翻译交接链路
|
2026-08-02 22:34:23 +08:00 |
|
nyaKazuha
|
d533c88108
|
chore: 忽略本地 CHECK.md
|
2026-08-01 19:17:36 +08:00 |
|
nyaKazuha
|
12c5d365ab
|
feat(translation): 增加离线任务状态查询
|
2026-08-01 19:04:54 +08:00 |
|
nyaKazuha
|
a05d3ee6af
|
fix(repository): 扩展资源索引查询面
|
2026-08-01 12:11:35 +08:00 |
|
nyaKazuha
|
8d930bf4d7
|
chore(docs): 增加状态一致性门禁
|
2026-08-01 10:55:43 +08:00 |
|
nyaKazuha
|
80e6718e8a
|
fix(sync): 对齐 localized 状态契约
|
2026-07-31 18:28:02 +08:00 |
|
nyaKazuha
|
df361cff28
|
test(api): 固化 Rust-Go RPC 契约
|
2026-07-31 18:20:37 +08:00 |
|
nyaKazuha
|
1e466d3374
|
fix(sync): 规范 release flow 状态码解析
|
2026-07-31 17:45:50 +08:00 |
|
nyaKazuha
|
6af7706190
|
fix(api): 补齐 bat-api 控制与后端 RPC
|
2026-07-31 17:01:03 +08:00 |
|
nyaKazuha
|
20ddd67947
|
fix(api): 统一 catalog GameMainConfig 字段
|
2026-07-31 16:05:17 +08:00 |
|
nyaKazuha
|
4cc143f66d
|
fix(sync): 固化 release flow 状态码
|
2026-07-31 15:57:07 +08:00 |
|
nyaKazuha
|
99e6b3a23a
|
fix(sync): 立即校验官方 hash sidecar
|
2026-07-31 13:12:21 +08:00 |
|
nyaKazuha
|
16e73327b4
|
fix(sync): 补齐发布清理与校验进度
|
2026-07-31 13:00:53 +08:00 |
|
nyaKazuha
|
8ec0e12795
|
ci(api): 增加 Go API 门禁
|
2026-07-31 12:55:43 +08:00 |
|
nyaKazuha
|
03021ad649
|
docs(project): 同步维护冻结与运行文档
bat-rust / Build and test Rust (push) Canceled after 0s
补齐解析模块维护冻结规则,并同步 CURRENT_STATUS、CURRENT_GAPS、PROJECT_PLAN、RPC 参考、部署指南、用户指南和官方资源运行说明。
文档同时反映 bat-api 资源 bootstrap/分发边界、官方同步解析缓存、TextUnit 队列、双目录发布和 patch 入口的当前状态。
验证:未运行新命令;本轮已按要求停止重复构建/测试。
|
2026-07-31 00:45:46 +08:00 |
|
nyaKazuha
|
3f78f8f880
|
feat(api): 补齐资源分发服务入口
新增 bat-api 资源 bootstrap/分发 HTTP 服务、RPC release 发现、CDN path 分发、launcher 资源引导兼容、控制面中间件、OpenAPI 和 systemd 模板。
同步 Go 边界文档,明确 Rust bat 是资源生产者和同步运维入口,Go bat-api 是只读 bootstrap/分发服务,试验 Go CLI 产物为 bin/bat-go。
验证:未运行新命令;本轮已按要求停止重复构建/测试。
|
2026-07-31 00:41:48 +08:00 |
|
nyaKazuha
|
2079c6a307
|
feat(sync): 接入解析缓存与汉化发布前置
补齐官方 release 解析缓存、TextUnit 明细索引、资源变更集、Crowdin handoff 预留、ResourceRepository 导入元数据和 localized release patch 前置链路。
同时开放文件级 patch.apply 与 UnityFS TextAsset/string/semantic field patch CLI/RPC 入口,并保留官方原版资源与汉化产物双目录发布状态。
验证:cargo test -p bat-assetbundle --locked;cargo clippy -p bat-assetbundle --all-targets --locked -- -D warnings;cargo test -p bat-infrastructure --locked。
|
2026-07-31 00:38:45 +08:00 |
|
nyaKazuha
|
f4880a71bd
|
feat(patch): 补齐通用补丁引擎基础
实现 Binary、JSON、Text patch 与通用 manifest 校验基础。
验证:cargo test -p bat-patch --locked;cargo clippy -p bat-patch --all-targets --locked -- -D warnings。
|
2026-07-31 00:21:50 +08:00 |
|
nyaKazuha
|
3e9bb20d79
|
feat(assetbundle): 完善官方资源解析与双目录发布
|
2026-07-25 20:51:01 +08:00 |
|
nyaKazuha
|
102b49b666
|
feat(rpc): 完成 issue #1 Go 调用边界
bat-rust / Build and test Rust (push) Failing after 3m17s
|
2026-07-24 17:58:34 +08:00 |
|
nyaKazuha
|
ecda08ed97
|
feat(rpc): 补齐 issue #1 资源后端接口
|
2026-07-24 15:55:37 +08:00 |
|
nyaKazuha
|
a729615a48
|
fix(sync): 移除多线程下载并补齐staging复用回归
|
2026-07-24 10:34:58 +08:00 |
|
nyaKazuha
|
3f5d2a8da7
|
fix(sync): 修复官方资源并发下载与媒体路径
bat-rust / Build and test Rust (push) Successful in 3m47s
daemon 子进程现会透传下载并发配置,下载进度按已完成数量单调上报。MediaCatalog 改为使用官方相对路径生成全局媒体 URL,覆盖 GameData、Prologue 等目录并补齐 jpg 资源,避免叶子文件名误拼媒体根目录导致 403。同步更新测试、smoke 断言和运行文档。
|
2026-07-23 11:56:34 +08:00 |
|
nyaKazuha
|
d694100d6c
|
fix(ci)
bat-rust / Build and test Rust (push) Successful in 3m44s
|
2026-07-21 22:52:39 +08:00 |
|
nyaKazuha
|
3add5f7327
|
fix(ci): 产物构建与上传
|
2026-07-21 22:24:17 +08:00 |
|
nyaKazuha
|
40bd82e227
|
fix(ci):
bat-rust / Build and test Rust (push) Successful in 1m45s
|
2026-07-21 22:05:25 +08:00 |
|
nyaKazuha
|
84047fbacb
|
fix(ci): 新增同步环境
bat-rust / Build and test Rust (push) Failing after 6s
|
2026-07-21 21:54:51 +08:00 |
|
nyaKazuha
|
43e1a33b88
|
fix(ci): 移除 Gitea workflow 外部 action 依赖
bat-rust / Build and test Rust (push) Failing after 1s
改为在 linux runner 中手动 fetch 当前提交,避免自托管 runner 准备阶段通过 gh-proxy 克隆 actions/checkout 和 dtolnay/rust-toolchain 时被 403 拦截,并同步开发文档与缺口说明。
|
2026-07-21 11:53:39 +08:00 |
|
nyaKazuha
|
924cff5f51
|
ci(rust): 切换 Gitea runner 标签为 linux
bat-rust / Build and test Rust (push) Canceled after 14m5s
保留 .gitea/workflows/bat.yml 作为实际工作流入口,删除冗余副本,并同步项目计划与当前缺口文档。
|
2026-07-21 11:35:59 +08:00 |
|
nyaKazuha
|
d76f6f1c88
|
ci(rust): 添加 Gitea host runner 工作流
补充自托管 Gitea host-runner workflow,并将项目状态、缺口、开发指南与路线图同步到当前实际情况。
|
2026-07-21 10:39:11 +08:00 |
|
 nyaKazuhaandClaude Fable 5
|
0ab3f3b953
|
feat(download): 多线程下载 + 重试指数退避(issue #17)
下载主循环由串行改为「并发下载 + 串行簿记」三段式:
- Phase A:无网络前置校验(官方性/目标路径/建目录)+ 判定跳过/需下载,
非官方 URL 在任何下载前 fail-fast
- Phase B:need-download 项经 scoped 线程池并发下载(默认并发 4,
可配 1..=256)。worker 只做只读 &self 的 pull_one(各 URL 独立
.part/目标文件),经 mpsc 把结果送回主线程;manifest/quarantine
簿记与进度回调全在主线程串行执行,无需加锁。首个失败或 should_cancel
置 cancel 标志,其余 worker 在任务边界停止
- Phase C:按 plan 顺序串行收尾——seed .hash 校验(顺序相关、可
fail-fast)+ 构建有序结果
fail-fast 与「不发布不完整资源」不变量保留;进度事件按 URL 配对但
顺序不再单调(并发下天然如此)。
curl 重试加指数退避(网络类 200ms→400ms→800ms…上限 5s;ETXTBSY 仍走
极短退避),并发下对官方 CDN 更礼貌;退避基值 cfg(test) 下为 0 不拖慢
单测。
并发度经 OfficialUpdateConfig.download_concurrency 贯通,CLI
--download-concurrency 与 BAT_DOWNLOAD_CONCURRENCY 可配,.env 模板
与 USERGUIDE/CURRENT_STATUS/CHANGELOG 同步。
验证:新增并发正确性测试(并发 8:每 URL 恰一次 started+finished、
全部落盘)、并发度钳制、退避时长计算、CLI/env 解析单测;progress
排序测试改为顺序无关不变量;workspace 全测试(20 套件) + fmt +
clippy --all-targets -D warnings 全绿。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 03:25:04 -07:00 |
|
 nyaKazuhaandClaude Fable 5
|
8efd8f36b4
|
feat(addressables): 提取 m_Crc 并提供 size/CRC 校验 API(issue #2)
Addressables catalog 里的 m_Crc(bundle IEEE CRC-32)此前从未解析;
声明的 size 也只作元数据、无校验能力。本次:
- ResourceEntry 新增 crc: Option<u32>(serde default 向后兼容),
compact 与 expanded 两种 catalog 形态均解析 m_Crc/m_Crc→crc
- core 新增 crc32_ieee(IEEE CRC-32,等价 zlib/Unity m_Crc)与
ResourceEntry::{declared_crc, verify_downloaded_bytes}:按声明的
size/crc 校验字节,0 视为「无 CRC」跳过
- SqliteResourceRepository 持久化 crc 列,旧库经幂等 ensure_column
迁移补列(pragma_table_info 判断后 ALTER)
- golden 投影与 fixture 补 crc 字段,验证真实形态 catalog 提取贯通
校验 API 暂不接入 import 覆盖路径(该路径按 CAS id 重写 hash/size 是
既定语义,且合成测试的声明值不匹配实际字节);接入下载/导入校验留
待 G-011。
验证:core crc32 标准向量 + verify 分支单测、expanded 形态非零 crc
提取单测、golden 端到端;core/adapters/infrastructure 全测试 + fmt +
clippy --all-targets -D warnings 全绿。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 02:41:41 -07:00 |
|
 nyaKazuhaandClaude Fable 5
|
a150407a14
|
feat(unity): UnityFS 目录条目越界校验(issue #3)
解析阶段已读取 directory 的 offset/size,但从不校验其是否落在解压
数据区(各 block uncompressed_size 之和)内;截断或损坏的 bundle
会给出越界目录条目并被静默接受。新增 validate_directory_bounds:
累加数据区大小、逐条校验 offset+size 不越界且不溢出 u64,越界即
报错并带上下文,接在 parse_blocks_info 之后。
验证:新增 4 个测试(合法覆盖尾部/越界拒绝/offset+size 溢出/
端到端越界 bundle 被拒);bat-adapters 73 测试全绿,fmt + clippy
-p bat-adapters --all-targets -D warnings 通过。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-17 22:07:40 -07:00 |
|
 nyaKazuhaandClaude Fable 5
|
d9332299ef
|
docs: G-008 并入 G-009(bat-api 仿官方 API),调整关闭顺序
- G-008(Go CLI)关闭:用户命令入口由功能完整的 Rust bat 承担,
Go 侧转向仿官方 API 的 bat-api(issue #19)
- G-009 重定义为 bat-api:仿 BlueArchive 官方 API 的 Go HTTP 服务,
含鉴权/签名验签,经 daemon RPC + current/ 发布布局对接
- 关闭顺序改为先完善 Rust bat 后端(issue #2/#3/#17)再做 bat-api
- PROJECT_PLAN 近期任务同步为 Rust 后端优先
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-17 21:55:03 -07:00 |
|
 nyaKazuhaandClaude Fable 5
|
7427a2a789
|
chore(release): 版本升级到 0.2.0
自 0.1.0(项目初始化)以来的 73 个提交构成首个功能版本:
CAS V1、官方资源同步闭环(auto-discover/原子发布/断点续传/校验/
quarantine)、watch/daemon 常驻与控制面、Resource Backend RPC API
(envelope + BAT-ERR 错误码模型 + daemon/resource/catalog/task 命名
空间)、任务历史持久化与 .env 无参启动。
CHANGELOG:未发布内容整理为 [0.2.0] - 2026-07-17,补录 RPC API/
错误码/任务持久化/.env 条目与 7 月修复项;计划清单移至未发布节。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
v0.2.0
|
2026-07-17 21:35:05 -07:00 |
|
 nyaKazuhaandClaude Fable 5
|
3edbe7ccee
|
feat(daemon): 任务历史文件态持久化与 .env 无参启动(issue #1)
任务持久化:
- 任务历史落 <state-dir>/bat-tasks.json(版本化、0600 原子写、不跟随
symlink),生命周期转换时 write-through;seq 持久化避免 pid 复用撞 ID
- daemon 重启恢复历史,中断时仍 queued/running 的任务标记 failed,
新增错误码 TASK_INTERRUPTED(BAT-ERR-700005)
- 损坏文件改名 .corrupt 留证后从空历史开始;无法识别的记录计数跳过
- core 新增 ErrorCode::ALL 公开码表与 from_id 反查(持久化错误码往返)
.env 配置:
- 首次启动在二进制所在目录释放 .env 模板(0600、create_new 防竞态),
之后每次启动加载为进程环境变量(不覆盖已存在变量)
- 优先级:CLI > 进程环境变量 > .env > 内置默认;BAT_* 键映射到
CliOptions 默认值,BAT_WATCH/BAT_DAEMON 仅对无子命令 Run 生效且
CLI 显式模式/dry-run 时让位;Redis 键预留(未接入)
- 工具/代理"非默认"判断改按 env 应用后基线,status/stop/logs 在
.env 存在时不误判;BAT_SKIP_ENV_FILE=1 整体禁用
验证:新增 10 个单测(env 解析/优先级/守卫回归/持久化往返/中断标记/
损坏恢复/未知类型跳过);真机 e2e:.env 释放加载、daemon 纯 .env 启动、
catalog.refresh 任务带类型化错误码落盘并跨 daemon 重启恢复(含日志);
fmt / clippy --workspace --all-targets -D warnings / test --workspace 全绿
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-17 21:15:47 -07:00 |
|
 nyaKazuhaandClaude Fable 5
|
ec40ed4660
|
docs: 关闭 G-017(决策不引入托管 CI)并同步 CURRENT_GAPS
- G-017 按决策关闭:不加入 GitHub Workflows,质量门禁由本地
fmt/clippy/test 与 Makefile/scripts 可重复脚本承担
- G-008 补记对接边界现状:issue #1 RPC Backend API 已就绪,
实现 Go CLI 时应重写 cmd/bat 现有 cgo 骨架
- 关闭顺序移除已关闭的 G-018,更新时间与结语同步
- PROJECT_PLAN 里程碑 11 的 CI 交付物改为本地可重复验证,
与 G-017 决策一致
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-17 20:44:01 -07:00 |
|