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 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>
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>
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>
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>
- 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>
- Reset authorTitle when loading new file via file browser
- Reset authorTitle when clearing all clips
- Rebuild author view to refresh title entry UI
- Ensures title field visually resets for fresh content
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
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.
Allows visual verification of detected scene changes before accepting.
Features:
- Extracts thumbnail at each detected chapter timestamp
- Displays first 24 chapters in scrollable grid (4 columns)
- Shows timestamp below each thumbnail (160x90px previews)
- Accept/Reject buttons to confirm or discard detection
- Progress indicator during thumbnail generation
Implementation:
- showChapterPreview() function creates preview dialog
- extractChapterThumbnail() uses FFmpeg to extract frame
- Scales to 320x180, saves as JPEG in temp dir
- Thumbnails generated in background, dialog updated when ready
Performance:
- Limits to 24 chapters for UI responsiveness
- Shows "(showing first 24)" if more detected
- Temp files stored in videotools-chapter-thumbs/
User workflow:
1. Adjust sensitivity slider
2. Click "Detect Scenes"
3. Review thumbnails to verify detection quality
4. Accept to use chapters, or Reject to try different sensitivity
Problem: Author log was causing severe UI lag and memory issues
- Unbounded string growth (entire log kept in RAM)
- Full widget rebuild on every line append
- O(n²) string concatenation performance
Solutions implemented:
1. Tail behavior - Keep only last 100 lines in UI
- Uses circular buffer (authorLogLines slice)
- Prevents unbounded memory growth
- Rebuilds text from buffer on each append
2. Copy Log button
- Copies full log from file (accurate)
- Falls back to in-memory log if file unavailable
3. View Full Log button
- Opens full log in dedicated log viewer
- No UI lag from large logs
4. Track log file path
- authorLogFilePath stored when log created
- Used by copy and view buttons
Performance improvements:
- Memory: O(1) instead of O(n) - fixed 100 line buffer
- CPU: One SetText() per line instead of concatenation
- UI responsiveness: Dramatically improved with tail behavior
UI changes:
- Label shows "Authoring Log (last 100 lines)"
- Copy/View buttons for accessing full log
DVD Authoring Fix:
- Add remultiplex step after MPEG encoding for DVD compliance
- Use ffmpeg -fflags +genpts -c copy -f dvd to fix timestamps
- Resolves "ERR: SCR moves backwards" error from dvdauthor
- FFmpeg direct encoding doesn't always create DVD-compliant streams
- Remux regenerates presentation timestamps correctly
Queue Animation Fix:
- Stop stripe animation on completed jobs
- Bug: Refresh() was always incrementing offset regardless of state
- Now only increments offset when animStop != nil (animation running)
- Completed/failed/cancelled jobs no longer show animated stripes
Testing:
- DVD authoring should now succeed on AVI files
- Completed queue jobs should show static progress bar
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Current state: 3 modules partially/fully extracted
- upscale_module.go: showUpscaleView + AI helpers migrated successfully
- Build syntax: ✅ Clean
- Build failing due to unrelated Fyne API issue in internal/ui/queueview.go
- Ready for next incremental extraction steps