# 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**(非底部命令栏)执行: ```bash printf '\033[31mred \033[32mgreen \033[33myellow \033[0m\n' ``` 预期:红 / 绿 / 黄 字 3. 执行 `ls --color=auto` 或 `grep --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` 解码。