Skip to content

Releases: zcaceres/spotify-cli

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 04 May 19:53
Immutable release. Only release title and notes can be modified.

Added

  • track find --title <title> --artist <artist> — exact-match track resolver. Builds Spotify's track:"X" artist:"Y" filter and returns the top match (same shape as spotify track <id>). Exits with NOT_FOUND (code 3) when nothing matches, instead of returning the personalized best-guess that spotify search would surface.
  • playlist add and playlist remove accept --uris-file <path> (one URI/ID/query per line; blank lines and # comments allowed) and read URIs from stdin when - is passed as a positional. Positional, file, and stdin sources concatenate. Eliminates shell-quoting hazards (zsh non-splitting unquoted vars, xargs choking on apostrophes in titles like Don't Stop Believin') when driving the CLI from a list-in-a-file.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 04 May 02:02
Immutable release. Only release title and notes can be modified.

Added

  • playlist rename <id> <new_name> — focused command for changing a playlist's name.
  • playlist update <id> — update one or more details of a playlist via flags: --name, --description (pass "" to clear), --public/--private, and --collaborative/--no-collaborative. At least one field flag is required; mutually-exclusive flag pairs error when both are given.

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 20 Mar 21:10
Immutable release. Only release title and notes can be modified.

Added

  • --text flag — pass --text to any command for human-readable plaintext output instead of JSON. Each command has a dedicated text formatter for polished output; a generic fallback handles any without one.
  • Text formatters for all 35+ commands covering player, search, albums, tracks, playlists, user, and auth domains.
  • Error output in text mode includes the error code: Error: <message> [CODE].

Fixed

  • --text flag respects the -- separator — literal --text positional args after -- are no longer stripped.
  • --text=value syntax is now recognized (previously silently ignored).

Changed

  • textFormat is now a required field on CommandDef, so new commands cannot be added without a text formatter.

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 19 Mar 00:21
Immutable release. Only release title and notes can be modified.

Fixed

  • Detail commands (track, album, playlist, album tracks, playlist tracks, track features) now accept full Spotify URIs — previously only bare IDs worked, and URIs caused a 400 error.
  • queue add validates malformed spotify: URIs client-side instead of leaking API 400/500 errors.
  • Flag parser correctly handles negative numbers with space syntax (e.g. --limit -5 now errors instead of silently corrupting the query).
  • shuffle, repeat, and top commands use INVALID_ARGUMENT error code when a value is provided but not valid (was MISSING_ARGUMENT).
  • Unknown subcommands (e.g. auth blah) now return an error instead of silently showing subcommand help with exit 0.
  • --help after the -- separator is treated as a literal positional argument, not a help trigger.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 18 Mar 20:50
Immutable release. Only release title and notes can be modified.

Added

  • Search-then-act — mutation commands (track save, queue add, follow, playlist add, etc.) now accept human-readable names in place of Spotify IDs. The CLI searches for the top match and acts on it, showing what was matched in the searched field.
  • Enriched output — Spotify's mutation APIs return only opaque IDs. The CLI now resolves them to human/agent-readable metadata (track name, artist, album) in a new items field, while preserving the ids field for backward compatibility.
  • Metadata cache — resolved metadata is cached to ~/.spotify-cli/cache.json (LRU, max 500 entries) so repeated invocations skip extra API calls.
  • Input identification heuristic: Spotify URIs and 22-char base-62 IDs are used directly; anything else triggers a search. Malformed spotify: URIs are rejected with an error.

Changed

  • Replaced batch API endpoints (GET /tracks?ids=, etc.) with individual fetches. Spotify removed batch endpoints for apps in development mode as of February 2026.

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 18 Mar 17:47
Immutable release. Only release title and notes can be modified.
3b69981

Fixed

  • Auto-convert bare track IDs to spotify:track: URIs in playlist add, playlist remove, and queue add
  • playlist create no longer sends empty string as description when --description is omitted
  • Reject negative --limit and --offset values with proper error
  • Volume and seek validation errors now use INVALID_ARGUMENT error code
  • Invalid search --type values caught client-side with clear error message

Added

  • --version / -V flag outputs CLI version
  • play command accepts positional URI argument (spotify play spotify:track:X)

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 18 Mar 01:32
Immutable release. Only release title and notes can be modified.

What's Changed

  • fix: auto-format commands/index.ts by @zcaceres in #3

Full Changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 15 Mar 16:24
7e85259

What's Changed

  • Add VitePress + TypeDoc documentation by @zcaceres in #2

New Contributors

Full Changelog: https://github.com/zcaceres/spotify-cli/commits/v0.1.0