Skip to content

docs: MaaEnd OTA 发布迁移至独立仓库 - #4

Closed
youngslin wants to merge 4 commits into
devfrom
feat/maaend-delta-publisher
Closed

youngslin wants to merge 4 commits into
devfrom
feat/maaend-delta-publisher

Conversation

@youngslin

@youngslin youngslin commented Nov 13, 2026 •

Copy link
Copy Markdown

已迁移到独立仓库

MaaEnd 的增量生成器、v2 协议、上传工具、测试、工作流和说明已迁移至 Auto-Mas-Updater-ReleaseOTA。本分支撤回了所有 MaaEnd 发布代码,仅保留 README 迁移指引,不再从作业数据仓库运行发布。

主程序配套仍在 AUTO-MAS #1985,下载位置已改为 maaend / ReleaseOTA。新仓库上传器仅允许该分类下四个架构/通道文件,首次发布自动创建;密钥保存在新仓库 Actions Secret,不在代码中。

本 PR 关闭,不合入旧的发布工作流。撤回后作业与养成快照原回归 11 项通过。

@youngslin youngslin changed the title feat(maaend): 生成官方包增量并发布至下载站 feat(maaend): 发布多正式基准与同号 beta 的备用增量包 Nov 13, 2026
youngslin added a commit to AUTO-MAS-Project/AUTO-MAS that referenced this pull request Nov 14, 2026
## 摘要

