ananas/gradle/libs.versions.toml
Jarne Demeulemeester 7171ec72c1
feat: android tv (#598)
* 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

---------
2023-12-30 22:20:20 +01:00

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" }