Files
Nexus/docs/changelog/2026-05-30-terminal-iteration.md
T
Your Name 7193b88156 feat: 终端页面 11 项全覆盖迭代 — 多标签/快速命令/字体/历史/重连/右键等
11 项改进:
- 多标签会话 (切换/关闭/新建,每标签独立 xterm+WS)
- 快速命令栏 (内置5条 + 自定义,localStorage持久化)
- 字体大小调节 (A−/A+按钮 + Ctrl+/-)
- Ctrl+L 清屏
- 命令历史持久化 (200条 FIFO localStorage)
- 右键菜单 (复制/粘贴/清屏/全选)
- 断开自动重连 (指数退避 + 倒计时)
- 连接信息栏 (时长 + PING RTT)
- 终端路径显示 (OSC title + onTitleChange)
- 滚动缓冲区调节 (1K/5K/10K/50K)
- 快速搜索服务器

后端: PING/PONG + PROMPT_COMMAND 注入

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 00:17:22 +08:00

62 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-05-30 终端页面全覆盖迭代
## 变更摘要
terminal.html 全面重构,新增 11 项运维效率特性:
1. **多标签会话**: 浏览器内多标签管理,每标签独立 xterm + WebSocket,支持新建/切换/关闭,最多 10 标签。恢复时自动重建上次会话
2. **快速命令栏**: 右侧面板内置 5 条命令 + 自定义命令(名称+内容),localStorage 持久化。点击发送到终端。弹窗编辑/删除
3. **字体调节**: 工具栏 A/A+ 按钮 + Ctrl+/- 快捷键,范围 10-24localStorage 持久化
4. **Ctrl+L 清屏**: 发送 clear\r + term.clear() 双重保障
5. **命令历史持久化**: sendCmd 后存 localStorage(最多 200 条),刷新恢复,ArrowUp/Down 浏览
6. **右键菜单**: 自定义右键菜单(复制/粘贴/清屏/全选)
7. **断开自动重连**: WebSocket 异常断开指数退避重连(1s→2s→4s→max30s),倒计时显示。手动断开不重连
8. **连接信息栏**: 工具栏显示服务器名 + 在线状态 + 连接时长(HH:MM:SS) + PING RTT
9. **终端标题路径**: 后端注入 PROMPT_COMMANDOSC title),前端 onTitleChange 捕获显示
10. **滚动缓冲区调节**: 下拉选择器 1K/5K/10K/50K 行,xterm 5.x 热改
11. **快速切换服务器**: 右侧面板搜索框实时过滤
## 动机
terminal.html 仅具备基础 WebSSH,缺乏频繁运维所需的效率特性。用户一次连接内需切换多台服务器、快速执行常用命令、持久化历史等。
## 涉及文件
### 后端
- `server/api/webssh.py` — 轻量改动
- 新增 `MSG_PING`/`MSG_PONG` 消息类型
- shell 创建后注入 `PROMPT_COMMAND`OSC title escape)用于路径跟踪
- PING handler: 收到 PING 立即回复 PONGRTT 测量)
### 前端
- `web/app/terminal.html` — 全面重构(~500行新增)
- 多标签架构: sessions[] 数组 + 动态 term div
- localStorage: 字体/回滚/历史/命令/标签 5 个键
- 全新 UI: TabBar + 工具栏(字体/回滚/全屏) + 右侧面板(搜索+快速命令)
- ContextMenu: 浮层右键菜单
- AutoReconnect: 指数退避定时器
## 安全影响
- PING/PONG: 无关安全的回声确认
- PROMPT_COMMAND: 后端注入固定字符串,不走用户输入
- 快速命令: 已有 WebSocket DATA 通道,无新攻击面
- 右键菜单: 纯前端 UI,无后端交互
- 多标签: 每标签独立 WebSSH token 认证,不共享凭据
## 需要迁移/重启
- 是:后端 Python 需重启
- 否:无数据库迁移
## 验证方式
1. 多标签: 新建标签 → 切换 → 关闭 → 每标签独立 WS
2. 快速命令: 点击 → 终端执行
3. 字体: Ctrl+/− 调节,刷新保留
4. Ctrl+L: 清屏 + sterm clear
5. 历史: ArrowUp/Down,刷新保留
6. 右键: 复制/粘贴/清屏/全选
7. 重连: 异常断开 → 倒计时 → 自动重连
8. 连接信息: 时长 + PING 显示
9. 路径: cd 后工具栏更新路径
10. 回滚: 下拉切换生效
## 进度条
☑实现 ☑WSL验证 ☐审计8步 ☑部署 ☑健康检查 ☑浏览器验证 ☑changelog