Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion MIGRATION.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
### Upgrade Notes

#### v13.2.0

- **Breaking Change**: Some underlying APIs start to require API 23 instead of 21.
- `org.jetbrains.compose.components.resources`
- **Dependency Upgrade**: Kotlin 2.3.0
- **Dependency Upgrade**: Compose 1.10.x

#### v13.1.0

- **Behaviour Change**: The `Gradle Plugin` now by default enables MERGING duplicates with EXACT matches. In prior releases, duplicates would be kept.
```kotlin
// To enable the prior behavior you can simply configure this in your build script
// To enable the prior behavior, you can simply configure this in your build script
aboutLibraries {
library {
duplicationMode = DuplicateMode.KEEP
Expand Down
3 changes: 3 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,9 @@ dependencies {
// used only tho showcase multi flavor support
"stagingImplementation"(libs.okhttp.core)

// https://mvnrepository.com/artifact/androidx.compose.material/material-icons-core
implementation("androidx.compose.material:material-icons-extended:1.7.8")
Copy link

Copilot AI Dec 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
implementation("androidx.compose.material:material-icons-extended:1.7.8")
implementation(libs.androidx.compose.material.icons.extended)

Copilot uses AI. Check for mistakes.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Use version catalog instead


// used to test matching of license names
// implementation("com.github.librepdf:openpdf:1.3.43")
// implementation("com.google.android.play:app-update-ktx:2.1.0")
Expand Down
3 changes: 2 additions & 1 deletion app/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
com.mikepenz.multiplatform.enabled=true
com.mikepenz.targets.enabled=false
com.mikepenz.hotreload.enabled=true
com.mikepenz.hotreload.enabled=true
com.mikepenz.android.minSdk=23
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package com.mikepenz.aboutlibraries.plugin

import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.CacheableTask
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) }

Comment on lines 6 to +12
Copy link

Copilot AI Dec 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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)
}

Copilot uses AI. Check for mistakes.
// Disable fetching remote licenses for this task, not applicable
override val fetchRemoteLicense: Provider<Boolean> = project.provider { false }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ class AboutLibrariesPlugin : Plugin<Project> {

// task to output library names with ids for further actions
project.tasks.configure("findLibraries", AboutLibrariesIdTask::class.java) {
it.offlineMode.set(true) // Force offline mode
it.configure()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,7 @@ import org.gradle.api.file.DirectoryProperty
import org.gradle.api.provider.MapProperty
import org.gradle.api.provider.Property
import org.gradle.api.provider.SetProperty
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputDirectory
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.*
Copy link

Copilot AI Dec 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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

Copilot uses AI. Check for mistakes.
import org.slf4j.LoggerFactory

abstract class BaseAboutLibrariesTask : DefaultTask() {
Expand Down Expand Up @@ -62,7 +57,7 @@ abstract class BaseAboutLibrariesTask : DefaultTask() {
val allowedLicensesMap = extension.license.allowedLicensesMap

@Input
val offlineMode = extension.offlineMode
open val offlineMode = extension.offlineMode

@Suppress("HasPlatformType")
@Input
Expand Down
2 changes: 1 addition & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ dependencyResolutionManagement {

versionCatalogs {
create("baseLibs") {
from("com.mikepenz:version-catalog:0.8.7")
from("com.mikepenz:version-catalog:0.10.1")
}
}
}
Expand Down
Loading