Commit Graph

24 Commits

Author SHA1 Message Date
ZacharyZcR
aea00225d2 SECURITY: Fix authentication and file manager display issues
- Add JWT authentication middleware to file manager and metrics APIs
- Fix WebSocket authentication timing race conditions
- Resolve file manager grid view display issue by eliminating request ID complexity
- Fix FileViewer translation function undefined error
- Simplify SSH authentication flow and remove duplicate connection attempts
- Ensure consistent user authentication across all services

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-22 22:20:33 +08:00
ZacharyZcR
35145aeced Complete Chinese comment cleanup in File Manager components
- FileManagerModern.tsx: Translate all Chinese comments to English, replace hardcoded text with i18n
- TerminalWindow.tsx: Complete translation and add i18n support
- DiffWindow.tsx: Complete translation and add i18n support
- FileManagerOperations.tsx: Complete translation
- Fix missed comment in FileManagerGrid.tsx

All File Manager components now have clean English comments and proper internationalization.
Follow Linus principles: simple, direct, no unnecessary complexity.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-22 02:19:27 +08:00
ZacharyZcR
d693dc5a14 Translate Chinese comments to English in File Manager components
- Complete translation of FileWindow.tsx comments and hardcoded text
- Complete translation of DraggableWindow.tsx hardcoded text
- Complete translation of FileManagerSidebar.tsx comments
- Complete translation of FileManagerGrid.tsx comments and UI text
- Complete translation of DiffViewer.tsx hardcoded text with proper i18n
- Partial translation of FileManagerModern.tsx comments (major sections done)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-22 02:07:08 +08:00
ZacharyZcR
1e6ab7b3a0 Fix file upload limits and UI performance issues
- Remove artificial 18MB file size restrictions across all layers
- Increase limits to industry standard: 5GB for file operations, 1GB for JSON
- Eliminate duplicate resize handlers causing UI instability
- Fix Terminal connection blank screen by removing 300ms delay
- Optimize clipboard state flow for copy/paste functionality
- Complete i18n implementation removing hardcoded strings
- Apply Linus principle: eliminate complexity, fix data structure issues

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-21 02:12:33 +08:00
ZacharyZcR
00b620cbf7 Fix F2 rename functionality - eliminate half-baked feature
Following Linus principle: "功能不完整就不应该暴露给用户"

BEFORE: F2 key only printed console.log - useless UI control
AFTER: F2 properly triggers onStartEdit for file rename

This was a classic "half-baked" feature that frustrated users.
F2 is a standard Windows/Linux file manager shortcut.

Note: Could not locate "Straight button" mentioned in issue.
Searched all UI controls, sorting, layout functions - not found.
May have been removed or misnamed.

The core F2 rename issue is now resolved.
2025-09-21 01:30:30 +08:00
ZacharyZcR
2019b81254 Eliminate file creation duplicate logic with Linus-style redesign
Following "good taste" principles to separate create intent from actual files:

DATA STRUCTURE REDESIGN:
- Add CreateIntent interface to separate intent from reality
- Replace mixed virtual/real file handling with pure separation
- Remove isCreatingNewFile state that caused confusion

ELIMINATE SPECIAL CASES:
- Cancel operation now has zero side effects (was creating default files)
- Remove complex conditional logic in handleCancelEdit
- Separate handleConfirmCreate from handleRenameConfirm responsibilities

SIMPLIFY USER FLOW:
- Create intent → Show UI → Confirm → Create file
- Cancel intent → Clean state → No side effects
- No more "NewFolder" + "UserName" duplicate creation

UI COMPONENTS:
- Add CreateIntentGridItem and CreateIntentListItem
- Render create intent separately from real files
- Focus/select input automatically with ESC/Enter handling

