Pocket Casts serves an Up Next recommendation row. Its only item is the Up Next playlist, titled with the episode at the head of the queue (podcast as subtitle, podcast artwork).
The frontend (2.17.297.post1, shipped with MA 2.10.8) builds Top Picks for You client-side from the first items of the visible recommendation rows, so the head of Up Next shows up there. Clicking or playing it loads the whole playlist. An empty Up Next yields an empty row, which the frontend hides along with the pick.
Caveats (frontend behaviour, not changeable from the provider):
Hiding the Up Next row on the home screen also removes it from Top Picks.
Top Picks holds 9 tiles. The refresh button shuffles rows, so with more than 9 non-empty visible rows the pick can drop out after a refresh.
Tests: Pocket Casts provider suite 23/23 on 2.10.7 (provider identical in 2.10.8); ruff, ruff format, mypy clean.
Pocket Casts serves an **Up Next** recommendation row. Its only item is the Up Next playlist, titled with the episode at the head of the queue (podcast as subtitle, podcast artwork).
The frontend (2.17.297.post1, shipped with MA 2.10.8) builds *Top Picks for You* client-side from the first items of the visible recommendation rows, so the head of Up Next shows up there. Clicking or playing it loads the whole playlist. An empty Up Next yields an empty row, which the frontend hides along with the pick.
Caveats (frontend behaviour, not changeable from the provider):
- Hiding the *Up Next* row on the home screen also removes it from Top Picks.
- Top Picks holds 9 tiles. The refresh button shuffles rows, so with more than 9 non-empty visible rows the pick can drop out after a refresh.
Tests: Pocket Casts provider suite 23/23 on 2.10.7 (provider identical in 2.10.8); ruff, ruff format, mypy clean.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Pocket Casts now serves an Up Next recommendation row whose single item is
the Up Next playlist, titled with the episode at the head of the queue
(podcast as subtitle, podcast artwork). The frontend builds Top Picks for
You from the first items of the visible recommendation rows, so the head of
Up Next shows there; clicking or playing it loads the whole playlist. An
empty Up Next yields an empty row, which the frontend hides together with
the pick.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
k.renner
requested review from review-bot 2026-10-28 12:04:03 +00:00
🤖Automated review — model claude-sonnet-5-5, commit 9bb5490c330bb394694b19c57de9aea9ce299c2b.
Automated review by the review-bot: it approves only when it found nothing red or yellow, and a human still merges. Request a review from review-bot again for a fresh one.
Summary
This PR adds RecommendationFolder support to the Pocket Casts provider. It exposes a single "Up Next" recommendation row. That row's only item is the Up Next playlist, renamed to the title of the episode at the head of the queue, so the frontend's Top Picks can surface it. The change is small and self-contained, and I found no defects.
⚪ Unverified
I could not read the Music Assistant base class, so I did not check that get_recommendations and get_recommendation_items match the MusicProvider signatures for ProviderFeature.RECOMMENDATIONS. The code matches the PR's description. The PR body says the provider suite passes on MA 2.10.7 and 2.10.8, but I did not run it.
The Top Picks and frontend behaviour described in the PR body is frontend-side. I did not verify it.
🟡 Suggestions
__init__.py:314 — when the payload has no podcast name, first.podcast.name is "". _get_special_folder_episodes falls back to a name lookup that can also return "" on failure. The row would then render with an empty subtitle. Consider falling back to the default owner, for example playlist.owner = first.podcast.name or playlist.owner.
__init__.py:308 — an API error here propagates out of get_recommendation_items. That is probably fine, since the MA controller likely isolates per-provider failures, but I did not verify it.
Tests
The PR changes only __init__.py and adds no tests. The PR body cites a 23/23 provider suite, but it does not show any new test for this feature. A test should cover three cases:
get_recommendations returns one folder with id up_next.
get_recommendation_items("up_next") returns a playlist named after the first episode, or an empty list when Up Next is empty.
An unknown item_id returns an empty list.
Recommendation
Looks reasonable — no blocking issues; comments above are optional.
🤖 **Automated review** — model `claude-sonnet-5-5`, commit `9bb5490c330bb394694b19c57de9aea9ce299c2b`.
> Automated review by the `review-bot`: it approves only when it found nothing red or yellow, and a human still merges. Request a review from `review-bot` again for a fresh one.
---
## Summary
This PR adds `RecommendationFolder` support to the Pocket Casts provider. It exposes a single "Up Next" recommendation row. That row's only item is the Up Next playlist, renamed to the title of the episode at the head of the queue, so the frontend's Top Picks can surface it. The change is small and self-contained, and I found no defects.
## ⚪ Unverified
- I could not read the Music Assistant base class, so I did not check that `get_recommendations` and `get_recommendation_items` match the `MusicProvider` signatures for `ProviderFeature.RECOMMENDATIONS`. The code matches the PR's description. The PR body says the provider suite passes on MA 2.10.7 and 2.10.8, but I did not run it.
- The Top Picks and frontend behaviour described in the PR body is frontend-side. I did not verify it.
## 🟡 Suggestions
- `__init__.py:314` — when the payload has no podcast name, `first.podcast.name` is `""`. `_get_special_folder_episodes` falls back to a name lookup that can also return `""` on failure. The row would then render with an empty subtitle. Consider falling back to the default owner, for example `playlist.owner = first.podcast.name or playlist.owner`.
- `__init__.py:308` — an API error here propagates out of `get_recommendation_items`. That is probably fine, since the MA controller likely isolates per-provider failures, but I did not verify it.
## Tests
The PR changes only `__init__.py` and adds no tests. The PR body cites a 23/23 provider suite, but it does not show any new test for this feature. A test should cover three cases:
- `get_recommendations` returns one folder with id `up_next`.
- `get_recommendation_items("up_next")` returns a playlist named after the first episode, or an empty list when Up Next is empty.
- An unknown `item_id` returns an empty list.
## Recommendation
Looks reasonable — no blocking issues; comments above are optional.
<!-- pr-review:sha=9bb5490c330bb394694b19c57de9aea9ce299c2b -->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Pocket Casts serves an Up Next recommendation row. Its only item is the Up Next playlist, titled with the episode at the head of the queue (podcast as subtitle, podcast artwork).
The frontend (2.17.297.post1, shipped with MA 2.10.8) builds Top Picks for You client-side from the first items of the visible recommendation rows, so the head of Up Next shows up there. Clicking or playing it loads the whole playlist. An empty Up Next yields an empty row, which the frontend hides along with the pick.
Caveats (frontend behaviour, not changeable from the provider):
Tests: Pocket Casts provider suite 23/23 on 2.10.7 (provider identical in 2.10.8); ruff, ruff format, mypy clean.
🤖 Generated with Claude Code
🤖 Automated review — model
claude-sonnet-5-5, commit9bb5490c330bb394694b19c57de9aea9ce299c2b.Summary
This PR adds
RecommendationFoldersupport to the Pocket Casts provider. It exposes a single "Up Next" recommendation row. That row's only item is the Up Next playlist, renamed to the title of the episode at the head of the queue, so the frontend's Top Picks can surface it. The change is small and self-contained, and I found no defects.⚪ Unverified
get_recommendationsandget_recommendation_itemsmatch theMusicProvidersignatures forProviderFeature.RECOMMENDATIONS. The code matches the PR's description. The PR body says the provider suite passes on MA 2.10.7 and 2.10.8, but I did not run it.🟡 Suggestions
__init__.py:314— when the payload has no podcast name,first.podcast.nameis""._get_special_folder_episodesfalls back to a name lookup that can also return""on failure. The row would then render with an empty subtitle. Consider falling back to the default owner, for exampleplaylist.owner = first.podcast.name or playlist.owner.__init__.py:308— an API error here propagates out ofget_recommendation_items. That is probably fine, since the MA controller likely isolates per-provider failures, but I did not verify it.Tests
The PR changes only
__init__.pyand adds no tests. The PR body cites a 23/23 provider suite, but it does not show any new test for this feature. A test should cover three cases:get_recommendationsreturns one folder with idup_next.get_recommendation_items("up_next")returns a playlist named after the first episode, or an empty list when Up Next is empty.item_idreturns an empty list.Recommendation
Looks reasonable — no blocking issues; comments above are optional.