Releases: JuulLabs/kable
Release list
0.44.0
⚠️ Breaking Changes
-
Escalate deprecation of
Bluetooth.availability(#977)
If you previously relied onBluetooth.availability, you'll now need to maintain your own version in your codebase. -
Rename experimental API annotation (#1114)
Be sure to change references for Kable'sExperimentalApitoExperimentalKableApi.
🔨 Changes
- Drop usage of AtomicFu plugin (#1163)
- Expose internal/private platform specific fields (#1028, #1197), thanks to @zerodea!
🤖 Android
- Wrap Android connect permission failures (#1167), thanks to @himu-gupta!
- Update
android-compileversion to 37 (#1162)
🍎 Apple
- Add timeout for write-without-response (#1186), thanks to @LuoPeiQin!
Note
This is a behavior change, whereas writes (without response) will no longer wait indefinitely for Core Bluetooth to notify it is ready for the next write. If you were relying on the previous behavior then the timeout can be configured via the peripheral builder property writeWithoutResponseTimeout to a large timeout (e.g. Duration.INFINITE).
🧰 Maintenance
- Update plugin kotlinter to v5.6.0 (#1070, #1195)
- Update dependency androidx.lifecycle:lifecycle-common to v2.11.0 (#1175, #1190)
- Update Gradle to v9.6.1 (#1183)
- Update dependency org.jetbrains.kotlin-wrappers:kotlin-wrappers-bom to v2026.7.0 (#1164, #1169, #1179, #1184)
- Update actions/checkout action to v7 (#1178)
- Update dependency org.jetbrains.kotlinx:kotlinx-datetime to v0.8.0-0.6.x-compat (#1170)
- Update Rust crate dbus to v0.9.12 (#1194)
- Update dependency androidx.compose.ui:ui to v1.11.4 (#1172, #1189, #1193)
- Update plugin maven-publish to v0.37.0 (#1177)
- Update dependency gradle to v9.6.0 (#1176)
- Update Rust crate uniffi to v0.31.2 (#1173)
- Update dependency androidx.core:core-ktx to v1.19.0 (#1161)
- Update dependency org.jetbrains.kotlinx:kotlinx-io-core to v0.9.1 (#1187)
- Update Rust crate uuid to v1.23.4 (#1165, #1180)
- Update plugin android-library to v9 (#1124)
- Update Rust crate anyhow to v1.0.103 (#1181)
- Update jna to v5.19.1 (#1159, #1171)
0.43.1
Warning
This version includes a bump in Kotlin version; due to some Kotlin ABI changes, some consumers may need to upgrade to Kotlin 2.4.0 (or later).
🤖 Android
- Change
kable-default-permissionsAndroid namespace (#1155)- This may resolve some namespace issues for some users trying to upgrade to AGP9
🧰 Maintenance
- Update kotlin to v2.4.0 (#1160)
- Update dependency org.jetbrains.kotlin-wrappers:kotlin-wrappers-bom to v2026 (#1123)
- Update dependency io.mockk:mockk to v1.14.11 (#1156)
- Update atomicfu to v0.33.0 (#1158)
- Update Rust crate uuid to v1.23.2 (#1157)
- Update coroutines to v1.11.0 (#1141)
- Update Rust crate serde_json to v1.0.150 (#1153)
- Update gradle/actions action to v6 (#1150)
- Update dependency gradle to v9.5.1 (#1146)
- Update release-drafter/release-drafter action to v7 (#1151)
- Update plugin android-library to v8.13.2 (#1148)
- Update actions/deploy-pages action to v5 (#1149)
0.43.0
- Add watchOS targets (#1133), thanks to @xPutnikx!
- Honor caller cancellation during
connect(#1137), thanks to @angusholder! - Make
Propertiesconstructor experimentally public (#1112), thanks to @curioustechizen!
🤖 Android
- Update android-compile version to 36 (#1145)
🧰 Maintenance
- Update kotlin to v2.3.21 (#1053)
- Bump bytes from 1.10.1 to 1.11.1 in /kable-btleplug-ffi (#1105)
- Update Rust crate anyhow to v1.0.102 (#1107)
- Update Rust crate btleplug to 0.12.0 (#1120)
- Update Rust crate dbus to v0.9.11 (#1135)
- Update Rust crate tokio to v1.52.3 (#1098, #1130, #1142)
- Update Rust crate uniffi to v0.31.1 (#1110, #1134)
- Update Rust crate uuid to v1.23.1 (#1127, #1139)
- Update actions/checkout action to v6 (#1073)
- Update actions/download-artifact action to v8 (#1121)
- Update actions/upload-artifact action to v7 (#1122)
- Update atomicfu to v0.32.1 (#1104, #1125)
- Update plugin maven-publish to v0.36.0 (#1065)
- Update dependency com.juul.khronicle:khronicle-core to v1.1.0 (#1143)
- Update dependency nl.jqno.equalsverifier:equalsverifier to v4.5 (#1097, #1109, #1132)
- Update plugin android-library to v8.13.0 (#1025)
- Update dependency androidx.core:core-ktx to v1.18.0 (#1119)
- Update dependency gradle to v9.5.0 (#1108, #1115, #1140)
- Update dependency io.mockk:mockk to v1.14.9 (#1103)
- Update dependency org.jetbrains.kotlinx:kotlinx-io-core to v0.9.0 (#1075, #1147)
- Update plugin dokka to v2.2.0 (#1126)
0.42.0
🌐 JavaScript
- Kotlin/Wasm support (#1099)
🧰 Maintenance
- Update Rust crate thiserror to v2.0.18 (#1102)
- Update dependency org.robolectric:robolectric to v4.16.1 (#1101)
- Update tuulbox to v8.1.0 (#1072)
- Update Rust crate tokio-util to v0.7.18 (#1096)
- Update Rust crate tokio-stream to v0.1.18 (#1095)
- Update Rust crate serde_json to v1.0.149 (#1094)
- Update Rust crate dbus to v0.9.10 (#1090)
- Update Rust crate serde_json to v1.0.148 (#1092)
- Update dependency io.mockk:mockk to v1.14.7 (#1088)
0.41.0
Breaking Changes
Khronicle was updated with a breaking change. If you're not using the KhronicleLogEngine, then there should be no breaking changes for you.
- Update dependency com.juul.khronicle:khronicle-core to v0.6.0 (#1077)
🧰 Maintenance
0.40.2
0.40.1 failed to publish, so these release notes include changes that were intended to be in that release.
Changes since 0.40.0
- Add btleplug peripheral caching to
get_platform()(#1079), thanks to @Firstbober
🧰 Maintenance
- Fix mac runner used for publication (#1083)
- Automatically derive uniffi bindgen version inside uniffi-plugin (#1081)
- Update Rust crate anyhow to v1.0.100 (#1035)
- Update Rust crate dbus to v0.9.9 (#1021)
- Update Rust crate serde to v1.0.228 (#1030, #1045)
- Update Rust crate serde_json to v1.0.145 (#1031)
- Update Rust crate thiserror to v2.0.17 (#1046)
- Update Rust crate tokio to v1.48.0 (#1049)
- Update Rust crate tokio-util to v0.7.17 (#1060)
- Update Rust crate uniffi to 0.30.0 (#1047)
- Update Rust crate uuid to v1.18.1 (#1022)
- Update actions/upload-artifact action to v5 (#1056)
- Update dependency gradle to v9.2.1 (#1033, #1059, #1069)
- Update dependency io.mockk:mockk to v1.14.6 (#1039)
- Update dependency org.jetbrains.kotlin-wrappers:kotlin-wrappers-bom to v2025.12.0 (#1019, #1026, #1029, #1037, #1040, #1041, #1044, #1048, #1050, #1052, #1058, #1061, #1062, #1063, #1066, #1068, #1074, #1078)
- Update dependency org.robolectric:robolectric to v4.16 (#1015)
- Update gradle/actions action to v5 (#1042)
- Update kotlin to v2.2.20 (#1027)
- Update dependency net.java.dev.jna:jna to v5.18.1 (#1036, #1038)
- Update dependency nl.jqno.equalsverifier:equalsverifier to v4.2.4 (#1024, #1034, #1043, #1057, #1064, #1067, #1076)
- Update plugin android-library to v8.12.2 (#1020)
- Update plugin dokka to v2.1.0 (#1051)
- Update actions/download-artifact action to v6 (#1055)
0.40.1
Publishing failed. Use 0.40.2
- Add btleplug peripheral caching to
get_platform()(#1079), thanks to @Firstbober
🧰 Maintenance
- Automatically derive uniffi bindgen version inside uniffi-plugin (#1081)
- Update Rust crate anyhow to v1.0.100 (#1035)
- Update Rust crate dbus to v0.9.9 (#1021)
- Update Rust crate serde to v1.0.228 (#1030, #1045)
- Update Rust crate serde_json to v1.0.145 (#1031)
- Update Rust crate thiserror to v2.0.17 (#1046)
- Update Rust crate tokio to v1.48.0 (#1049)
- Update Rust crate tokio-util to v0.7.17 (#1060)
- Update Rust crate uniffi to 0.30.0 (#1047)
- Update Rust crate uuid to v1.18.1 (#1022)
- Update actions/upload-artifact action to v5 (#1056)
- Update dependency gradle to v9.2.1 (#1033, #1059, #1069)
- Update dependency io.mockk:mockk to v1.14.6 (#1039)
- Update dependency org.jetbrains.kotlin-wrappers:kotlin-wrappers-bom to v2025.12.0 (#1019, #1026, #1029, #1037, #1040, #1041, #1044, #1048, #1050, #1052, #1058, #1061, #1062, #1063, #1066, #1068, #1074, #1078)
- Update dependency org.robolectric:robolectric to v4.16 (#1015)
- Update gradle/actions action to v5 (#1042)
- Update kotlin to v2.2.20 (#1027)
- Update dependency net.java.dev.jna:jna to v5.18.1 (#1036, #1038)
- Update dependency nl.jqno.equalsverifier:equalsverifier to v4.2.4 (#1024, #1034, #1043, #1057, #1064, #1067, #1076)
- Update plugin android-library to v8.12.2 (#1020)
- Update plugin dokka to v2.1.0 (#1051)
- Update actions/download-artifact action to v6 (#1055)
0.40.0
🍎 Apple
- Add
forceCharacteristicEqualityByUuidperipheral builder option (#1017)
Note
Provides a workaround for consumers hit by (Apple-only) bug where I/O could stall if peripheral had characteristics with duplicate UUIDs.
This release does not otherwise provide any new features/functionality.
This API will be removed in the future (after #1016 is fixed).
val peripheral = Peripheral {
forceCharacteristicEqualityByUuid = true
// ..
}🧰 Maintenance
- Update actions/download-artifact action to v5 (#987)
- Update Rust crate dbus to v0.9.8 (#1014)
- Update Rust crate serde_json to v1.0.143 (#1004)
- Update Rust crate uuid to v1.18.0 (#995)
- Update plugin android-library to v8.12.1 (#1003)
- Update dependency org.jetbrains.kotlin-wrappers:kotlin-wrappers-bom to v2025.8.20 (#988, #991, #992, #1001, #1012, #1018)
- Update dependency nl.jqno.equalsverifier:equalsverifier to v4.0.9 (#1011, #1013)
- Update Rust crate thiserror to v2.0.16 (#994, #1002, #1008)
- Update actions/setup-java action to v5 (#1010)
- Update Rust crate async-trait to v0.1.89 (#999)
- Update actions/checkout action to v5 (#1000)
- Update kotlin to v2.2.10 (#997)
- Update dependency androidx.core:core-ktx to v1.17.0 (#998)
- Update Rust crate anyhow to v1.0.99 (#993)
0.39.2
🤖 Android
🍎 Apple
- Explicitly set
Disconnectedstate on bluetooth powered off (#980), thanks to @curioustechizen for reporting the issue
🧰 Maintenance
- Update dependency nl.jqno.equalsverifier:equalsverifier to v4.0.7 (#978)
- Update dependency org.jetbrains.kotlin-wrappers:kotlin-wrappers-bom to v2025.8.4 (#979)
- Update dependency gradle to v9 (#985)
- Update Rust crate tokio to v1.47.1 (#983)
- Update Rust crate tokio-util to v0.7.16 (#984)
- Update Rust crate serde_json to v1.0.142 (#981)
- Update plugin android-library to v8.12.0 (#982)
0.39.1
🖥️ JVM
- Fix explicit disconnection (#972)
🧰 Maintenance
- Update dependency org.jetbrains.kotlin-wrappers:kotlin-wrappers-bom to v2025.7.14 (#966)
- Update plugin kotlinter to v5.2.0 (#975)
- Update Rust crate tokio to v1.47.0 (#967, #976)
- Update Rust crate uuid to v1.17.0 (#971)
- Update Rust crate uniffi to v0.29.4 (#973)
- Update dependency com.juul.khronicle:khronicle-core to v0.5.2 (#970)
- Compile kable-core JVM on all platforms (#965)