* Add AddServerScreen * Upgrade androidx-compose-material3 and androidx-compose-ui to alpha * Add DiscoveredServerComponent * Show discovered servers * Add navigation using compose-destinations * Implement Loginscreen * Start of HomeScreen * Use coil for home screen images and update layout with spacers * Select correct startRoute based on conditions * Upgrade compose material3 to 1.1.0-alpha05 * Add series title, max 1 line, padding * Upgrade dependencies * Switch to TvLazyColumn and TvLazyRow * Add header to `HomeScreen` * Add progress bar to Continue watching items * Limit the number of lines under Movie or Show and use correct episode text * chore: run ktlintFormat * ci: assemble tv * feat: `LibraryScreen` * fix: update to reworked items system * chore(deps): update androidx-paging-compose and compose-destination Also fix lint issue on HomeScreen * feat: start using androidx.material3 composables * feat: add coil svg * feat: experimenting with cards * lint: fix linting issues * feat: server select screen * build: upgrade dependencies * lint: run ktlintFormat * feat(ServerSelectScreen): add "No servers found" text * feat: update AddServerScreen * feat: implement `UiText.asString()` composable * lint: run ktlintFormat * refactor(phone): remove livedata from `ServerSelectScreen` * feat: add `UserSelectScreen` * feat(UserSelectScreen): load user's profile picture * feat: update LoginScreen * feat: update progress indicator on `AddServerScreen` * fix: change color of `ServerComponent` * style(ServerSelect): use material typography * chore: update ktlint config in build.gradle * style: use material typography * refactor: move home screen to separate layout function so it can be previewed - Introduce dummy items - Fix `UiText.asString()` composable * refactor: preview `LibraryScreen` * refactor: preview `ServerSelectScreen` * refactor: preview `AddServerScreen` * refactor: preview `UserSelectScreen` * refactor: preview `LoginScreen` * lint: run ktlintFormat * feat: switch servers * feat: main screen tabs navigation * feat: add Live TV tab (not shown for now) * chore: remove libraries from `HomeViewModel` * chore: change colors of selected tab * feat: new item card component * chore: remove `HomeItem.Libraries` * style: update spacing * feat: add findroid icon and profile button on main screen * style(main): add gradient background * fix: use "latest" + library name in home screen * fix: navigate from LoginScreen and UserSelectScreen to MainScreen * style: update tab colors * fix: remove reference to `HomeItem.Libraries` from `ViewListAdapter` * chore: update kotlin compiler to 1.5.0 * feat: add horizontal item card variant * feat: `LibrariesScreen` * feat: `LibraryScreen` * fix(`LibraryScreen`): remove hardcoded library name * feat: `MovieScreen` * feat(`MovieScreen`): Make trailer button work Also hide the button when there is no trailer * refactor(`MovieScreen`): move click logic out of layout * refactor: create `FindroidImages` which holds all image uris * build: upgrade androidx.tv to 1.0.0-alpha08 * chore: update compose libraries * chore: update compose compiler to 1.5.1 * fix(ItemCard): only show progress when horizontal * refactor: clean build.gradle.kts * build: up minSdk to 28 and targetSdk to 34 * refactor: use spacings to provide paddings (#443) * feat: add Spacings in MaterialTheme * style: use MaterialTheme.spacings in layouts Using sizes in Spacer & padding & PaddingValues to standardize it. * fix: linting issues and a few paddings * feat: use spacings in `LibraryScreen` * feat: use spacings in `MovieScreen` * fix: missing trailing comma * refactor: replace hardcoded spacer in ItemCard with spacing --------- Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com> * build: migrate to ksp and upgrade compose compiler * build: upgrade compose libraries * fix: align with main codebase * chore: update agp to 8.1.3 * chore: update ksp and compose-destinations ksp 1.9.10-1.0.13 -> 1.9.20-1.0.14 compose-destinations 1.9.51 -> 1.9.54 * refactor(UserSelectViewModel): use channel for events * feat: basic video player First implementation of the video player. Uses the basic player view with no custom layout. Only media keys are passed to the PlayerView. * feat: show screen Still a work in progress * fix: make player background black * fix(player): keep screen on * feat: add border around focused tab * lint: run ktlintFormat * feat: focus improvements * feat: logo for main screen * fix: remember tab position * feat: add loading indicator to main screen And fix home and libraries screen list refresh on navigating back * feat: add seasons to show screen * feat: add season screen * feat: add progress badge * chore(deps) update dependencies android-plugin 8.1.3 -> 8.1.4 androidx-activity 1.8.0 -> 1.8.1 androidx-media3 1.1.1 -> 1.2.0 coil 2.4.0 -> 2.5.0 kotlinx-serialization 1.6.0 -> 1.6.1 * ci: upload tv artifacts and don't build universal apks * chore: get rid of deprecated android.defaults.buildfeatures.buildconfig * build: upgrade dependencies android-plugin 8.1.4 -> 8.2.0 androidx-room 2.6.0 -> 2.6.1 androidx-work 2.8.1 -> 2.9.0 jellyfin 1.4.5 -> 1.4.6 compose compiler 1.5.4 -> 1.5.5 * fix: workManagerConfiguration is now a property * feat: add profile picture to main screen * feat: start of settings screen * refactor: base tv theme on normal compose material theme * chore(deps): update kotlin to 1.9.21 kotlin 1.9.20 -> 1.9.21 ksp 1.9.20-1.0.14 -> 1.9.21-1.0.15 compose-compiler 1.5.5 -> 1.5.6 * feat(settings): add categories and pop backstack when navigating to main screen * feat(settings): nested settings and switch setting * feat(settings): settings select component * feat(settings): icons for cache and about * feat(settings): add option to toggle mpv player * feat(settings): move preference value logic to viewmodel * feat(settings): add dependencies * chore: update compose compiler compose-compiler 1.5.6 -> 1.5.7 * feat(settings): add settings detail select card New sub settings screen with different layout Settings detail select card to select an option * feat: play episode from home screen * feat(player): basic custom overlay Courtesy of Android TV JetStreamCompose sample * feat(player): add track selection dialog * feat(player): add media session and clean up dpad events * refactor(mpv): implement track selection via TrackSelectionParameters Need to add ability to disable track type * feat: implement watched and favorite buttons * refactor: remove unused PreferenceType enum ---------
91 lines
6.3 KiB
TOML
91 lines
6.3 KiB
TOML
[versions]
|
|
aboutlibraries = "10.9.2"
|
|
android-plugin = "8.2.0"
|
|
androidx-activity = "1.8.1"
|
|
androidx-appcompat = "1.6.1"
|
|
androidx-compose-material3 = "1.2.0-alpha09"
|
|
androidx-compose-ui = "1.6.0-alpha07"
|
|
androidx-constraintlayout = "2.1.4"
|
|
androidx-core = "1.12.0"
|
|
androidx-hilt = "1.1.0"
|
|
androidx-lifecycle = "2.6.2"
|
|
androidx-media3 = "1.2.0"
|
|
androidx-navigation = "2.7.5"
|
|
androidx-paging = "3.2.1"
|
|
androidx-preference = "1.2.1"
|
|
androidx-recyclerview = "1.3.2"
|
|
androidx-room = "2.6.1"
|
|
androidx-swiperefreshlayout = "1.1.0"
|
|
androidx-tv = "1.0.0-alpha10"
|
|
androidx-work = "2.9.0"
|
|
coil = "2.5.0"
|
|
hilt = "2.48.1"
|
|
compose-destinations = "1.9.54"
|
|
jellyfin = "1.4.6"
|
|
kotlin = "1.9.21"
|
|
kotlinx-serialization = "1.6.1"
|
|
ksp = "1.9.21-1.0.15"
|
|
ktlint = "11.6.1"
|
|
libmpv = "0.1.3"
|
|
material = "1.10.0"
|
|
timber = "5.0.1"
|
|
|
|
[libraries]
|
|
aboutlibraries-core = { module = "com.mikepenz:aboutlibraries-core", version.ref = "aboutlibraries" }
|
|
aboutlibraries = { module = "com.mikepenz:aboutlibraries", version.ref = "aboutlibraries" }
|
|
androidx-activity = { module = "androidx.activity:activity", version.ref = "androidx-activity" }
|
|
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" }
|
|
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
|
|
androidx-compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "androidx-compose-material3" }
|
|
androidx-compose-ui = { module = "androidx.compose.ui:ui", version.ref = "androidx-compose-ui" }
|
|
androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "androidx-compose-ui" }
|
|
androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "androidx-compose-ui" }
|
|
androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidx-constraintlayout" }
|
|
androidx-core = { module = "androidx.core:core", version.ref = "androidx-core" }
|
|
androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "androidx-hilt" }
|
|
androidx-hilt-work = { module = "androidx.hilt:hilt-work", version.ref = "androidx-hilt" }
|
|
androidx-hilt-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "androidx-hilt" }
|
|
androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime", version.ref = "androidx-lifecycle" }
|
|
androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle" }
|
|
androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" }
|
|
androidx-media3-common = { module = "androidx.media3:media3-common", version.ref = "androidx-media3" }
|
|
androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "androidx-media3" }
|
|
androidx-media3-exoplayer-hls = { module = "androidx.media3:media3-exoplayer-hls", version.ref = "androidx-media3" }
|
|
androidx-media3-ui = { module = "androidx.media3:media3-ui", version.ref = "androidx-media3" }
|
|
androidx-media3-session = { module = "androidx.media3:media3-session", version.ref = "androidx-media3" }
|
|
androidx-navigation-fragment = { module = "androidx.navigation:navigation-fragment", version.ref = "androidx-navigation" }
|
|
androidx-navigation-ui = { module = "androidx.navigation:navigation-ui", version.ref = "androidx-navigation" }
|
|
androidx-paging = { module = "androidx.paging:paging-runtime", version.ref = "androidx-paging" }
|
|
androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "androidx-paging" }
|
|
androidx-preference = { module = "androidx.preference:preference", version.ref = "androidx-preference" }
|
|
androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "androidx-recyclerview" }
|
|
androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "androidx-room" }
|
|
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "androidx-room" }
|
|
androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "androidx-swiperefreshlayout" }
|
|
androidx-work = { module = "androidx.work:work-runtime", version.ref = "androidx-work" }
|
|
androidx-tv-foundation = { module = "androidx.tv:tv-foundation", version.ref = "androidx-tv" }
|
|
androidx-tv-material = { module = "androidx.tv:tv-material", version.ref = "androidx-tv" }
|
|
coil = { module = "io.coil-kt:coil", version.ref = "coil" }
|
|
coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" }
|
|
coil-svg = { module = "io.coil-kt:coil-svg", version.ref = "coil" }
|
|
compose-destinations-core = { module = "io.github.raamcosta.compose-destinations:core", version.ref = "compose-destinations" }
|
|
compose-destinations-ksp = { module = "io.github.raamcosta.compose-destinations:ksp", version.ref = "compose-destinations" }
|
|
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" }
|
|
hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt" }
|
|
jellyfin-core = { module = "org.jellyfin.sdk:jellyfin-core", version.ref = "jellyfin" }
|
|
libmpv = { module = "dev.jdtech.mpv:libmpv", version.ref = "libmpv" }
|
|
material = { module = "com.google.android.material:material", version.ref = "material" }
|
|
timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" }
|
|
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" }
|
|
|
|
[plugins]
|
|
aboutlibraries = { id = "com.mikepenz.aboutlibraries.plugin", version.ref = "aboutlibraries" }
|
|
android-application = { id = "com.android.application", version.ref = "android-plugin" }
|
|
android-library = { id = "com.android.library", version.ref = "android-plugin" }
|
|
androidx-navigation-safeargs = { id = "androidx.navigation.safeargs.kotlin", version.ref = "androidx-navigation" }
|
|
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
|
|
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
|
kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }
|
|
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
|
|
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
|
|
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" }
|