Skip to content

refactor(playback): SDK-owned playback via LightAudioQueueSessions + SDK main consolidation - #3

Merged
gavdevs merged 4 commits into
mainfrom
sdk-owned-playback
Nov 2, 2026
Merged

gavdevs merged 4 commits into
mainfrom
sdk-owned-playback

Conversation

@gavdevs

@gavdevs gavdevs commented Nov 2, 2026

Copy link
Copy Markdown
Owner

Summary

  • Player ownership moves from Kelp's ExoPlayer controller (and the strict Media3 1.5.0 pins) to the SDK's LightAudioQueueSessions: the SDK media service owns the player, queue, transitions, and background lifecycle; Kelp keeps TIDAL stream resolution and the similar-tracks continuation.
  • Merges origin/main v0.2.6: v0.2.5's KelpPlaybackService/TidalMediaSource was a parallel take on the same goal and is superseded; main's catalog, search, action-bar, queue, and settings work is kept.
  • CI repins from codex/kelp-official-sdk to gavdevs/light-sdk main at 251237e, and the companion serverPackage opt-in moves into gradle.properties.
  • Build fixes: checkCertOverride on the server bootstrap (SDK main's hook), and Netty/ktor META-INF merge dedupe for the merged APK.

Verification

  • Fresh clone at the exact CI layout (SDK fetched from GitHub at the pinned revision): :protocol:test :app:testDebugUnitTest :server:testDebugUnitTest :app:assembleDebug all green, 44 unit tests, no flags.
  • SDK side: 323 tests green across plugin/client/shared/ui/server.

Notes

  • Release/R8 path needs TIDAL developer credentials (CI secrets), so it first runs on the next tag.
  • Requires SDK main at 251237e exactly; Kelp and its companion SDK changes ship together.

…essions

Drop Kelp's own ExoPlayer controller and the strict Media3 1.5.0 pins in
app and server. The server module now consumes the SDK client streaming API:
Kelp keeps TIDAL stream resolution (playbackinfopostpaywall, BTS/clear-DASH)
and the similar-tracks continuation, while the SDK media service owns the
player, queue, transitions, and background lifecycle. Requires the companion
SDK fork that carries LightAudioQueueSessions.
…yback

v0.2.5 (55d22ca) reworked playback as a Kelp-owned KelpPlaybackService and
TidalMediaSource; the sdk-owned-playback branch supersedes that with the
SDK's LightAudioQueueSessions, so the merge keeps this branch's controller,
resolves docs toward the SDK design, and drops KelpPlaybackService,
TidalMediaSource, and their manifest declaration. Main's catalog browsing,
search, action-bar, queue, and settings work merges unchanged; its
'only implemented settings' rule is kept in AGENTS.md.
…adata

SDK main carries the cert override as checkCertOverride, consulted by the
installed-caller filter instead of an assignable checkCert. The rebased SDK
server also brings a Netty/ktor stack whose jars share META-INF indexes and
version manifests, so the merged APK drops the legacy index and picks the
first version manifest.
…pt-in

CI was checking out the codex/kelp-official-sdk branch of the old SDK;
everything Kelp needs now lives on gavdevs/light-sdk main, pinned here at
251237e. The serverPackage guard's opt-in moves from ad-hoc -D flags into
gradle.properties so scripts, CI, and local builds agree.
@gavdevs
gavdevs merged commit c12722e into main Nov 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant