# 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 全面优化 | ✅ 已完成 | | v0.10.0 | **v0.3.0-release** | 核心功能实现 | ✅ 已完成 | | v1.0.0 | **Stable** | 生产可用 | ✅ 已完成 | | **v1.1.0** | **Cleanup** | **代码质量清理** | 🔄 进行中 | | **v1.2.0** | **Refactor** | **组件拆分重构** | 📋 规划中 | | **v1.3.0** | **Testing** | **测试覆盖达标** | 📋 规划中 | | **v1.4.0** | **Upgrade** | **依赖升级+安全加固** | 📋 规划中 | | **v1.5.0** | **Polish** | **功能补全+性能优化** | 📋 规划中 | | v2.0.0 | **Professional** | 专业版发布 | 📋 远期规划 | --- ## v1.1.0 代码质量清理 🔄 **目标**: 清除生产代码中的调试残留,补全 SFTP 核心功能 **预计**: 1 周 **评分目标**: 代码质量 45→70 ### 任务清单 | # | 任务 | 优先级 | 文件 | 状态 | |---|------|--------|------|------| | 1 | 移除所有 console.log 和彩色调试函数 | P0 | `TerminalView.tsx`, `useSFTP.ts`, `ssh-service.ts` | ⬜ | | 2 | 移除 `DEBUG = true` 硬编码 | P0 | `TerminalView.tsx:16` | ⬜ | | 3 | 移除 Mock 数据残留 | P0 | `useSFTP.ts:154-161` | ⬜ | | 4 | 补全 SFTP 上传 IPC 实现 | P0 | `useSFTP.ts:399`, `sftp.ipc.ts` | ⬜ | | 5 | 补全 disconnect() 资源释放 | P1 | `useSFTP.ts:359-373` | ⬜ | | 6 | Math.random → uuid 生成 ID | P1 | `TerminalView.tsx:383,463` | ⬜ | | 7 | IPC 通道名引用 IPC_CHANNELS 常量 | P2 | `preload.ts` | ⬜ | | 8 | 移除未使用依赖 react-router-dom | P2 | `package.json` | ⬜ | | 9 | 替换重复的彩色日志函数为统一 logger | P2 | `TerminalView.tsx`, `useSFTP.ts` | ⬜ | | 10 | 修复 `if (false)` 等无用代码 | P2 | `TerminalView.tsx:50` | ⬜ | ### 验收标准 ```bash # 零调试残留 grep -r "console.log" src/ electron/ | wc -l # → 0 grep -r "DEBUG = true" src/ | wc -l # → 0 grep -r "logHeader\|logInfo\|logSuccess\|logError\|logWarning" src/ electron/ | wc -l # → 0 # SFTP 上传功能可用 # 手动测试:连接 → SFTP → 上传文件 → 验证远端文件存在 ``` --- ## v1.2.0 组件拆分重构 📋 **目标**: 终端组件拆分为可维护的 Hook 体系 **预计**: 1.5 周 **评分目标**: 架构 72→85 ### 拆分计划 #### TerminalView.tsx (645行) → 拆分 ``` src/components/terminal/TerminalView.tsx (~150行) 纯渲染层 src/hooks/useTerminal.ts (~200行) 终端初始化 + 数据流 src/hooks/useTerminalConnection.ts (~150行) SSH 连接管理 src/hooks/useTerminalSnapshot.ts (~100行) 快照保存/恢复 src/hooks/useZmodem.ts (~100行) rz/sz 文件传输 ``` #### useSFTP.ts (510行) → 拆分 ``` src/hooks/useSFTPNavigation.ts (~200行) 本地/远程目录导航 src/hooks/useSFTPTransfer.ts (~200行) 上传/下载/传输队列 src/hooks/useSFTPConnection.ts (~100行) SFTP 连接管理 ``` #### App.tsx (258行) → 业务逻辑外提 ``` src/components/App.tsx (~150行) 纯 UI 编排 src/services/sessionImport.ts (~80行) 导入/导出逻辑 ``` ### Store 解耦 ``` 当前: lifecycleStore → 直接调用 poolStore.getState() 目标: 引入 ConnectionFacade 统一接口,Store 通过事件通信 ``` ### 验收标准 - 单文件不超过 300 行 - Hook 可独立导入、独立测试 - 现有功能无回归 --- ## v1.3.0 测试覆盖达标 📋 **目标**: 核心模块测试覆盖率 ≥60%,总覆盖率 ≥50% **预计**: 2 周 **评分目标**: 测试 15→50 ### 测试批次 | 批次 | 目标模块 | 用例目标 | 优先级 | |------|----------|----------|--------| | 1 | `crypto.ts` (加密/解密正确性) | 15+ | P0 | | 2 | `ssh-service.ts` (mock ssh2) | 20+ | P0 | | 3 | `database-service.ts` (CRUD) | 15+ | P1 | | 4 | `error-handler.ts` (错误推断) | 10+ | P1 | | 5 | `poolStore.ts` + `lifecycleStore.ts` | 20+ | P1 | | 6 | `IPC handlers` (8个模块) | 25+ | P1 | | 7 | `TerminalView` 组件测试 | 10+ | P2 | | 8 | `useSFTP` hooks 测试 | 15+ | P2 | | **总计** | | **130+** | | ### 验收标准 ```bash npm test -- --coverage # Statements ≥ 50% # Branches ≥ 40% # Functions ≥ 50% # Lines ≥ 50% ``` --- ## v1.4.0 依赖升级 + 安全加固 📋 **目标**: 依赖更新到最新稳定版,安全漏洞清零 **预计**: 1 周 **评分目标**: 安全 55→75, 依赖 50→80 ### 依赖升级 | 依赖 | 当前 | 目标 | 风险 | |------|------|------|------| | `electron` | v28 | v33+ | 高 - Breaking changes | | `better-sqlite3` | v9 | v11 | 中 - API 变化 | | `zustand` | v4 | v5 | 低 - 订阅 API 变化 | | `lucide-react` | 0.294 | 0.4xx | 低 - 图标名可能有变化 | | `eslint` | v8 | v9 | 中 - flat config 迁移 | ### 安全加固 | 任务 | 说明 | |------|------| | 启用 sandbox 模式 | preload 适配 | | CSP 移除 unsafe-inline | Tailwind nonce 配置 | | IPC 参数验证 | zod schema | | 密码 IPC 传输审查 | 确保加密后传输 | | 审查 socksv5 安全性 | 评估是否替换 | --- ## v1.5.0 功能补全 + 性能优化 📋 **目标**: 补全缺失功能,性能指标全面达标 **预计**: 2 周 **评分目标**: 功能 82→95, 综合 80+ ### 功能补全 | 功能 | 优先级 | 说明 | |------|--------|------| | SFTP 拖拽上传/下载 | P1 | 界面已就绪,补全 drag/drop 事件 | | SFTP 断点续传 | P2 | 大文件传输可靠性 | | 会话分组树形显示 | P2 | 侧边栏分组 + 文件夹 | | 终端分屏 | P3 | 水平/垂直分屏 | | 命令片段(Snippets) | P3 | 常用命令快速执行 | | 同步功能 | P3 | 多设备会话同步 | ### 性能优化 | 指标 | 当前 | 目标 | 方案 | |------|------|------|------| | 冷启动 | ~3s | <2s | 延迟加载非核心模块 | | 包体积 | ~120MB | <100MB | asar + tree-shaking | | 内存(10标签) | ~200MB | <150MB | 连接池优化 + 终端回收 | | SSH 连接 | ~1s | <500ms | 连接预热 | --- ## 远期规划 (v2.0.0) ### 专业版特性 - 插件系统 — 支持第三方扩展 - 主题编辑器 — 自定义配色方案 - 脚本录制/回放 — 操作自动化 - 协作共享 — 团队会话管理 - 云同步 — 加密会话配置同步 - API 网关 — 命令行/CI 集成 - 容器管理 — Docker/Podman 集成 --- ## 已完成版本
展开查看历史版本 ### v1.0.0 Stable - 生产可用 ✅ **状态**: 已完成 #### 功能完成清单 ##### SSH 终端 - ✅ 密码/密钥认证 - ✅ XTerm.js 高性能终端 - ✅ 多主题配色方案 - ✅ IP 地址高亮显示 ##### SFTP 管理 - ✅ 双栏文件管理器 - ✅ 上传/下载文件 - ✅ 传输队列管理 - 🟡 拖拽上传下载 (界面就绪,待完善) - 📋 断点续传 (规划中) ##### 端口转发 - ✅ 本地端口转发 - ✅ 远程端口转发 - ✅ 动态 SOCKS5 代理 - ✅ 转发规则管理 ##### 架构特性 - ✅ IPC Handler 模块化 - ✅ 共享类型定义 - ✅ 连接池 Store 拆分 - ✅ 统一日志系统 ### v0.10.0 v0.3.0-release ✅ **完成日期**: 2026-04-06 - ✅ SSH 终端核心功能(密码/密钥认证、XTerm.js、多主题、IP高亮、端口转发) - ✅ SFTP 文件管理(双栏、上传下载、传输队列、服务器选择) - ✅ 架构改进(模块化 IPC、连接池管理、统一日志、错误处理) ### v0.9.0 Optimization ✅ **完成日期**: 2026-04-05 - ✅ 测试框架建立(Vitest + 38 测试用例) - ✅ SFTP 右键菜单(新建文件夹/复制路径/属性) - ✅ WebGL 终端渲染优化 - ✅ 会话导入完整实现 ### v0.8.0 Modular ✅ **完成日期**: 2026-04-05 - ✅ IPC Handler 分层(8 个独立模块) - ✅ 共享类型统一 - ✅ 连接池 Store 拆分 - ✅ SFTP 组件拆分 ### v0.7.0 Professional ✅ **完成日期**: 2026-04-05 - ✅ 连接状态机(6 个状态) - ✅ 连接池管理(LRU淘汰、保活、超时) - ✅ 终端快照机制 - ✅ 多标签连接隔离 ### v0.6.0 ~ v0.1.0 ✅ - ✅ rz/sz 文件传输 - ✅ SFTP 传输队列优化 - ✅ AES-256-GCM 加密存储 - ✅ 端口转发 - ✅ 功能骨架 + 核心 SSH