Commit Graph

507 Commits

Author SHA1 Message Date
7aa0de8bcb Bump version to v0.1.0-dev19 2025-12-20 21:55:13 -05:00
a9804b3ad3 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.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 21:33:55 -05:00
364d2099f5 Run gofmt on main.go for consistent formatting
Applied gofmt to fix code alignment and formatting consistency.
Changes are purely cosmetic (whitespace/alignment).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 21:17:26 -05:00
762c840de9 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)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 21:07:48 -05:00
55c291406f Document Real-ESRGAN upscale pipeline 2025-12-20 20:58:34 -05:00
505db279d8 Gate AI upscale on ncnn backend 2025-12-20 20:56:24 -05:00
271c83ec74 Add Real-ESRGAN upscale controls and pipeline 2025-12-20 20:55:21 -05:00
28e2f40b75 Add frame interpolation presets in Filters 2025-12-20 20:25:21 -05:00
2f9995d8f1 Add configurable temp directory with SSD hint 2025-12-20 19:55:13 -05:00
91d38a1b3f Add DVD authoring placeholder and adjust snippet defaults 2025-12-20 18:49:54 -05:00
762403b770 Lower video pane min sizes for window snapping 2025-12-20 16:41:07 -05:00
66346d8cee Rearrange snippet controls with options toggle 2025-12-20 16:36:45 -05:00
e39b6a7f99 Fix snippet toggle button scope 2025-12-20 16:29:47 -05:00
a7b92cfa8e Collapse snippet tools behind a toggle 2025-12-20 16:27:19 -05:00
7b264c7224 Hide quality presets outside CRF mode 2025-12-20 16:22:48 -05:00
e002b586b1 Sync bitrate preset between simple and advanced 2025-12-20 16:13:32 -05:00
17900f2b0a Normalize bitrate preset default to 2.5 Mbps 2025-12-20 16:07:13 -05:00
3354017032 Expand and rename bitrate presets 2025-12-20 16:02:23 -05:00
7ae1bb10dd Add CRF preset dropdown with manual option 2025-12-20 15:57:49 -05:00
c9e34815da Prevent CRF control from showing in non-CRF modes 2025-12-20 15:52:36 -05:00
97cad9eeba Hide irrelevant bitrate controls by mode 2025-12-20 15:49:49 -05:00
3c4560a55a Default encoder preset to slow 2025-12-20 15:46:09 -05:00
69230dda0d Add 2.0 Mbps preset and default to 2.5 Mbps 2025-12-20 15:41:46 -05:00
a9d0dbf51f Update TODO and DONE timestamps 2025-12-20 15:36:55 -05:00
4b1bdea7ed Restore target size reduction presets 2025-12-20 15:35:37 -05:00
19269a204d Fix reset tabs scope in convert view 2025-12-20 15:33:08 -05:00
cdf8b10769 Force reset to restore source resolution and frame rate 2025-12-20 15:30:41 -05:00
685707e8d1 Reset convert settings to full defaults 2025-12-20 15:25:51 -05:00
0ef618df55 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

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 15:24:58 -05:00
d20dcde5bb Refactor convert config reset to use helper function
- Extract reset defaults logic to resetConvertDefaults function
- Add setTargetFileSize helper with syncing guard
- Add syncingTargetSize flag to prevent update loops
- Consolidate reset button handlers to call shared function
- Improves code organization and maintainability

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 15:24:24 -05:00
0da96bc743 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

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 15:23:53 -05:00
c1ccb38062 Improve preset UX and finalize 800x600 UI scaling
UI Scaling Improvements:
- Reduce module tiles from 160x80 to 150x65
- Reduce title from 20 to 18
- Reduce queue tile from 140x50 to 120x40
- Reduce category labels to 12px
- Reduce padding from 8 to 4px
- Remove scrolling, everything fits in 800x600

