Skip to content

feat(views): show spotify playlist folders as collapsible groups in the library - #503

Open
RainbowHawk1993 wants to merge 11 commits into
sonorahq:devfrom
RainbowHawk1993:feat/playlist-folders
Open

RainbowHawk1993 wants to merge 11 commits into
sonorahq:devfrom
RainbowHawk1993:feat/playlist-folders

Conversation

@RainbowHawk1993

Copy link
Copy Markdown
Contributor

Summary

  • parse the rootlist's start-group and end-group markers into a nested playlist folder tree
  • show folders in the library's playlist list and grid as groups that open and close, nested folders included
  • open every folder holding a match while a filter query is typed
  • let a table source nest rows under collapsible branches, sorted among their siblings

@vrdons

vrdons commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

any screenshot if possible?

@RainbowHawk1993

Copy link
Copy Markdown
Contributor Author

Folder with subfolder that has playlists:

image image

Trying to enter a search query:

image image

Playlists that aren't inside any folder go to the bottom of the view. Below all the folders:

image image

@RainbowHawk1993

RainbowHawk1993 commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

I use spotify folders a lot as you can see. Original implementation clumped all playlists into 1 view.

I haven't added ability to create folders via Sonora. Also no ability to move playlist into/out of a folder. I might look into adding these separately.

This change shouldn't impact view of YTMusic or Local Files at all.

@vrdons

vrdons commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

This change shouldn't impact view of YTMusic or Local Files at all.

it would be good to see that on ytmusic playlistes. On the next step. You can add local support with creating/deleting folder adding/remove sound feature. Because its not fair that specific features for specific conditions

@RainbowHawk1993

Copy link
Copy Markdown
Contributor Author

As far as I'm aware ytmusic doesn't support playlist folders, so I don't think we can support this one?

For local files, yeah makes sense to support this.

@vrdons

vrdons commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

As far as I'm aware ytmusic doesn't support playlist folders, so I don't think we can support this one?

For local files, yeah makes sense to support this.

https://docs.rs/ytmusicapi/latest/ytmusicapi/struct.YTMusicClient.html#method.get_library_playlists
Also official youtube music application has playlist feature too

@RainbowHawk1993

Copy link
Copy Markdown
Contributor Author

https://docs.rs/ytmusicapi/latest/ytmusicapi/struct.YTMusicClient.html#method.get_library_playlists
Also official youtube music application has playlist feature too

This seems to be an endpoint that returns list of users' playlists, not folders?

This is a PR for showing folders of playlists for Spotify, which YTMusic doesn't support afaik.

Folder contains many playlists, playlist contains many songs.

@vrdons

vrdons commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

https://docs.rs/ytmusicapi/latest/ytmusicapi/struct.YTMusicClient.html#method.get_library_playlists
Also official youtube music application has playlist feature too

This seems to be an endpoint that returns list of users' playlists, not folders?

This is a PR for showing folders of playlists for Spotify, which YTMusic doesn't support afaik.

Folder contains many playlists, playlist contains many songs.

Oh my bad🫪 i never heard of folder thing in spotify

@RainbowHawk1993

Copy link
Copy Markdown
Contributor Author

Oh my bad🫪 i never heard of folder thing in spotify

For some reason they don't let you created folders on mobile client.
I always use their desktop/web client to manage my folders.

I have over a thousand playlists made/followed, so being able to do stuff like:

📁 Electronic
├── 📂 DnB
│   ├── Playlist 1
│   └── Playlist 2
└── 📂 House
    └── Playlist 1
📁 Metal
├── 📂 Power
│   └── Playlist 1
└── 📂 Death
    ├── Playlist 1
    └── Playlist 2

is very handy for me.
So I am looking into whether I can support this feature fully in Sonora. Fetching/searching works so far 😅.

@zxsleebu

Copy link
Copy Markdown
Collaborator

hey, thanks for this. I built on your parsing code, it does exactly what it needs to.

i did change the UI direction though: the tree didn't play well with sorting or the grid, so folders are cards now, and each one opens its own page. rebased onto dev and pushed it into this PR, your commit is still first

@sonora-buddy sonora-buddy Bot added documentation Improvements or additions to documentation i18n translations, missing strings, plurals, locale selection icons the icon packs local the local music folder, scanning, tags, artwork, local playlists spotify the Spotify backend, its library, search and sign-in state subsonic a Subsonic or Navidrome server ui rendering, layout, theming, icons, fonts, the window itself youtube the YouTube Music backend, its library, search and sign-in labels Sep 14, 2026
@sonora-buddy sonora-buddy Bot added library playlists, albums, artists, history, pins and the browsing screens playback audio output, stutter, gaps, seeking, volume, the equalizer and removed i18n translations, missing strings, plurals, locale selection labels Sep 14, 2026
@zxsleebu
zxsleebu force-pushed the feat/playlist-folders branch from d17b9d0 to ae6e730 Compare September 15, 2026 12:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation icons the icon packs library playlists, albums, artists, history, pins and the browsing screens local the local music folder, scanning, tags, artwork, local playlists playback audio output, stutter, gaps, seeking, volume, the equalizer spotify the Spotify backend, its library, search and sign-in subsonic a Subsonic or Navidrome server ui rendering, layout, theming, icons, fonts, the window itself youtube the YouTube Music backend, its library, search and sign-in

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants