Skip to content

chore: dev → main(beta 发版修复:Windows 特性门控 + 独立产品可单独构建) - #503

Merged
feigeCode merged 5 commits into
mainfrom
dev
Nov 2, 2026
Merged

feigeCode merged 5 commits into
mainfrom
dev

Conversation

@feigeCode

Copy link
Copy Markdown
Owner

背景

发 v0.23.0-beta.1 / beta.2 时暴露了两处只有「按产品单独构建」才会踩到的问题,修复后在 dev 上重发。

包含的提交

  • f8702d330 fix(release): Windows 打包按产品传特性,全量产品补齐特性转发
    • apps/navop/Cargo.toml 把 wasm-components / windows-native-rdp / shell-plugins 转发给 navop_app,改成显式特性集(default-features = false + database/shell 常开),32 位 Windows 的「默认集减去 shell-plugins」语义才成立。
    • .github/workflows/release.yml 的 feature 分支只对全量产品生效;独立产品特性集写在自己的 Cargo.toml 里。
  • 8a3303002 fix(app): 终端标签订阅按 shell 特性门控,独立数据产品可单独构建
    • home_tab/lifecycle.rs 里 terminal_view 的导入与订阅整段加 #[cfg(feature = "shell")];工作区整体构建时特性合并掩盖了这个问题。

验证

  • cargo check -p navop-data / -p navop-shell / -p navop 三个包单独 check 通过(macOS arm64)。
  • cargo check -p navop 在默认、--features windows-native-rdp、--no-default-features --features wasm-components,windows-native-rdp 三种组合下均通过。
  • .github/workflows/release.yml 用 ruby yaml 解析通过。

不含 CHANGELOG 与版本 bump(本 PR 只是把发版修复带到 main,tag 仍打在 dev 上)。

产品拆分后工作区包名从 main 改成 navop_app,beta-release.sh 还在按 main 找
lock 条目,rsync 阶段直接报 <missing>。改成精确改写 navop_app / navop /
navop-shell / navop-data 四个成员版本(cargo metadata --no-deps 不会重算
成员版本,靠它刷 lock 本来就不成立),并同步更新提示文案。
v0.23.0-beta.1 的 Windows 构建在 `cargo build -p navop` 上直接失败:
`the package 'navop' does not contain these features: wasm-components,
windows-native-rdp`。产品拆分后这些特性留在 `navop_app` 上,`apps/navop`
既没有转发它们,发布流水线又对三个产品无差别地传同一组 feature。

- `apps/navop/Cargo.toml`:把 wasm-components / windows-native-rdp /
  shell-plugins 三个特性转发给 `navop_app`,改成显式特性集
  (`default-features = false` + database/shell 常开),32 位 Windows 用
  `--no-default-features` 表达「默认集减去 shell-plugins」的语义才成立。
- `.github/workflows/release.yml`:feature 分支只对全量产品生效;独立产品的
  特性集写在自己的 Cargo.toml 里,给它们传同样的名字只会报特性不存在。

本地已验证三种组合都能编译:默认、`--features windows-native-rdp`、
`--no-default-features --features wasm-components,windows-native-rdp`。
发布流水线按产品分别编译(`cargo build -p navop-data`),而
`home_tab/lifecycle.rs` 无条件 use 了 `terminal_view`,导致 navop-data 在
macOS/Windows 上直接 E0432。工作区整体构建时 `apps/navop` 把 shell 特性打开,
特性合并掩盖了这个问题,所以 CI 一直没暴露。

- `TabContainerEvent` 与 `TerminalWorkspace` 的导入加 `#[cfg(feature = "shell")]`;
- 复制标签后的终端事件订阅整段放进同条件的 block;
- `subscribe_terminal_workspace_events` 本身也只在 shell 特性下编译。

本地已验证 `-p navop-data` / `-p navop-shell` / `-p navop` 三个包单独 check 通过。
@feigeCode
feigeCode merged commit bcee228 into main Nov 2, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant