All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
This release introduces comprehensive transfer cancellation functionality, resolving the critical issue where transfers would get stuck at specific percentages indefinitely.
-
Cancel Transfer API Endpoint (
/api/cancel-transfer)- Immediately stops ongoing transfers
- Clears progress tracking data
- Marks transfer as cancelled in connection state
- Returns proper success/error responses
-
Frontend Cancel Button Integration
- Enhanced
cancelTransfer()method with API integration - Proper cleanup of progress monitoring intervals
- User-friendly cancellation confirmation messages
- Immediate UI feedback on cancellation
- Enhanced
-
Automatic Detection Algorithm
- Monitors progress every 5 seconds (200ms intervals)
- Detects transfers with no progress for 2+ minutes
- Automatically offers cancellation option
- Resets detection counters when progress resumes
-
Smart Progress Monitoring
- Enhanced timeout handling for slow connections
- Better error handling for network issues
- Improved responsiveness with faster polling
-
Cancellation vs Error Distinction
- Separate handling for user cancellation vs system errors
- Proper error messages and user feedback
- Graceful cleanup on both cancellation and errors
-
Backend Cancellation Checks
- Progress callbacks check for cancellation flags
- Transfer loops include cancellation validation
- Immediate termination when cancellation detected
-
Transfer Stuck at Specific Percentages
- Problem: Transfers would freeze at percentages like 10.3% indefinitely
- Root Cause: No cancellation mechanism and continued progress polling
- Solution: Comprehensive cancellation system with proper cleanup
-
Infinite Progress Polling Loop
- Problem: JavaScript continued making progress requests after transfer failure
- Root Cause: Missing cleanup in progress monitoring
- Solution: Proper cleanup in
stopProgressMonitoring()with state reset
-
Backend Process Cleanup
- Problem: SCP transfer processes weren't terminated on cancellation
- Root Cause: No cancellation checks in transfer operations
- Solution: Added cancellation validation in progress callbacks and loops
-
Progress Callback Enhancement
# Added cancellation checks in progress callbacks if session_id in self.connections and \ self.connections[session_id].get('transfer_cancelled', False): raise Exception("Transfer cancelled by user")
-
Frontend State Management
// Proper cleanup of monitoring variables this.lastProgressUpdate = 0; this.lastProgressValue = 0; this.stuckCheckCount = 0;
-
Transfer Loop Validation
# Check for cancellation before processing each file if session_id in self.connections and \ self.connections[session_id].get('transfer_cancelled', False): logger.info(f"Transfer cancelled by user for session {session_id}") break
-
Progress Monitoring Frequency
- Increased from 1-second to 200ms intervals
- More responsive progress updates
- Better handling of slow internet connections
-
Timeout Handling
- Added 2-second timeout for progress requests
- Graceful handling of network timeouts
- Improved error recovery mechanisms
-
Progress Modal Improvements
- Cancel button always visible during transfers
- Better visual feedback on cancellation
- Enhanced error and success messages
-
User Feedback System
- Clear distinction between cancellation and errors
- Professional completion modals
- Improved progress information display
-
Cancel Transfer Test Script (
test_cancel_transfer.py)- Validates cancel endpoint availability
- Tests progress monitoring functionality
- Provides manual testing guidelines
-
Manual Testing Scenarios
- Large file transfer cancellation
- Stuck transfer detection
- Network timeout handling
- Multiple file transfer cancellation
-
HTML Project Documentation (
PROJECT_DOCUMENTATION.html)- Complete feature overview with visual design
- Technical architecture details
- Error fixes and solutions documentation
- Usage guides and examples
-
Git Documentation (
GIT_DOCUMENTATION.md)- Complete Git workflow and branching strategy
- Commit message conventions
- Repository maintenance guidelines
- Collaboration and security best practices
-
Deployment Instructions (
DEPLOYMENT_INSTRUCTIONS.md)- Quick setup guides for all platforms
- New feature usage instructions
- Troubleshooting guidelines
- Professional inline edit dialog system
- Glass morphism design with backdrop blur effects
- Cross-platform file path handling
- Input validation with OS-specific character checking
- JavaScript syntax errors (duplicate closing braces)
- File array initialization issues
- Keep-alive API errors with incorrect manager references
- Input dialog value preservation during element replacement
- Enhanced dialog system with better event listener management
- Improved error handling patterns with graceful fallbacks
- Better file array synchronization between API and local state
- SSH key authentication support (RSA, DSS, ECDSA, Ed25519)
- Session management with Flask sessions
- Connection tracking and monitoring
- Enhanced progress monitoring system
- Improved file transfer progress tracking
- Better connection state management
- Enhanced security with encrypted credential storage
- Real-time transfer progress monitoring
- Large file support (up to 10GB+)
- Batch file operations
- Drag and drop functionality
- Memory leaks in event listener management
- File transfer timeout issues
- Progress calculation accuracy
- Dual authentication system (password/SSH key)
- Encrypted credential storage with Fernet
- Cross-platform startup scripts
- Windows compatibility improvements
- Enhanced UI with Windows 7 Aero theme
- Improved responsive design
- Better error handling and user feedback
- Smart session keep-alive system
- Auto-reconnection capabilities
- File management operations (create, rename, delete)
- Directory navigation improvements
- Connection timeout issues
- File listing errors on different OS
- Path handling inconsistencies
- Web-based SCP file transfer interface
- Secure SSH/SCP protocol implementation
- Dual-panel file browser (local/remote)
- Real-time file transfer progress
- Cross-platform compatibility (macOS, Linux, Windows)
- Backend: Python Flask + Paramiko
- Frontend: Vanilla JavaScript + Modern CSS
- Security: SSH protocol + encrypted sessions
- UI: Glass morphism design with responsive layout
- Automatic port selection (5000, 5001, 5002, 8000, 8080, 8888, 9000)
- One-command setup with dependency installation
- Cross-platform startup scripts
- Resume Transfers: Ability to resume interrupted transfers
- Bandwidth Limiting: Control transfer speed and bandwidth usage
- Transfer Queue: Queue multiple transfers for sequential execution
- Transfer History: Log and review past transfer operations
- Multi-Server Support: Connect to multiple servers simultaneously
- Scheduled Transfers: Schedule transfers for specific times
- Compression Options: Optional compression for faster transfers
- Advanced Filtering: File type and size filtering options
- Plugin System: Extensible architecture for custom features
- API Integration: RESTful API for external integrations
- Mobile App: Native mobile applications
- Cloud Storage: Integration with cloud storage providers
- Large File Memory Usage: Very large files (>10GB) may use significant memory
- Network Interruption: Network interruptions require manual reconnection
- Concurrent Transfers: Only one transfer operation at a time per session
- Memory Management: Monitor system resources during large transfers
- Network Stability: Ensure stable network connection for large transfers
- Transfer Planning: Plan transfers during stable network periods
- Fork the Repository: Create your own fork of the project
- Create Feature Branch:
git checkout -b feature/amazing-feature - Make Changes: Implement your feature with proper testing
- Update Documentation: Update relevant documentation
- Submit Pull Request: Create a pull request with detailed description
- Follow the established code style and conventions
- Include comprehensive tests for new features
- Update documentation for any user-facing changes
- Use semantic commit messages as defined in Git documentation
- Documentation: Check the comprehensive HTML documentation
- Issues: Report bugs and request features via GitHub Issues
- Discussions: Join community discussions for questions and ideas
- Repository: https://github.com/yourusername/macos-to-linux-servers-scp
- Email: your-email@example.com
- Documentation: See
PROJECT_DOCUMENTATION.htmlfor detailed guides
This changelog is maintained as part of the MacOS to Linux SCP project. All dates are in YYYY-MM-DD format.