Files
XuzandClaude Opus 5 321a65d842 探测主机操作系统并用它标记会话列表
每次连接成功后探测一次远端系统,会话树前面的图标换成对应的发行版
logo;没探测过或探测失败就画会话名的第一个字。

- 探测走一条独立的 exec 通道,跑 `uname -s; cat /etc/os-release`,
  在主 IO 循环里和 shell 输出一起轮询,终端不会为此多等一个往返。
  POSIX 那条毫无输出时(Windows 的 shell 就是这样)再问一次
  `cmd /c ver`,仍认不出就放弃,会话保留原来的标记。
- 认 14 个发行版加通用 Linux、macOS、Windows 和三个 BSD。派生发行版
  靠 ID_LIKE 兜底,Linux Mint 因此显示 Ubuntu。
- 结果沿 TerminalTransportEvent::HostOsDetected → 引擎 → TerminalView
  → TerminalPanel → 工作区 → SessionStore::set_host_os 这条链走,和
  prompt 是同一套管线。os 列由 set_host_os 单独写,update_session 不
  碰它,和 last_connected_at 一样。
- 图标是 assets/icons/os/ 下 20 个单色 SVG,取自 Simple Icons(CC0);
  Windows 那个是自己画的四格,Simple Icons 已把微软图标下架。
- 加一步 V3 迁移补 os 列,这样已有的本地库不用删。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Ub6VpmWWAJB15MnYLT9G5
2026-09-12 12:36:20 +08:00
..