From 8cc812e20f9a48ad3b52b1b7f0882f60796e4b8f Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 11 Nov 2026 10:56:46 +0000 Subject: [PATCH 1/2] Bump version to 2.1.0 Co-Authored-By: Claude Opus 5.5 --- README.md | 12 ++++++------ gradle.properties | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 08f8822b7..f27b1e293 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Use exactly one of `io.ably.pubsub:server` or `io.ably.pubsub:device` in an app. ```kotlin dependencies { - implementation("io.ably.pubsub:server:2.0.0") + implementation("io.ably.pubsub:server:2.1.0") } ``` @@ -42,7 +42,7 @@ On Android and on the JVM, Gradle picks the right variant of `io.ably.pubsub:dev ```kotlin dependencies { - implementation("io.ably.pubsub:device:2.0.0") + implementation("io.ably.pubsub:device:2.1.0") } ``` @@ -52,7 +52,7 @@ Maven can't pick the variant, so a JVM desktop app names `device-jvm` directly: io.ably.pubsub device-jvm - 2.0.0 + 2.1.0 ``` @@ -238,10 +238,10 @@ The packages use OkHttp for HTTP and WebSocket connections. To use the built-in ```kotlin dependencies { - implementation("io.ably.pubsub:server:2.0.0") { + implementation("io.ably.pubsub:server:2.1.0") { exclude(group = "io.ably.pubsub", module = "network-client-okhttp") } - runtimeOnly("io.ably.pubsub:network-client-default:2.0.0") + runtimeOnly("io.ably.pubsub:network-client-default:2.1.0") } ``` @@ -293,7 +293,7 @@ it on the classpath. ```kotlin dependencies { - runtimeOnly("io.ably.pubsub:liveobjects:2.0.0") + runtimeOnly("io.ably.pubsub:liveobjects:2.1.0") } ``` diff --git a/gradle.properties b/gradle.properties index 184466b72..ecc7d62b3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ GROUP=io.ably.pubsub -VERSION_NAME=2.0.0 +VERSION_NAME=2.1.0 POM_INCEPTION_YEAR=2015 POM_URL=https://github.com/ably/ably-pubsub-java POM_SCM_URL=https://github.com/ably/ably-pubsub-java/ From 347bc815ef9c407473b3ae7a419d509060308475 Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 11 Nov 2026 10:56:46 +0000 Subject: [PATCH 2/2] Update CHANGELOG for 2.1.0 Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ef98a966..0c8b3ecc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Change Log +## [2.1.0](https://github.com/ably/ably-pubsub-java/tree/v2.1.0) (2026-11-11) + +[Full Changelog](https://github.com/ably/ably-pubsub-java/compare/v2.0.0...v2.1.0) + +You can now read and update LiveObjects from the HTTP client, with no realtime connection. This suits server code that needs to inspect or change object state in response to a request, such as seeding a counter or updating a map from a backend job. + +### LiveObjects over HTTP + +Every HTTP channel now has a `channel.object` property. It is built into the HTTP client, so you don't need the `liveobjects` plugin to use it. [#1259](https://github.com/ably/ably-pubsub-java/pull/1259) + +- `get()` returns the channel's objects as typed maps, counters and values. `getCompact()` returns the same state as plain JSON. +- `publish()` applies one or more map and counter operations in a single request. +- `generateObjectId()` creates the ID for a new map or counter before you publish it, so you can create an object and refer to it in the same batch. + +Each method has an `...Async` variant that takes a callback. + ## [2.0.0](https://github.com/ably/ably-pubsub-java/tree/v2.0.0) (2026-10-30) The 2.0.0 release makes it clear what to use on a device and what to use on a server. The SDK is now split by where your code runs. Depend on `io.ably.pubsub:device` for code that runs on an end user's device, such as an Android app or a desktop client, or `io.ably.pubsub:server` for code that runs on your own infrastructure. Each artifact offers only the clients that make sense on its side. The artifact names are also what coding assistants see in the dependency declaration and the builder call, so they get the choice right too.