Files
Nexus/docs/design/specs/2026-06-08-webssh-xterm-ansi-output-fix-design.md
T
Nexus Agent 8312a6cf81 fix(terminal): WebSSH xterm SSH 交互区 ANSI 彩色输出
PTY 环境变量注入 TERM=xterm-256color,DATA 帧 base64 保 ESC;前端解码写入 xterm;命令栏 Shell 高亮 CSS 与黑屏分离。

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

1.1 KiB

设计 — WebSSH xterm SSH 交互区 ANSI 彩色输出修正

日期: 2026-06-08
状态: 已实施
关联: 835ef2c WebSSH 经典主题(误把命令栏语法高亮当作 ANSI 修复)

背景与目标

用户要求:上方 xterm 黑屏(SSH 远程输出)黑底白字且带 ANSI 字符颜色;不是底部命令栏 Shell 语法高亮,也不是选择服务器对话框。

方案

变更
后端 webssh.py create_process(env=...) 注入 TERM=xterm-256color 等;DATA 用 data_b64 二进制安全传输
前端 useTerminalSessions.ts 优先解码 data_b64 写入 xterm
前端样式 .sh-*TerminalPage 移至 TerminalCmdBar scoped

验收

在 xterm 黑屏内:

  1. printf '\033[31mred \033[32mgreen \033[0m\n' → 红/绿字
  2. ls --color=auto → 目录/文件分色
  3. 底部命令栏 Enter 发送后,彩色输出仍出现在黑屏区

安全与性能

  • base64 仅用于 WebSocket 帧内转义,不改变鉴权
  • 仍 4096 字节分块 read,延迟特性不变