- DVD title now starts empty each time Author module is opened
- Added DVD Title entry field to Videos tab
- Both Videos and Settings tab title fields update the same state
- Both trigger summary update and config persistence
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Changed filename row to use VBox layout instead of HBox to give
it full width. This prevents the filename from wrapping at every
character. Removed wrapping from other metadata fields since
they're short values that don't need it.
Changed button and input backgrounds to use the brighter hover
color as their default appearance instead of dull grey. This makes
dropdowns and buttons more visually appealing by default.
Enabled word wrapping for all value labels in the metadata panel
to prevent text cutoff. Long filenames and metadata values will
now wrap to multiple lines instead of being truncated.
Added text wrapping to description labels, install command labels,
and 'Required by' labels to prevent horizontal scrolling. All text
now wraps properly to fit the available width.
Changed from HBox with spacer to GridWithColumns for better
column alignment. This prevents the right column (Video Codec,
etc.) from being pushed too far to the right edge.
When users click on modules with missing dependencies (orange tiles),
show a dialog listing the missing dependencies and their install
commands. This helps users quickly identify what they need to install
to enable the module.
Modules with handlers but missing dependencies now show orange
background with stripes instead of grey. This distinguishes them
from unimplemented modules (grey) and helps users identify what
needs to be installed.
Set Trim, Audio, and Blu-Ray module handlers to nil to mark them
as disabled. These modules show as grey tiles with lock icons and
diagonal stripes until they are implemented.
Settings remains enabled despite nil handler as it has functionality.
Changed module colors to work better with white text:
- Trim: #FFEB3B → #F9A825 (dark yellow/gold)
- Audio: #FFC107 → #FF8F00 (dark amber)
- Subtitles: #8BC34A → #689F38 (dark green)
All modules now use consistent white text for uniform appearance.
The diagonal stripe pattern raster function was returning nil for
enabled modules, causing a nil pointer dereference when Fyne tried
to process the texture. Fixed by always returning a valid image -
transparent for enabled modules, striped for disabled modules.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Replaced lock icon-only approach with diagonal stripe overlay for better visual distinction:
- Added static (non-animated) diagonal stripe pattern to disabled tiles
- Stripes use semi-transparent dark overlay (similar to queue progress bars)
- Thicker diagonal lines (8px spacing instead of 4px)
- Pattern clearly distinguishes disabled from enabled modules
- Kept lock icon as secondary indicator
This addresses the issue where adaptive text colors made it difficult to distinguish available vs. disabled modules. The stripe pattern provides immediate visual feedback without relying solely on color dimming.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Enhanced disabled module visual indicators:
- Added lock icon (🔒) in top-right corner of disabled tiles
- Lock icon shows/hides dynamically based on module availability
- Improved Refresh() to handle dynamic enable/disable state changes
- Updated renderer to include lock icon in layout and objects list
This makes it immediately clear which modules are available and which require missing dependencies, addressing the issue where adaptive text colors made disabled modules less distinguishable.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Fixed filename overlapping with video codec information:
- Moved filename to its own full-width row at the top
- Two-column grid now starts below filename
- Prevents long filenames from overlapping with right column data
- Improves readability of metadata panel
This addresses the issue where long filenames like "She's So Small 12 Scene 3 Dillion Harper.mp4" would run into "Video Codec: h264" on the same line.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implemented automatic text color adaptation based on background brightness to improve readability:
- Added getContrastColor() function using WCAG luminance formula
- Bright modules (Trim/yellow, Audio/amber, Subtitles/light-green) now use dark text
- Dark modules continue using light text
- Ensures high contrast ratio for all module tiles
- Prevents eye strain from low-contrast combinations
This fixes the accessibility issue where bright yellow, amber, and light green modules had poor legibility with white text.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Changed FyneApp.toml to reference VT_Icon.ico instead of VT_Icon.png.
Windows requires ICO format for proper application icon display in the taskbar and window title bar. PNG icons don't work correctly on Windows.
To apply this fix on Windows, rebuild with:
fyne package -os windows -icon assets/logo/VT_Icon.ico
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added comprehensive debug logging to extractChaptersFromVideoTS() function to diagnose chapter extraction issues:
- Log VOB file search path
- Log number of VOB files found and their paths
- Log which VOB file is selected for chapter extraction
- Log ffprobe errors if chapter extraction fails
- Log number of chapters successfully extracted
This will help debug why chapters aren't appearing when VIDEO_TS folders are dragged into the Author module.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Redesigned main menu for better space efficiency and visual organization:
- Changed from flexible GridWrap to fixed 3-column grid layout
- Organized modules into priority-based sections with category labels
- Category labels positioned above each section (Convert, Inspect, Disc, Playback)
- Reduced tile size from 150x65 to 135x58 for better spacing
- Removed excessive padding for more compact layout
- All 15 modules now visible in organized 3x5 grid
Layout organization:
- Row 1-2: Convert modules (Convert, Merge, Trim, Filters, Audio, Subtitles)
- Row 3: Inspect/Advanced (Compare, Inspect, Upscale)
- Row 4: Disc modules (Author, Rip, Blu-Ray)
- Row 5: Misc modules (Player, Thumb, Settings)
This addresses user feedback about wasted space and provides a more polished, professional appearance.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add comprehensive Settings module for managing system dependencies and application preferences:
- Created settings_module.go with dependency checking system
- Maps modules to required dependencies (FFmpeg, DVDAuthor, xorriso, Real-ESRGAN, Whisper)
- Displays dependency status with visual indicators (green/red)
- Shows platform-specific installation commands
- Auto-enables/disables modules based on installed dependencies
- Added Settings tile to main menu (always enabled)
- Integrated module availability checking via isModuleAvailable()
This provides users a centralized location to check and install missing dependencies, addressing the requirement to disable modules when dependencies aren't available.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Removed TextWrapWord setting from metadata value labels that was
causing text to wrap character-by-character in constrained space,
making the filename and other metadata appear vertically.
Text now flows naturally without wrapping, fixing the display issue
shown in the screenshot.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added a "Cancel Job" button to the Author module top bar that:
- Appears only when an Author job is currently running
- Uses DangerImportance styling for clear visual indication
- Cancels the running author job when clicked
- Hides automatically when no author job is running
This addresses the user's request for cancel buttons in every module
where it's relevant. The button provides immediate job cancellation
without needing to navigate to the queue view.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
When user clicks "COMPILE TO DVD", now automatically navigates to the
queue view so they can immediately see the job progress. This prevents
confusion about how to access the queue during authoring.
Fixes issue where users couldn't find the queue while authoring was
in progress - the queue was accessible via the button, but now the
navigation is automatic for better UX.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added optional Whisper installation to install.sh:
- New --skip-whisper flag to disable Whisper installation
- Interactive prompt asking if user wants Whisper for subtitling
- Automatic installation of openai-whisper via pip3
- PATH configuration hints for ~/.local/bin
- Python 3 and pip3 dependency checks
Whisper enables automated subtitle generation from audio using
OpenAI's speech recognition model.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added chapter extraction from VIDEO_TS folders when importing:
- New extractChaptersFromVideoTS() function to parse chapters from VOB files
- Automatically loads chapters when VIDEO_TS folder is dropped
- Displays chapters in Chapters tab with "VIDEO_TS Chapters" source label
- Uses ffprobe to extract chapter info from main title VOB file
Chapters are now fully imported and visible in the UI when loading
VIDEO_TS folders, preserving the original DVD chapter structure.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added visual feedback in the Author module when a VIDEO_TS folder is loaded:
- Display VIDEO_TS path with info card in Videos tab
- Show message that folder will be burned directly without re-encoding
- Add Remove button to clear VIDEO_TS folder
- Update empty state message to indicate VIDEO_TS folder support
Backend support for VIDEO_TS burning was already implemented, this adds
the missing UI elements to show users when a VIDEO_TS folder is loaded.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added italic note "(For future DVD menus)" below chapter title entry
fields to inform users that:
- Chapter markers work and allow navigation between scenes
- Chapter names are saved but not displayed in basic DVDs
- Names will be used when DVD menu system is implemented
This prevents users from wasting time entering custom chapter names
expecting them to appear in DVD players, while preserving the data
for future menu implementation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added italic note "(For future DVD menus)" below chapter title entry
fields to inform users that:
- Chapter markers work and allow navigation between scenes
- Chapter names are saved but not displayed in basic DVDs
- Names will be used when DVD menu system is implemented
This prevents users from wasting time entering custom chapter names
expecting them to appear in DVD players, while preserving the data
for future menu implementation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The banner was displaying every time a new shell was opened,
which was intrusive. Now the aliases load silently.
Commands are still available (VideoTools, VideoToolsRebuild,
VideoToolsClean) but without the banner on every terminal load.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Replaced all emojis with text-based indicators:
- ✓ → [OK] (with GREEN color)
- ✗ → [ERROR] (with RED color)
- ⚠ → WARNING: (with YELLOW color)
Color coding is preserved for visual distinction while remaining
accessible in all terminals and avoiding encoding issues.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added support for installing Real-ESRGAN NCNN during setup:
**New Features:**
- Prompts user to install AI upscaling tools (Real-ESRGAN NCNN)
- Downloads and installs binary from GitHub releases
- Tries /usr/local/bin with sudo, falls back to ~/.local/bin
- Supports x86_64 architecture, warns for ARM
- Added --skip-ai flag to skip AI tools prompt
**Installation Flow:**
1. Ask: "Install DVD authoring tools?" (dvdauthor + xorriso)
2. Ask: "Install AI upscaling tools?" (Real-ESRGAN NCNN)
3. Auto-install all missing dependencies user requested
**Benefits:**
- Users get AI upscaling without manual download
- FFmpeg native upscaling still works without it
- Optional enhancement, not required
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Previously, install.sh would:
1. Ask "Install DVD authoring tools?"
2. Then ask again "Install missing dependencies now?"
Now it automatically installs any missing dependencies after the
user confirms they want DVD tools, eliminating the redundant prompt.
Changes:
- Removed second confirmation prompt for dependency installation
- Automatically installs missing deps when detected
- Shows clear message: "Missing dependencies: ... Installing..."
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The dependency check was accepting any ISO tool (mkisofs, genisoimage,
or xorriso), but the install commands now specifically install xorriso.
Updated checks to require xorriso specifically since:
- It handles both ISO9660 and UDF formats
- Required for RIP module to extract UDF DVD ISOs
- Now installed by all package managers in the script
This ensures the install script will detect and install xorriso even
if older tools like genisoimage are already present.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
**Metadata Panel Fix:**
- Simplified makeRow layout to properly display values
- Changed from complex Border layout to simple HBox
- Metadata values now visible in Convert module
**RIP Module Improvements:**
- Added mount-based ISO extraction for UDF ISOs
- Added 7z extraction fallback
- Prioritizes xorriso > 7z > bsdtar for ISO extraction
- Handles both ISO9660 and UDF format DVDs
**Installation Script:**
- Updated all package managers to install xorriso
- Ensures proper UDF ISO support when disc modules enabled
- apt/dnf/zypper now install xorriso instead of genisoimage
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
When authoring DVDs from multiple videos, chapters now display:
- Video metadata title if available
- Filename without extension as fallback
- Instead of generic "Chapter 1", "Chapter 2", etc.
This provides better navigation experience in DVD players.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Output hint now updates immediately when checking/unchecking suffix checkbox
- User can see "video.mp4" vs "video-convert.mp4" change live
- Improves UX by providing instant visual feedback
Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Removed reference to HANDBRAKE_REPLACEMENT.md from docs/README.md
- Removed HandBrake references from docs/CHANGELOG.md
- Keep documentation focused on VideoTools features
- File was already deleted, this cleans up the references
Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Critical fix for dvdauthor "Skipping sector at inoffset 0" errors:
- Add -f dvd format to initial MPEG encoding
- Add -muxrate 10080000 (10.08 Mbps DVD standard mux rate)
- Add -packetsize 2048 (DVD packet size requirement)
- Apply same parameters to remux and concat steps
- Ensures proper VOBU (Video Object Unit) boundaries
- Creates DVD-compliant MPEG-PS streams from encoding
This fixes the "dvdauthor structure creation failed" error when
authoring multi-scene DVDs. The MPEG files now have proper DVD
navigation structure that dvdauthor can process.
Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Added AppendSuffix bool field to convertConfig (default: false)
- By default, output filename matches source filename exactly
- Added checkbox "Append \"-convert\" to filename" (unchecked by default)
- Checkbox appears in both Simple and Advanced modes
- Eliminates noise when doing batch conversions
- Auto-naming still works and respects the suffix setting
Before: video.mp4 → video-convert.mp4 (always)
After: video.mp4 → video.mp4 (or video-convert.mp4 if checked)
Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Major improvements to DVD authoring for professional results:
- Always concatenate multiple videos into single title (not multiple titles)
- Automatically generate chapter markers from video clips
- Chapter markers created at each scene boundary regardless of checkbox
- One title with navigable chapters instead of separate titles
- Better logging showing chapter structure and timestamps
Before: 4 videos → 4 separate titles with no chapters
After: 4 videos → 1 title with 4 chapter markers
This creates a professional DVD that matches commercial disc structure
with proper chapter navigation.
Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Blue color now used as default selection/background
- Mid-grey now used as hover color
- Applied through MonoTheme Color() method override
- Affects all dropdowns, lists, and selectable UI elements
Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Log all generated MPG files with sizes before dvdauthor
- Log complete DVD XML content for debugging
- Add specific error messages at each dvdauthor step
- Verify and log ISO file creation success
- Better error context for diagnosing 80% failure point
This will help diagnose the exit code 1 error when authoring
4-scene discs to ISO format.
Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>