Repository navigation
Releases: zcaceres/spotify-cli
Releases · zcaceres/spotify-cli
Release list
v0.5.0
Immutable
release. Only release title and notes can be modified.
Added
track find --title <title> --artist <artist>— exact-match track resolver. Builds Spotify'strack:"X" artist:"Y"filter and returns the top match (same shape asspotify track <id>). Exits withNOT_FOUND(code 3) when nothing matches, instead of returning the personalized best-guess thatspotify searchwould surface.playlist addandplaylist removeaccept--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 likeDon't Stop Believin') when driving the CLI from a list-in-a-file.
v0.4.0
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
Immutable
release. Only release title and notes can be modified.
Added
--textflag — pass--textto 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
--textflag respects the--separator — literal--textpositional args after--are no longer stripped.--text=valuesyntax is now recognized (previously silently ignored).
Changed
textFormatis now a required field onCommandDef, so new commands cannot be added without a text formatter.
v0.2.1
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 addvalidates malformedspotify:URIs client-side instead of leaking API 400/500 errors.- Flag parser correctly handles negative numbers with space syntax (e.g.
--limit -5now errors instead of silently corrupting the query). shuffle,repeat, andtopcommands useINVALID_ARGUMENTerror code when a value is provided but not valid (wasMISSING_ARGUMENT).- Unknown subcommands (e.g.
auth blah) now return an error instead of silently showing subcommand help with exit 0. --helpafter the--separator is treated as a literal positional argument, not a help trigger.
v0.2.0
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 thesearchedfield. - 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
itemsfield, while preserving theidsfield 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
Immutable
release. Only release title and notes can be modified.
Fixed
- Auto-convert bare track IDs to
spotify:track:URIs inplaylist add,playlist remove, andqueue add playlist createno longer sends empty string as description when--descriptionis omitted- Reject negative
--limitand--offsetvalues with proper error - Volume and seek validation errors now use
INVALID_ARGUMENTerror code - Invalid search
--typevalues caught client-side with clear error message
Added
--version/-Vflag outputs CLI versionplaycommand accepts positional URI argument (spotify play spotify:track:X)
v0.1.1
Immutable
release. Only release title and notes can be modified.
What's Changed
Full Changelog: v0.1.0...v0.1.1
v0.1.0
What's Changed
New Contributors
Full Changelog: https://github.com/zcaceres/spotify-cli/commits/v0.1.0