forked from Leak_Technologies/VideoTools
297 lines
8.5 KiB
Markdown
297 lines
8.5 KiB
Markdown
# Latest Updates - November 29, 2025
|
||
|
||
## Summary
|
||
|
||
This session focused on three major improvements to VideoTools:
|
||
|
||
1. **Auto-Resolution for DVD Formats** - Automatically sets correct resolution when selecting NTSC/PAL
|
||
2. **Queue System Improvements** - Better thread-safety and new control features
|
||
3. **Professional Installation System** - One-command setup for users
|
||
|
||
---
|
||
|
||
## 1. Auto-Resolution for DVD Formats
|
||
|
||
### What Changed
|
||
|
||
When you select a DVD format in the Convert module, the resolution and framerate now **automatically set** to match the standard:
|
||
|
||
- **Select "DVD-NTSC (MPEG-2)"** → automatically sets resolution to **720×480** and framerate to **30fps**
|
||
- **Select "DVD-PAL (MPEG-2)"** → automatically sets resolution to **720×576** and framerate to **25fps**
|
||
|
||
### Why It Matters
|
||
|
||
- **No More Manual Setting** - Users don't need to understand DVD resolution specs
|
||
- **Fewer Mistakes** - Prevents encoding to wrong resolution
|
||
- **Faster Workflow** - One click instead of three
|
||
- **Professional Output** - Ensures standards compliance
|
||
|
||
### How to Use
|
||
|
||
1. Go to Convert module
|
||
2. Load a video
|
||
3. Select a DVD format → resolution/framerate auto-set!
|
||
4. In Advanced Mode, you'll see the options pre-filled correctly
|
||
|
||
### Technical Details
|
||
|
||
**File:** `main.go` lines 1416-1643
|
||
- Added DVD resolution options to resolution selector dropdown
|
||
- Implemented `updateDVDOptions()` function to handle auto-setting
|
||
- Updates both UI state and convert configuration
|
||
|
||
---
|
||
|
||
## 2. Queue System Improvements
|
||
|
||
### New Methods
|
||
|
||
The queue system now includes several reliability and control improvements:
|
||
|
||
- **`PauseAll()`** - Pause any running job and stop processing
|
||
- **`ResumeAll()`** - Restart queue processing from paused state
|
||
- **`MoveUp(id)` / `MoveDown(id)`** - Reorder pending/paused jobs in the queue
|
||
- **Better thread-safety** - Improved locking in Add, Remove, Pause, Resume, Cancel operations
|
||
|
||
### UI Improvements
|
||
|
||
The queue view now displays:
|
||
- **Pause All button** - Quickly pause everything
|
||
- **Resume All button** - Restart processing
|
||
- **Up/Down arrows** on each job - Reorder items manually
|
||
- **Better status tracking** - Improved running/paused/completed indicators
|
||
|
||
### Why It Matters
|
||
|
||
- **More Control** - Users can pause/resume/reorder jobs
|
||
- **Better Reliability** - Improved thread-safety prevents race conditions
|
||
- **Batch Operations** - Control all jobs with single buttons
|
||
- **Flexibility** - Reorder jobs without removing them
|
||
|
||
### File Changes
|
||
|
||
**File:** `internal/queue/queue.go`
|
||
- Fixed mutex locking in critical sections
|
||
- Added PauseAll() and ResumeAll() methods
|
||
- Added MoveUp/MoveDown methods for reordering
|
||
- Improved Copy strategy in List() method
|
||
- Better handling of running job cancellation
|
||
|
||
**File:** `internal/ui/queueview.go`
|
||
- Added new control buttons (Pause All, Resume All, Start Queue)
|
||
- Added reordering UI (up/down arrows)
|
||
- Improved job display and status tracking
|
||
|
||
---
|
||
|
||
## 3. Professional Installation System
|
||
|
||
### New Files
|
||
|
||
1. **Enhanced `install.sh`** - One-command installation
|
||
2. **New `INSTALLATION.md`** - Comprehensive installation guide
|
||
|
||
### install.sh Features
|
||
|
||
The installer now performs all setup automatically:
|
||
|
||
```bash
|
||
bash install.sh
|
||
```
|
||
|
||
This handles:
|
||
1. ✅ Go installation verification
|
||
2. ✅ Building VideoTools from source
|
||
3. ✅ Choosing installation path (system-wide or user-local)
|
||
4. ✅ Installing binary to proper location
|
||
5. ✅ Auto-detecting shell (bash/zsh)
|
||
6. ✅ Updating PATH in shell rc file
|
||
7. ✅ Sourcing alias.sh for convenience commands
|
||
8. ✅ Providing next-steps instructions
|
||
|
||
### Installation Options
|
||
|
||
**Option 1: System-Wide (for shared computers)**
|
||
```bash
|
||
bash install.sh
|
||
# Select option 1 when prompted
|
||
```
|
||
|
||
**Option 2: User-Local (default, no sudo required)**
|
||
```bash
|
||
bash install.sh
|
||
# Select option 2 when prompted (or just press Enter)
|
||
```
|
||
|
||
### After Installation
|
||
|
||
```bash
|
||
source ~/.bashrc # Load the new aliases
|
||
VideoTools # Run the application
|
||
```
|
||
|
||
### Available Commands
|
||
|
||
After installation:
|
||
- `VideoTools` - Run the application
|
||
- `VideoToolsRebuild` - Force rebuild from source
|
||
- `VideoToolsClean` - Clean build artifacts
|
||
|
||
### Why It Matters
|
||
|
||
- **Zero Setup** - No manual shell configuration needed
|
||
- **User-Friendly** - Guided choices with sensible defaults
|
||
- **Automatic Environment** - PATH and aliases configured automatically
|
||
- **Professional Experience** - Matches expectations of modern software
|
||
|
||
### Documentation
|
||
|
||
**INSTALLATION.md** includes:
|
||
- Quick start instructions
|
||
- Multiple installation options
|
||
- Troubleshooting section
|
||
- Manual installation instructions
|
||
- Platform-specific notes
|
||
- Uninstallation instructions
|
||
- Verification steps
|
||
|
||
---
|
||
|
||
## Display Server Auto-Detection
|
||
|
||
### What Changed
|
||
|
||
The player controller now auto-detects the display server:
|
||
|
||
**File:** `internal/player/controller_linux.go`
|
||
- Checks for Wayland environment variable
|
||
- Uses Wayland if available, falls back to X11
|
||
- Conditional xdotool window placement (X11 only)
|
||
|
||
### Why It Matters
|
||
|
||
- **Works with Wayland** - Modern display server support
|
||
- **Backwards Compatible** - Still works with X11
|
||
- **No Configuration** - Auto-detects automatically
|
||
|
||
---
|
||
|
||
## Files Modified in This Session
|
||
|
||
### Major Changes
|
||
1. **main.go** - Auto-resolution for DVD formats (~50 lines added)
|
||
2. **install.sh** - Complete rewrite for professional setup (~150 lines)
|
||
3. **INSTALLATION.md** - New comprehensive guide (~280 lines)
|
||
4. **README.md** - Updated Quick Start section
|
||
|
||
### Queue System
|
||
5. **internal/queue/queue.go** - Thread-safety and new methods (~100 lines)
|
||
6. **internal/ui/queueview.go** - New UI controls (~60 lines)
|
||
7. **internal/ui/mainmenu.go** - Updated queue display
|
||
8. **internal/player/controller_linux.go** - Display server detection
|
||
|
||
---
|
||
|
||
## Git Commits
|
||
|
||
Two commits were created in this session:
|
||
|
||
### Commit 1: Auto-Resolution and Queue Improvements
|
||
```
|
||
Improve queue system reliability and add auto-resolution for DVD formats
|
||
- Auto-set resolution to 720×480 when NTSC DVD format selected
|
||
- Auto-set resolution to 720×576 when PAL DVD format selected
|
||
- Improved thread-safety in queue system
|
||
- Added PauseAll, ResumeAll, MoveUp, MoveDown queue methods
|
||
- Display server auto-detection (Wayland vs X11)
|
||
```
|
||
|
||
### Commit 2: Installation System
|
||
```
|
||
Add comprehensive installation system with install.sh and INSTALLATION.md
|
||
- 5-step installation wizard with visual progress indicators
|
||
- Auto-detects bash/zsh shell and updates rc files
|
||
- Automatically adds PATH exports
|
||
- Automatically sources alias.sh
|
||
- Comprehensive installation guide documentation
|
||
- Default to user-local installation (no sudo required)
|
||
```
|
||
|
||
---
|
||
|
||
## What's Ready for Testing
|
||
|
||
All features are built and ready:
|
||
|
||
### For Testing Auto-Resolution
|
||
1. Run `VideoTools`
|
||
2. Go to Convert module
|
||
3. Select "DVD-NTSC (MPEG-2)" or "DVD-PAL (MPEG-2)"
|
||
4. Check that resolution auto-sets (Advanced Mode)
|
||
|
||
### For Testing Queue Improvements
|
||
1. Add multiple jobs to queue
|
||
2. Test Pause All / Resume All buttons
|
||
3. Test reordering with up/down arrows
|
||
|
||
### For Testing Installation
|
||
1. Run `bash install.sh` on a clean system
|
||
2. Verify binary is in PATH
|
||
3. Verify aliases are available
|
||
|
||
---
|
||
|
||
## Next Steps
|
||
|
||
### For Your Testing
|
||
1. Test the new auto-resolution feature with NTSC and PAL formats
|
||
2. Test queue improvements (Pause All, Resume All, reordering)
|
||
3. Test the installation system on a fresh checkout
|
||
|
||
### For Future Development
|
||
1. Implement FFmpeg execution integration (call BuildDVDFFmpegArgs)
|
||
2. Display validation warnings in UI before queuing
|
||
3. Test with DVDStyler for compatibility verification
|
||
4. Test with actual PS2 hardware or emulator
|
||
|
||
---
|
||
|
||
## Documentation Updates
|
||
|
||
All documentation has been updated:
|
||
|
||
- **README.md** - Updated Quick Start, added INSTALLATION.md reference
|
||
- **INSTALLATION.md** - New comprehensive guide (280 lines)
|
||
- **BUILD_AND_RUN.md** - Existing user guide (still valid)
|
||
- **DVD_USER_GUIDE.md** - Existing user guide (still valid)
|
||
|
||
---
|
||
|
||
## Summary of Improvements
|
||
|
||
| Feature | Before | After |
|
||
|---------|--------|-------|
|
||
| DVD Resolution Setup | Manual selection | Auto-set on format selection |
|
||
| Queue Control | Basic (play/pause) | Advanced (Pause All, Resume All, reorder) |
|
||
| Installation | Manual shell config | One-command wizard |
|
||
| Alias Setup | Manual sourcing | Automatic in rc file |
|
||
| New User Experience | Complex | Simple (5 steps) |
|
||
|
||
---
|
||
|
||
## Technical Quality
|
||
|
||
All changes follow best practices:
|
||
|
||
- ✅ Proper mutex locking in queue operations
|
||
- ✅ Nil checks for function pointers
|
||
- ✅ User-friendly error messages
|
||
- ✅ Comprehensive documentation
|
||
- ✅ Backward compatible
|
||
- ✅ No breaking changes
|
||
|
||
---
|
||
|
||
Enjoy the improvements! 🎬
|
||
|