Files
Nexus/docs/reports/2026-06-08-webssh-xterm-ansi-verification.md
T
Nexus Agent 8c86b50d09 feat(servers): 未设路径区块与行内详情;命令栏恢复单色
服务器页拆分未设路径列表、行内展开详情;API target_path_unset 可选过滤。
命令栏取消 Shell 语法彩色,ANSI 仅保留 xterm SSH 输出区。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 12:48:45 +08:00

1.6 KiB
Raw Blame History

WebSSH xterm ANSI 彩色输出 — 验证报告

日期: 2026-06-08
变更: docs/changelog/2026-06-08-webssh-xterm-ansi-output-fix.md

自动化

检查 结果
.venv/bin/python -m pytest tests/test_webssh_terminal_payload.py -q 3/3 PASS
bash scripts/local_verify.sh 26/26 PASS
cd frontend && npm run build PASS
bash deploy/pre_deploy_check.sh 7/7 PASS

代码要点

  1. 后端 create_process(env=WEBSSH_PTY_ENV) — PTY 级 TERM=xterm-256color,不再依赖 stdin export 竞态
  2. 后端 DATA 帧使用 data_b64,保留 ANSI ESC 字节
  3. 前端 decodeTerminalPayload()term.write(Uint8Array)
  4. 样式 Shell 语法高亮 .sh-* 仅在 TerminalCmdBar.vue,与 xterm 黑屏分离

浏览器验收步骤(生产/本地均需 重连 SSH 会话

  1. 打开 #/terminal,新建或重连一台服务器
  2. 上方黑屏 xterm(非底部命令栏)执行:
    printf '\033[31mred \033[32mgreen \033[33myellow \033[0m\n'
    
    预期:红 / 绿 / 黄 字
  3. 执行 ls --color=autogrep --color=always root /etc/passwd | head 预期:目录、匹配词分色
  4. 在底部命令栏输入 ls + Enter 预期:输出出现在黑屏区且带颜色

部署

  • Commit: 8312a6c — fix(terminal): WebSSH xterm SSH 交互区 ANSI 彩色输出
  • 生产 /health → ok/app/ → 200
  • 后端 WebSocket relay 已随 Docker 重建生效
  • 请 Ctrl+Shift+R 强刷并重连 SSH 会话后再做浏览器终验

回滚

恢复 webssh.py stdin export + data 字段;前端移除 data_b64 解码。