Preset UX Improvements:
- Move "Manual" to bottom of all preset dropdowns
- Default bitrate preset: "2.5 Mbps - Medium Quality"
- Default target size: "100MB"
- Manual input fields hidden by default
- Show manual fields only when "Manual" selected

Encoding Preset Order:
- Reverse order: veryslow first, ultrafast last
- Better quality options now appear first
- Applied to both simple and advanced mode

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 15:23:14 -05:00
c62b7867fd Add unit selector for manual video bitrate 2025-12-20 15:14:12 -05:00
c6feb239b9 Ensure upscale targets recompute from presets 2025-12-20 14:58:02 -05:00
4c43a13f9c 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

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 14:51:12 -05:00
67b838e9ad Scale UI for 800x600 window compatibility and improve layout
UI Scaling:
- Reduce module tiles from 220x110 to 160x80
- Reduce title size from 28 to 20
- Reduce queue tile from 160x60 to 140x50 with smaller text
- Reduce section padding from 14 to 8 pixels
- Remove extra padding wrapper around tiles

Header Layout Improvements:
- Use border layout with title on left, controls on right
- Compact button labels: "☰ History" → "☰", "Run Benchmark" → "Benchmark"
- Eliminates wasted space in header

Queue Behavior Fix:
- "Clear Completed" always returns to main menu (not last module)
- "Clear All" always returns to main menu
- Prevents unwanted navigation to convert module after clearing

All changes work together to fit app within 800x600 default window

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 14:50:45 -05:00
2dae75dd8e Hide CRF input when lossless quality is selected 2025-12-20 14:47:47 -05:00
406709bec6 Sync target aspect between simple and advanced 2025-12-20 14:38:15 -05:00
9af3ca0c1a Make main menu vertically scrollable for 800x600 windows
- Wrap module sections in NewVScroll container
- Use border layout with fixed header and scrollable content
- Allows all modules to be accessible within 800x600 window
- Header and controls remain visible while content scrolls

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 14:37:33 -05:00
d24fd7c281 Fix main menu layout alignment issue
- Replace layout.NewHBoxLayout() with container.NewHBox() for header
- Replace layout.NewVBoxLayout() with container.NewVBox() for body
- Prevents unwanted stretching and improves alignment with rest of UI
- Elements now use natural sizing instead of filling available space

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 14:32:04 -05:00
ba1c364113 Default target aspect to Source unless user-set 2025-12-20 14:29:56 -05:00
faf8d42e2a Fix Fyne threading errors in stats bar Layout()
- Remove Show()/Hide() calls from Layout() method
- These methods must only be called from main UI thread
- Layout() can be called from any thread during resize/redraw
- Show/Hide logic remains in Refresh() which uses DoFromGoroutine

Fixes threading warnings from Fyne when stats bar updates

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 14:20:05 -05:00
2761d35ed6 Fix stats bar UI thread updates 2025-12-20 14:14:42 -05:00
f558119f4f Add app icon support and window sizing improvements
- Update LoadAppIcon() to search for PNG first (better Linux support)
- Add FyneApp.toml for icon metadata and Windows embedding
- Create VideoTools.desktop for Linux application launcher integration
- Change default window size from 1200x700 to 800x600
- Icon now appears in taskbar, app switcher, and Windows title bar

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 14:13:18 -05:00
601acf9ccf Replace benchmark error dialogs with notifications 2025-12-20 14:12:33 -05:00
e020f06873 Refresh history sidebar when jobs complete 2025-12-20 14:08:03 -05:00
19f2922366 Add subtitles module placeholder and benchmark UI flag 2025-12-20 14:03:14 -05:00
198cf290b0 Add sysinfo package for benchmark hardware detection 2025-12-20 13:46:08 -05:00
121a61d627 Add unit selector for target file size 2025-12-20 13:35:39 -05:00
43efc84bf6 Estimate missing audio bitrate in metadata 2025-12-20 13:29:09 -05:00