feat: v0.3.0 版本 - SSH终端、SFTP、端口转发功能实现

核心功能:
- SSH终端: 密码/密钥认证、XTerm.js终端、多主题配色、IP高亮
- SFTP管理: 双栏文件管理、上传下载、传输队列
- 端口转发: 本地/远程转发、SOCKS5动态代理、规则管理

架构改进:
- 拆分大型组件 (SFTPView/TabBar/Sidebar)
- 添加统一日志和错误处理
- 修复React严格模式下的终端黑屏问题

UI更新:
- 新增端口转发视图
- 更新UI预览文档
- 左侧栏右键菜单支持SFTP快捷打开
This commit is contained in:
Logan.Li committed 2026-04-06 01:20:47 +08:00
1 parent cf1c054381
commit 484d850abd
105 files changed
+25330 -64

No files matched your search

+44
View File
@@ -0,0 +1,44 @@
/**
* Breadcrumb - 路径导航组件
*/
import { ChevronRight, Home } from 'lucide-react'
interface BreadcrumbProps {
path: string
onNavigate: (p: string) => void
onHome: () => void
}
export function Breadcrumb({ path, onNavigate, onHome }: BreadcrumbProps) {
const parts = path.split('/').filter(Boolean)
return (
<div className="flex items-center gap-1 text-sm min-w-0">
<button
onClick={onHome}
className="p-1.5 hover:bg-slate-700 rounded transition-colors flex-shrink-0"
title="主目录"
>
<Home className="w-4 h-4 text-gray-400" />
</button>
<button
onClick={() => onNavigate('/')}
className="px-1.5 py-0.5 hover:bg-slate-700 rounded text-gray-400 hover:text-slate-200 transition-colors"
>
/
</button>
{parts.map((part, index) => (
<span key={index} className="flex items-center min-w-0">
<ChevronRight className="w-3 h-3 text-slate-600 mx-0.5 flex-shrink-0" />
<button
onClick={() => onNavigate('/' + parts.slice(0, index + 1).join('/'))}
className="px-1.5 py-0.5 hover:bg-slate-700 rounded text-gray-200 hover:text-white transition-colors truncate max-w-[120px]"
>
{part}
</button>
</span>
))}
</div>
)
}