Repository navigation
Conversation
一个 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 解析通过。
产品装配移出后 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 测试全绿。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
本 PR 把
dev上两个提交合入main。1.
b696f4ddbfeat(release): 统一 tag 三产品发布,独立产品接入自更新链路动机:
navop/navop-shell/navop-data原先各自发版,独立产品还要单独跑一段standalone-products.yml的矩阵,版本、产物命名、更新清单三处不同步。修法
release.yml的矩阵加product维度(products输入all/full/standalone可裁剪),独立产品覆盖四个主力平台并复用全量的构建/打包/上传步骤;产物公开命名统一{product}-{version}-{label},Windows 补裸 exe zip 供自更新器直连。preparejob、release-tag.sh、beta-release.sh、release_pr.py)扩成四个 manifest(应用外壳 + 三个 app crate)统一比对。upload-r2.yml给三个产品各生成一份更新清单:全量updates/latest.json,独立产品updates/navop-shell/shell/latest.json、updates/navop-data/data/latest.json(beta 通道各插beta/段),键位与app_kit::update::config的feed_url()一致。app_kit::update::install自更新安装器按运行时 identity 参数化 bundle/exe/binary 候选名;全量保留OnetCli.app/onetcli.exelegacy 兼容。standalone-products.yml,package-linux-product.sh支持显式产物命名。2.
46a597844refactor(product-split): main 目录归位crates/navop_app,包名统一navop_app根因:产品装配移出后
main/只剩库(没有 bin、没有产品装配),却仍占着仓库根目录、与apps/*并列,看起来像一个产品;包名main与 lib 名navop_app也不一致。修法
git mv main crates/navop_app;[package] name由main改为navop_app(与 lib 名一致),删掉冗余[lib]块,根members同步。navop_app = { path = "../../crates/navop_app" };不进[workspace.dependencies](Cargo 不允许子 crate 再关继承来的default-features)。include_str!各加一层../(resources/*、core/build.rs、apps/*与crates/*_view的Cargo.toml、app_kit源码);build.rs的 icon/manifest 路径同步。env_file.rs与i18n_locale_keys_contract的「工作区根」改为上两级;跨 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。app_kit::install::expected_binary_name的 cfg 过宽(macOS dead_code)、测试里多余的is_supported_app_bundleimport;release PR 测试夹具补齐四个 manifest;windows_rdp_host的ALLOWED_FILES断言对齐release_pr.py现状。验证
cargo test -p navop_app:595 lib tests + 4 个集成契约(i18n / product_dependency_isolation / navigation_toggle_slot / workspace_order)全通过。cargo test -p app_kit --lib:149 passed;cargo test -p windows_rdp_host --test contract:40 passed;cargo test -p one-ui --test dialog_footer_contract通过。cargo check -p navop_app -p app_kit -p one-core -p db_view -p db -p one-ui --all-targets、cargo build -p navop -p navop-shell -p navop-data全通过;cargo check无新增 rustc 警告。python3 -m unittest discover -s script/tests:32 passed;node script/test-release-packaging.mjs、node --test scripts/ai/automation.test.cjs全绿。cargo metadataOK;cargo tree -p navop|navop-shell|navop-data --depth 1均指向navop_app v0.22.0 (crates/navop_app)。说明
CHANGELOG.md条目,不含版本 bump(四个 manifest 仍为0.22.0)。navop_app→app_kit逐块下沉(56k 行、大量pub(crate)与循环引用)留待后续按模块单独搬,方案与现状记在docs/design/navop-product-split.md§28。