Files
opsxshell/ROADMAP.md
T
OpsXShell Dev c5243df040 docs: UI/UX深度审计 — 视觉设计+功能交互全面评估
- PROJECT_EVALUATION.md: 新增UI/UX审计评分(48/100)
  - 视觉设计65分(配色专业但系统执行不严格)
  - 交互体验40分(alert/prompt泛滥,无Toast)
  - 功能便捷性45分(快捷键仅4个,无终端搜索)
  - 状态处理35分(多组件缺三态)
  - 响应式10分(完全缺失)
  - 12项Critical问题 + 8项Warning问题
  - 功能完成度矩阵 + 竞品对标
  - 3阶段优化路线(48→88分)

- ROADMAP.md: 基于UI/UX审计重写路线图
  - v1.1.0 基础可用(2周): Toast+终端搜索+会话恢复+SFTP修复
  - v1.2.0 体验升级(2周): 快捷键+拖拽+响应式+视觉打磨
  - v1.3.0 测试覆盖(2周): 核心模块50%覆盖率
  - v1.4.0 专业功能(2周): 分屏+i18n+自定义快捷键
  - v1.5.0 安全升级(1周): Electron升级+IPC加密
2026-04-18 13:23:04 +08:00

167 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 问题,建立基础反馈系统,产品具备日常使用价值
### 🔴 P0 — 必须完成
| # | 任务 | 类型 | 预计 | 验收标准 |
|---|------|------|------|----------|
| 1 | Toast 通知系统 | 新增 | 2天 | `useToast()` hook + `ToastContainer`,支持 success/error/warning/info 四种类型,自动消失+手动关闭 |
| 2 | 替换所有 alert/prompt/confirm | 修复 | 2天 | `App.tsx` 5处 alert → Toast,`SFTPView.tsx` prompt → 内联输入,`PortForwardView.tsx` confirm → ConfirmDialog |
| 3 | SFTP 上传/删除真实实现 | 修复 | 3天 | 上传通过 ssh2 sftp fastPut 实现,删除通过 rimraf/unlink 实现,右键菜单 action 绑定真实函数 |
| 4 | 终端搜索 (SearchAddon) | 新增 | 1天 | Ctrl+Shift+F 打开搜索栏,支持正则/大小写/全词匹配,高亮所有匹配 |
| 5 | 会话恢复 | 新增 | 3天 | 关闭前持久化标签状态到 SQLite,启动时恢复标签+自动重连 |
| 6 | 修复私钥浏览按钮 | 修复 | 0.5天 | dialog.showOpenDialog() 绑定到 onClick,过滤 `.pem/.key/id_*` |
| 7 | 清理生产调试日志 | 修复 | 1天 | 移除 `DEBUG=true`,所有 console.log 用 logger 替代或删除 |
| 8 | 设计系统统一颜色 | 修复 | 1天 | cyan→accent-blue, sky→accent-blue, slate→dark-*,新增 accent-orange |
| 9 | StatusBar 接入实际状态 | 修复 | 0.5天 | 显示当前连接 host、延迟 ms、标签数 |
| 10 | WelcomeView 真实最近连接 | 修复 | 1天 | 从 sessionStore 获取最近 5 条连接记录,空状态显示引导 |
### 里程碑推送
- [ ] SFTP 功能可用 (上传+删除+右键菜单)
- [ ] Toast 系统上线 (零 alert)
- [ ] 终端搜索可用
- [ ] 会话恢复可用
---
## 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) │
└──────────────────────────────────────────────┘
```