Commit graph

13 commits

Author SHA1 Message Date
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
Dallas Groot
25a96c6a5d watchos info.plist fix 2026-04-10 07:52:45 -07:00
Dallas Groot
07ef5bc8e8 bug fixes 2026-04-10 07:00:30 -07:00
d0cfb4053a revert 63114f02fb
revert fixed project info
2026-04-10 00:31:29 -07:00
Dallas Groot
63114f02fb fixed project info 2026-04-10 00:22:17 -07:00
5fc531b888 fixed Testflight Submission 2026-04-08 15:59:11 -07:00
Dallas Groot
f39eaff281 3-Dot Menu Grid Layout — Replaced List-based sheet with a grid of button pairs: Instant Mix | Add to Playlist, Go to Album | Go to Artist, Download/Remove | Send to Watch, Get Info | Edit Tags. 2026-04-03 15:48:37 -07:00
Dallas Groot
7bc999af6b made wording better on both Microphone and Photo access 2026-04-01 10:55:53 -07:00
Dallas Groot
1009f86baa quick fix 2026-03-28 18:24:48 -07:00
Dallas Groot
97a1e112cd fixed icon 2026-03-28 18:16:43 -07:00
Dallas Groot
bc47f58162 Update from NavidromePlayer.zip (2026-03-28 16:47) 2026-03-28 16:47:28 -07:00
Dallas Groot
2f06e9bdab added icon assets and xcode prjoect 2026-03-28 14:11:30 -07:00
Dallas Groot
d8041c0019 NavidromePlayer: iOS + watchOS Navidrome/Subsonic music player
Features:
- Dual-AVPlayer Smart DJ crossfade with LUFS normalization
- Mitsuha-style FFT visualizer (real-time + offline pre-computed)
- Companion API integration (Smart DJ, tag editing, vis frames)
- Offline-first SyncEngine with delta sync and album detail pre-caching
- Audio pre-fetcher for gapless queue playback
- Optimistic action queue (star/unstar with background retry)
- ShazamKit recognition with MusicKit preview playback
- Radio streaming with HLS/PLS/M3U support and buffer seek
- Watch app with Crown Sequencer and Ultra speaker support
- Batch metadata editing with album_artist fix for split albums
- Cache-first UI pattern across all views
- NWPathMonitor offline detection with reactive song greying
2026-03-28 20:49:47 +00:00