“发布新版本”包括本地构建、GitHub Release 附件和 Docker Hub 远程镜像。三部分均完成并验证后,才算发布完成。
release.json 的 releaseVersion、webVersion、gitTag 与根目录 package/lock 版本保持一致。SHA256SUMS.txt。当前发布沿用 Apple Silicon 开发签名 DMG,供用户手动安装;不做 Apple 公证。缺少正式分发证书或公证配置,不阻塞这种安装包的 GitHub 发布,也不需要重复确认已确定的发布方式。
从干净的发布源码快照构建,并明确指定 DMG 和开发签名:npm run desktop:build,然后执行 npx electron-builder --mac dmg --arm64 --publish never --config.mac.type=development。验证签名完整性、架构、内置服务的版本与构建身份、实际启动以及 DMG 完整性,再上传 DMG、源码包和 SHA256SUMS.txt。发布说明明确写明开发签名、未公证、手动安装;不上传自动升级 ZIP、差分文件或 latest-mac.yml,不宣称已支持自动安装更新。
npm run desktop:pack 用于本地打包;发布支持自动升级的正式分发包时使用 npm run desktop:release,其上传行为固定为 never,先生成可检查的本地产物。需要:
CSC_NAME 指定 Developer ID Application: ... 分发签名身份。xcrun notarytool store-credentials yaoyao-notary --apple-id <邮箱> --team-id <团队 ID>,按隐藏输入提示录入 App 专用密码,验证通过后设置 APPLE_KEYCHAIN_PROFILE=yaoyao-notary。自定义钥匙串可另设 APPLE_KEYCHAIN 路径。APPLE_API_KEY、APPLE_API_KEY_ID、APPLE_API_ISSUER,或 APPLE_ID、APPLE_APP_SPECIFIC_PASSWORD、APPLE_TEAM_ID。凭据通过钥匙串或环境注入,不写入仓库或发布说明。正式命令启用强制签名与公证,并校验包内 app-update.yml 指向 Lsamien/yaoyao、签名完整性、公证票据,以及 latest-mac.yml 的版本、附件名、大小和 SHA-512。当前仍只发布 Apple Silicon 桌面包;不要上传指向不存在的 Intel 包的清单。
支持自动升级的 GitHub Release 必须同时上传同一次构建生成的 Yaoyao-{版本}-arm64.dmg、Yaoyao-{版本}-arm64.zip、各自 .blockmap、latest-mac.yml 和 SHA256SUMS.txt。ZIP 是自动更新载荷,DMG 是首次安装与旧客户端迁移载荷。命令生成的 SHA-256 清单包含桌面附件;本次有源码包等其他附件时,发布前一并补入清单。不能在生成 ZIP 和更新摘要之后再修改应用或重新签名。
既有手动安装版客户端需先手动安装一次正式包,之后才能使用“下载更新 → 重启更新”。发布前应使用同一签名身份的两个版本,在隔离机器上验证实际替换与重新启动;单元测试或未签名包的打包成功不能代替这项验收。
固定仓库为 samienluo/yaoyao。以每次发布的 vX.Y.Z 为版本标签:
| 标签 | 内容 | 更新规则 |
|---|---|---|
samienluo/yaoyao:vX.Y.Z-amd |
linux/amd64 |
每个新版本发布,保留旧版本标签 |
samienluo/yaoyao:vX.Y.Z |
同时包含 linux/amd64、linux/arm64 的通用镜像 |
每个新版本发布,客户端自动选择架构 |
samienluo/yaoyao:latest |
最新稳定版本的同一通用镜像 | 新版本验证通过后更新 |
latest 指向已验证的通用镜像。保留全部旧版本标签,不覆盖或删除旧版本。-amd 标签对应 AMD64,latest 与新通用版本的 index digest 一致。/healthz。记录原生或模拟运行方式;/readyz 的上游连接状态另行说明。版本标题与更新说明只描述夭夭 AI 自身的功能、修复和兼容性,不出现其他参考产品的名称或对比。
每次在 docs/releases/vX.Y.Z.md 和 GitHub Release 中同步说明:
latest 的 digest、架构和运行验证结果。未完成的项目明确标出,不写“已验证”。latest 已更新,旧版本标签保留;数据备份、权限或迁移方面的必要说明。发布完成前,确认 GitHub Release 为正式版本(非草稿、非预发布),最新版本接口指向目标版本,所有附件摘要一致,远程镜像与 latest 已按上述规则验证。
当前镜像标签与部署方法见 Docker 部署说明。