Resolves: Users reporting duplicate files on creation
Core fix: Eliminates the "special case" of cancel-creates-file
Result: Predictable, elegant file creation flow
2025-09-19 01:53:14 +08:00
LukeGus
8afd84d96d Cleanup files and improve file manager. 2025-09-18 00:32:56 -05:00
ZacharyZcR
7fc474b9e4 实现文件管理器面包屑可编辑路径输入功能
- 添加双模式设计:查看模式显示面包屑,编辑模式显示输入框
- 支持点击编辑图标切换到路径编辑模式
- 实现键盘快捷键:Enter确认,Escape取消
- 添加路径验证和自动规范化处理
- 保持与现有UI风格一致的视觉设计

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 09:07:45 +08:00
ZacharyZcR
a0c3ce307d 修复核心UI文本的i18n问题:支持多语言切换
主要修复:
- 右键菜单:在此处打开终端、运行、保存到系统
- 拖拽提示:拖拽系统文件到此处上传、拖拽文件到窗口外下载
- 终端窗口标题和状态提示
- 错误消息:没有选择主机、只能运行可执行文件
- 添加完整的中英文翻译条目

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 01:32:15 +08:00
ZacharyZcR
e0e4e69159 优化文件管理器拖拽体验:实现智能跟随tooltip和统一状态管理
- 统一拖拽状态管理:将分散的draggedFiles、dragOverTarget、isDragging等状态合并为单一DragState
- 实现跟随鼠标的动态tooltip:实时显示拖拽操作提示,根据目标文件类型智能变化
- 支持三种拖拽模式:
  * 拖拽到文件夹显示"移动到xxx"
  * 拖拽到文件显示"与xxx进行diff对比"
  * 拖拽到空白区域显示"拖到窗口外下载"
- 修复边界情况:文件拖拽到自身时忽略操作,避免错误触发
- 使用shadcn设计token统一样式风格
- 移除冗余的DragIndicator组件,简化UI界面
- 添加全局鼠标移动监听,确保tooltip平滑跟随

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 00:53:15 +08:00
ZacharyZcR
d79d435594 实现跨边界拖拽功能:支持从浏览器拖拽文件到系统
主要改进:
- 使用 File System Access API 实现真正的跨应用边界文件传输
- 支持拖拽到窗口外自动触发系统保存对话框
- 智能路径记忆功能,记住用户上次选择的保存位置
- 多文件自动打包为 ZIP 格式
- 现代浏览器优先使用新 API,旧浏览器降级到传统下载
- 完整的视觉反馈和进度显示

技术实现:
- 新增 useDragToSystemDesktop hook 处理系统级拖拽
- 扩展 Electron 主进程支持拖拽临时文件管理
- 集成 JSZip 库支持多文件打包
- 使用 IndexedDB 存储用户偏好的保存路径
- 优化文件管理器拖拽事件处理链

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 00:08:15 +08:00
ZacharyZcR
681a223bed 实现文件拖拽功能
- 支持文件/文件夹拖拽到文件夹进行移动操作
- 支持文件拖拽到文件进行diff对比(临时实现)
- 区分内部文件拖拽和外部文件上传,避免误触发上传界面
- 添加拖拽视觉反馈和状态管理
- 支持批量文件拖拽移动
- 集成撤销历史记录
2025-09-16 23:11:33 +08:00
ZacharyZcR
cae9097034 Implement complete file manager keyboard shortcuts and copy functionality
Core Features:
- Full Ctrl+C/X/V/Z keyboard shortcuts system for file operations
- Real SSH file copy functionality supporting both files and directories
- Smart filename conflict resolution with timestamp-based naming
- Enhanced UX with detailed toast feedback and operation status

Technical Improvements:
- Remove complex file existence checks to prevent SSH connection hanging
- Optimize cp command with -fpr flags for non-interactive execution
- 20-second timeout mechanism for quick error feedback
- Comprehensive error handling and logging system

Keyboard Shortcuts System:
- Ctrl+A: Select all files (fixed text selection conflicts)
- Ctrl+C: Copy files to clipboard
- Ctrl+X: Cut files to clipboard
- Ctrl+V: Paste files (supports both copy and move operations)
- Ctrl+Z: Undo operations (basic framework)
- Delete: Delete selected files
- F2: Rename files

