Commit Graph

12 Commits

Author SHA1 Message Date
ZacharyZcR
7059ebcc0e 修复文件管理器滚动功能和软链接支持
主要改进:
- 重新设计布局结构,确保状态栏始终可见
- 添加软链接图标和目标路径显示支持
- 修复滚动条功能,使用绝对定位的滚动容器
- 优化文件名编辑框的自适应宽度和居中显示
- 完善软链接点击处理逻辑

布局优化:
- 外层容器:h-full flex flex-col overflow-hidden
- 滚动区域:flex-1 relative overflow-hidden 包含 absolute inset-0 overflow-y-auto
- 状态栏:flex-shrink-0 确保始终可见

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-16 19:40:51 +08:00
ZacharyZcR
16de73d6ad Add comprehensive file information display to file manager
Backend improvements:
- Enhanced ls -la parsing to extract complete file metadata (size, permissions, owner, group, modified date)
- Added support for symbolic link target detection
- Changed API response format to include both files array and current path
- Improved file path construction logic

Frontend improvements:
- Updated global FileItem interface with all file metadata fields
- Removed duplicate local FileItem definitions across components
- Added formatFileSize utility with proper 0-byte handling ("0 B" instead of "-")
- Fixed 0-byte file display logic (changed from falsy check to explicit null/undefined check)
- Implemented file size display in both grid and list views
- Added smart filename collision handling with auto-incrementing suffixes
- Enhanced create-then-edit workflow to preserve items even when canceled
- Improved inline editing input styling to match shadcn design system
- Optimized input field dimensions (width constraints: 60-120px grid, max 200px list)

File creation improvements:
- Removed spaces from default names to avoid path issues (NewFile.txt, NewFolder)
- Added intelligent unique name generation (NewFile.txt → NewFile1.txt → NewFile2.txt)
- Changed cancel behavior to create items with default names instead of discarding
- Fixed SSH connection reliability with auto-reconnection for all operations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-16 19:12:49 +08:00
ZacharyZcR
fb7b452a1c Implement proper file/folder creation workflow with inline editing
- Fix delete API by adding isDirectory parameter for proper directory deletion
- Redesign creation logic: edit first, then create on confirm instead of create-then-rename
- Remove spaces from default names (NewFile.txt, NewFolder) to avoid path issues
- Add temporary items to file list display during editing for immediate visual feedback
- Simplify cancel operation: just exit edit mode without server deletion
- Reduce API calls from 2 (create+rename) to 1 (direct create with final name)
- Fix editing state display issues where new items weren't visible in the interface

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-16 18:59:43 +08:00
ZacharyZcR
523f6412a7 Fix API parameters for createSSHFile and createSSHFolder
- Correct createSSHFile to use separate path, fileName, and content parameters
- Correct createSSHFolder to use separate path and folderName parameters
- Add missing hostId and userId parameters for proper API calls
- Fix 'File/Folder path and name are required' 400 errors
- Ensure API calls match backend expectations:
  - createSSHFile(sessionId, path, fileName, content, hostId, userId)
  - createSSHFolder(sessionId, path, folderName, hostId, userId)
- Maintain full path construction for frontend file tracking
2025-09-16 18:35:59 +08:00
ZacharyZcR
be6fabf129 Fix SSH connection loss causing operation failures
- Add comprehensive SSH connection checking with auto-reconnection
- Implement ensureSSHConnection() function for all file operations
- Enhanced error handling with specific SSH connection error messages
- Fixed operations affected:
  - File/folder renaming
  - File/folder creation
  - File/folder deletion
  - File upload/download
- Improved user feedback with host-specific error messages
- Consistent connection recovery across all file manager functions
- Better reliability for long-running SSH sessions
2025-09-16 18:34:12 +08:00
ZacharyZcR
bce3fcc41e Implement Windows-style inline file/folder renaming and creation
- Remove popup dialogs for rename and new file/folder operations
- Add inline editing mode with input field replacing file name display
- Support both grid and list view modes for inline editing
- Key features:
  - Click file name to start editing
  - Enter to confirm, Escape to cancel
  - Auto-focus and select text when editing starts
  - Visual feedback with blue border on edit input
  - Cancel new items removes them from filesystem
- New file/folder workflow:
  - Creates with default name immediately
  - Starts inline editing automatically
  - User can rename or cancel (which deletes the item)
- Maintain full keyboard navigation and accessibility
- Preserve all existing selection and context menu functionality
2025-09-16 18:28:39 +08:00
ZacharyZcR
0497ff139e Fix SSH connection issues and enable no-extension file editing
- Add SSH connection checking with auto-reconnection in FileWindow
- Fix missing sshHost parameter passing from FileManagerModern
- Enable editing for files without extensions (.bashrc, Dockerfile, etc.)
- Add proper error handling for SSH connection failures
- Fix onContentChange callback for real-time text editing

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-16 17:41:08 +08:00
ZacharyZcR
22ac7d8596 Implement draggable file windows - Windows Explorer style
Added comprehensive draggable window system with the following features:

