Repository navigation
Bridge 2d-1: podcasts in the player - #119
Merged
Merged
Conversation
App version 2.2.0 so the server shows podcast libraries to this player. Library.kind, Book.episode, the podcasts and podcast_fetch flags, the id3_chap chapters source, the podcast routes in ApiClient with the 503 fetch-pending decode, query hooks, a dev-only cross-origin identify override, the listener strings in all six locales, and the server's wire-2b golden as a test fixture.
An episode not on its server yet goes through the new episode fetch controller: one stream probe, then the fetch status every Retry-After seconds, then a start in place once it is ready. Retry is the only POST. The full player shows a fetch panel in its place; the docked bar and the mini player carry a strip. Episodes never open the end credits (Up next only, with auto-play), never cast, and are never downloaded, auto-downloaded or kept ahead.
…tion (Bridge 2d-1)
…nd in the strip; align the show link
…bs for an episode, picker icon beside its label
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: podcasts in the player. App version 2.2.0.
What
Library.kind, the podcast types,Book.episode,id3_chap; client methods for shows, episodes, follow/unfollow, fetch status and Retry;PodcastFetchPendingErrorkeepsfetchandRetry-Afterfrom a stream 503./podcastshow page (serial oldest first, episodic newest first,?order=toggle, paged list), and the episode page in place of the book page.capabilities.podcastsis true and for adults (not kids or demo); private-feed unfollow asks first.src/playback/episode-fetch.ts): aRange: bytes=0-0probe, then status polling every max(2, Retry-After) s, paused in the background, cancelled on a newer start, a profile switch or a removed connection. At ready it refreshes the item and chapters, then starts once. It never POSTs on its own; Try again does. A full-player panel plus a dock/mini-player strip, with localized reasons.EXPO_PUBLIC_IDENTIFY_CROSS_ORIGIN=1sends the client header cross-origin, so thenpm run webloop can see podcasts.Tests and gate
npx tsc --noEmit, lint, prettier,npm test(418 suites, 5138 tests),npx expo export -p web. New client, controller, start-book, player-route, model, component, home, kids and locale tests; the wire goldens are copied from the server'sphase2c2/wire-2b.json.Verification (live, Chromium 1440/390 and WebKit for the fetch flow)
/streamper fetch; 503 after 1.97 s; ready to audio in 164-294 ms.id3_chapchapters, background pause, abort, failed and Try again, unavailable,fetch_limit, the timeline-changed notice, books regression, kids (API and UI, including a failed library list), admin console: all PASS.Pairs with KodeStar/audiosilo-server#169, KodeStar/audiosilo-docs#160 and KodeStar/audiosilo#82.