8312a6cf81
PTY 环境变量注入 TERM=xterm-256color,DATA 帧 base64 保 ESC;前端解码写入 xterm;命令栏 Shell 高亮 CSS 与黑屏分离。 Co-authored-by: Cursor <cursoragent@cursor.com>
31 lines
1.1 KiB
Markdown
31 lines
1.1 KiB
Markdown
# 设计 — 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,延迟特性不变
|