会议要求「基于 Wails 自带的 OTA 自动更新框架实现项目自更新」,同时明确「首版暂不实现 macOS 应用覆盖更新,避免触发系统安全权限限制」。
当前状态:完全没有
全仓库 grep selfupdate / SelfUpdate / OTA / autoupdate 在 internal/、cmd/、frontend/src/ 下零命中。现有的更新能力全部是针对被管理的 Agent(internal/app/update.go 更新 npm/uv 包),不是 OneAgent 自身。
用户拿到 0.0.1 之后没有任何途径知道有新版本,只能自己回 GitHub 看。
与 macOS 限制的关系
会议的判断是对的,而且当前打包方式让问题更明确:build-artifacts.yml:126 只做 ad-hoc 签名
codesign --force --deep --sign - "bin/OneAgent.app"
ad-hoc 签名的应用没有稳定身份,就地替换 .app 会破坏已有的 Gatekeeper 放行记录,用户每次更新后都要重新手动放行。所以首版做「检查并提示 + 打开下载页」而不是「下载并覆盖」是合理的。
另外发行渠道仍是 technical-preview-unsigned(README.md:17),在有正式签名之前,静默覆盖更新不应该做。
建议范围(首版)
- 一个检查接口:读取 GitHub Releases 的 latest tag,与
internal/version.Version 比较
- 有新版时在界面提示,按钮跳转到 Release 页面,不自己下载不自己替换
- 检查动作要走
internal/ 已有的超时与脱敏约定;这是首个主动对外网请求,需要确认它符合 docs/product-boundary-baseline.md(该文件把网络访问边界写死,新增出站请求建议先确认是否需要 ADR)
- 检查失败必须静默降级,不能因为拿不到版本信息就阻塞界面
依赖
版本号本身还没有唯一真源,也没有在界面上展示,见 #45。那个先做,否则「当前版本」比较的对象是空字符串。
会议要求「基于 Wails 自带的 OTA 自动更新框架实现项目自更新」,同时明确「首版暂不实现 macOS 应用覆盖更新,避免触发系统安全权限限制」。
当前状态:完全没有
全仓库 grep
selfupdate/SelfUpdate/OTA/autoupdate在internal/、cmd/、frontend/src/下零命中。现有的更新能力全部是针对被管理的 Agent(internal/app/update.go更新 npm/uv 包),不是 OneAgent 自身。用户拿到 0.0.1 之后没有任何途径知道有新版本,只能自己回 GitHub 看。
与 macOS 限制的关系
会议的判断是对的,而且当前打包方式让问题更明确:
build-artifacts.yml:126只做 ad-hoc 签名ad-hoc 签名的应用没有稳定身份,就地替换
.app会破坏已有的 Gatekeeper 放行记录,用户每次更新后都要重新手动放行。所以首版做「检查并提示 + 打开下载页」而不是「下载并覆盖」是合理的。另外发行渠道仍是
technical-preview-unsigned(README.md:17),在有正式签名之前,静默覆盖更新不应该做。建议范围(首版)
internal/version.Version比较internal/已有的超时与脱敏约定;这是首个主动对外网请求,需要确认它符合docs/product-boundary-baseline.md(该文件把网络访问边界写死,新增出站请求建议先确认是否需要 ADR)依赖
版本号本身还没有唯一真源,也没有在界面上展示,见 #45。那个先做,否则「当前版本」比较的对象是空字符串。