Browse Clementine's internet services - #291
Merged
Merged
Conversation
Clementine can now be browsed like its Internet sidebar (SomaFM, Radio Browser, Jamendo, Subsonic, saved radio streams...), and put what's there on the playlist as a drag from the sidebar does. This adds an Internet screen, after the Library, shown when Clementine says it can be browsed (SERVER_FEATURE_BROWSE), as the iOS remote does. The top level lists the services, with their own icons. Tapping a node with children opens it; back goes up and asks for that level again, so Clementine keeps it up to date. Tapping a track or stream plays it, or adds it while Clementine is playing, as tapping a song in the library does. A long press on anything that can go on the playlist offers Play now, Play next, Add to playlist and Replace playlist; an opened album or playlist has Play and Add to playlist buttons, with how many items it has. Services that need setting up say so with Clementine's message. Large levels come in pages of up to 500, asked for as the last row shows. Node ids last only as long as the connection, so each new one starts again from the services, and answers from an earlier one are ignored. A node that's gone goes back up a level. The protocol file gains Clementine's browse messages. The store screenshots add the Internet screen's top level, as 10_internet. Release-note: Browse Clementine's internet services, such as radio stations, Jamendo and Subsonic, and play from them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015dJQ8hcp9Vd6tD9gJAXxTx
The CI Clementine gets three saved radio streams, so "Your radio streams" has something to show without depending on a service online. The screenshots open it after the Internet screen's top level, as 11_internet_radio, in light and dark. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015dJQ8hcp9Vd6tD9gJAXxTx
"Your radio streams" is the last of Clementine's services, below the fold, and a lazy list only has the rows in sight. The dark screenshots also scroll the services back to the top first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015dJQ8hcp9Vd6tD9gJAXxTx
A Compose list says it can't scroll further when it can, so the screenshots stopped after one scroll, short of "Your radio streams". They now scroll until it shows, at most 15 times. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015dJQ8hcp9Vd6tD9gJAXxTx
Store screenshotsFrom run 36606543921, against clementine-it. Left: the store listing on master. Right: this pull request, light and dark.
|
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.



























Adds an Internet screen that browses the tree Clementine's Internet sidebar shows — SomaFM, Radio Browser, Jamendo, Subsonic, Plex, your saved radio streams and the rest — using the protocol from clementine-player/Clementine#7530 (first released in 1.4.1-242). The iOS remote gets the same screens and wording in clementine-player/iOS-Remote#15.
What it does
SERVER_FEATURE_BROWSE; if that goes while it's showing, the app goes to the Queue.Changes
remotecontrolmessages.proto: Clementine's browse messages, enums and fields 70–73 (additions only; the app's version stays 21).check-proto-drift.pypasses.ClementineMessageFactory:buildBrowse/buildBrowseAdd.RemoteRepository: browse support flag and a flow of browse answers tagged by connection.ui/internet/:InternetBrowser(plain, testable state: levels, paging merge, GONE, reset, tap choice, add results),InternetViewModel,InternetScreen.AppShell: the destination, back handling and fallback to the Queue.BrowseList: the library row's tile shared asBrowseTile.Tests and screenshots
InternetBrowserTest(17) andInternetScreenTest(11, Robolectric), plus additions toRemoteRepositoryTest,AppShellTestandClementineMessageFactoryTest.lintFdroidDebug testFdroidDebugUnitTest assembleFdroidDebug bundlePlayReleasepass locally.10_internet(the services) and11_internet_radio("Your radio streams" opened), light and dark. The CI Clementine now has three saved SomaFM streams, so that service has the same rows on every run. Both passed in a manual run ofstore-screenshotson this branch.10_internet/11_internet_radiohave two-digit names, sostore_graphics.pyleaves them out of the store listing; they only appear on pull requests.Release-note: Browse Clementine's internet services, such as radio stations, Jamendo and Subsonic, and play from them.
🤖 Generated with Claude Code
https://claude.ai/code/session_015dJQ8hcp9Vd6tD9gJAXxTx
Generated by Claude Code