feat(v1.2): 体验升级 — 快捷键系统 + 标签拖拽 + SFTP拖拽上传 + 组件拆分 + 响应式

任务1: 全局快捷键管理器 — useKeyboardShortcuts hook
  Ctrl+Tab/Shift+Tab标签切换, Ctrl+1~9跳转, F11全屏, Ctrl+Shift+N新建标签

任务2: 标签拖拽排序 — tabStore.moveTab + TabBar HTML5 DnD
  不可变更新, 拖拽视觉反馈(opacity+指示线), 活跃标签底部accent-blue指示线

任务3: SFTP拖拽上传 + useSFTP调试清理
  FileListPanel拖拽覆盖层(Upload图标+虚线边框), 5个调试函数→createLogger,
  disconnect()正确调用IPC, 删除mock data

任务4: SFTP右键菜单完善 — 重命名/复制路径/属性/权限
  FilePropertiesDialog+ChmodDialog, sftpStat/sftpChmod IPC全栈实现

任务5-6: 侧边栏分组折叠动画 + 宽度可拖拽调整
  Grid 0fr→1fr折叠动画, ChevronRight旋转, resize handle 180~400px, settings记忆

任务7: 响应式布局 + 视觉优化V1~V5
  useMediaQuery hook, <800px侧边栏overlay模式, SFTP垂直堆叠, WelcomeView响应式grid

任务8: Loading/Skeleton骨架屏
  Skeleton/SkeletonLine/SkeletonCircle/SkeletonBlock + FileListSkeleton/SessionTreeSkeleton/TabContentSkeleton

任务9: 空状态设计
  EmptyState通用组件, SessionTree/FileListPanel/WelcomeView/SFTPView空状态引导

任务10: TerminalView组件拆分重构 711行→285行
  useTerminalConnection(300行) + useTerminalSearch(123行)
  + TerminalOverlay(98行) + TerminalSearchBar(74行)

33 files changed, 2682 insertions(+), 872 deletions(-)
This commit is contained in:
OpsXShell Dev committed 2026-04-18 18:35:49 +08:00
1 parent d344900118
commit caba5f4c0d
33 files changed
+2683 -873

No files matched your search

+21 -20
View File
@@ -12,34 +12,35 @@ v1.5.0 安全升级 ─── 1 周 ──→ 安全 55→85, 代码 80→85
---
## v1.1.0 基础可用 (2 周) — 当前阶段
## v1.1.0 基础可用 (2 周) — ✅ 已完成
> **目标**: 解决所有 Critical UI/UX 问题,建立基础反馈系统,产品具备日常使用价值
### 🔴 P0 — 必须完成
### ✅ 全部完成 (提交: 53274e2 + d344900)
| # | 任务 | 类型 | 预计 | 验收标准 |
|---|------|------|------|----------|
| 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 条连接记录,空状态显示引导 |
| # | 任务 | 状态 | 提交 |
|---|------|------|------|
| 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 |
### 里程碑推送
- [ ] SFTP 功能可用 (上传+删除+右键菜单)
- [ ] Toast 系统上线 (零 alert)
- [ ] 终端搜索可用
- [ ] 会话恢复可用
### 里程碑
- [x] SFTP 功能可用 (上传+删除+右键菜单)
- [x] Toast 系统上线 (零 alert)
- [x] 终端搜索可用
- [x] 会话恢复可用
---
## v1.2.0 体验升级 (2 周)
## v1.2.0 体验升级 (2 周) — 🚧 进行中
> **目标**: 快捷键补全、视觉打磨、交互优化,接近 Termius 体验水平