NavidromeApp/iOS/Views/Common
Dallas Groot 282eb5d80c Fixed idle visualizer bug
AudioPlayer.swift — startRadioSimulation() replaces
startLevelSimulation() for radio streams. It generates two overlapping
sine waves with a slow breathing amplitude envelope. The key property:
it’s driven by an internal radioPhase counter that increments at a
fixed rate, completely independent of currentTime. Buffer seeks, HLS
restarts, and stream reconnects have zero visual effect.
MitsuhaVisualizerView.swift — Two fixes:
	1.	TimelineView(.periodic(from: .distantPast, by: tickInterval)) —
using .distantPast as the stable schedule origin instead of .now.
Previously, any recalculation of tickInterval (triggered by
isRenderingActive flipping during a radio buffer hiccup) would reset
the origin to the current moment, deferring the next tick by a full
interval — the visible stall.
	2.	songId parameter with .onChange(of: songId) that resets
peakFollower, levelHistoryBuf, and lastTickTime on song change. This
prevents the outgoing song’s simulation spike from “raising” the wave
at the start of the next song.
NowPlayingView.swift and MainTabView.swift — Pass songId:
audioPlayer.currentSong?.id through to MitsuhaVisualizerView and
CompactVisualizerView at all call sites.
2026-04-11 19:01:10 -07:00
..
AppFont.swift bug fixes 2026-04-11 15:09:06 -07:00
AsyncCoverArt.swift memory improvements 2026-04-11 15:37:14 -07:00
DebugConsoleView.swift debugging high cpu usages 2026-04-11 16:15:27 -07:00
MainTabView.swift Fixed idle visualizer bug 2026-04-11 19:01:10 -07:00