VideoTools/BUGS.md
2026-01-05 16:01:49 -05:00

263 lines
10 KiB
Markdown

# Bug Tracker
Track all bugs, issues, and behavioral problems here. Update this file whenever you discover or fix a bug.
**Last Updated**: 2026-01-05 16:05 UTC
---
## 🔴 Critical Bugs (Blocking Functionality)
### BUG-005: CRF quality settings not showing when CRF mode is selected
- **Status**: 🔴 OPEN
- **Reporter**: User (2026-01-04 21:10)
- **Module**: Convert
- **Description**: When user selects "CRF (Constant Rate Factor)" as the Bitrate Mode, the Quality Preset dropdown does not appear. The UI remains empty where the quality settings should be.
- **Steps to Reproduce**:
1. Open Convert module
2. Set Bitrate Mode to "CRF (Constant Rate Factor)"
3. Expected: Quality Preset dropdown appears
4. Actual: No quality controls show up
- **Impact**: High - Cannot adjust quality in CRF mode, which is the default and most common mode
- **Root Cause**: Likely over-corrected the visibility logic in `updateQualityVisibility()` function. Made rules too strict after fixing BUG-001 and BUG-002.
- **Investigation Notes**:
- CBR mode is set by default (works correctly - hides quality controls)
- Previous fixes made `updateQualityVisibility()` check for: `hide || hideQuality || remux`
- Where `hideQuality = mode != "" && mode != "CRF"`
- Need to verify the logic flow when switching to CRF mode
- **Files to Check**:
- `main.go:8851-8883` - `updateQualityVisibility()` function
- `main.go:8440-8532` - `updateEncodingControls()` function
- `main.go:7875-7888` - Bitrate mode selection callback
- **Assigned To**: opencode (handoff from Claude)
- **Verified**: No (not fixed yet)
### BUG-006: Windows app crashes mid-conversion with no logs
- **Status**: 🔴 OPEN
- **Reporter**: User (2026-01-05)
- **Module**: Convert / Queue / Logging (Windows)
- **Description**: VT crashes during batch conversions (typically the 3rd or 4th job). FFmpeg continues running, but the app exits and no logs are created afterward.
- **Steps to Reproduce**:
1. On Windows, queue multiple conversions in Convert module
2. Start queue
3. After several jobs, app crashes while FFmpeg keeps running
4. Expected: App stays alive, logs updated
5. Actual: App crashes, logs missing
- **Impact**: High - data loss in UI state, no diagnostics
- **Root Cause**: Unknown. Suspected background goroutine / UI thread issue or log path failure on Windows.
- **Investigation Notes**:
- Need to confirm whether `%APPDATA%\VideoTools\logs\videotools.log` is created at all
- Crash likely happens before log writes or after log file handle is lost
- **Files to Check**:
- `internal/logging/logging.go` (init + panic handling)
- `main.go` (conversion execution, queue updates)
- Windows build path for `getLogsDir()`
- **Assigned To**: Unassigned
- **Verified**: No
---
## 🟠 High Priority Bugs (Major Issues)
None currently open.
---
## 🟡 Medium Priority Bugs (Annoying but Workable)
None currently open.
---
## 🟢 Low Priority Bugs (Minor Issues)
None currently open.
---
## ✅ Recently Fixed (Last 7 Days)
### BUG-001: Quality Preset showing in CBR/VBR modes (should only show in CRF)
- **Status**: ✅ FIXED (2026-01-04)
- **Reporter**: User
- **Module**: Convert
- **Description**: Quality Preset dropdown was showing when Bitrate Mode = CBR instead of only showing for CRF mode
- **Impact**: Confusing UI, wrong controls visible
- **Root Cause**: Duplicate visibility logic in `updateEncodingControls()` and `updateQualityVisibility()` conflicting with each other. Also `updateRemuxVisibility()` unconditionally showing containers.
- **Fix**:
- Consolidated visibility logic into `updateQualityVisibility()` as single source of truth
- Made `updateRemuxVisibility()` call `updateEncodingControls()` instead of directly showing containers
- Removed explicit `.Hide()` call on quality section initialization
- Added `updateQualityVisibility()` call after section creation
- **Files Changed**: `main.go:8522-8537, 8850, 8875, 8924-8928`
- **Fixed By**: Claude
- **Verified**: Yes, build passes
### BUG-002: Target File Size showing when not in Target Size mode
- **Status**: ✅ FIXED (2026-01-04)
- **Reporter**: User
- **Module**: Convert
- **Description**: Target File Size container was visible even when Bitrate Mode was set to CRF
- **Impact**: Confusing UI, irrelevant controls showing
- **Root Cause**: `updateRemuxVisibility()` was unconditionally showing all encoding containers when not in remux mode
- **Fix**: Changed `updateRemuxVisibility()` to call `updateEncodingControls()` which properly shows/hides based on bitrate mode
- **Files Changed**: `main.go:8924-8928`
- **Fixed By**: Claude
- **Verified**: Yes, build passes
### BUG-003: AAC and OPUS audio codec colors too similar
- **Status**: ✅ FIXED (2026-01-04)
- **Reporter**: User
- **Module**: Convert (Audio codec selection)
- **Description**: AAC (#7C3AED purple-blue) and OPUS (#8B5CF6 violet) colors were too similar to distinguish easily
- **Impact**: Usability issue - hard to tell which codec is selected
- **Fix**: Changed AAC color from #7C3AED (purple-blue) to #06B6D4 (bright cyan) for much better contrast
- **Files Changed**: `internal/ui/colors.go:47`
- **Fixed By**: Claude
- **Verified**: Yes, build passes
### BUG-004: Audio module missing drag & drop support
- **Status**: ✅ FIXED (2026-01-04)
- **Reporter**: User
- **Module**: Audio
- **Description**: Could not drag and drop audio or video files onto the Audio module tile
- **Impact**: Forced manual file selection via browse button
- **Fix**:
- Added `isAudioFile()` helper function to detect audio file extensions
- Modified `handleModuleDrop()` to accept audio files when dropping on audio module
- Added audio module handler in `handleModuleDrop()` to load files and show audio view
- **Files Changed**: `main.go:2978, 3158-3180, 3186-3195`
- **Fixed By**: Claude
- **Verified**: Yes, build passes
### BUG-007: Copy Error button lacked actionable details
- **Status**: ✅ FIXED (2026-01-05)
- **Reporter**: User
- **Module**: Queue UI
- **Description**: Copy Error only included a truncated error string with no context
- **Fix**: Copy now includes job title, module, input/output, full error text, log path, and log tail
- **Files Changed**: `main.go`
- **Fixed By**: Codex
- **Verified**: Yes, build passes
### BUG-008: About page "Logs Folder" not opening on Windows
- **Status**: ✅ FIXED (2026-01-05)
- **Reporter**: User
- **Module**: About / OS integration
- **Description**: Clicking Logs Folder did nothing on Windows
- **Fix**: Use `explorer` with normalized path, ensure folder exists
- **Files Changed**: `main.go`
- **Fixed By**: Codex
- **Verified**: Yes, build passes
### BUG-009: Contact sheet output saved inside thumbnails folder
- **Status**: ✅ FIXED (2026-01-05)
- **Reporter**: User
- **Module**: Thumbnails
- **Description**: Contact sheet was stored inside `_thumbnails` folder, adding extra navigation
- **Fix**: Contact sheet now saves alongside source video; individual thumbs still use folder
- **Files Changed**: `thumb_module.go`
- **Fixed By**: Codex
- **Verified**: Yes, build passes
---
## 📋 Known Issues (Not Bugs - Design/Incomplete Features)
### ISSUE-001: Enhancement Module - Incomplete Implementation
- **Status**: ⏸️ ON HOLD
- **Module**: Enhancement
- **Description**: Enhancement module framework exists but is not fully implemented
- **Details**:
- SkinToneAnalysis features are placeholder implementations
- No UI wired up yet
- Module commented out in navigation
- **Plan**: Complete in future dev cycle
### ISSUE-002: Widget Deduplication - Incomplete
- **Status**: 🔄 IN PROGRESS (opencode)
- **Module**: Convert UI
- **Description**: 4 widget pairs still need deduplication
- **Details**:
- Pattern established with quality widgets (main.go:7075-7128)
- Remaining pairs:
- resolutionSelectSimple & resolutionSelect
- targetAspectSelect & targetAspectSelectSimple
- encoderPresetSelect & simplePresetSelect
- bitratePresetSelect & simpleBitrateSelect
- **Plan**: Handed off to opencode agent
### ISSUE-003: ColoredSelect Expansion - Incomplete
- **Status**: 🔄 IN PROGRESS (opencode)
- **Module**: Convert UI
- **Description**: 32 widgets still need ColoredSelect conversion
- **Details**: Resolution, aspect, preset, bitrate, frame rate selectors need semantic color coding
- **Plan**: Handed off to opencode agent
---
## 🔧 How to Report a Bug
When you find a bug, add it here with:
```markdown
### BUG-XXX: Short descriptive title
- **Status**: 🔴 OPEN / 🔄 IN PROGRESS / ✅ FIXED
- **Reporter**: Name/Date
- **Module**: Which module (Convert, Audio, Player, etc.)
- **Description**: What's wrong? What should happen?
- **Steps to Reproduce**:
1. Step one
2. Step two
3. Expected vs Actual behavior
- **Impact**: How bad is it?
- **Root Cause**: (fill in when investigating)
- **Fix**: (fill in when fixed)
- **Files Changed**: (list files)
- **Assigned To**: (agent name)
- **Verified**: Yes/No
```
---
## 🔍 Bug Statuses
- 🔴 **OPEN**: Bug confirmed, not yet being worked on
- 🔄 **IN PROGRESS**: Someone is actively fixing it
-**FIXED**: Fix implemented and verified
- ⏸️ **BLOCKED**: Waiting on something else
-**WONTFIX**: Decided not to fix (explain why)
- 🔁 **DUPLICATE**: Same as another bug (reference it)
---
## 📊 Bug Statistics
**Current Status**:
- 🔴 Critical Open: 2 (BUG-005, BUG-006)
- 🟠 High Priority Open: 0
- 🟡 Medium Priority Open: 0
- 🟢 Low Priority Open: 0
- ✅ Fixed (Last 7 Days): 7
**Trends**:
- 2026-01-05: 3 bugs fixed, 1 new critical bug opened
- Focus Area: Convert UI visibility + Windows stability/logging
---
## 🎯 Next Steps
1. **BUG-005** (Critical): Fix CRF quality settings visibility - Assigned to opencode
2. **ISSUE-002**: Complete widget deduplication (4 pairs remaining) - Assigned to opencode
3. **ISSUE-003**: Complete ColoredSelect expansion (32 widgets) - Assigned to opencode
---
## 💡 Notes
- This file should be updated by ALL agents when they discover or fix bugs
- When creating git issues, reference the BUG-XXX number from this file
- Keep the statistics section updated
- Move fixed bugs to "Recently Fixed" after 7 days, then archive them