What's Changed
- The Ably LiveObjects plugin now lives in this repository and has a new path-based API. It is available as the
AblyLiveObjectsproduct of this package, and LiveObjects data is now accessed throughchannel.object, which returns aRealtimeObjectexposingPathObjects — stable references to locations within the channel object that resolve to values dynamically at runtime, instead of explicitLiveMap/LiveCounterinstances. See the PathObject documentation for details, and the breaking changes below if you are migrating from the standalone ably-liveobjects-swift-plugin package. LiveObjects remains experimental: breaking changes to theAblyLiveObjectsAPI may be made in minor or patch releases, and ably-cocoa's semantic versioning guarantees apply only to theAblyproduct. This work was integrated by @sacOO7 in #2230 and delivered through the following PRs:- Merge LiveObjects plugin and plugin-support into ably-cocoa by @lawrence-forooghian in #2222
- Add path-based LiveObjects public API by @sacOO7 in #2227
- Move
_AblyPluginSupportPrivateout ofSources/to the repo root by @maratal in #2228 - Implement path-based public API end-to-end with UTS tests by @sacOO7 in #2234
- Enable UTS integration test suites for the objects tier by @sacOO7 in #2235
- Restructure LiveObjects test-support and native test suites by role and tier by @sacOO7 in #2239
- Align UTS objects test helpers with the spec's
standard_test_poolby @sacOO7 in #2240
- Universal Test Suite (UTS) integration and proxy test infrastructure by @sacOO7 in #2223
- First spec-derived UTS integration and proxy tests via the rewritten uts-to-swift skill by @sacOO7 in #2224
- Swift Package Manager consumers of this package now require Xcode 16.3 or later (the package manifest's swift-tools-version is now 6.1). CocoaPods and Carthage consumers are unaffected.
- The
AblyLiveObjectsproduct is available via Swift Package Manager only. CocoaPods and Carthage consumers receive the coreAblyproduct alone; for them this release contains no functional changes.
Breaking changes
This release replaces the previous experimental instance-based LiveObjects API (as last published in the standalone plugin's 0.4.1 release) with the new path-based API. The module name (AblyLiveObjects) and plugin registration (clientOptions.plugins = [.liveObjects: AblyLiveObjects.Plugin.self]) are unchanged, but:
- The
channel.objectsproperty (returningRealtimeObjects, withgetRoot()) has been replaced by thechannel.objectproperty (returningRealtimeObject, withget()) - Instead of obtaining and operating on explicit
LiveMap/LiveCounterinstances, data is accessed and mutated throughPathObjectreferences
Full Changelog: 1.2.62...1.3.0