diff --git a/.pubnub.yml b/.pubnub.yml
index cee689285c..b8e5d9af97 100644
--- a/.pubnub.yml
+++ b/.pubnub.yml
@@ -1,9 +1,9 @@
name: kotlin
-version: 12.0.1
+version: 12.0.2
schema: 1
scm: github.com/pubnub/kotlin
files:
- - build/libs/pubnub-kotlin-12.0.1-all.jar
+ - build/libs/pubnub-kotlin-12.0.2-all.jar
sdks:
-
type: library
@@ -23,8 +23,8 @@ sdks:
-
distribution-type: library
distribution-repository: maven
- package-name: pubnub-kotlin-12.0.1
- location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/12.0.1/pubnub-kotlin-12.0.1.jar
+ package-name: pubnub-kotlin-12.0.2
+ location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/12.0.2/pubnub-kotlin-12.0.2.jar
supported-platforms:
supported-operating-systems:
Android:
@@ -121,6 +121,11 @@ sdks:
license-url: https://www.apache.org/licenses/LICENSE-2.0.txt
is-required: Required
changelog:
+ - date: 2025-12-09
+ version: v12.0.2
+ changes:
+ - type: bug
+ text: "Prevent resubscribe to previously subscribed entities."
- date: 2025-11-19
version: v12.0.1
changes:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c897cf272c..55001bd820 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## v12.0.2
+December 09 2025
+
+#### Fixed
+- Prevent resubscribe to previously subscribed entities.
+
## v12.0.1
November 19 2025
diff --git a/README.md b/README.md
index 4fd49659d8..08a5a6ec99 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@ You will need the publish and subscribe keys to authenticate your app. Get your
com.pubnub
pubnub-kotlin
- 12.0.1
+ 12.0.2
```
diff --git a/gradle.properties b/gradle.properties
index eeaffa5dbe..2064ea2cf4 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -18,7 +18,7 @@ RELEASE_SIGNING_ENABLED=true
SONATYPE_HOST=DEFAULT
SONATYPE_AUTOMATIC_RELEASE=false
GROUP=com.pubnub
-VERSION_NAME=12.0.1
+VERSION_NAME=12.0.2
POM_PACKAGING=jar
POM_NAME=PubNub SDK
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 306bf957db..e94e3661c0 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -12,8 +12,8 @@ ktlint = "12.1.0"
dokka = "2.0.0"
kotlinx_datetime = "0.6.2"
kotlinx_coroutines = "1.10.2"
-pubnub_js = "10.1.0"
-pubnub_swift = "9.3.5"
+pubnub_js = "10.2.4"
+pubnub_swift = "10.1.0"
[libraries]
retrofit2 = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit2" }
diff --git a/pubnub-kotlin/pubnub-kotlin-api/config/ktlint/baseline.xml b/pubnub-kotlin/pubnub-kotlin-api/config/ktlint/baseline.xml
index de677237b5..6f0d4e0b4f 100644
--- a/pubnub-kotlin/pubnub-kotlin-api/config/ktlint/baseline.xml
+++ b/pubnub-kotlin/pubnub-kotlin-api/config/ktlint/baseline.xml
@@ -16,24 +16,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
@@ -42,10 +38,10 @@
+
+
+
-
-
-
@@ -78,5 +74,9 @@
+
+
+
+
diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/presence/HereNow.ios.kt b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/presence/HereNow.ios.kt
index 87ccd1334c..5b998784f1 100644
--- a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/presence/HereNow.ios.kt
+++ b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/presence/HereNow.ios.kt
@@ -15,6 +15,7 @@ import com.pubnub.kmp.onFailureHandler
import com.pubnub.kmp.onSuccessHandler
import com.pubnub.kmp.safeCast
import kotlinx.cinterop.ExperimentalForeignApi
+import platform.Foundation.NSNumber
/**
* @see [PubNub.hereNow]
@@ -37,9 +38,8 @@ class HereNowImpl(
channelGroups = channelGroups,
includeState = includeState,
includeUUIDs = includeUUIDs,
- // todo pass limit and offset once available
- // limit = limit,
- // offset = offset,
+ limit = limit.toLong(),
+ offset = offset?.let { NSNumber(it) },
onSuccess = callback.onSuccessHandler {
PNHereNowResult(
totalChannels = it?.totalChannels()?.toInt() ?: 0,
diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/jsMain/kotlin/Pubnub.d.kt b/pubnub-kotlin/pubnub-kotlin-api/src/jsMain/kotlin/Pubnub.d.kt
index 0d1bec22be..7b338bf066 100644
--- a/pubnub-kotlin/pubnub-kotlin-api/src/jsMain/kotlin/Pubnub.d.kt
+++ b/pubnub-kotlin/pubnub-kotlin-api/src/jsMain/kotlin/Pubnub.d.kt
@@ -763,6 +763,10 @@ open external class PubNub(config: Any /* UUID | UserId */) {
var includeUUIDs: Boolean?
var includeState: Boolean?
+
+ var limit: Number?
+
+ var offset: Number?
}
interface HereNowOccupantData {
diff --git a/pubnub-kotlin/pubnub-kotlin-docs/config/ktlint/baseline.xml b/pubnub-kotlin/pubnub-kotlin-docs/config/ktlint/baseline.xml
index 734a01a425..981420778d 100644
--- a/pubnub-kotlin/pubnub-kotlin-docs/config/ktlint/baseline.xml
+++ b/pubnub-kotlin/pubnub-kotlin-docs/config/ktlint/baseline.xml
@@ -1,31 +1,3 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pubnub-kotlin/pubnub-kotlin-impl/config/ktlint/baseline.xml b/pubnub-kotlin/pubnub-kotlin-impl/config/ktlint/baseline.xml
index 286263ccd4..3950feb64e 100644
--- a/pubnub-kotlin/pubnub-kotlin-impl/config/ktlint/baseline.xml
+++ b/pubnub-kotlin/pubnub-kotlin-impl/config/ktlint/baseline.xml
@@ -1,58 +1,5 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -61,11 +8,6 @@
-
-
-
-
-
diff --git a/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt b/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt
index f841ba3e19..786a422835 100644
--- a/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt
+++ b/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt
@@ -56,7 +56,7 @@ class PubNubImplTest : BaseTest() {
fun getVersionAndTimeStamp() {
val version = PubNubImpl.SDK_VERSION
val timeStamp = PubNubImpl.timestamp()
- assertEquals("12.0.1", version)
+ assertEquals("12.0.2", version)
assertTrue(timeStamp > 0)
}