胡飞
|
053f1b5dc8
|
fix(release): beta 发版脚本按 navop_app 名同步 Cargo.lock
产品拆分后工作区包名从 main 改成 navop_app,beta-release.sh 还在按 main 找
lock 条目,rsync 阶段直接报 <missing>。改成精确改写 navop_app / navop /
navop-shell / navop-data 四个成员版本(cargo metadata --no-deps 不会重算
成员版本,靠它刷 lock 本来就不成立),并同步更新提示文案。
|
2026-11-02 18:52:43 +08:00 |
|
胡飞
|
0b1bb9f25c
|
fix(release): beta 发版脚本默认推送 origin,tag 才能触发 GitHub Actions
beta-release.sh 原来默认 REMOTE=cnb,tag 只推到 CNB 不会触发
release-trigger.yml,beta 构建根本不会开始。改为默认 origin,并新增
MIRROR_REMOTE=cnb 在成功后镜像推一份 dev 与 tag(失败只警告):
tag 唯一性预检也同时检查两个远端。
|
2026-11-01 17:57:34 +08:00 |
|
胡飞
|
46a5978443
|
refactor(product-split): main 目录归位 crates/navop_app,包名统一 navop_app
产品装配移出后 main 已只剩库,却仍占着仓库根目录、与 apps/* 并列,看起来像一个
产品。本次把它落回 crate 层:
- git mv main crates/navop_app;package name 由 main 改为 navop_app(与 lib 名
一致),删掉冗余的 [lib] 块;根 members 同步。
- 三个 app 改为直接相对路径依赖 navop_app = { path = "../../crates/navop_app" },
不进 workspace.dependencies(Cargo 不允许再关继承来的 default-features)。
- 26 处逃出 crate 根的 include_str! 各加一层 ../(resources/*、core/build.rs、
apps/* 与 crates/*_view 的 Cargo.toml、app_kit 源码);build.rs 的 icon/manifest
路径同步。
- env_file.rs 与 i18n_locale_keys_contract 的「工作区根」改为上两级;
cross-crate 源码断言(core/window_close、db_view、one_ui、windows_rdp_host)指向
新路径。
- locales/main.yml 保持原名:i18n 命名空间与全仓 t!() key 绑定,改名是另一件事。
- 发布链路同步:release_pr.py(MANIFEST_PATH、lock_app_version、报错文案)、
beta-release.sh 版本包名集合、release-tag.sh / ci.yml / release.yml /
.github/RELEASE.md / AGENTS.md / CLAUDE.md 等文档的路径与 -p navop_app。
- 顺带修两处未推送提交遗留的 CI 红线:app_kit::install 的
expected_binary_name cfg 过宽(macOS dead_code)、测试里多余的
is_supported_app_bundle import;release PR 测试夹具补齐四个 manifest;
windows_rdp_host 的 ALLOWED_FILES 断言对齐 release_pr.py 现状。
验证:cargo test -p navop_app(595 lib + 4 集成契约)、-p app_kit(149)、
one-ui/windows_rdp_host 契约、三个 app cargo build、cargo check --all-targets
全通过;script/tests 32 项、release-packaging 与 scripts/ai 的 node 测试全绿。
|
2026-11-01 00:52:04 +08:00 |
|
胡飞
|
b696f4ddb5
|
feat(release): 统一 tag 三产品发布,独立产品接入自更新链路
一个 tag 同时发布全量 navop、navop-shell、navop-data 三个产品:
- release.yml 矩阵加 product 维度(products 输入 all/full/standalone 可裁剪),
独立产品覆盖四个主力平台,复用全量的构建/打包/上传步骤;独立产物公开命名
统一 {product}-{version}-{label},Windows 补裸 exe zip 供自更新器直连。
- 版本校验(prepare job / release-tag.sh / beta-release.sh / release_pr.py)
全部扩成四个 manifest(main + 三个 app crate)统一比对,app 版本对齐 0.22.0。
- upload-r2.yml 为三个产品各生成一份更新清单:全量 updates/latest.json,
独立产品 updates/navop-shell/shell/latest.json 与 updates/navop-data/data/
latest.json(beta 通道各插 beta/ 段),键位与 config.rs feed_url() 一致。
- install.rs 自更新安装器按运行时 identity 参数化 bundle/exe/binary 候选名,
独立产品可自更新,全量保留 OnetCli.app / onetcli.exe legacy 兼容。
- 删除 standalone-products.yml(能力并入 release.yml);package-linux-product.sh
支持显式产物命名并入统一发布;RELEASE.md 补统一发布与 products 输入文档。
验证:cargo test -p app_kit --lib 149 passed;clippy 无新告警;
node --test script/test-release-packaging.mjs 40/40;工作流 YAML 解析通过。
|
2026-10-31 23:24:48 +08:00 |
|
胡飞
|
87a6c0b9f1
|
feat(update): 新增 beta 测试通道,测试版与稳定版分流
服务端把测试版清单单独落在 updates/beta/latest.json,稳定清单
updates/latest.json 完全不动,老客户端行为不变:
- release.yml 从 tag 形态推导通道,beta 发布给 GitHub Release 加
--prerelease,并把 channel 显式派发给 upload-r2.yml;
- upload-r2.yml 新增 channel 输入(留空按 tag 推导 + 白名单校验),
清单按通道落位;prune 额外保留 beta 清单指向的安装包,避免 404;
- script/beta-release.sh 一条命令完成 beta 版本号 + changelog +
commit + tag + push,--dry-run 可预演;
- script/test-release-packaging.mjs 补 beta 清单与 prune 场景断言。
客户端新增「更新通道」设置(稳定版/测试版,默认跟随构建版本):
- AppSettings.update_channel,预发布构建默认 Beta;
- feed 由通道派生,stable 永远只接受正式版本号,beta 才接受预发布;
- beta 通道不回落 GitHub Releases(该端点语义排除 prerelease),
beta 清单 404 视为「还没有 beta 版本」而非检查失败;
- 「跳过此版本」按通道分别记录(beta:/stable: 前缀),互不影响;
- 关于页更新分组加通道下拉(切 Beta 先确认)、预发布构建版本号加
Beta 标签,切回稳定通道时给出说明条;更新弹窗标题与徽标区分测试版。
文档:docs/design/beta-channel.md 记录分层、推导规则与客户端消费方式;
.github/RELEASE.md 补 beta 发版流程。
|
2026-10-31 22:21:38 +08:00 |
|