All notable changes to the Sharp Frames project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Downsampling quality fixes
- Two-phase processing architecture: Separate extraction/analysis from selection phase
- Interactive selection screen: Visual preview of frame selection with real-time feedback
- Sharpness visualization: Bar chart showing frame quality distribution (first 100 frames)
- Live selection preview: See frame count before applying selection
- Parameter adjustment: Fine-tune selection parameters with instant visual feedback
- TUI workflow: Now operates in distinct extraction and selection phases
- Selection process: Interactive with visual feedback instead of batch processing
- Resource efficiency: Analyze frames once, try multiple selection methods without reprocessing
- Windows compatibility: FFmpeg process hanging on Windows with large videos
- Process termination: Proper subprocess cleanup with timeout handling
- Thread safety: Enhanced concurrent processing stability on Windows
- Two-phase TUIProcessor: New orchestrator for separated extraction and selection phases
- Selection preview API: Added preview_selection methods to processor and selector
- SharpnessChart widget: Custom Textual widget for frame quality visualization
- Windows FFmpeg fix: Proactive termination on frame count completion with stall detection
- Smart Path Sanitization: Automatically removes quotes, shell command prefixes, and escape sequences from pasted file paths
- Intelligent File Path Routing: Drag-and-drop and file paths are automatically routed to appropriate input fields based on context
- Enhanced Input Validation: Visual feedback for valid/invalid inputs with helpful hints
- Improved User Experience: Seamless path handling eliminates common user frustrations
- Path Input UX: File path inputs now automatically clean user input for better usability
- Input Field Validation: Enhanced validators with automatic path sanitization
- Visual Feedback: Added helpful text indicating automatic quote removal
- Processing Error Handling: Improved error messages and user feedback in processing screen
- Configuration Validation: Better handling of path validation edge cases
- New PathSanitizer Utility: Comprehensive path cleaning with extensive test coverage (366+ test cases)
- Enhanced Validators: All path validators now support automatic sanitization
- Smart File Type Detection: Context-aware routing based on file extensions and current step
- Processing improvements
- macOS processing failures with FFmpeg subprocesses
- macOS terminal compatibility: Fixed random app crashes caused by spurious ANSI escape sequences
- Textual-based UI as default interface
- Step-by-step configuration with validation
- Video directory processing - process all videos in a folder
- Path validators with existence and permission checking
- Numeric field validators with range validation
- Thread-safe subprocess management and cleanup
- Tests
- Default behavior:
sharp-framesnow launches textual interface - Legacy interactive mode moved to
--interactiveflag - Improved error messages with actionable context
- Enhanced configuration parameter handling
- Configuration parameter mapping and validation
- Resource cleanup for temporary files and subprocesses
- Error reporting specificity and usefulness
- Image resizing feature: New
--widthparameter to specify a custom width for extracted frames - Proportional scaling that preserves aspect ratio for both video extraction and directory processing
- Interactive mode prompt for specifying resize width
- Improved FFmpeg subprocess handling to better manage stderr output
- Preserve original filenames when processing images from a directory
- Added debug output for improved diagnostics and troubleshooting
- Inconsistent filename handling between video and directory inputs
- Updated default batch buffer value from 0 to 2 for better results in batched mode
- Simplified installation instructions to focus on pip/pipx installation only
- Improved FFmpeg dependency detection and warning messages
- Removed manual installation instructions from README (now requires pip installation)
- Fixed import issues that caused errors when running without installation
- Initial release
- Support for extracting frames from video files
- Support for processing directories of images
- Three frame selection methods:
- best-n: Select best frames while maintaining minimum distance
- batched: Select best frame from each batch
- outlier-removal: Remove outliers based on comparison with neighbors
- Interactive mode with guided prompts
- Proper Python package structure for pip and pipx installation
- Command-line interface with
sharp-framescommand