Files
navop/crates/html-preview
胡飞 baf533058f fix(process-util): 抽出 spawn_detached,同类主线程裸 spawn 一并移出 UI 线程
0.22.0 整窗卡死的根因是 UI 事件里同步 `Command::spawn()`:`spawn` 在调用线程里
`fork` 并阻塞读 exec 错误管道,macOS 子进程一旦卡在 atfork 处理器(notify /
objc 锁互等)就永远走不到 exec,父线程(GPUI 主线程)也就永远读不到 EOF ——
窗口冻结、无日志、子进程 100% CPU 自旋。

- process-util 新增 `spawn_detached(command, what)`:在独立线程里 spawn 并
  `wait` 回收子进程,失败只记 warn;新增单测验证调用线程不阻塞、子进程照常执行。
- remote_file_editor `launch_external_editor`、html-preview
  `open_html_preview_document_in_browser`(AI 对话里「在浏览器中打开」)改走
  `spawn_detached`;ai_chat_view 工作台「在文件管理器中显示」收拢到同一辅助函数。
- 其余 `.spawn()/.output()/.status()` 站点已逐一核对:扩展宿主、ACP、技能安装、
  文件关联、git、容器后端都在 tokio / smol 后台线程;RDP helper 需要长期持有
  Child 句柄;更新器收尾启动必须同步确认子进程已起,均保持原状。
2026-10-28 17:12:51 +08:00
..