feat: v0.3.0 版本 - SSH终端、SFTP、端口转发功能实现
核心功能: - SSH终端: 密码/密钥认证、XTerm.js终端、多主题配色、IP高亮 - SFTP管理: 双栏文件管理、上传下载、传输队列 - 端口转发: 本地/远程转发、SOCKS5动态代理、规则管理 架构改进: - 拆分大型组件 (SFTPView/TabBar/Sidebar) - 添加统一日志和错误处理 - 修复React严格模式下的终端黑屏问题 UI更新: - 新增端口转发视图 - 更新UI预览文档 - 左侧栏右键菜单支持SFTP快捷打开
This commit is contained in:
1 parent
cf1c054381
commit
484d850abd
105 files changed
+25330
-64
No files matched your search
+228
@@ -0,0 +1,228 @@
|
||||
# ROADMAP.md - 开发路线图
|
||||
|
||||
本文档规划 OpsXShell 的版本迭代和开发方向。
|
||||
|
||||
---
|
||||
|
||||
## 版本规划概览
|
||||
|
||||
| 版本 | 代号 | 目标 | 状态 |
|
||||
|------|------|------|------|
|
||||
| v0.1.0 | **Alpha** | 功能骨架 + 核心 SSH | ✅ 已完成 |
|
||||
| v0.2.0 | **Beta** | 功能补全 + 稳定性 | ✅ 已完成 |
|
||||
| v0.3.0 | **RC** | 性能优化 + 加密 | ✅ 已完成 |
|
||||
| v0.4.0 | **Pre-Stable** | UI 完善 | ✅ 已完成 |
|
||||
| v0.5.0 | **Pre-Stable** | SFTP 传输优化 | ✅ 已完成 |
|
||||
| v0.6.0 | **Pre-Stable** | 终端 rz/sz 支持 | ✅ 已完成 |
|
||||
| v0.7.0 | **Professional** | 专业连接管理 | ✅ 已完成 |
|
||||
| v0.8.0 | **Modular** | 架构模块化重构 | ✅ 已完成 |
|
||||
| v0.9.0 | **Optimization** | P0/P1 全面优化 | ✅ 已完成 |
|
||||
| v1.0.0 | **Stable** | 生产可用 | ⏳ 开发中 |
|
||||
|
||||
---
|
||||
|
||||
## v0.5.0 Pre-Stable ✅
|
||||
|
||||
**完成日期**: 2026-04-05
|
||||
|
||||
### ✅ 已完成功能清单
|
||||
|
||||
#### SFTP 传输队列优化
|
||||
| 功能 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| 传输队列显示 | `SFTPView.tsx` | 显示进行中的上传/下载任务 |
|
||||
| 传输历史记录 | `SFTPView.tsx` | 显示最近完成的传输任务 |
|
||||
| 可收起面板 | `SFTPView.tsx` | 点击展开/收起传输面板 |
|
||||
| 多文件上传队列 | `SFTPView.tsx` | 逐个上传并显示各任务进度 |
|
||||
| Downloads 目录 | `SFTPView.tsx` | 跨平台默认下载路径 |
|
||||
| 移除删除按钮 | `SFTPView.tsx` | 简化界面 |
|
||||
|
||||
---
|
||||
|
||||
## v0.6.0 Pre-Stable ✅
|
||||
|
||||
**完成日期**: 2026-04-05
|
||||
|
||||
### ✅ 已完成功能清单
|
||||
|
||||
#### 终端 rz/sz 支持
|
||||
| 功能 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| rz 命令拦截 | `TerminalView.tsx` | 检测 rz 并打开文件选择器 |
|
||||
| sz 文件接收 | `TerminalView.tsx` | 捕获 Zmodem 数据并保存 |
|
||||
| 文件读写 API | `preload.ts`, `main.ts` | 支持 rz 上传和 sz 下载 |
|
||||
|
||||
---
|
||||
|
||||
## v0.7.0 Professional ✅
|
||||
|
||||
**完成日期**: 2026-04-05
|
||||
|
||||
### ✅ 已完成功能清单
|
||||
|
||||
#### 专业连接管理架构
|
||||
|
||||
| 功能 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| 连接状态机 | `connectionPool.ts` | disconnected/connecting/connected/background/suspended |
|
||||
| 连接池管理 | `connectionPool.ts` | 最大 10 并发,LRU 淘汰策略 |
|
||||
| 后台连接保持 | `connectionPool.ts` | 最大 5 个后台连接,空闲 5 分钟挂起 |
|
||||
| 自动保活机制 | `connectionPool.ts` | 每分钟发送心跳包 |
|
||||
| 连接复用 | `connectionPool.ts` | 相同配置标签共享 SSH 连接 |
|
||||
| 终端快照 | `terminalSnapshotStore.ts` | 切换标签保存/恢复终端内容 |
|
||||
| 快照恢复 | `TerminalView.tsx` | 快速恢复显示,避免黑屏 |
|
||||
| 挂起恢复 UI | `TerminalView.tsx` | 手动恢复或重新连接选项 |
|
||||
| 连接状态指示 | `TerminalView.tsx` | 实时显示连接状态(绿/蓝/黄/红) |
|
||||
| 专业设置面板 | `SettingsView.tsx` | 可配置连接池参数 |
|
||||
|
||||
#### 多标签连接隔离
|
||||
|
||||
| 功能 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| 独立连接实例 | `tabStore.ts` | 每个标签独立的 connectionInstance |
|
||||
| 标签切换优化 | `TabContent.tsx` | opacity 过渡,保持组件实例 |
|
||||
| 连接引用计数 | `connectionPool.ts` | 正确管理连接生命周期 |
|
||||
| 关闭自动断开 | `TabBar.tsx` | 标签关闭时释放对应连接 |
|
||||
|
||||
---
|
||||
|
||||
## v0.8.0 Modular ✅
|
||||
|
||||
**完成日期**: 2026-04-05
|
||||
|
||||
### ✅ 已完成架构重构清单
|
||||
|
||||
#### IPC Handler 分层
|
||||
|
||||
| 模块 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| SSH IPC | `electron/ipc/ssh.ipc.ts` | 连接/断开/exec/Shell/端口转发 |
|
||||
| SFTP IPC | `electron/ipc/sftp.ipc.ts` | SFTP 操作/传输进度 |
|
||||
| 会话 IPC | `electron/ipc/session.ipc.ts` | CRUD 操作 |
|
||||
| 设置 IPC | `electron/ipc/settings.ipc.ts` | 读写设置 |
|
||||
| 对话框 IPC | `electron/ipc/dialog.ipc.ts` | 文件对话框 |
|
||||
| 文件 IPC | `electron/ipc/file.ipc.ts` | 本地文件操作 |
|
||||
| Zmodem IPC | `electron/ipc/zmodem.ipc.ts` | rz/sz 传输 |
|
||||
| 应用 IPC | `electron/ipc/app.ipc.ts` | 版本/路径信息 |
|
||||
|
||||
#### 共享类型统一
|
||||
|
||||
| 类型 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| Session 类型 | `shared/types/session.types.ts` | 会话配置、认证类型 |
|
||||
| Connection 类型 | `shared/types/connection.types.ts` | 连接池、连接状态 |
|
||||
| SFTP 类型 | `shared/types/sftp.types.ts` | 文件项、传输任务 |
|
||||
| IPC 类型 | `shared/types/ipc.types.ts` | IPC 通道常量 |
|
||||
|
||||
#### 连接池 Store 拆分
|
||||
|
||||
| Store | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| Pool Store | `src/stores/connection/poolStore.ts` | 连接池核心:创建/获取/释放 |
|
||||
| Lifecycle Store | `src/stores/connection/lifecycleStore.ts` | 状态机、超时、事件 |
|
||||
| Store Hooks | `src/stores/connection/storeHooks.ts` | 组合接口 |
|
||||
|
||||
#### SFTP 组件拆分
|
||||
|
||||
| 组件 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| Breadcrumb | `src/components/sftp/Breadcrumb.tsx` | 路径导航 |
|
||||
| SortHeader | `src/components/sftp/SortHeader.tsx` | 列排序 |
|
||||
| FileRow | `src/components/sftp/FileRow.tsx` | 文件行渲染 |
|
||||
| ContextMenu | `src/components/sftp/ContextMenu.tsx` | 右键菜单 |
|
||||
| TransferItem | `src/components/sftp/TransferItem.tsx` | 传输任务项 |
|
||||
| ConnectionSelector | `src/components/sftp/ConnectionSelector.tsx` | 服务器选择 |
|
||||
|
||||
---
|
||||
|
||||
## v0.9.0 Optimization ✅
|
||||
|
||||
**完成日期**: 2026-04-05
|
||||
|
||||
### ✅ 已完成功能清单
|
||||
|
||||
#### 测试框架建立
|
||||
| 功能 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| Vitest 配置 | `vitest.config.ts` | 测试环境配置 |
|
||||
| 测试设置 | `test/setup.ts` | Electron API mock |
|
||||
| TabStore 测试 | `test/stores/tabStore.test.ts` | 16 个测试用例 |
|
||||
| ConnectionPool 测试 | `test/stores/connectionPool.test.ts` | 8 个测试用例 |
|
||||
| SFTP Utils 测试 | `test/components/sftp/utils.test.ts` | 14 个测试用例 |
|
||||
|
||||
#### SFTP 右键菜单完善
|
||||
| 功能 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| 新建文件夹 | `SFTPView.tsx` | 本地新建文件夹 |
|
||||
| 复制路径 | `SFTPView.tsx` | 复制文件完整路径 |
|
||||
| 查看属性 | `SFTPView.tsx` | 显示文件详情 |
|
||||
| sftpMkdir IPC | `sftp.ipc.ts` | 远程创建目录支持 |
|
||||
|
||||
#### WebGL 渲染优化
|
||||
| 功能 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| WebGL Addon | `TerminalView.tsx` | GPU 加速渲染 |
|
||||
| 自动降级 | `TerminalView.tsx` | WebGL 不可用时降级 |
|
||||
|
||||
#### 会话导入完善
|
||||
| 功能 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| JSON 格式导入 | `App.tsx` | 支持数组和对象格式 |
|
||||
| SSH Config 导入 | `App.tsx` | 支持 Host/HostName/User |
|
||||
| 批量创建 | `App.tsx` | 自动创建所有会话 |
|
||||
|
||||
---
|
||||
|
||||
## v1.0.0 Stable - 生产可用
|
||||
|
||||
### 开发计划
|
||||
|
||||
#### P0 核心功能
|
||||
|
||||
| 功能 | 文件 | 说明 | 状态 |
|
||||
|------|------|------|------|
|
||||
| 测试框架建立 | `vitest.config.ts` | 单元/集成测试 | ✅ 已完成 |
|
||||
|
||||
#### P1 重要功能
|
||||
|
||||
| 功能 | 文件 | 说明 | 状态 |
|
||||
|------|------|------|------|
|
||||
| 文件列表右键菜单 | `SFTPView.tsx` | 新建文件夹/复制路径/属性 | ✅ 已完成 |
|
||||
| WebGL 渲染优化 | `TerminalView.tsx` | GPU 加速渲染 | ✅ 已完成 |
|
||||
| 会话导入完整实现 | `App.tsx` | JSON + SSH Config 批量导入 | ✅ 已完成 |
|
||||
|
||||
#### P2 优化功能
|
||||
|
||||
| 功能 | 文件 | 说明 | 状态 |
|
||||
|------|------|------|------|
|
||||
| sandbox 模式 | `electron/main.ts` | 提升安全性 | 🟡 待优化 |
|
||||
| 全局快捷键 | `TabBar.tsx` | 快捷键冲突修复 | 🟡 待优化 |
|
||||
| 连接池管理 | `connectionPool.ts` | 复用连接 | ✅ 已完成 |
|
||||
|
||||
---
|
||||
|
||||
## 开发优先级
|
||||
|
||||
```
|
||||
v0.6.0 完成清单 ✅
|
||||
|
||||
v1.0.0 开发顺序:
|
||||
├── 1. 测试框架建立 (P0)
|
||||
├── 2. 文件列表右键菜单 (P1)
|
||||
├── 3. WebGL 渲染优化 (P1)
|
||||
└── 4. 会话导入完整实现 (P1)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 里程碑检查点
|
||||
|
||||
### v1.0.0 Stable 完成条件
|
||||
|
||||
- [x] 测试框架建立 (vitest + 38 测试用例)
|
||||
- [x] 文件列表右键菜单 (新建/复制/属性)
|
||||
- [x] WebGL 终端渲染优化
|
||||
- [x] 会话导入完整实现
|
||||
- [ ] 无 critical/major 级别 bug
|
||||
- [ ] 打包后可在 macOS/Windows 运行
|
||||
- [ ] 性能指标达标
|
||||
Reference in new issue
Block a user