mirror of
https://github.com/feigeCode/navop.git
synced 2026-11-06 08:07:31 +00:00
退出应用时的确认弹窗直接显示字面量 `{app}`:rust-i18n 的占位符语法是
`%{name}`,单花括号不会被替换。579da7841 引入 `Quit.confirm_*_app` 时写成
`{app}`,所以文案里的产品名一直没插进去,还顺带把原先「不带产品名」的三条
`Quit.confirm_*` 变成死键。
- `Quit.confirm_title_app / confirm_message_app / confirm_action_app` 的
`{app}` 改为 `%{app}`;删掉已无引用的 `Quit.confirm_*`。
- `Tray.close_title / close_message` 三个语言里硬编码 `Navop`,独立产品
(navop-shell / navop-data)会报错名字:改名为 `Tray.close_*_app` 并带
`%{app}`,调用点传产品名。
- `app_kit` 新增 `display_name()`,托盘与两个弹窗共用一个产品名来源,未
bootstrap 时回退 `AppIdentity::FULL`,不再各处 `unwrap_or("Navop")`。
- 按同一类问题审计了一遍全仓 `t!` 调用,一并修掉:terminal_view 的
`vi_mode_disabled` 补 `%{shortcut}`(用户此前看不到重新进入的快捷键);
one_ui 的两个 placeholder 删掉 rust-i18n 不认的 `default = …` 死参数;
ai_chat_view 的 `connect_acp_failed` 删掉文案里没有的 `error = …`。
- 新增契约测试 `every_t_interpolation_argument_matches_its_template`:
双向校验每个 `t!` 的命名参数与文案 `%{name}` 占位符(参数没被文案引用
会被静默丢弃,文案要的参数没传会露出 `%{参数}`),当前覆盖 5789 个调用。
验证(均带 `RUSTFLAGS="-D warnings"`):
- `cargo test -p navop_app --test i18n_locale_keys_contract`:2 passed;
另把 `Quit.confirm_title_app` 改回 `{app}` 实测测试会失败,确认能拦住回归。
- `cargo check -p one-ui -p ai_chat_view -p terminal_view -p app_kit --all-targets`。
- `cargo test -p one_ui --lib`(129 passed)、
`cargo test -p ai_chat_view --test acp_connection`(12 passed)、
`cargo test -p navop_app --lib close_choice`、
`cargo test -p terminal_view --lib vi_mode` 定向通过。