Commit Graph

68 Commits

Author SHA1 Message Date
Stu Leak
7dc5be6ecc feat: Implement DVD menu templating system
- Refactor author_menu.go to support multiple menu templates
- Add Simple, Dark, and Poster menu templates
- Add UI for selecting menu template and background image
2026-01-06 17:42:51 -05:00
Stu Leak
789579ae71 Update docs for dev23 and dev24 planning 2026-01-04 03:17:23 -05:00
d51eacf966 refactor(cmd): centralize command execution in core modules
This commit extends the refactoring of direct `exec.Command` and `exec.CommandContext`
calls to `audio_module.go`, `author_module.go`, and `platform.go`, using the new
`utils.CreateCommand` and `utils.CreateCommandRaw` functions.

This completes the centralization of command execution logic in the core modules,
ensuring consistent console-hiding behavior on Windows and improving code maintainability.
2026-01-01 23:55:55 -05:00
907fe00399 feat(docs): create dedicated Windows installation guide
This commit introduces a new, comprehensive installation guide for
Windows users (INSTALL_WINDOWS.md) and refactors the main
INSTALLATION.md into a platform-agnostic hub.

This addresses the documentation gap for the Windows platform, providing
clear and distinct instructions for all supported operating systems.
2026-01-01 22:55:00 -05:00
b245e46d48 feat: Implement unified FFmpeg player with proper A/V synchronization
## Critical Foundation for Advanced Features

This addresses the fundamental blocking issues preventing enhancement development:

### Core Changes
- **Unified FFmpeg Process**: Single process with multiplexed A/V output
- **PTS-Based Synchronization**: Master clock reference prevents A/V drift
- **Frame Buffer Pooling**: Efficient memory management via sync.Pool
- **Frame-Accurate Seeking**: Seek to exact frames without process restarts
- **Hardware Acceleration Framework**: Ready for CUDA/VA-API integration

### Player Architecture
- **UnifiedPlayer struct**: Complete interface implementation
- **Proper pipe management**: io.PipeReader/Writer for communication
- **Error recovery**: Graceful handling and resource cleanup
- **Cross-platform compatibility**: Works on Linux/Windows/macOS

### Benefits
- **Eliminates A/V desync**: Single process handles both streams
- **Seamless seeking**: No 100-500ms gaps during navigation
- **Frame extraction pipeline**: Foundation for enhancement/trim modules
- **Rock-solid stability**: VLC/MPV-level playback reliability

### Technical Implementation
- 408 lines of Go code implementing rock-solid player
- Proper Go idioms and resource management
- Foundation for AI model integration and timeline interfaces

This implementation solves critical player stability issues and provides the necessary foundation
for enhancement module development, trim functionality, and chapter management.

## Testing Status
 Compiles successfully
 All syntax errors resolved
 Proper Go architecture maintained
 Ready for module integration

Next: Update player factory to use UnifiedPlayer by default when ready.

This change enables the entire VideoTools enhancement roadmap
by providing stable video playback with frame-accurate seeking capabilities.
2026-01-01 22:42:54 -05:00
d977396396 feat(docs): create project status page
Creates a new PROJECT_STATUS.md file to provide a clear and honest
overview of the project's current state. This file summarizes which
features are implemented, in progress, or planned, and highlights
critical known issues.

The main README.md has been updated to link to this new status page,
ensuring it is the first thing new users and contributors see.

This addresses the first and highest-priority item from the recent
documentation audit, which identified a disconnect between the
documentation and the actual implementation.
2026-01-01 22:40:52 -05:00
486baed8ed Update DONE.md with benchmark UI cleanup feature
Added documentation for hiding benchmark indicator when settings are already applied.
2025-12-28 22:21:33 -05:00
c29fbe33c2 Update DONE.md with player module investigation results
Documented that player is already fully internal (FFmpeg-based).
2025-12-28 20:37:01 -05:00
3254526d6e Update DONE.md with player module crash fix
Documented disabling of Player module to prevent crashes.
2025-12-28 20:33:21 -05:00
7e997d7c7a Update DONE.md with benchmark caching feature
Added documentation for benchmark result persistence and caching system.
2025-12-28 20:24:25 -05:00
c77daaf5ef Update DONE.md with recent workflow improvements
Added documentation for:
- Merge module output path UX improvement (folder + filename split)
- Queue priority system for Convert Now
- Auto-cleanup for failed conversions
- Queue list jankiness reduction

