# 2026-05-30 终端页面全覆盖迭代 ## 变更摘要 terminal.html 全面重构,新增 11 项运维效率特性: 1. **多标签会话**: 浏览器内多标签管理,每标签独立 xterm + WebSocket,支持新建/切换/关闭,最多 10 标签。恢复时自动重建上次会话 2. **快速命令栏**: 右侧面板内置 5 条命令 + 自定义命令(名称+内容),localStorage 持久化。点击发送到终端。弹窗编辑/删除 3. **字体调节**: 工具栏 A−/A+ 按钮 + Ctrl+/- 快捷键,范围 10-24,localStorage 持久化 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_COMMAND(OSC 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 立即回复 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 需重启 - 否:无数据库迁移 ## 验证方式 1. 多标签: 新建标签 → 切换 → 关闭 → 每标签独立 WS 2. 快速命令: 点击 → 终端执行 3. 字体: Ctrl+/− 调节,刷新保留 4. Ctrl+L: 清屏 + sterm clear 5. 历史: ArrowUp/Down,刷新保留 6. 右键: 复制/粘贴/清屏/全选 7. 重连: 异常断开 → 倒计时 → 自动重连 8. 连接信息: 时长 + PING 显示 9. 路径: cd 后工具栏更新路径 10. 回滚: 下拉切换生效 ## 进度条 ☑实现 ☑WSL验证 ☐审计8步 ☑部署 ☑健康检查 ☑浏览器验证 ☑changelog