Files
Nexus/docs/reports/2026-06-08-webssh-xterm-ansi-verification.md
T

45 lines
1.6 KiB
Markdown
Raw Normal View 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**(非底部命令栏)执行:
```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` 解码。