Repository navigation
Bridge 2d-1: podcasts for players from 2.2.0 - #169
Merged
Merged
Conversation
Set auth.PodcastPlayerMinVersion to 2.2.0, the first player with podcast views. Released 2.1.x and older players stay hidden. Tests pin the shipped minimum, add released/newer/just-below rows to the client gate matrix, and check a released player's stored client lets a headerless ?token= stream through the gate.
Fold the stored-client stream check into the gate matrix's headerless block and the shipped-minimum boundaries into TestPodcastGate; the shipped test now only pins the value.
TestPodcastGate tests the shipped minimum itself and refuses other apps at a passing version.
A whole-list replace (PUT /me/queue, PUT /me/collections/{id}/items) from
a client the podcast gate hides podcasts from deleted the user's episodes,
since they were outside that caller's scopes. catalog.GatedScopes gives
the podcast scopes the gate alone hides; SetQueue and SetCollectionItems
take them as keep, and orderedList.replace keeps those rows after the
listed entry each followed (appended in stored order when the new order
would shuffle them), counting toward the cap like an add's hidden rows.
Revoked shares and podcast-seeing callers keep the delete rule.
This was referenced Oct 23, 2026
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.
Bridge Phase 2d-1, server side: players from 2.2.0 see podcast libraries.
What
auth.PodcastPlayerMinVersion = "2.2.0": the first player with podcast views. 2.1.x and older store builds, the Bridge, the manager, API keys and headerless clients stay hidden. Headerless?token=media follows the token's stored client.PUT /me/queue,PUT /me/collections/{id}/items) from a client that cannot see podcasts now keeps the user's podcast-library entries it cannot see (catalog.GatedScopes,orderedList.replace). Each kept entry stays after the entry it followed; it falls back to stored order at the end when the new order would shuffle them, and counts toward the cap (oldest kept evicted). Entries hidden by a revoked share or an unfollowed private show are still deleted. A podcast-seeing caller's replace is unchanged.Tests
TestPodcastGatesweeps the minimum over "" and 2.2.0 with boundary rows;TestPodcastPlayerMinVersionShippedpins the value; gate matrix rows for released/newer (allowed) and 2.1.9 (denied); the headerless stored-client stream in the matrix.lists_gate_test.go(catalog) andTestPodcastListReplaceKeepsEpisodesForOldPlayers(api), allowed and denied for queue and collection items.go test -race ./..., golangci-lint (0 issues).internal/backupTestStartRunsAtOnceflaked once under the full race suite: it predates this branch.Verification (live, real server + Bridge + served /web 2.2.0)
PUT /me/queuesent asAudioSilo/2.1.0 (ios); a 2.2.0 PUT leaving them out removes them.Release: web image 2.2.0 first, then the server (CROSS-REPO §11).
Pairs with KodeStar/audiosilo-frontend#119, KodeStar/audiosilo-docs#160 and KodeStar/audiosilo#82.