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

3.0 KiB
Raw Blame History

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_COMMANDOSC 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