还原发行管理页各平台下载地址
还原发行管理页各平台下载地址
Title
fix(web): restore per-platform release download links
Target branch
main
摘要
da994b3 在简化发行管理页时删掉了各平台发行包区块(压缩包名、下载入口、SHA256 校验命令与复制按钮),并把打开 GitHub Release 的地址写死为 nnworld/TunnelMesh。服务端 GET /api/v1/downloads 一直仍在返回 assets[],发布链路现在也确实产出 6 个平台归档,因此恢复展示层,并让所有地址重新回到“由服务端按配置拼接”的单一来源。
用户影响
- 管理员在后台直接看到
linux-amd64/arm64、darwin-amd64/arm64、windows-amd64/arm64六张卡片,可点下载、可复制curl ... | sha256sum -c -校验命令,与docs/deployment/binary-release.md的回滚步骤重新对得上。 - “打开 GitHub Release”回到服务端
releaseUrl,指向当前构建对应的 tag;镜像仓库或 GitHub Enterprise 部署不再被引导到上游仓库。 - 源码构建(
version=dev)会看到一条提示:该版本没有已发布的发行包;归档名仍列出,便于与自构建产物对齐。
API、Schema 与配置影响
- 无 API/Schema/配置变更:
assets[]、releaseUrl均为既有响应字段,OpenAPI 的DownloadInfo未改动;无 DDL、无SchemaVersion变化。 - 前端行为变更:不再在包里内置仓库域名,
downloads.github_repository成为唯一来源。
安全与授权影响
- 页面仍仅管理员可见(
handleDownloads的 403 前置未变)。 - 复制内容是校验命令文本;不引入 GitHub 凭据、不代理发行文件、不新增日志字段。
测试证据
红灯(新增用例,实现前):
npm test -- --run src/tests/downloads-view.spec.ts→ 5 条全失败:.asset数量为 0、缺少a.download、缺少校验命令按钮、无notPublished提示(先前的Cannot read properties of undefined (reading 'path')是用例脚手架缺vue-routermock,补齐后仍是功能缺失)。
转绿与连带:
- 还原视图与双语言包后 5 passed。
- 旧文本用例
views.spec.ts断言源码不得出现asset.url/checksumCommand(它锁的就是删除态),按还原后口径改写,并保留“源码不得含https://github.com/”这条静态约束。 docs/user-guide/server-admin.md中“页面不再展示各平台下载”的表述与docs/operations/configuration.md对downloads.github_repository的说明相互矛盾,已随本次统一。
发布步骤
- 合并后发布 Server(控制台产物随二进制 embed)。
- 用一个已发布 tag 的构建核对六张卡片的链接可下载且校验命令可用;再用源码构建确认
dev提示出现。
回滚步骤
git revert本次合并即可:无数据、无接口、无配置影响,退回“只显示版本信息与 SHA256SUMS/manifest”的形态。
Reviewer 关注点
published用^v\d+\.\d+\.\d+$判断,与release.yml的版本校验一致;若未来允许预发布 tag(v1.4.0-rc1),此处与发布流水线需一起放宽。- 归档列表在
dev构建下仍然展示(只是加提示)。若产品更希望隐藏必然 404 的链接,可改为不渲染.assets,属交互取舍。 - 服务端
newDownloadInfo仍假定归档命名契约(tunnelmesh-<version>-<platform>);这与scripts/build-release.sh是两处并行的事实,真正的单一来源应由发布契约生成,属后续独立项。
集成状态
- 实施计划(补记):
docs/superpowers/plans/2026-09-29-downloads-platform-assets-restore.md。 npm test -- --run→ 41 文件 / 352 用例通过(新增downloads-view.spec.ts5 条);npm run build+bash scripts/verify-web-embed.sh→web/dist and internal/server/web_dist match。- 无 Go 源码改动,仍复核:
go vet ./...无输出;go test ./internal/server ./internal/storage -count=1→ ok(58.1s / 2.2s);git diff --check干净。 - 事实核对:
gh release view v1.3.0的资产为 6 个平台归档 +SHA256SUMS+manifest.json,命名与newDownloadInfo拼接结果一致(tunnelmesh-v1.3.0-<platform>.tar.gz|.zip)。