-
Notifications
You must be signed in to change notification settings - Fork 5
Explore FTP client interface with Flutter #7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
bvisible
wants to merge
22
commits into
main
from
claude/flutter-ftp-interface-017TLR5bN5SJFA8RpfAXkRyW
Closed
Explore FTP client interface with Flutter #7
bvisible
wants to merge
22
commits into
main
from
claude/flutter-ftp-interface-017TLR5bN5SJFA8RpfAXkRyW
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add a complete Flutter-based file manager application that connects to MCP SSH Manager via WebSocket, providing a FileZilla/Transmit-like interface for remote file management. New files: - src/http-transport.js: HTTP/WebSocket transport for MCP server - src/server-http.js: Standalone HTTP server exposing MCP tools - flutter_app/: Complete Flutter application Features: - MCP Protocol compatible via WebSocket - Server sidebar with connection status - File browser with sorting and selection - Create/rename/delete operations - Transfer queue with progress tracking - Responsive UI with Material 3 design
- Fix configLoader.listServers() -> configLoader.getAllServers() - Fix configLoader.getServerConfig() -> configLoader.getServer() - Add comprehensive test suite for HTTP/WebSocket server (33 tests) - Add test:http npm script
The HTTP server was not loading the SSH server configuration, resulting in "Available servers: (none configured)" message. Added configLoader.load() call in main() before creating the transport.
…atibility PopupMenuItem widgets in context menu were missing generic type annotations, causing build errors on Flutter 3.0.x with strict type inference. Changed: - showMenu() → showMenu<void>() - items: [] → items: <PopupMenuEntry<void>>[] - PopupMenuItem() → PopupMenuItem<void>()
Added missing font files required by pubspec.yaml: - fonts/JetBrainsMono-Regular.ttf - fonts/JetBrainsMono-Bold.ttf These fonts are used for monospace text display in the file browser.
Added macOS runner configuration with required entitlements: - com.apple.security.app-sandbox - com.apple.security.cs.allow-jit - com.apple.security.network.server - com.apple.security.network.client (required for WebSocket connections) Generated with: flutter create --platforms=macos .
Added standard Flutter project files: - .gitignore for Flutter build artifacts - analysis_options.yaml for linting - pubspec.lock for dependency pinning
- Add Settings dialog accessible from toolbar gear icon - Configure default editor for opening files (VS Code, Cursor, Sublime, etc.) - Auto-detect installed editors on macOS - Support custom editor path selection - Download and open remote files with configured editor on double-click - Persist settings using shared_preferences New files: - lib/models/app_settings.dart: Settings model and known editors - lib/services/settings_service.dart: Load/save settings, detect editors - lib/services/file_opener_service.dart: Download and open files - lib/providers/settings_provider.dart: State management for settings - lib/widgets/settings_dialog.dart: Settings UI Modified files: - main.dart: Initialize SettingsProvider - home_screen.dart: Add settings button - file_browser_panel.dart: Handle file opening on double-click - mcp_client.dart: Add downloadFile and uploadFile methods
- Fix file download by using base64 encoding via ssh_execute instead of ssh_download (which saves to MCP server, not Flutter client) - Fix macOS sandboxed app opening by using 'open -a' command instead of direct command execution - Add FileWatcherService to monitor local file changes and auto-sync back to remote server - Use MD5 hash comparison to avoid duplicate syncs on multiple file system events - Add debouncing (1s) and concurrent sync protection - Add crypto package dependency for MD5 hashing - Show snackbar notifications for sync status (syncing/success/error)
- Create EmbeddedServerService to auto-start Node.js MCP server - Add splash screen during startup (initializing, connecting states) - Auto-detect Node.js path (nvm, homebrew, system) - Auto-detect server script path (dev, bundled, installed) - Fall back to connecting to existing server if available - Disable macOS sandbox to allow process spawning - Show error screen with retry/manual connect options on failure
…configuration - Add SSH server management UI (add/edit/delete connections) - Add MCP tools configuration UI (enable/disable tool groups) - Add Claude Code integration status checker - Create ConfigService for TOML and JSON config management - Auto-connect now fully transparent with embedded server
…mote file browsers - Add LocalFileBrowser widget with Finder-like design - Add RemoteFileBrowser widget with server selector dropdown - Update HomeScreen with dual-pane layout (local left, remote right) - Features: breadcrumb navigation, hidden files toggle, file icons, status bar
…ist_files - Replace ~ with $HOME for proper shell expansion - Use server's default_dir when no path is provided - Return actual resolved path in response
- Create ServerSelector widget with grid and list view modes - Add search filter to find servers by name, host, or user - Remove auto-connect to first server on startup - Add disconnect button to return to server selection - User must now explicitly choose which server to connect to
- Local files: open directly with configured editor - Remote files: download to temp folder then open with editor - Show loading indicator during download - Handle missing editor configuration with error message
- Add FileSyncService to watch opened files for changes - Automatically upload modified files back to server - Show sync status in snackbar notifications - Poll for changes every 2 seconds - Use base64 encoding for reliable file transfer
Add right-click context menu to both local and remote file browsers with: - Open / Show in Finder (local) / Download (remote) - File info dialog with details - Rename with dialog - Duplicate file/folder - Move to path dialog - Delete with confirmation - New folder creation - New file creation - Refresh Both panels support: - Right-click on files for file-specific actions - Right-click on empty space for new file/folder and refresh - Snackbar notifications for success/error feedback
- Replace Material/Cupertino icons with HugeIcons stroke rounded style - Fix icon type handling (List<List<dynamic>> instead of IconData) - Update all widgets to use HugeIcon widget component - Add hugeicons package dependency
- Add CLAUDE.md with mandatory testing rules for Claude Code - Create test folder structure (unit, widget, mocks, helpers, fixtures) - Add MockMcpClient for testing without server dependencies - Add test helpers and factory functions for common test scenarios - Add unit tests for models (AppSettings, EditorInfo, KnownEditors) - Add unit tests for MCP classes (SshServer, RemoteFile, etc.) - Add unit tests for providers (ConnectionProvider, FileBrowserProvider, TransferProvider) - Add widget tests for ServerSelector - 88 tests passing Testing rules documented ensure future features always include tests
- Add DraggedLocalFiles and DraggedRemoteFiles data models for transfer operations - Implement Draggable/DragTarget widgets for cross-panel drag & drop - Add visual feedback with border highlighting when dragging over target - Add "Upload to Server" context menu option in local file browser - Wire up handlers in home_screen to queue transfers via TransferProvider - Add 20 unit tests for drag & drop models (LocalFile, DraggedLocalFiles, etc.) All 152 tests passing.
- Add sortable columns (Name, Date, Size) to both local and remote file browsers - Click column headers to sort, click again to toggle ascending/descending - Add auto-refresh: destination file browser refreshes after upload/download completes - Add TransferProvider.onTransferComplete callback for transfer notifications
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.