Large screens only had the bottom player bar; the expanded player was
reachable only from the compact layout. A new button next to the volume
slider opens a view that covers the window, with the album art in the
middle over a blurred copy of it, the track info, progress, playback
controls, volume, and the queue and lyrics buttons.
The view closes with its button or Esc. On desktop it can also put the
window in OS full screen, and leaves it again when the view closes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Downloads resolve streams with the user's download format/quality via a
new StreamRequest instead of the streaming settings, and bypass the
playback stream-URL cache in both directions
- Downloads only consider progressive streams; DASH/HLS manifests were
previously saved as-is instead of audio
- NewPipe: map AAC "mp4a.40.x"/"m4a" to the advertised "aac"/"mp4" so real
AAC streams can match (previously the hard-coded aac/mp4 manifests always
won), report each stream's real delivery method, skip streams without a
format or non-URL content
- Fail the download on non-2xx responses, on a range request answered with
a full 200, and on video/* content, with localized reasons, instead of
writing the response body to disk
- Save AAC as .m4a
- Tests for request overrides, manifest exclusion and cache isolation
Downloads
- Show the real download folder: "Current folder: <path> (default)" in
settings instead of the misleading "default music folder", and a
"Saved to <path>" line on the Downloads screen
- Register finished downloads with Android's MediaStore (MediaScanner) so
music players and the Files app see them immediately
- Add tagged logs across the download path to diagnose format/quality
selection: raw NewPipe streams ([Streams]), every selection candidate
with its rank key and fallback warnings ([Resolve]), and per-download
enqueue prefs, resolved stream, HEAD/GET status + content type, segment
responses and written vs expected bytes ([Download])
Connect status
- Mobile Home keeps its Devices / Group Jam / Support icons (Jam now uses
the sound icon) and shows a slim banner only while remote-controlling a
device or in a Jam ("Playing on krtx", "Hosting · 3 listeners")
- Sidebar Devices / Group Jam rows get a live dot and status line
- New ConnectStatusViewModel feeds both
Remote control settings
- Extract "Allow remote control" and "Device name" into shared
remoteControlSettingCards, used by Playback settings and a new
"This device" section on the Devices screen
- Remove the unused "Enable Connect" setting and its strings
- Redesign RemoteControlScreen to match the expanded player: artwork sized
to fit, side-by-side queue panel on wide screens, proper connecting /
disconnected / error states, "Playing on <device>" subtitle
- Seek and volume sliders keep local drag state and only commit on release
(volume throttled while dragging) instead of sending a command per frame
- Redesign DevicesScreen with the settings card components, a connected
device card, error banner and empty state; ViewModels expose one UiState
- Fix tapping an already-connected device doing nothing; reopen its remote
screen instead, and switch devices by disconnecting first
- Fix the controller getting stuck in Connecting after the host denies a
request: Ktor never delivers Close frames to `incoming`, so detect the
close reason after the receive loop ends
- Fix a UI freeze when leaving the devices screen on desktop: run discovery
(and JmDNS's blocking close/resolve) on Dispatchers.IO
- Advertise the LAN address of the default-route interface on desktop;
dns-sd-kt otherwise picks any site-local address, e.g. a Docker bridge