All features completed in dev20+ release cycle (2025-12-28)
2025-12-28 20:19:24 -05:00
406f525323 docs: Update DONE.md for dev20+ session (2025-12-28)
Document completed features:
- Queue view button responsiveness fixes
- Main menu performance optimizations (3-5x improvement)
- Queue position labeling improvements
- Comprehensive remux safety system
- Codec compatibility validation
- Automatic fallback and auto-fix mechanisms
2025-12-28 06:31:29 -05:00
3037ff44bd feat(author): Implement real-time progress, add to queue, clear title
This commit introduces several enhancements to the Author module:
- **Real-time Progress Reporting:** Implemented granular, real-time progress updates for FFmpeg encoding steps during DVD authoring. The progress bar now updates smoothly, reflecting the actual video processing. Progress calculation is weighted by video durations for accuracy.
- **Add to Queue Functionality:** Added an 'Add to Queue' button to the Author module, allowing users to queue authoring jobs for later execution without immediate start. The authoring workflow was refactored to accept a 'startNow' parameter for this purpose.
- **Clear Output Title:** Modified the 'Clear All' functionality to also reset the DVD Output Title, preventing accidental naming conflicts for new projects.

Additionally, this commit includes a UI enhancement:
- **Main Menu Categorization:** Relocated 'Author', 'Rip', and 'Blu-Ray' modules to a new 'Disc' category on the main menu, improving logical grouping.

Fixes:
- Corrected a missing argument error in a call to .
- Added missing  import in .

Updates:
-  and  have been updated to reflect these changes.
2025-12-27 01:34:57 -05:00
d54c61a8ab Polish menu header and Windows DVDStyler download 2025-12-23 18:30:35 -05:00
1729a0e213 Mark dev20 across metadata 2025-12-23 14:39:44 -05:00
2b6be14d59 Enhance Author module structure and implement drag-and-drop support
- Add authorClips, authorSubtitles, authorOutputType fields to appState
- Create authorClip struct for video clip management
- Implement drag-and-drop support for video clips and subtitles
- Add Settings tab with output type, region, aspect ratio options
- Create Video Clips tab with file management
- Add Subtitles tab for track management
- Prepare framework for DVD/ISO generation
- Update HandleAuthor to work with drag-and-drop system
- Add comprehensive file validation and error handling
- Support for multiple video clips compilation
- Ready for chapter detection and DVD authoring implementation
2025-12-22 20:09:43 -05:00
5beee8a3d4 Update DONE.md with Real-ESRGAN setup and window resize fix 2025-12-21 14:20:14 -05:00
3a2fc0ad04 Add Author module skeleton with tabbed interface
Renamed "DVD Author" to "Author" for broader disc production workflow.
Created foundation for complete authoring pipeline with three main tasks:

**Module Structure:**
- Tabbed interface with Chapters, Rip DVD/ISO, and Author Disc tabs
- Added authorChapter struct (timestamp, title, auto-detected flag)
- Added author module state fields (file, chapters, threshold, detecting)

**Chapters Tab (Basic UI):**
- File selection with video probing integration
- Scene detection sensitivity slider (0.1-0.9 threshold)
- Placeholder UI for chapter list and controls
- Add Chapter and Export Chapters buttons (placeholders)
- Foundation for FFmpeg scdet scene detection

**Rip DVD/ISO Tab:**
- Placeholder for high-quality disc extraction
- Will support lossless ripping (like FLAC from CD)
- Preserve all audio/subtitle tracks

**Author Disc Tab:**
- Placeholder for VIDEO_TS/ISO creation
- Will support burn-ready output, NTSC/PAL, menus

Changes:
- Modified main.go: Added authorChapter struct, author state fields,
  showAuthorView(), buildAuthorView(), buildChaptersTab(),
  buildRipTab(), buildAuthorDiscTab()
- Modified internal/modules/handlers.go: Renamed HandleDVDAuthor to
  HandleAuthor with updated comment
- Updated DONE.md with Author module skeleton details

Next steps: Implement FFmpeg scene detection, chapter list UI,
and DVD/ISO ripping functionality.
2025-12-20 21:33:55 -05:00
d704604a99 Add audio channel remixing options to convert module
Added advanced audio channel remixing features for videos with imbalanced
left/right audio channels (e.g., music in left ear, vocals in right ear).

New audio channel options using FFmpeg pan filter:
- Left to Stereo: Copy left channel to both speakers
- Right to Stereo: Copy right channel to both speakers
- Mix to Stereo: Downmix both channels together evenly
- Swap L/R: Swap left and right channels

