# ROADMAP.md - OpsXShell 开发路线图 ## 版本规划总览 ``` v1.1.0 基础可用 ─── 2 周 ──→ UI/UX 48→65, 代码 58→68 v1.2.0 体验升级 ─── 2 周 ──→ UI/UX 65→78, 代码 68→75 v1.3.0 测试覆盖 ─── 2 周 ──→ 测试 15→50%, 代码 75→80 v1.4.0 专业功能 ─── 2 周 ──→ UI/UX 78→88, 功能完成度 90+ v1.5.0 安全升级 ─── 1 周 ──→ 安全 55→85, 代码 80→85 ``` --- ## v1.1.0 基础可用 (2 周) — ✅ 已完成 > **目标**: 解决所有 Critical UI/UX 问题,建立基础反馈系统,产品具备日常使用价值 ### ✅ 全部完成 (提交: 53274e2 + d344900) | # | 任务 | 状态 | 提交 | |---|------|------|------| | 1 | Toast 通知系统 | ✅ | d344900 | | 2 | 替换所有 alert/prompt/confirm | ✅ | d344900 | | 3 | SFTP 上传/删除真实实现 | ✅ | d344900 | | 4 | 终端搜索 (SearchAddon) | ✅ | d344900 | | 5 | 会话恢复 (标签持久化) | ✅ | d344900 | | 6 | 修复私钥浏览按钮 | ✅ | 53274e2 | | 7 | 清理生产调试日志 | ✅ | 53274e2 | | 8 | 设计系统统一颜色 | ✅ | 53274e2 | | 9 | StatusBar 接入实际状态 | ✅ | 53274e2 | | 10 | WelcomeView 真实最近连接 | ✅ | 53274e2 | | 11 | better-sqlite3 → sql.js 迁移 | ✅ | 53274e2 | ### 里程碑 - [x] SFTP 功能可用 (上传+删除+右键菜单) - [x] Toast 系统上线 (零 alert) - [x] 终端搜索可用 - [x] 会话恢复可用 --- ## v1.2.0 体验升级 (2 周) — 🚧 进行中 > **目标**: 快捷键补全、视觉打磨、交互优化,接近 Termius 体验水平 ### 🟡 P1 — 重要 | # | 任务 | 类型 | 预计 | 验收标准 | |---|------|------|------|----------| | 1 | Ctrl+Tab / Ctrl+1~9 标签切换 | 新增 | 1天 | Ctrl+Tab 前后切换,Ctrl+1~9 跳转指定标签 | | 2 | 标签拖拽排序 | 新增 | 2天 | 拖拽标签头重排序,拖出标签栏可弹出新窗口(可选) | | 3 | SFTP 拖拽上传 | 新增 | 2天 | 从系统文件管理器拖拽文件到远程面板触发上传 | | 4 | SFTP 右键菜单完善 | 完善 | 1天 | 新增:权限编辑、属性查看、重命名、复制路径 | | 5 | 侧边栏会话分组折叠 | 完善 | 1天 | 点击分组头折叠/展开,带动画 | | 6 | Sidebar 宽度可拖拽调整 | 新增 | 1天 | 拖拽分隔条调整宽度,记忆到 settings | | 7 | 响应式布局基础 | 新增 | 2天 | 窄窗口(<800px)自动折叠侧边栏,SFTP 垂直堆叠 | | 8 | Loading/Skeleton 加载态 | 新增 | 1天 | FileListPanel 加载时显示骨架屏,SessionTree 同理 | | 9 | 空状态设计 | 新增 | 1天 | 每个组件空状态有引导文案+操作按钮 | | 10 | TerminalView 组件拆分 | 重构 | 3天 | 645行拆为 TerminalCore + TerminalOverlay + TerminalSearch | ### 视觉优化清单 | # | 文件 | 改进 | |---|------|------| | V-1 | StatusBar.tsx | `bg-accent-blue` → `bg-dark-800 border-t` | | V-2 | SFTPView.tsx | emoji 图标 → Lucide 组件 | | V-3 | TabBar.tsx | 添加活跃标签底部指示线 | | V-4 | App.tsx | Sidebar 折叠/展开过渡动画 | | V-5 | WelcomeView.tsx | 响应式 grid-cols-1 sm:grid-cols-2 | --- ## v1.3.0 测试覆盖 (2 周) > **目标**: 核心模块测试覆盖率从 10% 提升到 50% 详细计划见 [TDD_PLAN.md](./TDD_PLAN.md) | # | 模块 | 当前覆盖 | 目标覆盖 | 预计 | |---|------|----------|----------|------| | 1 | stores (tab/connection/settings/session) | 0% | 70% | 3天 | | 2 | hooks (useTerminal/useSFTP/useConnection) | 0% | 50% | 3天 | | 3 | electron services (ssh/sftp/database/crypto) | 0% | 60% | 4天 | | 4 | 组件渲染测试 (WelcomeView/TabBar/SFTPView) | 5% | 40% | 3天 | --- ## v1.4.0 专业功能 (2 周) > **目标**: 快捷键自定义、终端分屏、i18n,达到专业级水平 | # | 任务 | 类型 | 预计 | 验收标准 | |---|------|------|------|----------| | 1 | 快捷键自定义系统 | 新增 | 3天 | 设置页快捷键 Tab,可重映射所有快捷键,冲突检测 | | 2 | 终端分屏 | 新增 | 5天 | 水平/垂直分割标签页,可拖拽调整分割比例 | | 3 | i18n 国际化 | 新增 | 5天 | zh-CN + en-US,所有 UI 文字抽离到 locale 文件 | | 4 | Light 主题 | 新增 | 3天 | 完整 light 色板,自动跟随系统 | | 5 | Snippets 命令片段库 | 新增 | 3天 | 创建/管理/搜索命令片段,快捷键插入到终端 | | 6 | 代理设置 | 新增 | 2天 | HTTP/SOCKS5 代理配置,按会话独立设置 | | 7 | 多窗口支持 | 新增 | 5天 | 右键标签"在新窗口打开",窗口位置记忆 | --- ## v1.5.0 安全升级 (1 周) > **目标**: 安全评分从 55 提升到 85 | # | 任务 | 类型 | 预计 | |---|------|------|------| | 1 | IPC 传输加密 (密码不明文) | 修复 | 2天 | | 2 | Electron 升级 v28→v33+ | 升级 | 2天 | | 3 | CSP 策略强化 | 新增 | 1天 | | 4 | 依赖安全审计 + 更新 | 修复 | 1天 | --- ## 长期愿景 (v2.0+) | 功能 | 描述 | |------|------| | 云同步 | 会话/设置跨设备同步 | | AI 助手 | 终端命令建议、错误诊断 | | 团队协作 | 共享会话、权限管理 | | 插件系统 | 第三方扩展支持 | | 脚本录制 | 操作录制+回放 | --- ## 技术栈 | 类别 | 技术 | 版本 | |------|------|------| | 框架 | Electron | 28+ (升级至 33+) | | UI | React | 18 | | 语言 | TypeScript | 5 | | 构建 | Vite | 5 | | 状态管理 | Zustand | 4 | | 终端 | XTerm.js | 5 | | SSH | ssh2 | 1.15 | | 样式 | Tailwind CSS | 3 | | 图标 | Lucide React | — | | 数据库 | better-sqlite3 | 11 | | 加密 | AES-256-GCM (Node crypto) | — | ## 架构设计 ``` ┌──────────────────────────────────────────────┐ │ Electron Main │ │ ┌─────────┐ ┌──────────┐ ┌───────────────┐ │ │ │ Window │ │ IPC │ │ Services │ │ │ │ Manager │ │ Handlers │ │ SSH/SFTP/DB │ │ │ └─────────┘ └──────────┘ └───────────────┘ │ ├──────────────────────────────────────────────┤ │ React Renderer │ │ ┌─────────┐ ┌──────────┐ ┌───────────────┐ │ │ │ Views │ │ Stores │ │ Hooks │ │ │ │Term/SFTP│ │Zustand x5│ │useTerm/useSFTP│ │ │ └─────────┘ └──────────┘ └───────────────┘ │ │ ┌─────────────────────────────────────────┐ │ │ │ Components (Button/Modal/...) │ │ │ └─────────────────────────────────────────┘ │ ├──────────────────────────────────────────────┤ │ Shared (types/constants) │ └──────────────────────────────────────────────┘ ```