Commit graph

11 commits

Author SHA1 Message Date
Dallas Groot
a4103c8250 bug fixes and ready to upload to testflight 2026-04-10 19:05:45 -07:00
Dallas Groot
ea50bd4537 pip fixes and improvements
•	Group toggles — iPhone / Watch / Companion / Audio, all persistent
via @AppStorage so your filter state survives app restarts
	•	Level toggles — ERROR / WARN / INFO / DEBUG in a single scrollable
row next to the group toggles, color coded red/yellow/cyan/gray
	•	Delta timestamps — each row shows +42ms between it and the previous
entry, so you can see timing without mental math
	•	Pause/Resume — bottom bar button snapshots the current log so you
can read it without it scrolling, while still capturing in background
	•	Auto background/foreground markers — ── Background ── / ──
Foreground ── lines are auto-inserted by NotificationCenter, making
crash correlation much easier
	•	PiP button in toolbar sets logger.isPiP = true, which MainTabView’s
.onChange picks up and activates the existing floating PiP window
MainTabView.swift — minimal changes:
	•	Added .onChange(of: debugLogger.isPiP) to sync the console’s PiP
button to the existing debugPipMode state
	•	Updated debugLogRow to show level dot + marker support, consistent
with the full console
2026-04-10 18:50:31 -07:00
Dallas Groot
c8360419c3 miniplayer fix
Two fixes:
Snap-back on seek end: Previously isScrubbing = false was set
immediately after seekToPercent(pct). AVPlayer.seek is asynchronous —
currentTime doesn’t update instantly. So displayProgress switched from
scrubPosition back to the old playbackTime / playbackDuration for up
to 250ms until the timer polled again, causing a visible snap-back.
Now scrubPosition is held at pct and isScrubbing clears after a 150ms
delay — enough time for AVPlayer to confirm the seek position before
the bar resumes tracking currentTime.
Stale timer poller removed: playbackTime and playbackDuration were
@State vars updated by a Timer.publish every 0.25s. Since currentTime
and duration are already @Published on AudioPlayer, the timer was just
adding lag and a secondary update cycle. They’re now computed
properties reading directly from audioPlayer.currentTime and
audioPlayer.duration — updates arrive instantly via SwiftUI’s
observation, same as the full Now Playing view.
2026-04-10 07:33:14 -07:00
Dallas Groot
2b879fd153 Mitsuha pause fixes and other bugs 2026-04-05 08:33:00 -07:00
Dallas Groot
c3bce4a997 Update from NavidromePlayer.zip (2026-04-04 06:58) 2026-04-04 06:58:58 -07:00
Dallas Groot
4787e2a5d4 Update from NavidromePlayer.zip (2026-04-04 00:14) 2026-04-04 00:14:41 -07:00
Dallas Groot
36331d1f51 Update from NavidromePlayer.zip (2026-04-03 20:04) 2026-04-03 20:04:32 -07:00
Dallas Groot
2fb1f6c19a Update from NavidromePlayer.zip (2026-04-03 19:44) 2026-04-03 19:44:29 -07:00
Dallas Groot
16097f5ff2 Watch overhaul other changes 2026-04-03 19:20:55 -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
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