Files
navop/script
胡飞 eaad024e62 fix(core): Touch Bar「关闭即隐藏」收进 macos-touchbar-window-hide 开关,只为 Intel Mac 生效
关闭窗口时销毁原生 NSWindow 会触发 AppKit 的 Touch Bar 观察者注销路径
(navop#262 / #308 / #314 的 SIGABRT)。前一版修法是「一律不销毁、只隐藏」,
但它对所有平台生效:隐藏的原生窗口会一直占着 NSWindow / CAMetalLayer 直到进程退出,
而 Touch Bar 只存在于 x86_64 机型 —— ARM macOS、Windows、Linux 付了代价却没有任何收益。

- 新增 cargo feature `macos-touchbar-window-hide`(crates/core,main 转发),
  整条链路只读一个常量
  `HIDE_WINDOWS_ON_CLOSE = cfg!(all(target_os = "macos", feature = "macos-touchbar-window-hide"))`:
  `hide_for_reuse` 直接拒绝隐藏、`install_popup_close_routes` 什么都不装、
  `open_popup_window_inner` 不登记窗口、编辑器窗口的 `hide_for_reuse` 同样退回销毁。
  用常量而不是散落的 `#[cfg]`,是因为这三处必须同时成立,任何一处单独打开都会静默错配
  (隐藏了却不登记 = 业务 view 不卸载;登记了却不隐藏 = 条目永远探活失败)。
- 复用键从 `&'static str` 改成 `String`:同类弹窗会为不同目标各开一个(同时编辑两个连接、
  同时连两台远程桌面),只按「弹窗种类」复用会把先开的窗口顶掉。
- 发布流水线只为 `x86_64-apple-darwin` 传该 feature(`extra_features`),
  打包契约测试钉住三点:feature 只出现一次、只挂在 x86_64 判定下、两条编译命令都消费它。
- 契约测试 `the_hide_switch_gates_every_link_of_the_chain` 门控链上的每一环。

验证:`cargo check -p main`(feature 关)exit 0;`cargo check -p main --features
macos-touchbar-window-hide`(Intel Mac 交付形态)exit 0;`cargo test -p one-core --lib`
两种配置各 698 passed;`cargo test -p remote_file_editor --lib` 70 passed;
`node script/test-release-packaging.mjs` 29 passed。
2026-09-28 20:58:00 +08:00
..
2026-02-15 11:51:18 +08:00