diff --git a/.gitattributes b/.gitattributes index bf941bbe75..211a32d9e8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -15,6 +15,7 @@ openpilot/starpilot/galaxy/web/vendor/vue/vue.esm-browser.js -text *.apk -text openpilot/starpilot/galaxy/bin/hev-socks5-tunnel_linux_arm64 -text openpilot/starpilot/soloist/pulseaudio/bin/pulseaudio -text +openpilot/starpilot/soloist/pulseaudio/bin/pactl -text openpilot/selfdrive/car/tests/test_models_segs.txt -text openpilot/common/hardware/comma/updater -text diff --git a/openpilot/starpilot/galaxy/tests/test_spotify.mjs b/openpilot/starpilot/galaxy/tests/test_spotify.mjs index 373af12237..b458c415a1 100644 --- a/openpilot/starpilot/galaxy/tests/test_spotify.mjs +++ b/openpilot/starpilot/galaxy/tests/test_spotify.mjs @@ -38,6 +38,8 @@ assert.equal(serviceLabel({ enabled: false }), "Off") assert.equal(serviceLabel({ enabled: true, service: { state: "waiting_output", message: "Waiting for Car to connect over Bluetooth." } }), "Waiting for Car to connect over Bluetooth.") assert.match(serviceLabel({ enabled: true, service: { state: "waiting", message: "" } }), /pick this device/) +assert.match(serviceLabel({ enabled: true, service: { state: "waiting", message: "", outputWaiting: "Car" } }), + /pick this device.*Audio waits for Car\./) assert.equal(serviceLabel({ enabled: true, service: { state: "ready", player: { status: "paused" } } }), "Paused") assert.equal(positionNow({ ms: 1000, at: 10_000, speed: 1 }, 5000, 12_000), 3000) diff --git a/openpilot/starpilot/galaxy/web/js/spotify.js b/openpilot/starpilot/galaxy/web/js/spotify.js index f6c5b957b9..6c702e8537 100644 --- a/openpilot/starpilot/galaxy/web/js/spotify.js +++ b/openpilot/starpilot/galaxy/web/js/spotify.js @@ -99,7 +99,8 @@ export function serviceLabel(setup) { const service = setup.service if (!service) return "Starting…" if (service.state === "ready" && service.player?.status === "paused") return "Paused" - return service.message && !["ready", "playing", "waiting"].includes(service.state) ? service.message : STATE_TEXT[service.state] || "Starting…" + const text = service.message && !["ready", "playing", "waiting"].includes(service.state) ? service.message : STATE_TEXT[service.state] || "Starting…" + return service.outputWaiting ? `${text} Audio waits for ${service.outputWaiting}.` : text } // Where the track is now, from Soloist's anchor and the browser time elapsed since it. @@ -479,8 +480,11 @@ export const SpotifyPage = { - +
{{ statusText }}
-The first time, your phone has to be on the same Wi‑Fi or hotspot as your comma. After that, Spotify remembers it.
+Pair once on the same Wi‑Fi or hotspot. After pairing, keep Spotify enabled and both devices online; your comma can use cellular or a phone hotspot. Use the same Spotify account on your phone.