Note
v7.18.0 is published to the Stream Maven repository, not Maven Central.
// settings.gradle.kts
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven("https://stream-io-repo.com")
}
}What's Changed
New Features ๐
- Add scheduled messages to the Chat SDK by @andremion in #6919
- Support quiet hours for push notifications by @aleksandar-apostolov in #6902
- Support active member count in query channels by @aleksandar-apostolov in #6903
- Generative UI layer for AI messages by @aleksandar-apostolov in #6941
- A2UI 1.0 renderer for Compose with the basic catalog by @aleksandar-apostolov in #6952
- OpenUI renderer for Compose, from OpenUI Lang 1.0 to charts by @aleksandar-apostolov in #6949
Bug Fixes ๐
- Hide stale custom copies of declared message fields like draft and image_labels from message extra data by @gpunto in #6901
- Update the unread label count when marking unread keeps the last read message by @testableapple in #6912
- Fix the system crash when picking a camera app from the attachment picker on Android 16 by @gpunto in #6914
- Show the messages of a channel whose first load failed once the connection is restored by @gpunto in #6931
- Keep the current user's mutes when their profile is updated by @gpunto in #6933
- Rebuild CompoundComponentFactory only when its inputs change by @andremion in #6928
- Update the current user locally after a successful partial user update by @gpunto in #6940
- Fix a channel list showing a channel without its other members after a cold start by @gpunto in #6934
- Leave the server user fields out of the custom data sent on connect by @gpunto in #6956
- Prevent concurrent channel list changes from overwriting each other by @gpunto in #6958
Improvements โจ
- Keep the channel config quotes flag, draft creation date and missing capability constants by @gpunto in #6906
- Expose the location timestamps, AI indicator message, member deletion date and channel truncation and translation fields by @gpunto in #6908
- Scope typing indicators to the channel or the thread the user is typing in by @gpunto in #6915
- Opt-in WS event protocol v3 and keep members it leaves out by @aleksandar-apostolov in #6935
Internal ๐งช
- Split the nightly E2E run into 4 batches per API level by @testableapple in #6911
- Fold the v2 socket protocol into the websocket by @gpunto in #6909
- Regenerate the client baseline profile for the v2 socket, event parsing and generated models by @gpunto in #6916
- Clean up the docs and parser tests the v2 migration left stale by @gpunto in #6921
- Save the E2E Gradle cache on every merge to develop by @aleksandar-apostolov in #6922
- Run E2E against a non-debuggable app without StrictMode by @aleksandar-apostolov in #6924
- Re-vendor the user, device and push preference models from the current spec by @gpunto in #6929
- Re-vendor the channel and config models from the current spec by @gpunto in #6937
- Re-vendor the message, poll and reminder models from the current spec by @gpunto in #6938
- Add a script to refresh the vendored OpenAPI models from the backend spec by @gpunto in #6959
Demo App ๐งฉ
- Drop material-icons-extended from the Compose sample by @aleksandar-apostolov in #6923
- Remove the staging setup from the Compose sample by @andremion in #6926
Full Changelog: v7.17.0...v7.18.0