Repository navigation
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… its folders Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # Spotifly/Views/LoggedInView.swift
# Conflicts: # Spotifly/Store/Services/PlaylistService.swift
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # Spotifly/Views/LibraryListView.swift
The toolbar's refresh no longer restores the selection (#169), and the list's rows read the playback view model from the environment. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It was a tap gesture with a button trait, which announced a button and did nothing when pressed. It now says whether the folder is open, too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PlaylistService.loadSection is what the toolbar's refresh, pull-to-refresh and Try again call; only the toolbar reloaded the outline. The folder glyph is Artwork's placeholder, and the open folders have one setter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both had become plain buttons with the same layout written out twice. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # Spotifly/Views/LoggedInView.swift
The folders' changelog entry moves back under Unreleased: main released 1.3.0 by renaming that section, and the merge left the entry in it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes
plans/open/playlist-folder-hierarchy.md: the Playlists section shows the folders your playlists are in on Spotify.What was measured
From the web player's session, the app's own
libraryV3query, recording counts and kinds only. Your account: 38 playlists, 4 folders, none nested.flatten: false+ folderUri: <folder>+ expandedFolders: [<one>]+ expandedFolders: [<all four>]offset: 10, limit: 10flatten: true+ folders includedA folder is
__typename: "Folder", with{name, uri, playlistCount, folderCount}, and every entry carries adepth. So the tree arrives as one offset-paged list once every folder is named inexpandedFolders; the flattened list can't carry it.What changed
PlaylistService.loadPlaylistOutline):PlaylistOutlineRows: a folder by its full uri, or a playlist by its id, each with its depth.LibraryListViewtakes an optional outline:PathfinderPlaylist.idstill refuses a folder's uri. Folders are recognised bySpotifyURI.folderUri.Rendered in the test host (a temporary test): a playlist added at the top, the selected one, an open folder with its playlist indented and the chevron down, a closed folder with its playlist hidden and the chevron right, then a last playlist.
Reviews
/simplify, 4 reviewers:SpotifyURI.folderUri.PaginationStatein the pass loop./code-review medium: two findings, both fixed.Tests:
All 449 unit tests pass, and
swiftformat --swiftversion 6.4 --lint .exits 0.Manual testing
After signing in again (see #88):
Tested (2026-09-30)
Brought up to date with main; the conflict with #96 in
PlaylistServicekeeps both sides.Updated 2026-10-02
I brought the branch up to date with main, which had moved a lot. Three changes on top:
Button. It was a tap gesture with a button trait, which announced itself to accessibility as a button and did nothing when pressed. VoiceOver couldn't open a folder. It now opens and closes when pressed, and says "Geöffnet" or "Geschlossen" (two new strings in each language).PlaylistService.loadSection(forceRefresh:). A forced load reloads the outline beside the flat list, and it's what the toolbar's refresh, pull-to-refresh and Try again all call. Before, only the toolbar reloaded the outline.Artwork's placeholder;Tested again (2026-10-02)
Reviews of the new commits
/simplify, 4 reviewers.Artwork, and the setter.Later the same night: #180 made the playlist, album and artist rows buttons too, for the same accessibility reason. I merged main again. The folder row and the entry row now share one label view (
LibraryRowLabel) instead of writing the layout twice. Both kinds of row look as before, a folder still opens and closes, and 619 tests pass.Still yours, as before: creating and deleting a playlist (step 5) and adding a track through the menu (step 6). Both change the library, and step 6 needs a context menu.
🤖 Generated with Claude Code