Skip to content

Latest commit

 

History

History
168 lines (129 loc) · 7.32 KB

File metadata and controls

168 lines (129 loc) · 7.32 KB

Changelog

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.

[0.4.0] - 2026-07-18

Added

  • Scrollable full-frame selection timeline with click-to-inspect and keyboard navigation
  • Inline terminal frame preview via Sixel/Kitty raster graphics with an external-viewer fallback
  • Automatic color space detection and conversion to sRGB for HDR and wide-gamut sources (BT.2020, HLG, PQ)
  • Resolution-normalized focus scoring for more consistent comparisons across source sizes
  • Trend-aware outlier detection with improved defaults
  • Responsive selection layout that keeps the preview and chart visible on short terminals
  • Shared alpha-preserving image decode/resize/encode helpers
  • Cross-platform CI coverage for Python 3.10 through 3.13 on Linux, macOS, and Windows, plus the minimum supported Textual version
  • Regression coverage for selection quality, output collisions, cancellation, and runtime cleanup

Changed

  • Selection methods now balance sharpness and temporal distribution more consistently
  • Frame extraction, analysis, preview, and saving pipelines provide stricter validation and failure reporting
  • Image-directory exports preserve content while correctly handling format conversion and case-insensitive filename collisions
  • Configuration and selection screens provide clearer controls, status, and keyboard behavior; the processing screen is vertically centered
  • Textual requirement raised to 5.0 or newer; new dependencies textual-image and Pillow

Fixed

  • FFmpeg and FFprobe process cleanup, cancellation, timeout, and pipe handling
  • Partial or failed image reads being treated as valid zero-quality frames
  • Selection previews disagreeing with the frames produced during processing
  • Output metadata reporting frames that were not successfully saved
  • Platform-specific dependency guidance and Windows-safe process startup
  • Start Over after saving returning to the middle of setup instead of the first step
  • Cancel during setup leaving the application running on an empty screen

[0.3.1] - 2025-01-29

Fixed

  • Downsampling quality fixes

[0.3.0] - 2025-01-28

Added

  • 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

Changed

  • 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

Fixed

  • 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

Technical

  • 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

[0.2.4] - 2025-01-21

Added

  • 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

Changed

  • 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

Fixed

  • Processing Error Handling: Improved error messages and user feedback in processing screen
  • Configuration Validation: Better handling of path validation edge cases

Technical

  • 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

[0.2.3] - 2025-01-21

Fixed

  • Processing improvements

[0.2.2] - 2025-01-21

Fixed

  • macOS processing failures with FFmpeg subprocesses

[0.2.1] - 2025-01-21

Fixed

  • macOS terminal compatibility: Fixed random app crashes caused by spurious ANSI escape sequences

[0.2.0] - 2025-01-XX

Added

  • 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

Changed

  • Default behavior: sharp-frames now launches textual interface
  • Legacy interactive mode moved to --interactive flag
  • Improved error messages with actionable context
  • Enhanced configuration parameter handling

Fixed

  • Configuration parameter mapping and validation
  • Resource cleanup for temporary files and subprocesses
  • Error reporting specificity and usefulness

[0.1.3] - 2025-05-15

Added

  • Image resizing feature: New --width parameter 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

Fixed

  • Improved FFmpeg subprocess handling to better manage stderr output

[0.1.2] - 2024-06-18

Added

  • Preserve original filenames when processing images from a directory
  • Added debug output for improved diagnostics and troubleshooting

Fixed

  • Inconsistent filename handling between video and directory inputs

[0.1.1] - 2024-06-13

Changed

  • 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

  • Fixed import issues that caused errors when running without installation

[0.1.0] - 2024-06-13

Added

  • 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-frames command