Replace the static one-page index.html with a Node-based docs site
generator. Sidebar nav, per-page TOC, dark mode toggle (system-pref
default, persisted), and a Spotify-green theme with animated equalizer
brand mark and ambient hero gradient.
Adds 11 hand-written doc pages (index, install, quickstart, auth,
playback, library, queue, devices, engines, output, agents,
troubleshooting, commands) alongside existing spec.md and RELEASING.md.
Pages workflow deploys dist/docs-site to GitHub Pages on push to main;
repo Pages source is now "GitHub Actions" instead of legacy /docs.
- 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.
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.
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.
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
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>