diff --git a/BUGS.md b/BUGS.md new file mode 100644 index 0000000..a145447 --- /dev/null +++ b/BUGS.md @@ -0,0 +1,262 @@ +# 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