🪟 **DraggableWindow Component**:
- Full drag and drop functionality with title bar dragging
- Window resizing from all edges and corners
- Maximize/minimize/close window controls
- Double-click title bar to maximize/restore
- Auto position adjustment to prevent off-screen windows
- Windows-style blue gradient title bar

📁 **FileViewer Component**:
- Multi-format file support (text, code, images, videos, audio)
- Syntax highlighting distinction for code files
- Editable text files with real-time content tracking
- File metadata display (size, modified date, permissions)
- Save and download functionality
- Unsaved changes indicator

🎯 **WindowManager System**:
- Multi-window support with proper z-index management
- Window factory pattern for dynamic component creation
- Focus management - clicking brings window to front
- Smart window positioning with auto-offset
- Memory leak prevention with proper cleanup

🔗 **FileWindow Integration**:
- SSH file loading with error handling
- Auto-detect editable file types
- Real-time file saving to remote server
- Download files as binary blobs
- Loading states and progress feedback

 **User Experience**:
- Double-click any file to open in draggable window
- Multiple files can be open simultaneously
- Windows behave like native Windows Explorer
- Smooth animations and transitions
- Responsive design that works on all screen sizes

This transforms the file manager from a basic browser into a full
desktop-class application with native OS window management behavior.
2025-09-16 17:22:21 +08:00
ZacharyZcR
fee7af3c46 Fix file manager view mode toggle - add grid and list view support
- Added viewMode prop to FileManagerGrid component
- Implemented list view layout with detailed file information
- Updated icon sizing for different view modes (8px for grid, 6px for list)
- Added proper file metadata display in list view (size, permissions, modified date)
- Connected view mode state from FileManagerModern to FileManagerGrid
- Both grid and list view buttons now fully functional
2025-09-16 16:57:47 +08:00
ZacharyZcR
cd70e63a1b Fix critical file selection and SSH connection issues in modern file manager
Major fixes that make the modern file manager fully functional:

🔧 Core Issues Fixed:
- File selection bug: All files showing as selected when only one was clicked
- SSH connection not established: 400 errors when loading directories
- File path undefined: Backend data missing proper path construction

🎯 File Selection Fix:
- Root cause: All file.path values were 'undefined', causing path comparison
  to always return true ('undefined' === 'undefined')
- Solution: Manually construct file paths from currentPath + fileName
- Result: Proper single/multi/range selection now works correctly

🔗 SSH Connection Enhancement:
- Added comprehensive connection status checking before operations
- Implemented automatic reconnection on connection failures
- Enhanced error handling with detailed logging and user feedback
- Added connection parameter validation and debugging

🛠️ Technical Improvements:
- Enhanced useFileSelection hook with safer state management
- Added extensive debugging logs for file operations and path construction
- Improved error messages and user feedback across all operations
- Robust file path building matching traditional file manager logic

The modern file manager now provides a fully functional, desktop-class
file management experience with proper selection, navigation, and operations.
2025-09-16 16:21:06 +08:00
ZacharyZcR
b50ee1965f Fix modern file manager SSH connection and button functionality
Critical fixes to make the modern file manager functional:

- Fix SSH connection parameters: Pass complete config object to connectSSH()
  instead of just host ID, resolving 'Missing SSH connection parameters' error
- Add missing 'New File' button with handleCreateNewFile functionality
- Implement handlePasteFiles and handleRenameFile placeholder functions
- Complete right-click context menu with all required event handlers
- Ensure proper SSH session establishment for backend communication

The modern file manager now properly connects to SSH hosts and can perform
basic file operations. Ready for incremental feature completion.
2025-09-16 15:45:21 +08:00
ZacharyZcR
49e7159939 Implement modern file manager with drag-and-drop interface
Major UI/UX improvements to replace clunky sidebar with modern grid layout:

- Add FileManagerModern component with grid-based file browser
- Implement drag-and-drop file upload with validation and progress
- Add comprehensive context menu with file operations (copy/cut/paste/delete)
- Create intelligent file selection system with multi-select support
- Add modern toolbar with search, view switching, and file operations
- Integrate seamless view switching between classic and modern interfaces
- Support keyboard shortcuts and accessibility features
- Add complete i18n support for all new interface elements

Technical components:
- FileManagerGrid: Grid layout with breadcrumb navigation
- FileManagerContextMenu: Right-click context menu system
- useFileSelection: Hook for managing file selection state
- useDragAndDrop: Hook for handling drag-and-drop operations
- View switching logic integrated into main FileManager component

The modern interface is now the default while maintaining backward compatibility.
Users can switch between modern and classic views seamlessly.
2025-09-16 15:36:39 +08:00