summaryrefslogtreecommitdiff
path: root/app/build.gradle.kts
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-09-21 12:00:25 -1000
committerPeter Stone <thepeterstone@gmail.com>2026-09-23 22:50:55 -1000
commit84ec886721f9f6052447a19e84d6c8e8d9f62ae6 (patch)
treeaea029473ab9a0fc70deb92a61b0f3f4007798b1 /app/build.gradle.kts
parentaf92823efb95cd8b29a81f244916e56d70b02150 (diff)
Add artwork, a real player screen, and queue drag-reorder
Closes three of the four Phase 1 gaps in CLAUDE.md's "Known gaps": artwork was parsed and passed to the lock screen but never rendered, playback had a transport bar with no scrubbing or per-show speed, and QueueOrdering.move was tested but unreachable from any screen. Android Auto real-car verification stays deferred, per Peter's call. - Artwork: new Artwork.preferredUrl (episode image falling back to the show's), resolved once at EpisodeEntity.toMediaItem's MediaMetadata boundary so the lock screen, Android Auto, the now-playing bar and the new player screen all read it from one place. Coil3 wired to the app's own OkHttpClient. Pinned to 3.3.0: later releases require a newer Kotlin stdlib or Compose than this project runs (Compose 1.12 needs compileSdk 37, one above what AGP 8.13.2 supports). - Player screen: scrubbing (PlayerConnection.seekTo, committed on drag release) and per-show speed (PlayerViewModel.setShowSpeed persists SubscriptionEntity.playbackSpeed via a new SubscriptionDao.updateSpeed) -- the field existed since Phase 1 with nothing to reach it. Opened by tapping the now-playing bar's title/artwork; Up Next moved to its own icon there. - Queue reorder: drag-and-drop via sh.calvin.reorderable, backed by a new QueueRepository.reorder that writes the final order once on drag release rather than per drag step (the gesture reports intermediate positions continuously). Coverage baseline drop (62.10% -> 61.15%) is entirely in already-0%-covered Media3 glue -- see COVERAGE_EXCEPTION. The new pure logic (Artwork, QueueRepository.reorder) is fully covered by new tests. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Sj3CoWEedM56bebByKgNxA
Diffstat (limited to 'app/build.gradle.kts')
-rw-r--r--app/build.gradle.kts12
1 files changed, 12 insertions, 0 deletions
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index b8bfb12..f680a08 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -84,6 +84,18 @@ dependencies {
implementation("androidx.compose.material3:material3")
implementation("androidx.compose.material:material-icons-extended")
+ // Artwork loading. Wired to the app's own OkHttpClient (see AppGraph.imageLoader)
+ // rather than Coil's default, so image fetches share connection pooling and timeouts
+ // with the rest of the app. Pinned to 3.3.0: 3.4.0+ requires a newer Kotlin stdlib than
+ // this project's 2.2.21, and 3.6.0+ pulls Compose 1.12, which needs compileSdk 37 --
+ // one above the max AGP 8.13.2 supports.
+ val coil = "3.3.0"
+ implementation("io.coil-kt.coil3:coil-compose:$coil")
+ implementation("io.coil-kt.coil3:coil-network-okhttp:$coil")
+
+ // Drag-to-reorder for the queue screen, backing QueueOrdering.move.
+ implementation("sh.calvin.reorderable:reorderable:3.1.0")
+
// Media3 is the whole playback stack: ExoPlayer for decode and speed control,
// MediaSessionService for lock-screen and Bluetooth transport, and its DownloadManager,
// which shares a cache with playback so a partly-downloaded episode streams the remainder