用途:在 Warp 代码库中新增功能开关,用于按渠道(如 Dev、Stable)选择性启用代码改动。开关是编译期标志,配合少量运行期检查代码判断是否启用。
主要能力:在 app/Cargo.toml 的 [features] 段(非 default 嵌套)添加 your_feature_name = [];在 warp_core/src/features.rs 的 FeatureFlag 枚举新增变体;在 app/src/lib.rs 用 #[cfg(feature = "...")] 做条件编译;在代码中用 FeatureFlag::YourFeatureName.is_enabled() 做运行期闸门;可选地把开关加入 features.rs 的 DOGFOOD_FLAGS 以默认在 Dev/dogfood 构建开启。
用法:本地启用测试用 cargo run --features your_feature_name,多开关用 cargo run --features your_feature_name,another_feature。TUI 用 ./script/run-tui 测试。若为带开关功能的 EditableBinding/FixedBinding 添加按键绑定,需加 .with_enabled(|| FeatureFlag::YourFeatureName.is_enabled()),避免开关关闭时仍显示在键盘设置中。面向全部 Stable 用户发布时,把该 feature 加入 app/Cargo.toml 的 default 数组。
限制与注意:FeatureFlag 枚举与 is_enabled() 由 GUI 桌面端(app/)和无头 TUI(crates/warp_tui)共享,而 Cargo feature 步骤仅针对 GUI 应用;优先使用运行期 is_enabled() 检查以便两个前端通用,仅当确实需要 TUI 编译期 Cargo feature 时才在 crates/warp_tui/Cargo.toml 中接线。建议优先运行期检查而非 #[cfg],仅当代码离开开关无法编译(如平台相关代码或缺失依赖)时才用 #[cfg];开关应保持高层、面向产品,发布稳定后移除开关与死分支。