Skip to content

Latest commit

 

History

History
204 lines (134 loc) · 10.5 KB

File metadata and controls

204 lines (134 loc) · 10.5 KB

Changelog

Unreleased

0.13.0 - 2026-09-13

Highlights: Long Spotify cooldowns are honored without premature retries, playlists keep repeated tracks, and locale-prefixed Spotify URLs are accepted while malformed URIs are rejected.

  • Honor long Spotify cooldowns without premature retries, retain valid tokens on throttling, and keep cookie-token requests from changing shared HTTP clients
  • Preserve repeated tracks and their positions when listing Connect playlists while keeping library listings deduplicated
  • Preserve literal CLI arguments and pass playback URIs to AppleScript as data; accept locale-prefixed and embedded Spotify URLs
  • Compatibility: reject malformed Spotify URIs, missing identifiers, and unrelated URLs instead of silently truncating or misidentifying them
  • Let Windows config updates finish after concurrent readers close, including when replacement reports access denied
  • Correct command, output, cookie-cache, and automation documentation to match the CLI, including working playlist pipelines and release asset names
  • Refresh the SQLite runtime dependency and preferred Go toolchain to 1.27.1 while retaining Go 1.26.7 support; validate macOS, Windows, the Go floor, race coverage, and docs in CI

0.12.0 - 2026-09-11

Highlights

  • Follow, unfollow, and check playlist membership from the terminal with playlist follow|unfollow|following; verified against a synthetic Spotify server, not a live account, thanks @yashiels

Changed

  • Refresh Go crypto, system, synchronization, module, analysis, and formatting dependencies while retaining Go 1.26.7 support
  • Make the listening-history output test independent of the host timezone and verify local-date rollover, thanks @yashiels

0.11.0 - 2026-09-08

Highlights

  • Add optional, local Spotify OAuth PKCE login for the existing Web API commands while keeping browser cookies as the default; unverified against a live Spotify app, thanks @VACInc

Fixed

  • Preserve cookie authentication failures before remote OAuth fallbacks, and retain local Spotify.app playback recovery
  • Keep concurrent cookie and OAuth commands from overwriting newer profile settings or clearing tokens before their config update succeeds

Changed

  • Refresh the indirect SQLite profiling dependency

0.10.8 - 2026-09-05

Highlights

  • Restore Web API and Connect-fallback search results by decoding Spotify's plural result containers, thanks @VACInc

Changed

  • Refresh Go dependencies, including Kong, SweetCookie, SQLite, crypto, and formatting tools, and select Go 1.26.8 while retaining Go 1.26.7 support
  • Refresh GitHub Actions and CI tool pins, and build documentation with Node.js 26

0.10.7 - 2026-08-23

Changed

  • Show the album in spogo status human output, omitting it when it only repeats the track name

0.10.6 - 2026-08-23

Fixed

  • Populate artists, release dates, owners, publishers, show names, durations, track/episode counts, and follower counts across Spotify catalog results
  • Render readable follower counts and listening timestamps while omitting unknown metadata, empty separators, false zero counts, and trailing device whitespace
  • List real library playlists immediately and fetch followed artists through Spotify's internal web-player API instead of rate-limited public endpoints
  • Preserve Spotify retry-after cooldown hints across failed engine fallbacks and document commands that still require the public Web API
  • Share the configured default HTTP timeout across Spotify Connect clients

Added

  • Fall back to the local Spotify.app for playback status and controls on macOS after both remote auto engines fail

0.10.5 - 2026-08-23

Fixed

  • Honor the configured request timeout when opening Spotify Connect dealer WebSocket connections
  • Strip every heading anchor safely when generating documentation tables of contents
  • Restrict CI workflow permissions to read-only repository contents

0.10.4 - 2026-08-23

Highlights

  • Cache Spotify Connect GraphQL operation hashes on disk, so catalog commands answer in seconds instead of re-downloading the web-player bundle on every run
  • Return the entity you actually asked for from artist info, album info, show info, and episode info
  • Show real titles, artists, albums, and durations for every queue show entry

Fixed

  • Persist Spotify Connect GraphQL operation hashes by web-player build and resolve missing bundle chunks concurrently
  • Resolve artist, album, show, and episode metadata from the requested Spotify entity instead of unrelated nested content
  • Populate queue tracks from Spotify Connect metadata and concurrently hydrate incomplete entries without using the public Web API
  • Redact Spotify access tokens from Connect dealer WebSocket handshake errors
  • Bound the cookie-token HTTP client so --timeout applies to token fetches and a stalled endpoint cannot hang the process, thanks @SebTardif

0.10.3 - 2026-07-18

Highlights

  • Make release and Homebrew-installed binaries report their actual tagged version

Fixed

  • Stamp the CLI version from the GoReleaser tag while retaining a dev fallback for every unstamped build
  • Remove stale hardcoded 0.10.1 version labels from the CLI and specification

Release engineering

  • Upgrade the unified release caller to openclaw/release-workflows@v1.0.0-alpha.13, including exact verified asset names and SHA-256 digests in the Homebrew handoff