User Experience Enhancements:
- Smart focus management ensuring shortcuts work properly
- Fixed multi-select right-click delete functionality
- Copy operations with auto-rename: file_copy_12345678.txt
- Detailed operation feedback and error messages

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-16 22:13:37 +08:00
ZacharyZcR
bf166d602f 优化文件管理器视觉设计和安全性
核心改进:
- 统一图标色调:所有文件类型图标改为黑白配色,消除彩色差异
- 恢复原始主题:修复shadcn样式导致的过暗背景问题
- 增强大文件安全:后端10MB文件大小限制,防止内存溢出
- 优化警告样式:Large File Warning使用shadcn设计规范

技术细节:
- getFileIcon()全部使用text-muted-foreground统一色调
- 恢复bg-dark-bg/border-dark-border原始主题色彩
- readFile API增加stat文件大小检查和错误处理
- FileViewer警告组件使用destructive色彩体系

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-16 20:15:42 +08:00
ZacharyZcR
12733685d7 实现完整的文件管理器框选功能
核心功能:
- 鼠标拖拽框选多文件,支持实时视觉反馈
- 智能碰撞检测算法,精确识别文件交集
- Windows风格交互:框选后点击空白处取消选择
- 区分点击和拖拽:距离小于5px视为点击操作

技术实现:
- 状态管理:isSelecting, selectionStart, selectionRect
- 事件处理:mousedown/mousemove/mouseup完整链路
- 坐标计算:支持滚动容器的相对定位
- 防冲突:justFinishedSelecting标志避免误触

交互优化:
- 蓝色半透明选择框,z-index确保最前显示
- data-file-path属性用于元素识别
- 全局事件监听,鼠标移出容器也能正常结束
- 50ms延迟重置,确保事件处理顺序正确

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-16 19:54:20 +08:00
ZacharyZcR
3fa3c9e352 修复文件管理器面包屑导航和状态栏显示问题
修复内容:
- 面包屑导航:移除重复的斜杠分隔符,优化路径显示逻辑
- 根目录按钮后添加间距,提升视觉效果
- 状态栏:修复重复数字显示问题,移除冗余的files.length

显示优化:
- 面包屑:从 "/ / home / ubuntu" 改为 "/ home / ubuntu"
- 状态栏:从 "26 26 items" 改为 "26 items"

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-16 19:47:11 +08:00
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
86a7ef8914 Enhance inline editing visual design and UX
- Replace harsh white/black input with softer blue-tinted design
- Grid view: light blue background (bg-blue-50) with subtle styling
- List view: improved padding and rounded corners
- Add smooth transitions and focus ring effects
- Enhanced hover states with semi-transparent white overlay
- Better visual feedback for interactive file names
- Tooltip improvements: '(点击重命名)' for user guidance
- More professional and polished appearance
- Consistent with modern design systems
2025-09-16 18:30:49 +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
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
7c7754ba11 Fix file manager navigation buttons - implement proper directory navigation
🧭 Navigation System Overhaul:
- Replace broken browser history navigation with proper file system navigation
- Implement intelligent directory history tracking with forward/backward support
- Add smart button state management with auto-disable when not applicable

🔧 Button Fixes:
- Back button (<): Now navigates to previously visited directories
- Forward button (>): Restores navigation after going back
- Up button (↑): Properly constructs parent directory paths
- Refresh button: Fixed icon from Download to RefreshCw

🎯 Smart Button States:
- Back/Forward buttons auto-disable when no history available
- Up button disables at root directory (/)
- Visual feedback with opacity changes for disabled states
- Proper hover effects and accessibility

🧠 Navigation History Logic:
- Automatic history tracking when directories change
- History index management for proper back/forward behavior
- Clean path construction with correct separator handling
- Memory-efficient history management

The file manager now provides desktop-class navigation experience
matching modern file explorers like Windows Explorer or macOS Finder.
2025-09-16 16:43:14 +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
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