- Mark Interlacing Detection (dev16) as completed in DONE.md
- Mark Thumbnail Module (dev17) as completed in TODO.md and DONE.md
- Document all features, technical improvements, and bug fixes
- Add comprehensive changelog entries for both modules
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Files Module:
- Built-in video file explorer/manager
- Metadata table view with sortable columns (size, codec, resolution, fps, bitrate)
- Right-click context menu for file operations
- Integration with Convert, Compare, and Inspect modules
- Delete with confirmation and recycle bin safety
- SQLite-based metadata caching for performance
Color-Coded Module Navigation:
- Apply module signature colors to cross-module buttons/links
- Creates visual consistency across the application
- Helps users intuitively understand module relationships
Both features designed to integrate cleanly with existing architecture.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Mark auto-crop, frame rate conversion, and encoder presets as complete in TODO.md.
Add detailed feature descriptions to DONE.md for all three priority features.
This commit enhances the encoder preset selector with detailed information
about speed vs quality trade-offs for each preset option.
Preset Information:
- Ultrafast: ~10x faster than slow, ~30% larger files
- Superfast: ~7x faster than slow, ~20% larger files
- Very Fast: ~5x faster than slow, ~15% larger files
- Faster: ~3x faster than slow, ~10% larger files
- Fast: ~2x faster than slow, ~5% larger files
- Medium: Balanced baseline (default)
- Slow: ~2x slower than medium, ~5-10% smaller (recommended)
- Slower: ~3x slower than medium, ~10-15% smaller
- Very Slow: ~5x slower than medium, ~15-20% smaller
UI Enhancements:
- Dynamic hint label below encoder preset dropdown
- Updates automatically when preset changes
- Visual icons for different speed categories:
- ⚡ Ultrafast/Superfast/Very Fast (prioritize speed)
- ⏩ Faster/Fast (good balance)
- ⚖️ Medium (baseline)
- 🎯 Slow/Slower (recommended for quality)
- 🐌 Very Slow (maximum compression)
Implementation:
- updateEncoderPresetHint() function provides preset details
- Called on preset selection change
- Initialized with current preset on view load
- Positioned directly under preset dropdown for visibility
Benefits:
- Helps users understand encoding time implications
- Shows file size impact of each preset
- Recommends "slow" as best quality/size ratio
- Prevents confusion about preset differences
- Enables informed decisions about encoding settings
Technical:
- All presets already supported by FFmpeg
- No changes to command generation needed
- Works with all video codecs (H.264, H.265, VP9, etc.)
- Preset names match FFmpeg standards
This commit implements the frame rate conversion feature with intelligent
file size estimation and user guidance.
Frame Rate Options:
- Added all standard frame rates: 23.976, 24, 25, 29.97, 30, 50, 59.94, 60
- Maintained "Source" option to preserve original frame rate
- Replaced limited [24, 30, 60] with full broadcast standard options
- Supports both film (24 fps) and broadcast (25/29.97/30 fps) standards
Size Estimation:
- Calculates approximate file size reduction when downconverting
- Shows "Converting X → Y fps: ~Z% smaller file" hint
- Example: 60→30 fps shows "~50% smaller file"
- Dynamically updates hint when frame rate or video changes
- Only shows hint when conversion would reduce frame rate
User Warnings:
- Detects upscaling (target > source fps)
- Warns with ⚠ icon: "Upscaling from X to Y fps (may cause judder)"
- Prevents confusion about interpolation limitations
- No hint shown when target equals source
Implementation:
- updateFrameRateHint() function recalculates on changes
- Parses frame rate strings to float64 for comparison
- Calculates reduction percentage: (1 - target/source) * 100
- Updates automatically when video loaded or frame rate changed
- Positioned directly under frame rate dropdown for visibility
Technical:
- Uses FFmpeg fps filter (already implemented)
- Works in both direct convert and queue execution
- Integrated with existing frame rate handling
- No changes to FFmpeg command generation needed
Benefits:
- 40-50% file size reduction for 60→30 fps conversions
- Clear visual feedback before encoding
- Prevents accidental upscaling
- Helps users make informed compression decisions
Add comprehensive Windows support roadmap:
- Cross-compilation and build system
- Platform-specific path handling
- Windows GPU detection (NVENC/QSV/AMF)
- Installer and distribution
- Testing checklist
Goal: Make VideoTools available for Jake and Windows users
Major refactoring to improve code organization and enhance UI:
Architecture:
- Split monolithic main.go into modular internal/ package structure
- Created internal/logging for centralized logging system
- Created internal/modules for module handler functions
- Created internal/ui for UI components and layouts
- Created internal/utils for shared utility functions
UI Enhancements:
- Implemented rainbow gradient across 8 module buttons (violet→red)
- Increased module button text size to 20 for better readability
- Fixed text centering on module tiles
- Converted Simple/Advanced mode toggle to tabs to save vertical space
- Added vertical scrollbars to prevent UI overflow
- Added metadata copy button (📋) to copy all metadata to clipboard
Video Processing:
- Fixed aspect ratio conversion to default to center-crop behavior
- Added 6 aspect handling modes: Auto, Crop, Letterbox, Pillarbox, Blur Fill, Stretch
- Fixed blur fill to maintain source resolution with padding (no scaling)
- Ensured all FFmpeg filters produce even-numbered dimensions for H.264
Known Issues:
- WMV files still produce FFmpeg error 234 during aspect conversions
(requires codec-specific handling in future update)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>