saopig1 and Claude Opus 4.8
1a3ccd0e38
fix(spotify): device-scope Rust Connect control + ignore foreign-device poll state (multi-bot) [corner-case R4-4]
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-04 13:50:28 +08:00
saopig1 and Claude Opus 4.8
ec0a027a1e
fix(spotify): round seek position to integer ms + one-poll seek grace before near-end skip [corner-case R4-1,R4-6]
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-04 13:40:21 +08:00
saopig1 and Claude Opus 4.8
952bd26d2d
fix(spotify): confirm transient null-item over two polls before ending Rust track [corner-case R3-1]
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-04 11:08:28 +08:00
saopig1 and Claude Opus 4.8
c8227faf31
fix(spotify): never skip a self-paused Rust track (gate near-end + null-state on !paused) [corner-case residual]
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-03 11:37:55 +08:00
saopig1 and Claude Opus 4.8
6dc99d88e2
fix(spotify): don't skip paused Rust track; handle ffmpeg stdin EPIPE; guard sub-window end-detection [corner-case]
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-03 11:18:47 +08:00
saopig1 and Claude Opus 4.8
11c0948330
docs(spotify): document known limitations (token CLI arg, gapless elapsed) [whole-branch d1,d2]
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-03 01:55:34 +08:00
saopig1 and Claude Opus 4.8
b4c3cc0539
fix(spotify): tear down in-flight backend on stop + degrade-to-skip on persistent play failure [whole-branch I1,I4]
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-03 01:37:49 +08:00
saopig1 and Claude Opus 4.8
efe47c5bbc
fix(spotify): arm RustLibrespot track-end detection only after playTrack (no spurious startup advance)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-02 23:43:27 +08:00
saopig1 and Claude Opus 4.8
35bdd2a168
feat(spotify): add RustLibrespotBackend (stdout-pipe -> ffmpeg, Connect-API control)
...
Implements the Stage-2 SpotifyAudioBackend over Rust librespot: spawns
librespot with --backend pipe (no --device => s16le/44100/2 on stdout, no
--passthrough), pipes stdout -> ffmpeg (44100->48000 s16le), waits for the
Connect device to register before emitting "ready", and controls playback
(transfer/play/pause/resume/seek) plus track-end/position/metadata via a
polled SpotifyConnectApi. child_process/connect/oauth/ffmpeg injected for
fully mocked, no-network unit tests (Windows-targeted; not e2e without Premium).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-02 23:34:58 +08:00