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
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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")
}
```

Expand All @@ -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")
}
```

Expand All @@ -52,7 +52,7 @@ Maven can't pick the variant, so a JVM desktop app names `device-jvm` directly:
<dependency>
<groupId>io.ably.pubsub</groupId>
<artifactId>device-jvm</artifactId>
<version>2.0.0</version>
<version>2.1.0</version>
</dependency>
```

Expand Down Expand Up @@ -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")
}
```

Expand Down Expand Up @@ -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")
}
```

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -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/
Expand Down
Loading