Commit Graph

39 Commits

Author SHA1 Message Date
Peter Steinberger
dff0ff1c8b
test: cover playlist mutation edge cases 2026-05-05 07:13:04 +01:00
Peter Steinberger
bcc8ef7ea9
fix: route playlist writes through connect mutations 2026-05-05 07:11:21 +01:00
Peter Steinberger
a0298286c0
fix: harden live metadata and device playback paths 2026-05-05 06:52:54 +01:00
Peter Steinberger
5562000ed0
test: avoid nil response in connect play fallback test 2026-05-05 06:32:23 +01:00
cavit99
444769dd79
fix: use PUT for Connect volume requests
Send Connect volume changes with PUT while keeping player commands on POST.
2026-05-05 06:29:39 +01:00
Prashanth Bala
fe493222dd
fix: fall back to Web API for inactive Connect play
Delegate play to the Web API when Connect state has no active device.
2026-05-05 06:29:25 +01:00
Colin Mason
dfc7bed8f6
fix: restore Connect liked-track listing
Use fetchLibraryTracks for Connect liked songs and fall back when the payload shape drifts.
2026-05-05 06:28:48 +01:00
Peter Steinberger
de7dc2df3a
test: cover Spotify mock and limit helpers 2026-04-27 08:44:40 +01:00
Peter Steinberger
99519c27a3
test: raise coverage for app and applescript paths 2026-04-27 08:42:14 +01:00
Peter Steinberger
b306d9813b
test: avoid nil response in connect fallback test 2026-04-27 08:34:18 +01:00
Peter Steinberger
c613e96ed2 fix: recover auth import and device transfer 2026-03-08 05:17:49 +00:00
Peter Steinberger
68653641ad test: split connect and cli test suites 2026-03-08 04:41:47 +00:00
Peter Steinberger
9bd9156777 refactor: split connect pathfinder and extraction layers 2026-03-08 04:41:42 +00:00
Peter Steinberger
f741b66335 refactor: split app context and auth flows 2026-03-08 04:41:38 +00:00
Zayan
b94bf2f52d feat: add auth cookie paste fallback
- Add `spogo auth paste` to save cookies from DevTools values
- Make `--no-input` effective (disable prompts)
- Improve connect auth error when `sp_t` missing
- Docs: update README + CLI spec
2026-03-08 04:14:14 +00:00
Peter Steinberger
6288125033 fix: refresh landing for PR #15 (thanks @StandardGage) 2026-03-08 04:10:53 +00:00
StandardGage
c82902fce0 feat: add shuffle option to play command and enhance playback functionality
- Introduced a `--shuffle` flag for the `play` command to enable shuffle before playing.
- Updated playback logic to handle context URIs for playlists and tracks.
- Enhanced error handling and added support for library tracks and albums in the Connect client.
- Improved rendering of playlist information in the CLI output.
- Added tests for new playback features and context URI handling.
2026-03-08 04:10:53 +00:00
Joel Davies
91be7579a9 Handle artist id+name fragments
Problem: some Connect artist fragments only include id+name, so artistNameFromValue ignored them.
Solution: treat id as sufficient evidence of an artist map and add a regression test.
2026-03-08 04:04:13 +00:00
Joel Davies
2e48cae5b2 Fix track artist extraction
Problem: Connect getTrack only surfaced the first artist; otherArtists (e.g., remixers) were ignored.
Solution: parse otherArtists in trackUnion and tighten artist name extraction to avoid unrelated names; add tests for firstArtist/otherArtists containers.
2026-03-08 04:04:13 +00:00
Bender
c9d7e193c1 fix: auto-detect cookies at default path for headless servers
When cookies are copied manually to a headless server (e.g., via scp),
spogo would fail with 'no cookies found' because it only checks the
cookie file path if explicitly set in config.

This change makes cookieSource() check for cookies at the default path
even without config, enabling a simpler setup workflow:

1. Run 'spogo auth import' on a machine with browser
2. Copy cookies file to headless server
3. It just works (no config needed)

This is particularly useful for:
- AI assistants running on VPS/cloud servers
- Raspberry Pi and home server setups
- Any headless Linux environment
2026-03-08 04:00:28 +00:00
Peter Steinberger
329f9be524 refactor: remove legacy connect files 2026-03-08 03:59:06 +00:00
Peter Steinberger
ea36cbce27 refactor: split spotify connect internals 2026-03-08 03:58:57 +00:00
Peter Steinberger
3a1f52c02b refactor: streamline app and cli execution flow 2026-03-08 03:58:53 +00:00
Peter Steinberger
dab2ec484c chore: bump version to 0.3.0 2026-03-08 03:58:51 +00:00
Peter Steinberger
cb437f317e chore: bump version to 0.2.0 2026-01-07 11:08:30 +01:00
Peter Steinberger
da91080af3 test: cover applescript engine on non-macOS
Some checks failed
CI / build (push) Has been cancelled
2026-01-07 09:13:51 +01:00
Peter Steinberger
42e9fa8c6b fix: make applescript engine typecheck cross-platform 2026-01-07 09:09:42 +01:00
Adam Holt
9474494dd8 feat: add AppleScript engine for direct macOS Spotify control
Adds a new `applescript` engine that controls the local Spotify app directly
via AppleScript instead of going through Spotify Connect cloud servers.

This solves the issue where Spotify Connect commands update the cloud state
but the local app doesn't receive them (device desynced/not registered).

The AppleScript engine:
- Handles playback control (play, pause, next, prev, seek, volume, shuffle, repeat)
- Falls back to web API for search, library, and playlist operations
- Only available on macOS (darwin)

Usage: spogo play <uri> --engine applescript

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 12:37:23 +13:00
Peter Steinberger
256dfd13c4 fix: route connect commands from spogo device 2026-01-03 04:18:40 +01:00
Peter Steinberger
93cc46424f fix: play artists via top tracks 2026-01-03 03:27:32 +01:00
Peter Steinberger
c23c15f565 feat: add auto engine fallback 2026-01-03 03:16:13 +01:00
Peter Steinberger
8a0834ea95 fix: stabilize connect playback and chrome cookies 2026-01-03 02:42:09 +01:00
Peter Steinberger
80b93b0f5d fix: restore connect search via hash resolver 2026-01-03 02:04:16 +01:00
Peter Steinberger
9121bafe9f fix: fallback web playback on rate limit 2026-01-03 01:32:19 +01:00
Peter Steinberger
4f2b8e1005 feat: add connect engine and playback 2026-01-03 01:02:42 +01:00
Peter Steinberger
197e61300d chore: update deps and lint 2026-01-02 22:28:27 +01:00
Peter Steinberger
fa21fa0fde chore: switch cookie lib to sweetcookie 2026-01-02 22:04:55 +01:00
Peter Steinberger
b5d7474b38 chore: fix lint config 2026-01-02 19:21:48 +01:00
Peter Steinberger
07a219b670 feat: bootstrap spogo cli 2026-01-02 19:00:04 +01:00