NavidromeApp/iOS/Views/Companion
Dallas Groot 99bf17ec1a Fix 3 crashes from crash logs: SmartDJCache race, AVPlayer observer, KVO threading
🔴 SmartDJCache concurrent Dictionary crash (April 27+28 crash logs):
- EXC_BAD_ACCESS + doesNotRecognizeSelector in bulkImport()
- memoryCache dictionary mutated from main thread (loadBulkCache)
  and background Task.detached (bulkImport) simultaneously
- Fix: NSLock serializes all memoryCache reads and writes

🔴 stopAVPlayer removeTimeObserver crash (April 30 crash log):
- SIGABRT in -[AVPlayer removeTimeObserver:] from Previous button
- timeObserver registered on old player, self.player swapped to
  crossfade's active player by finalizeCrossfade
- Fix: remove observer from OLD player at both swap sites before
  assignment + reorder stopAVPlayer (observer before replaceCurrentItem)

🟡 Audit fixes (no crash logs, preventative):
- KVO in radioSeekBack wrapped in DispatchQueue.main.async
- Stale vis Task guarded by songId in all MainActor.run blocks
- CHANGELOG.md with full findings documentation
2026-04-30 17:27:54 -07:00
..
BatchAlbumEditorSheet.swift UI scaling on scrollabile windows 2026-04-17 09:58:05 -07:00
BatchUploadView.swift batch upload quick fix 2026-04-11 09:37:22 -07:00
CompanionAPIService.swift Fix 3 crashes from crash logs: SmartDJCache race, AVPlayer observer, KVO threading 2026-04-30 17:27:54 -07:00
CompanionSettingsView.swift quick fix 2026-04-12 20:18:29 -07:00
EditHistoryView.swift UI scaling on scrollabile windows 2026-04-17 09:58:05 -07:00
MultiAlbumEditorSheet.swift UI scaling on scrollabile windows 2026-04-17 09:58:05 -07:00
SmartCrossfadeManager.swift Seek bar glitch — The time observer was reporting from the outgoing player (near 100%) for the first half, then jumping to the incoming player (near 0%) at 50%. Now it reports from the incoming player as soon as crossfade begins. The user hears the new song fading in — the seek bar matches. 2026-04-14 00:27:10 -07:00
TrackEditorView.swift batch albumart fix 2026-04-12 18:07:12 -07:00
ZipImportManager.swift bug fixes 2026-04-11 15:09:06 -07:00