87ad7f4dc2
android / Build + lint + test (push) Successful in 3m55s
Part A: split loadQueueOnSonos into an initial phase (tracks[0..currentIndex] only, then SetAV+Seek+Play) plus a background extendQueueOnSonos coroutine that appends the remainder after activation. Reduces the UPnP activation block from ~17s (100 tracks serial) to ~200ms (1 track at currentIndex=0). Background extension cancels cleanly when activeUpnpHolder.active changes. Part B: add PlayerUiState.isUpnpLoading (target set, active null). Projected inline in onEvents so it stays consistent with the rest of the snapshot, plus a separate combine(target, active) collector that updates uiState between player-event fires. NowPlayingScreen.TransportRow and MiniPlayer.MiniRow replace the play/pause icon with a CircularProgressIndicator while loading and disable the button tap to prevent premature commands to the Sonos queue. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>