Skip to content

feat: add playlist item drill-down support - #2

Merged
bautistaaa merged 2 commits into
mainfrom
cursor/playlist-drill-down-e798
Jul 21, 2026
Merged

bautistaaa merged 2 commits into
mainfrom
cursor/playlist-drill-down-e798

Conversation

@bautistaaa

@bautistaaa bautistaaa commented Jul 20, 2026 •

Copy link
Copy Markdown
Owner

Summary

Yes — the Spotify API supports playlist contents, and this PR adds drill-down for them the same way albums and podcasts already work.

API support

  • Search already included playlists (PLAYLIST in the results column)
  • Playback via context_uri already worked
  • New: GET /v1/playlists/{id}/items for browsing tracks/episodes inside a playlist
  • Spotify Development Mode only returns items for playlists you own or collaborate on; other playlists get HTTP 403

What changed

  • Added Spotify:playlist_items with pagination and additional_types=track,episode
  • <CR> on a playlist opens its items when allowed
  • On 403, jam.nvim notifies and plays the playlist instead
  • Added l: search prefix for playlists-only filtering
  • Mixed search now interleaves types so PLAYLIST rows aren't buried under tracks/albums/artists
  • Search limit capped at Spotify Dev Mode max of 10
  • Docs/tests updated for the new behavior

How to see playlists

  • Unfiltered search: look for the PLAYLIST label in the left column (now mixed in earlier)
  • Playlist-only: type l: discover weekly (or any playlist query)

Testing

  • tests/provider.lua (playlist items, l: filter, interleaved results, limit cap)
  • tests/smoke.lua (capability flag)
  • Existing picker/oauth smoke tests
Open in Web Open in Cursor 

Browse playlist tracks and episodes via Spotify's /playlists/{id}/items
endpoint, matching album and podcast drill-down. Falls back to playing
the playlist when Spotify forbids browsing (owned/collaborator-only).

Co-authored-by: bautistaaa <bautistaaa@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Spotify playlist drill-down support to jam.nvim so users can browse and play individual tracks/episodes inside playlists (with a Development Mode fallback when Spotify denies access).

Changes:

  • Implemented Spotify:playlist_items (paginated) and exposed a playlist_items capability.
  • Updated the Telescope picker to drill down into playlist contents on <CR>, and to fall back to playing the playlist on HTTP 403.
  • Added l: search prefix for playlists and updated docs/tests accordingly.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.

Show a summary per file
File Description
lua/jam/providers/spotify.lua Adds playlist-items fetch with pagination, extends normalization for playlist item counts, and adds l: search filtering.
lua/jam/ui/picker.lua Adds playlist drill-down workflow with a 403-handling fallback to “play playlist”.
tests/provider.lua Adds coverage for playlist items pagination/normalization and the new l: prefix behavior.
tests/smoke.lua Validates the new playlist_items capability flag exists.
README.md Documents playlist drill-down and the new l: filter prefix.
doc/jam.txt Updates help docs to include playlist drill-down behavior and l: prefix.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Interleave search types so PLAYLIST rows appear near the top instead of
after every track/album/artist. Cap search limit at Spotify's Dev Mode
max of 10, and document the l: playlist filter.

Co-authored-by: bautistaaa <bautistaaa@users.noreply.github.com>
@bautistaaa
bautistaaa marked this pull request as ready for review July 21, 2026 00:00
@cursor

cursor Bot commented Jul 21, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@bautistaaa
bautistaaa merged commit ebe8979 into main Jul 21, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants