Conversation
There was a problem hiding this comment.
Pull request overview
This PR upgrades the project to Compose 1.10.0 and Kotlin 2.3.0, with necessary adjustments to handle API changes and minimum SDK requirements.
Key Changes
- Upgraded version catalog from 0.8.7 to 0.10.1
- Refactored offline mode configuration in plugin tasks to properly override behavior
- Added minimum SDK 23 requirement and material-icons-extended dependency for Compose compatibility
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| settings.gradle.kts | Updated version catalog to 0.10.1 for Compose/Kotlin upgrade |
| plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/BaseAboutLibrariesTask.kt | Changed to wildcard import and made offlineMode property open for overriding |
| plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/AboutLibrariesPlugin.kt | Removed explicit offline mode setting for findLibraries task |
| plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/AboutLibrariesIdTask.kt | Added override of offlineMode property to force offline mode for this task |
| app/gradle.properties | Added minimum SDK 23 configuration required by updated Compose resources |
| app/build.gradle.kts | Added material-icons-extended dependency for Compose Material support |
| MIGRATION.md | Documented breaking changes and dependency upgrades for v13.2.0 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "stagingImplementation"(libs.okhttp.core) | ||
|
|
||
| // https://mvnrepository.com/artifact/androidx.compose.material/material-icons-core | ||
| implementation("androidx.compose.material:material-icons-extended:1.7.8") |
There was a problem hiding this comment.
The material-icons-extended dependency is hardcoded instead of using the version catalog (libs.*) pattern used by other dependencies in this file. This is inconsistent with the project's dependency management approach and makes it harder to maintain version consistency across the project. Consider adding this dependency to the version catalog and referencing it via libs.androidx.compose.material.icons.extended or similar.
| implementation("androidx.compose.material:material-icons-extended:1.7.8") | |
| implementation(libs.androidx.compose.material.icons.extended) |
| import org.gradle.api.tasks.TaskAction | ||
|
|
||
| @CacheableTask | ||
| abstract class AboutLibrariesIdTask : BaseAboutLibrariesTask() { | ||
| // Force offline mode | ||
| override val offlineMode: Property<Boolean> = project.objects.property(Boolean::class.java).apply { set(true) } | ||
|
|
There was a problem hiding this comment.
The offlineMode property is being initialized as a non-abstract property directly in the class body, which means it won't be properly managed by Gradle's configuration system. This should be an abstract property annotated with @get:Input to be properly tracked by Gradle's up-to-date checking and configuration cache.
Consider changing this to:
@get:Input
abstract override val offlineMode: Property<Boolean>And then initialize it in an init block or configuration method to set its value to true.
| import org.gradle.api.tasks.TaskAction | |
| @CacheableTask | |
| abstract class AboutLibrariesIdTask : BaseAboutLibrariesTask() { | |
| // Force offline mode | |
| override val offlineMode: Property<Boolean> = project.objects.property(Boolean::class.java).apply { set(true) } | |
| import org.gradle.api.tasks.Input | |
| import org.gradle.api.tasks.TaskAction | |
| @CacheableTask | |
| abstract class AboutLibrariesIdTask : BaseAboutLibrariesTask() { | |
| // Force offline mode | |
| @get:Input | |
| abstract override val offlineMode: Property<Boolean> | |
| init { | |
| offlineMode.convention(true) | |
| } |
| import org.gradle.api.tasks.Optional | ||
| import org.gradle.api.tasks.PathSensitive | ||
| import org.gradle.api.tasks.PathSensitivity | ||
| import org.gradle.api.tasks.* |
There was a problem hiding this comment.
Replacing explicit imports with a wildcard import (import org.gradle.api.tasks.*) is generally considered a best practice violation in Kotlin and Gradle plugin development. Wildcard imports can make it harder to understand dependencies, can lead to naming conflicts, and make it less clear which specific classes are being used. Consider keeping the explicit imports for better code clarity and maintainability.
| import org.gradle.api.tasks.* | |
| import org.gradle.api.tasks.CacheableTask | |
| import org.gradle.api.tasks.Input | |
| import org.gradle.api.tasks.InputFiles | |
| import org.gradle.api.tasks.Internal | |
| import org.gradle.api.tasks.Optional | |
| import org.gradle.api.tasks.OutputDirectory | |
| import org.gradle.api.tasks.TaskAction |
Upgrade to Compose 1.10.0, Kotlin 2.3.0