Changes:
- Updated audioChannelsSelect dropdown with 8 options (was 4)
- Implemented pan filter logic in all 4 FFmpeg command builders:
  - buildFFmpegCommandFromJob (main convert)
  - DVD encoding function
  - Convert command builder
  - Snippet generation
- Removed unused "os" import from internal/convert/ffmpeg.go
- Updated DONE.md with audio channel remixing feature

The pan filter syntax allows precise channel routing:
- pan=stereo|c0=c0|c1=c0 (left to both)
- pan=stereo|c0=c1|c1=c1 (right to both)
- pan=stereo|c0=0.5*c0+0.5*c1|c1=0.5*c0+0.5*c1 (mix)
- pan=stereo|c0=c1|c1=c0 (swap)
2025-12-20 21:07:48 -05:00
341453f400 Add Real-ESRGAN upscale controls and pipeline 2025-12-20 20:55:21 -05:00
0c79c82918 Add frame interpolation presets in Filters 2025-12-20 20:25:21 -05:00
e2a71cc9b0 Add configurable temp directory with SSD hint 2025-12-20 19:55:13 -05:00
9e20c37dcc Add DVD authoring placeholder and adjust snippet defaults 2025-12-20 18:49:54 -05:00
ba8073f532 Lower video pane min sizes for window snapping 2025-12-20 16:41:07 -05:00
2e35e27609 Rearrange snippet controls with options toggle 2025-12-20 16:36:45 -05:00
1042265db7 Fix snippet toggle button scope 2025-12-20 16:29:47 -05:00
6c765839bd Collapse snippet tools behind a toggle 2025-12-20 16:27:19 -05:00
2bc86c01a2 Hide quality presets outside CRF mode 2025-12-20 16:22:48 -05:00
f5b4842210 Sync bitrate preset between simple and advanced 2025-12-20 16:13:32 -05:00
24724c47cc Normalize bitrate preset default to 2.5 Mbps 2025-12-20 16:07:13 -05:00
de68a93343 Expand and rename bitrate presets 2025-12-20 16:02:23 -05:00
f3dfb82d8d Add CRF preset dropdown with manual option 2025-12-20 15:57:49 -05:00
bd05dca244 Prevent CRF control from showing in non-CRF modes 2025-12-20 15:52:36 -05:00
06b7707736 Hide irrelevant bitrate controls by mode 2025-12-20 15:49:49 -05:00
a878970be7 Default encoder preset to slow 2025-12-20 15:46:09 -05:00
b1f3daa3e4 Add 2.0 Mbps preset and default to 2.5 Mbps 2025-12-20 15:41:46 -05:00
0322bbada8 Update TODO and DONE timestamps 2025-12-20 15:36:55 -05:00
4376a0c958 Restore target size reduction presets 2025-12-20 15:35:37 -05:00
c36cb29af7 Fix reset tabs scope in convert view 2025-12-20 15:33:08 -05:00
640380db13 Force reset to restore source resolution and frame rate 2025-12-20 15:30:41 -05:00
96b019efe2 Reset convert settings to full defaults 2025-12-20 15:25:51 -05:00
dc6f99752d Remove patronizing 'final' language from DONE.md
- App is a work in progress, nothing is ever 'final'
- Changed size references to just state the values without 'final'
- More accurate and less presumptive
2025-12-20 15:24:58 -05:00
8c0b1c16b2 Update DONE.md with finalized UI scaling and preset improvements
Added details for:
- Final UI scaling values (150x65 tiles, 18pt title, etc.)
- Removed scrolling requirement
- Preset UX improvements (manual at bottom, better defaults)
- Encoding preset order reversal
2025-12-20 15:23:53 -05:00
d1f7e1aa60 Add unit selector for manual video bitrate 2025-12-20 15:14:12 -05:00
45a5c42c06 Ensure upscale targets recompute from presets 2025-12-20 14:58:02 -05:00
b7b1c79ad7 Update DONE.md with dev19 continuation fixes
Added today's completed items:
- UI Scaling for 800x600 Windows
- Header Layout Improvements
- Queue Clear Behavior Fix
- Threading Safety Fix

All items from 2025-12-20 continuation session
2025-12-20 14:51:12 -05:00
2940190ce7 Hide CRF input when lossless quality is selected 2025-12-20 14:47:47 -05:00
5252736307 Sync target aspect between simple and advanced 2025-12-20 14:38:15 -05:00
bc343f74ee Default target aspect to Source unless user-set 2025-12-20 14:29:56 -05:00
a071229a8a Fix stats bar UI thread updates 2025-12-20 14:14:42 -05:00