0.10.2 - 2026-07-18

Highlights

  • Ship the first spogo release through the unified signed pipeline, using the OpenClaw Foundation Developer ID and Apple notarization for every macOS binary

Release engineering

  • Replace the tag-triggered release workflow with a thin, manually dispatched caller pinned to openclaw/release-workflows@v1.0.0-alpha.12
  • Bind published release notes byte-for-byte to this dated changelog section and verify immutable artifacts before publication
  • Hand verified release metadata to the Homebrew tap updater after publication

0.10.1 - 2026-07-17

Highlights

  • Add native shell completion generation for Bash, Zsh, and Fish
  • Make missing browser authentication fail with the documented exit code for reliable automation
  • Surface Spotify rate-limit cooldown hints so callers can back off without guessing

CLI and authentication

  • Add Bash, Zsh, and Fish shell completions and show supported shells in command help (#32, thanks @kk-spartans)
  • Return exit code 3 when browser cookies are unavailable instead of collapsing authentication failures into a generic command error
  • Surface Spotify Retry-After hints in API errors with bounded seconds and HTTP-date parsing (#41, thanks @clawSean)

Reliability and maintenance

  • Build CI and release artifacts with Go 1.25.12 so upstream standard-library security fixes are included
  • Refresh direct and transitive Go dependencies, including Kong, go-toml, x/crypto, x/sys, and modernc.org/libc
  • Refresh GitHub Actions and pinned dead-code, linting, and formatting tools

Documentation

  • Define product direction, compatibility guarantees, security boundaries, and change policy in VISION.md
  • Update source-install requirements and command documentation for the refreshed CLI and Go toolchain

0.10.0 - 2026-06-10

  • Add user top tracks and retained listening history commands (#29, thanks @hibachipapi)
  • Fix Firefox cookie imports when browser expiry values cannot be serialized (#31, thanks @meoyawn)

0.9.0 - 2026-05-10

  • Improve Connect playback latency by caching web auth, client tokens, and the active command route between invocations (#25, thanks @kk-spartans)
  • Fix warm Connect commands from cached active routes by persisting the registered spogo sender device.
  • Fix Connect device volumes so device list and status output report 0-100 percentages instead of Spotify's raw volume scale.

0.3.1 - 2026-05-10

  • Fix Connect Pathfinder track metadata extraction for explicit ratings, nested durations, and playability (#26, thanks @theDimZone)
  • Add generated llms.txt docs index for agent-friendly documentation discovery
  • Update release automation/docs for the OpenClaw repository move

0.3.0 - 2026-05-05

  • Add auth paste, wire --no-input, and improve cookie diagnostics/cleanup (#5, thanks @im-zayan)
  • Add play --shuffle, Connect library/playlist support, and context-aware Connect play payloads (#15, thanks @StandardGage)
  • Fix Connect track artist extraction for nested artist containers and minimal artist fragments (#7, thanks @joelbdavies)
  • Fix silent auth import failures by retrying Spotify auth cookie lookup across related hosts and surfacing browser warnings (#13)
  • Fix device set when Connect state has no origin device by falling back to Web API transfer (#8)
  • Fix Connect liked-track listing via fetchLibraryTracks with Web API fallback on payload drift (#16, thanks @masonc15)
  • Fix Connect play when no device is active by falling back to Web API playback (#21, thanks @prashanthbala)
  • Fix Connect volume changes by sending the volume endpoint as PUT (#24, thanks @cavit99)
  • Fix sparse status/search metadata so track artists and albums are populated consistently across engines.
  • Fix Connect --device playback when no device is active without falling back to rate-limited Web API playback.
  • Fix auth paste --no-input by accepting the documented flag order.
  • Fix playlist add/remove 429s by using Connect playlist mutations with writable-playlist checks and fallback coverage across engines (#20).
  • Release prep: bump CLI/spec version to 0.3.0

0.2.0 - 2026-01-07

  • Add applescript engine for direct Spotify.app control on macOS (thanks @adam91holt)
  • CI: bump golangci-lint-action to support golangci-lint v2

0.1.0 - 2026-01-02

  • Kong-powered CLI with global flags, config profiles, and env overrides
  • Auth commands: cookie status/import/clear with browser/profile selection
  • Cookie-based auth via steipete/sweetcookie (file cache + browser sources)
  • Search tracks/albums/artists/playlists/shows/episodes
  • Item info for track/album/artist/playlist/show/episode
  • Playback control: play/pause/next/prev/seek/volume/shuffle/repeat/status
  • Artist play (top tracks; falls back to search)
  • Queue add/show
  • Library list/add/remove for tracks/albums; follow/unfollow artists; playlists list
  • Playlist management: create/add/remove/track list
  • Device list and transfer/set
  • Engines: connect (internal), web (Web API), auto (connect → web fallback)
  • Rate-limit fallback on 429s where supported
  • Output: human color + --plain + --json (NO_COLOR/TERM aware)
  • GitHub Actions CI, linting, formatting, and coverage gate