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