Releases: JuulLabs/kable
0.33.1
0.33.0
Important
Kable's Maven artifact IDs have changed (prefixed with kable-):
kotlin {
sourceSets {
commonMain.dependencies {
implementation("com.juul.kable:kable-core:${kableVersion}")
implementation("com.juul.kable:kable-exceptions:${kableVersion}")
implementation("com.juul.kable:kable-log-engine-khronicle:${kableVersion}")
}
}
}Kable's package names were not changed, only the Maven coordinates; you should only need to update your Gradle configuration (e.g. libs.versions.toml).
Kotlin 2.0.0 (K2) Upgrade
Kable is now built against Kotlin 2.0.0 (K2). 🎉
Note
With this upgrade, the Kotlin compiler became more restrictive with expect/actual declarations, as a result, some Kable APIs have changed:
- Advertisement interfaces (e.g.
AndroidAdvertisement,CoreBluetoothAdvertisement, etc) have been consolidated to a commonPlatformAdvertisement Scannerinterface now defines a generic type for advertisements it will emit:Scanner<PlatformAdvertisement>
For most users, these changes should not impact your code. Some notable instances where you'll need to make code changes:
If you hold a reference to a Scanner in a variable or property, you'll need to change Scanner to use the PlatformScanner type alias, or specify the generic type explicitly, for example:
val scanner: PlatformScanner // or...
val scanner: Scanner<PlatformAdvertisement>If you have any classes that implement the Scanner interface, you'll need to change the interface to PlatformScanner (or Scanner<PlatformAdvertisement>) and change the overridden type of the advertisements property to PlatformAdvertisement, for example:
class ExampleScanner(..) : PlatformScanner {
override val advertisements: Flow<PlatformAdvertisement> = ..
}🚀 Changes
- Update dependency org.jetbrains.kotlin.multiplatform to v2 (#683)
- Replace Tuulbox logging w/ Khronicle (#690)
- Prefix Maven artifacts with
kable-(#692) - Remove
log-engine-tuulboxmodule (#689)
🧰 Maintenance
0.32.0
Android
- Provide ability to pre-conflate scanned advertisements (#684), special thanks to @djweber for the contribution
🧰 Maintenance
- Update plugin android-library to v8.4.1 (#674, #682)
- Update coroutines to v1.8.1 (#678)
- Migrate to
gradle/actions/setup-gradle(#680) - Update dependency com.juul.khronicle:khronicle-core to v0.3.0 (#676)
- Update dependency org.jetbrains.kotlin.multiplatform to v1.9.24 (#675)
- Update dependency androidx.core:core-ktx to v1.13.1 (#671, #673)
- Update gradle/wrapper-validation-action action to v3 (#672)
- Update atomicfu to v0.24.0 (#670)
0.31.1
0.31.0
0.30.0
- Log engine for Khronicle logging (#644)
Android
- Provide write failure as property of exception (#648), thanks to @ArtemBurmistrov for reporting the issue
- Make
AndroidAdvertisementparcelable (#652), thanks to @eddieSullivan for reporting the issue
🧰 Maintenance
- Explicitly pull in AtomicFU dependency (#656)
- Disable
AndroidGradlePluginVersionlint check (#657) - Update plugin maven-publish to v0.28.0 (#655)
- Simplify
binary-compatibility-validatorsetup (#651) - Replace deprecated Gradle
buildDir(#650) - Update AtomicFU configuration (#649)
- Remove explicit
POM_ARTIFACT_IDconfiguration (#645) - Update dependency org.jetbrains.kotlin.multiplatform to v1.9.23 (#646)
- Update plugin dokka to v1.9.20 (#647)
- Update plugin android-library to v8.3.0 (#640)
- Update binary-compatibility-validator to v0.14.0 (#639)
- Remove workaround for
jvmToolchainnot being honored pre AGP 8.1.0-alpha09 (#636) - Update plugin kotlinter to v4.2.0 (#623)
0.29.1
Android
- Defensive copying in Android legacy, deprecated
BluetoothGattCallbackfunctions (#635)
🧰 Maintenance
0.29.0
🧰 Maintenance
- Update plugin android-library to v8.2.2 (#619, #625)
- Update dependency org.jetbrains.kotlinx:atomicfu to v0.23.2 (#624)
- Update dependency org.jetbrains.kotlin.multiplatform to v1.9.22 (#615)
- Update plugin maven-publish to v0.27.0 (#616, #621)
- Update tuulbox to v7.0.1 (#620)
- Update plugin kotlinter to v4.1.1 (#618)
0.28.0
- Make
LoggingBuilderpublic (#608), special thanks to @degill for the contribution - Fix
IOExceptionto not dropcause(#598)
Android
- Android 14 (compile SDK 34) and BroadcastReceiver changes (#582)
- Deprecate
broadcastReceiverFlowfor future removal from public API (#583)
🧰 Maintenance
- Add
kotlin-js-storeto version control (#584) - Remove explicit enabling of inline classes (#600)
- Update actions/setup-java action to v4 (#609)
- Update dependency com.benasher44:uuid to v0.8.2 (#596)
- Update dependency gradle to v8.5 (#585, #605)
- Update dependency org.jetbrains.kotlin.multiplatform to v1.9.21 (#593, #601)
- Update dependency org.jetbrains.kotlinx:atomicfu to v0.23.1 (#602)
- Update plugin android-library to v8.2.0 (#581, #594, #597, #606)
- Update plugin dokka to v1.9.10 (#589)
- Update plugin kotlinter to v4.1.0 (#587, #603)
- Use default hierarchy template (#599)
0.28.0-rc
⚠️ Release candidate
This release is considered a release candidate because it contains a major internal refactor and should be tested thoroughly before being used in production.
Please report any issues.
🚀 Changes
The error propagation for Peripheral.connect() has been improved: previously, during some edge-cases, connect() would throw CancellationException on failure rather than the underlying cause of the failure. connect() should now only throw CancellationException when explicitly cancelled by the calling code.
- Propagate failures from
connectas failures rather than cancellation (#573, #572, #578, #579, #580) - Provide additional details to data processor (#538)
Android
- Throw
LocationManagerUnavailableExceptionwhenLocationManageris unavailable (#576) - Throw
GattRequestRejectedExceptionwhensetCharacteristicNotificationfails (#575) - Add support for
autoConnect(#563, #574), thanks to @ToysoftInc, @matsch82, and @JonatanPlesko for reporting/nudging this effort along - Use
SharedRepeatableActionfor managing connect process (#516), this is a step in fixing #378 — thanks to @tomnovotny7 for reporting #378 and @solvek for reporting related issue #567