- MaaEnd 增量更新优先复用 MFW 的 HTTP Range 读取器,直接从官方全量 ZIP 重建原始 ZIP;复用的是读取器,不是
MFW 文件树安装流程。公共重建工具没有宿主依赖,本次不为其他专项开启该能力。
- GitHub 路径不限起始版本,以实际读取量 40%、变化条目 3000 和网络条件决定是否回退;失败后尝试 [数据仓库
#4](AUTO-MAS-Project/AUTO-MAS-Copilot-Data#4) 的
Action 增量,最后沿用全量下载。默认仍为全量,停止操作不会触发备用下载。
- Action 备用包覆盖目标之前最多三个正式版;beta 必须有同号正式基准。客户端保留最近安装 ZIP 和最近正式基准,避免 beta
更新覆盖后续备用包需要的基准;两路都必须通过独立 GitHub 官方整包大小和 SHA256,之后才交给原有事务安装器。
- 说明见 [MaaEnd
双路径增量更新](https://github.com/youngslin/AUTO-MAS/blob/feat/maaend-multi-base-delta/docs/maaend-incremental-update.md),包含范围、限制、缓存、重复/删除/回退文件及发布边界。保存与执行复用现有遥测结果入口,不新增逐区间事件。

## 路径与限制

| 路径 | 允许的起点 | 失败后的处理 |
| --- | --- | --- |
| GitHub Range | 任意跨度的可信旧缓存 ZIP,包括跨多个 beta;不需要版本范围索引 | 再试 Action 自建站包 |
| Action 正式版 | 如 `3.0.0 / 2.9.0 / 2.8.0 → 3.1.0`;更早版本不使用本站增量 | 全量 |
| Action beta | `3.1.0` 正式版或 `3.1.0b1…b7 → b8`,实际重建使用缓存的 `3.1.0` 原始 ZIP
| 缺同号正式版、缺可信正式缓存、站点未发布或不匹配时全量 |

GitHub 只接受范围正确且完整的 206;返回 200 不读取整包响应体。实际读取预算包含头、中央目录和对齐开销,超过整包 40%
即退出;变化条目超过 3000 也退出。单次网络超时 30 秒。CDK 提供完整包备用源时,复用 MFW 网速保护,以 40% 读取上界保守估算
120 秒预算、180 秒实际网络耗时上限;没有较快备用源时不以这两项阈值打断持续传输的直连。

ZIP
是完整目标快照,不在当前安装上逐版叠补丁。重复数据复用,删除、改名和内容回退以目标快照为准;用户配置仍由现有安装器保护。CRC/大小只挑选复用候选,不能替代最终整包
SHA256;压缩字节不同导致 SHA256 不一致时丢弃重建结果。缓存最多两份原始
ZIP,约占两个整包大小;无缓存时允许先全量一次,不额外下载正式基准来伪装节省流量。

## 验证

- Windows,锁定 Python 环境;实现提交
`57651c30569e247731b9aa762c7480dfe7e6ee24`,基于上游 `70376570f`。
- 真实官方 x64 `v3.1.0-beta.4 → beta.5`:官方完整 ZIP **316,003,772** 字节,Range
实际读取 **38,917,565** 字节(约节省 **87.7%**),复用 **3035** 个条目、取回 **11** 个变化条目。重建
SHA256
与官方完全一致:`05b516305872c8b8a41fa0235d5ecfedef0157d1822dbe7147cc3112c00477a4`。原型耗时
73.9 秒;生产读取路径再次复现同一结果。
- 同一真实包由数据仓库新生成器产生 **11,172,784** 字节 v2 包,再由主程序实际 v2 解码器重建,亦通过上述官方
SHA256。此项是跨仓库字节协议验证,未绕过正式发布规则去声称没有同号正式基准也能使用 Action。
- Range 重建包通过真实 `apply_update`
入口安装到独立临时目录,目标版本、安装回执和用户配置保留通过;不启动游戏、不更改用户实际安装。
- 相关回归 **107 passed**:真实更新入口覆盖跨 beta/旧正式版的 Range、文件删除/回退/复用、200
响应后自建站接续、正式基准跨 beta 保留、损坏与错误基线回退、取消,以及既有 MFW 核心与预取回归。
- `ruff format --check .`、相关文件 Ruff、`uv lock --check`、diff
和更新日志检查通过。完整后端回归 `uv run --no-sync python -m pytest tests -q -p
no:cacheprovider --tb=short`:**2097 passed、1 skipped、1 failed,17
subtests passed**。唯一失败仍是此前已在未修改上游复现的
`tests/utils/test_fluxdown_detect_managed_priority.py::test_incomplete_managed_fluxdown_falls_back`,由本机已有完整
`res/fluxdown-cli` 优先于测试夹具外部目录触发;本 PR 未修改该实现或测试,没有新增失败。

## 发布边界

没有合并或触发站点生产发布;arm64 实包未验证。Action 仍需四个独立文件 ID 和授权密钥,旧 v1
发布包在新客户端上全量回退,旧客户端不识别 v2 也全量回退。

本次属于 #1949 同一 beta 未发布功能的补充,按仓库规则使用 `skip-changelog`,不重复增加碎片,不修改版本号或
CHANGELOG。
@youngslin

Copy link
Copy Markdown
Author

@jinghero

@youngslin
youngslin requested a review from jinghero November 14, 2026 13:14
@jinghero

Copy link
Copy Markdown
Contributor

@jinghero review

Copy link
Copy Markdown
Contributor

宝宝,看完了,可以合并喵。多个起点共用新增字节,但每个起点都会单独重建并核对官方整包 SHA256;也对过主程序的读取规则,没有发现必须修改项。

生成器只负责产出备用包,上传继续复用现有发布与公开回读校验;客户端决定能否使用,安装仍交给原来的安装流程。同号正式基准不存在时让 beta 回退全量,这个边界保留得很清楚。

正式上线前还要配好四个独立文件及上传权限,并验证实际上传和 arm64 实包;这些尚未验证,不把代码审查通过当成已经上线。

—— 把生成端和读取端对齐检查过的 dot酱敬上 🐾

@youngslin youngslin changed the title feat(maaend): 发布多正式基准与同号 beta 的备用增量包 docs: MaaEnd OTA 发布迁移至独立仓库 Nov 14, 2026
@youngslin youngslin closed this Nov 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants