已开启
bug: 5.2.0 新 TUI 在 Windows 传统 cmd(conhost) 下不断刷屏,无法使用 #4
gcw_c21tLx7D创建于  1 天前
gcw_c21tLx7D
1 天前 创建

环境

  • Windows 10 22H2(10.0.19045.6466),传统 cmd / conhost(未安装 Windows Terminal)
  • TERM=dumb
  • atomcode 5.2.0 (0b95ab7),auto-update 升级到的最新版

现象

在 cmd 窗口中直接运行 atomcode,窗口被终端控制序列的明文文本([[?1049h[[?7l... 之类的乱码行)持续刷屏滚动,界面无法使用。旧版本在同一 cmd 中正常。

排查证据(5.2.0)

  1. 把 TUI 输出接到管道(模拟非终端):
    atomcode --tui 2>&1 | head -c 4000 | cat -v
    
    新 TUI([ui] screen = "default" 的行组装界面)以约 16fps 输出整帧 ANSI,且 6 秒内重复发射鼠标跟踪序列 ?1002h ?1006h 100+ 次(每帧都重发终端模式,而不是仅在状态变化时发);stdout 不是 TTY 时也照常发射 ANSI 序列。
  2. 帧中包含传统 conhost 不支持/不处理的序列:?2026h(同步输出)、?1004h(焦点事件)、22;2t(窗口大小请求)、>1u(SGR 模式)。若 VT 模式未能正确启用,所有序列都会以明文显示并持续滚屏——即用户看到的"刷屏"。
  3. 对照组(同一二进制、同一机器):
    • atomcode --classic:输出干净(纯文本),正常
    • atomcode -p "..." --no-tools --ephemeral(headless):正常
  4. 排除项:不是升级循环(.atomcode.rolling 与 atomcode.exe 哈希一致,均为 5.2.0 最新版)、日志/遥测正常、用户配置无异常。

临时规避

  • 启动加 --classic,或配置 [ui] screen = "classic"(已验证可用)
  • 或改用 Windows Terminal / atomcode webui

建议修复

  1. 终端模式序列(鼠标跟踪、焦点、同步输出等)仅在状态变化时发射,避免每帧重发;
  2. 启动时对 conhost 探测/启用 VT 能力(ENABLE_VIRTUAL_TERMINAL_PROCESSING),启用失败时优雅降级为纯文本渲染,而不是照发 ANSI;
  3. stdout 非 TTY 时不要走全功能 TUI 渲染路径;
  4. 将传统 conhost(Win10 22H2 cmd、TERM=dumb)纳入兼容性测试矩阵。
likedislike