Repository navigation
Clean up the public API for 2.0: deletions, renames, internal HTTP client, no ART prefix in Swift - #2287
Conversation
|
Important Review skippedToo many files! This PR contains 322 files, which is 222 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. Usage-priced reviews support at most 300 files. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (322)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
337f7c9 to
22d7c3c
Compare
There was a problem hiding this comment.
🟡 Changes recommended
One or more issues must be addressed before approval.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
This PR prepares ably-cocoa’s 2.0 public API by removing deprecated members, renaming client types, internalizing HTTP APIs, and adopting prefix-free Swift names.
Changes:
- Deletes deprecated fallback, recovery, stats, and exception APIs.
- Renames realtime/HTTP classes and updates internal references.
- Updates headers, tests, examples, documentation, and LiveObjects usage.
File summaries
| File | Description |
|---|---|
| Test/UTS/unit/rest/TimeTests.swift | Updated as part of this pull request. |
| Test/UTS/unit/objects/PathObjectMutationsTests.swift | Updated as part of this pull request. |
| Test/UTS/unit/objects/InternalLiveCounterApiTests.swift | Updated as part of this pull request. |
| Test/UTS/integration/standard/realtime/TokenRequestTests.swift | Updated as part of this pull request. |
| Test/UTS/integration/standard/realtime/ChannelHistoryTests.swift | Updated as part of this pull request. |
| Test/UTS/integration/standard/objects/ObjectsSyncTests.swift | Updated as part of this pull request. |
| Test/UTS/integration/standard/objects/helpers/ObjectsIntegrationHelpers.swift | Updated as part of this pull request. |
| Test/UTS/integration/proxy/realtime/AuthReauthTests.swift | Updated as part of this pull request. |
| Test/UTS/integration/proxy/objects/ObjectsFaultsTests.swift | Updated as part of this pull request. |
| Test/UTS/infra/Utils.swift | Updated as part of this pull request. |
| Test/UTS/infra/unit/ProtocolMessage.swift | Updated as part of this pull request. |
| Test/UTS/infra/unit/MockWebSocket.swift | Updated as part of this pull request. |
| Test/UTS/infra/unit/MockHTTPClient.swift | Updated as part of this pull request. |
| Test/UTS/infra/unit/CapturingLog.swift | Updated as part of this pull request. |
| Test/UTS/infra/SideSeamTests.swift | Updated as part of this pull request. |
| Test/UTS/infra/Side.swift | Updated as part of this pull request. |
| Test/UTS/infra/integration/proxy/ProxyTestCase.swift | Updated as part of this pull request. |
| Test/UTS/infra/integration/proxy/ProxySession.swift | Updated as part of this pull request. |
| Test/UTS/infra/integration/IntegrationTestCase.swift | Updated as part of this pull request. |
| Test/UTS/deviations.md | Updated as part of this pull request. |
| Test/AblyTestsObjC/ARTPubSubDeviceTests.m | Updated as part of this pull request. |
| Test/AblyTestsObjC/ARTArchiveTests.m | Updated as part of this pull request. |
| Test/AblyTests/Tests/LogAdapterTests.swift | Updated as part of this pull request. |
| Test/AblyTests/Tests/HttpPaginatedTests.swift | Updated as part of this pull request. |
| Test/AblyTests/Tests/DefaultInternalLogCoreTests.swift | Updated as part of this pull request. |
| Test/AblyTests/Tests/DefaultErrorCheckerTests.swift | Updated as part of this pull request. |
| Test/AblyTests/Tests/ClientInformationTests.swift | Updated as part of this pull request. |
| Test/AblyTests/Tests/ChannelOptionsTests.swift | Updated as part of this pull request. |
| Test/AblyTests/Tests/ARTDefaultTests.swift | Updated as part of this pull request. |
| Test/AblyTests/Test Utilities/TestProxyTransportFactory.swift | Updated as part of this pull request. |
| Test/AblyTests/Test Utilities/MockVersion2Log.swift | Updated as part of this pull request. |
| Test/AblyTests/Test Utilities/MockErrorChecker.swift | Updated as part of this pull request. |
| Test/AblyTesting/MockInternalLogCore.swift | Updated as part of this pull request. |
| Test/AblySoakTests/SoakTestURLSession.swift | Updated as part of this pull request. |
| Test/AblyLiveObjectsTesting/README.md | Updated as part of this pull request. |
| Test/AblyLiveObjectsTesting/Internals/InternalDefaultRealtimeObjects+TestsOnly.swift | Updated as part of this pull request. |
| Test/AblyLiveObjectsTesting/Internals/ARTRealtimeChannel+TestsOnly.swift | Updated as part of this pull request. |
| Test/AblyLiveObjectsTesting/Internals/ARTErrorInfo+TestsOnly.swift | Updated as part of this pull request. |
| Test/AblyLiveObjectsTesting/Helpers/MockRealtimeObjects.swift | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTWrapperSDKProxyRealtime+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTWebSocketTransport.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTThrowingLocalDeviceStorage.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTTestClientOptions.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTStatus.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTRestChannels+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTRestAnnotations+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTRealtimeTransportFactory.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTRealtimeTransport.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTRealtimeChannels+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTRealtimeChannel+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTRealtimeAnnotations+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTPushDeviceRegistrations+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTPushChannelSubscriptions+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTPushChannel+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTPushAdmin+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTPushActivationStateMachine+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTPushActivationStateMachine.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTPush+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTPaginatedResult+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTNSMutableRequest+ARTHttpClient.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTMessageSendStatus.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTLocalDevice+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTJsonLikeEncoder.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTHttpPresence+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTHTTPPaginatedResponse+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTHTTPExecutor+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTHTTPExecutor.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTHttpChannels+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTHttpChannel+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTHttpAnnotations+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTEventEmitter+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTErrorInfo+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTDataEncoder.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTCrypto+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTConnectRetryState.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTConnectionStateChangeParams.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTConnection+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTClientOptions+TestConfiguration.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTChannelStateChangeParams.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTChannels+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTChannel+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTChannel.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTBaseMessage+Private.h | Updated as part of this pull request. |
| Source/PrivateHeaders/Ably/ARTAuth+Private.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTWrapperSDKProxyRealtimePresence.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTWrapperSDKProxyRealtimeChannels.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTWrapperSDKProxyRealtimeChannel.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTWrapperSDKProxyRealtimeAnnotations.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTWrapperSDKProxyRealtime.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTWrapperSDKProxyPushDeviceRegistrations.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTWrapperSDKProxyPushChannelSubscriptions.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTWrapperSDKProxyPushChannel.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTWrapperSDKProxyPushAdmin.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTWrapperSDKProxyPush.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTWrapperSDKProxyOptions.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTUpdateDeleteResult.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTTokenRequest.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTTokenParams.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTTokenDetails.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTStringifiable.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTRealtimePresence.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTRealtimeClient+WrapperSDKProxy.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTRealtimeClient.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTRealtimeChannels.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTRealtimeChannelOptions.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTRealtimeChannel.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTRealtimeAnnotations.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTPushDeviceRegistrations.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTPushChannelSubscriptions.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTPushChannelSubscription.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTPushChannel.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTPushAdmin.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTPubSubDevice.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTPublishResultSerial.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTPublishResult.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTPresenceMessage.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTPresence.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTPaginatedResult.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTOutboundAnnotation.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTMessageVersion.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTMessageOperation.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTMessageAnnotations.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTMessage.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTLog.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTLocalDevice.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTHttpPresence.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTHTTPPaginatedResponse.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTHttpChannels.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTHttpChannel.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTHttpAnnotations.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTEventEmitter.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTDevicePushDetails.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTDeviceIdentityTokenDetails.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTDeviceDetails.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTDefault.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTDataQuery.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTCrypto.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTConnection.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTClientOptions.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTClientInformation.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTChannels.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTChannelProtocol.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTChannelOptions.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTBaseMessage.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTAuthOptions.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTAuthDetails.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTAuth.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/ARTAnnotation.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/AblyPublic.h | Updated as part of this pull request. |
| Source/include/AblyPubSubDevice/AblyInternal.h | Updated as part of this pull request. |
| Source/ARTWrapperSDKProxyRealtime.m | Updated as part of this pull request. |
| Source/ARTWrapperSDKProxyPush.m | Updated as part of this pull request. |
| Source/ARTWebSocketTransport.m | Updated as part of this pull request. |
| Source/ARTStats.m | Updated as part of this pull request. |
| Source/ARTRealtimeTransportFactory.m | Updated as part of this pull request. |
| Source/ARTRealtimePresence.m | Updated as part of this pull request. |
| Source/ARTRealtimeChannels.m | Updated as part of this pull request. |
| Source/ARTRealtimeChannel.m | Updated as part of this pull request. |
| Source/ARTRealtimeAnnotations.m | Updated as part of this pull request. |
| Source/ARTPushDeviceRegistrations.m | Updated as part of this pull request. |
| Source/ARTPushChannelSubscriptions.m | Updated as part of this pull request. |
| Source/ARTPushChannel.m | Updated as part of this pull request. |
| Source/ARTPushAdmin.m | Updated as part of this pull request. |
| Source/ARTPushActivationStateMachine.m | Updated as part of this pull request. |
| Source/ARTPushActivationState.m | Updated as part of this pull request. |
| Source/ARTPubSubDevice.m | Updated as part of this pull request. |
| Source/ARTProtocolMessage.m | Updated as part of this pull request. |
| Source/ARTPresenceMessage.m | Updated as part of this pull request. |
| Source/ARTPluginAPI.m | Updated as part of this pull request. |
| Source/ARTNSMutableRequest+ARTHttpClient.m | Updated as part of this pull request. |
| Source/ARTNSError+ARTUtils.m | Updated as part of this pull request. |
| Source/ARTLog.m | Updated as part of this pull request. |
| Source/ARTJsonLikeEncoder.m | Updated as part of this pull request. |
| Source/ARTJsonEncoder.m | Updated as part of this pull request. |
| Source/ARTHttpPresence.m | Updated as part of this pull request. |
| Source/ARTHTTPPaginatedResponse.m | Updated as part of this pull request. |
| Source/ARTHTTPExecutor.m | Updated as part of this pull request. |
| Source/ARTHttpAnnotations.m | Updated as part of this pull request. |
| Source/ARTFallbackHosts.m | Updated as part of this pull request. |
| Source/ARTFallback.m | Updated as part of this pull request. |
| Source/ARTEventEmitter.m | Updated as part of this pull request. |
| Source/ARTErrorChecker.m | Updated as part of this pull request. |
| Source/ARTDataEncoder.m | Updated as part of this pull request. |
| Source/ARTCrypto.m | Updated as part of this pull request. |
| Source/ARTConnection.m | Updated as part of this pull request. |
| Source/ARTClientOptions.m | Updated as part of this pull request. |
| Source/ARTChannels.m | Updated as part of this pull request. |
| Source/ARTChannel.m | Updated as part of this pull request. |
| Source/ARTBaseMessage.m | Updated as part of this pull request. |
| Source/ARTAuthOptions.m | Updated as part of this pull request. |
| Source/ARTAuth.m | Updated as part of this pull request. |
| Scripts/set-version.sh | Updated as part of this pull request. |
| README.md | Updated as part of this pull request. |
| LiveObjects/Tests/AblyLiveObjectsTests/Unit/WireObjectMessageSizeTests.swift | Updated as part of this pull request. |
| LiveObjects/Tests/AblyLiveObjectsTests/Unit/PublicRealtimeObjectTests.swift | Updated as part of this pull request. |
| LiveObjects/Tests/AblyLiveObjectsTests/Unit/PathObjectSubscriptionTests.swift | Updated as part of this pull request. |
| LiveObjects/Tests/AblyLiveObjectsTests/Unit/ObjectMessageTests.swift | Updated as part of this pull request. |
| LiveObjects/Tests/AblyLiveObjectsTests/Unit/LiveObjectMutableStateTests.swift | Updated as part of this pull request. |
| LiveObjects/Tests/AblyLiveObjectsTests/Unit/InternalDefaultLiveMapTests.swift | Updated as part of this pull request. |
| LiveObjects/Tests/AblyLiveObjectsTests/Unit/InternalDefaultLiveCounterTests.swift | Updated as part of this pull request. |
| LiveObjects/Tests/AblyLiveObjectsTests/Unit/DefaultInternalPluginTests.swift | Updated as part of this pull request. |
| LiveObjects/Tests/AblyLiveObjectsTests/Unit/DefaultInstanceTests.swift | Updated as part of this pull request. |
| LiveObjects/Tests/AblyLiveObjectsTests/Integration/ObjectLifetimesTests.swift | Updated as part of this pull request. |
| LiveObjects/Tests/AblyLiveObjectsTests/Helpers/Sandbox.swift | Updated as part of this pull request. |
| LiveObjects/Tests/AblyLiveObjectsTests/Helpers/ClientHelper.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Utility/WireValue.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Utility/NSNumber+Extensions.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Utility/JSONValue.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Utility/Data+Extensions.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Public/Public Proxy Objects/PublicObjectsStore.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Public/Public Proxy Objects/PublicDefaultRealtimeObject.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Public/Plugin.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Protocol/SyncCursor.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Path Based API/Public/RealtimeObject.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Path Based API/Public/Channel+Object.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Path Based API/Default/DefaultPrimitivePathObject.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Path Based API/Default/DefaultPrimitiveInstance.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Path Based API/Default/DefaultLiveCounterPathObject.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Path Based API/Default/DefaultLiveCounterInstance.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Internal/ObjectCreationHelpers.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Internal/LiveObjectMutableState.swift | Updated as part of this pull request. |
| LiveObjects/Sources/AblyLiveObjects/Internal/ARTClientOptions+Objects.swift | Updated as part of this pull request. |
| LiveObjects/README.md | Updated as part of this pull request. |
| LiveObjects/Example/AblyLiveObjectsExample/ViewModels/TaskBoardViewModel.swift | Updated as part of this pull request. |
| LiveObjects/Example/AblyLiveObjectsExample/ViewModels/LiveCounterViewModel.swift | Updated as part of this pull request. |
| LiveObjects/Example/AblyLiveObjectsExample/ContentView.swift | Updated as part of this pull request. |
| LiveObjects/Example/AblyLiveObjectsExample/AblyLiveObjectsExampleApp.swift | Updated as part of this pull request. |
| LiveObjects/CONTRIBUTING.md | Updated as part of this pull request. |
| Examples/SPM/Tests/SPMTests/SPMTests.swift | Updated as part of this pull request. |
| Examples/SPM/Sources/SPMIntegration/main.swift | Updated as part of this pull request. |
| Examples/AblyPush/AblyPushExample/ContentView.swift | Updated as part of this pull request. |
| Examples/AblyPush/AblyPushExample/App.swift | Updated as part of this pull request. |
| Docs/tools-for-investigating-test-failures.md | Updated as part of this pull request. |
| CONTRIBUTING.md | Updated as part of this pull request. |
| CLAUDE.md | Updated as part of this pull request. |
| .github/workflows/uts.yaml | Updated as part of this pull request. |
| _AblyPluginSupportPrivate/include/APRealtimeClient.h | Updated as part of this pull request. |
Review details
Suppressed comments (2)
.github/workflows/uts.yaml:37
- This workflow comment uses the Objective-C spelling for a Swift constructor. After the new
NS_SWIFT_NAME, the core test leg usesRealtimeClient(options:);ARTRealtimeClient(options:)is not the Swift API and makes this CI documentation misleading.
Source/include/AblyPubSubDevice/AblyInternal.h:7 - These imports are still re-exported by a normal
import AblyPubSubDevice: the module's umbrella importsAblyInternal.hfromAblyPubSubDevice.h(line 16). Moving the HTTP headers fromAblyPublic.hto this file therefore only hides them from Jazzy, not consumers, soHttpClientand the HTTP channel types remain importable despite the stated internal-only surface. Remove this re-export from the public umbrella and import it explicitly only for SDK-authored targets, or otherwise keep the internal module separate.
- Files reviewed: 296/318 changed files
- Comments generated: 5
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
🟡 Changes recommended
Public documentation still uses the now-private realtime initializer, and one CI comment uses the wrong Swift type name.
Get a fresh assessment by requesting another Copilot review.
Review details
Suppressed comments (2)
LiveObjects/Sources/AblyLiveObjects/Public/Plugin.swift:16
- This public example calls an initializer that this PR moves to
AblyPubSubDevice.Private, so application code copied from the generated documentation cannot compile and also bypasses the required device declaration. Use the public factory, consistent with the README examples.
Source/include/AblyPubSubDevice/ARTPubSubDevice.h:15 - This public documentation now points to
initWithOptions:, but that initializer is removed from the public header by this PR. Avoid directing Objective-C consumers to an unavailable selector and describe the returned client without referencing private construction API.
- Files reviewed: 296/318 changed files
- Comments generated: 1
- Review effort level: Balanced
22d7c3c to
16bd2f3
Compare
| @@ -4,7 +4,7 @@ NS_ASSUME_NONNULL_BEGIN | |||
|
|
|||
| /// The interface that plugins use to interact with a realtime client. | |||
| /// | |||
| /// This exists so that plugins do not need to make use of the public `ARTRealtime` class, which allows the internal components of ably-cocoa to continue the (existing before we introduced plugins) pattern of also not making use of this public class. | |||
| /// This exists so that plugins do not need to make use of the public `ARTRealtimeClient` class, which allows the internal components of ably-cocoa to continue the (existing before we introduced plugins) pattern of also not making use of this public class. | |||
There was a problem hiding this comment.
The file is called APRealtimeClient.h ?
There was a problem hiding this comment.
yes, not to confuse with another objc header - ARTRealtimeClient.h
| @@ -4,7 +4,7 @@ NS_ASSUME_NONNULL_BEGIN | |||
|
|
|||
| /// The interface that plugins use to interact with a realtime client. | |||
| /// | |||
| /// This exists so that plugins do not need to make use of the public `ARTRealtime` class, which allows the internal components of ably-cocoa to continue the (existing before we introduced plugins) pattern of also not making use of this public class. | |||
| /// This exists so that plugins do not need to make use of the public `ARTRealtimeClient` class, which allows the internal components of ably-cocoa to continue the (existing before we introduced plugins) pattern of also not making use of this public class. | |||
There was a problem hiding this comment.
| /// This exists so that plugins do not need to make use of the public `ARTRealtimeClient` class, which allows the internal components of ably-cocoa to continue the (existing before we introduced plugins) pattern of also not making use of this public class. | |
| /// This exists so that plugins do not need to make use of the public `RealtimeClient` class, which allows the internal components of ably-cocoa to continue the (existing before we introduced plugins) pattern of also not making use of this public class. |
There was a problem hiding this comment.
If we decided to remove ART from everywhere, then we should scan code for all ART prefixes and get rid of them. I can see ART prefix present at number of places
There was a problem hiding this comment.
that's only true for swift sources, objc keeps this notation and would mislead reader without proper prefix
There was a problem hiding this comment.
@sacOO7, I agree with @maratal.
This header declares an Objective-C protocol. In Objective-C, the public class name is ARTRealtimeClient. The current text is accurate.
NS_SWIFT_NAME(RealtimeClient) exposes the type as RealtimeClient to Swift. It does not rename the Objective-C class. Replacing ARTRealtimeClient with RealtimeClient would mislead Objective-C readers.
If the project removes ART from Objective-C public APIs, that should be a separate compatibility decision. It must include a complete API migration plan, not only documentation changes.
You are interacting with an AI system.
There was a problem hiding this comment.
@coderabbitai do you think we should rename it to something else like LegacyRealtimeClient or something like that?
There was a problem hiding this comment.
@sacOO7, I would not use LegacyRealtimeClient.
Legacy normally identifies an obsolete API that remains for compatibility. This protocol is an internal abstraction for plugins. It is not a legacy version of ARTRealtimeClient.
Keep APRealtimeClient as the Objective-C protocol name. Keep ARTRealtimeClient in this documentation because it names the actual public Objective-C class.
If the text must describe the Swift API, add a separate sentence such as: “Swift exposes this protocol as RealtimeClient.”
You are interacting with an AI system.
16bd2f3 to
4964e85
Compare
2.0 drops the three members the headers marked for removal: - ARTClientOptions.fallbackHostsUseDefault, whose attribute already said future releases would ignore any supplied value. Its two behaviours go with it: forcing the default fallback hosts in ARTFallbackHosts, and RTN17b3's unconditional fallback retry in ARTRealtime. - ARTConnection.recoveryKey, a straight alias for createRecoveryKey. - ARTStats.intervalGranularity, an unused alias for the unit property. ARTFallbackIncompatibleOptionsException goes too. It was raised only by the two guards against combining fallbackHostsUseDefault with a custom fallback host list, so nothing can raise it now. The custom setFallbackHosts: setter existed only for one of those guards. Removing it lets the compiler synthesise the setter, which honours the property's `copy` attribute — the hand-written one assigned without copying. Eight tests covered the removed property and are gone. The ninth, RSL1k4's idempotent-publishing test, only used it to make fallback hosts available, so it now sets fallbackHosts directly.
The classes that speak HTTP are named for their transport rather than for being "not realtime": ARTRest -> ARTHttpClient, ARTRestChannel(s) -> ARTHttpChannel(s), ARTRestPresence -> ARTHttpPresence, ARTRestAnnotations -> ARTHttpAnnotations. Their internal counterparts and protocols follow, and the sixteen files carrying those names are renamed with them. Swift sees the new names too: none of these classes carried NS_SWIFT_NAME, so the Objective-C name is the Swift name. ARTRealtime is untouched. Its replacement name is still undecided. CHANGELOG.md keeps the old names, since it describes released 1.x.
The concrete NSURLSession-backed executor was ARTHttp, which said nothing about its job and sat one word away from ARTHttpClient after the Rest rename. It becomes ARTHTTPExecutor, and the protocol it implements becomes ARTHTTPExecuting so the name is free. Giving the class the protocol's old name would also have worked — Objective-C keeps the two in separate namespaces — but Swift then imports the protocol as ARTHTTPExecutorProtocol, which is the wrong name for the seam tests substitute. Both are private API, so consumers see no change.
The seven suites in Test/AblyTests that cover the HTTP client follow the classes: RestClientTests -> HttpClientTests, RestClientChannelTests -> HttpClientChannelTests, and so on. Files and class names move together. Scripts/set-version.sh lists one of these files by path for its version substitution, so it is updated in step. Test/UTS keeps its `rest` directories. That layout is not named after this SDK's classes: it mirrors the uts modules in ably/specification, which the Test/UTS README keeps in sync with the Kotlin module so a reader can move between SDKs.
The specification already calls this interface RealtimeClient, so the rename brings the class into line with the spec rather than away from it, and it restores the pair with ARTHttpClient: both top-level entry objects now say what they are. Note that PDR-091d justifies this rename as consistency with a createRealtimeClient factory. That argument does not apply here — this SDK is device-side only and its one door is PubSubDevice.createClient — so the grounds above are what carry it. Only the top-level class moves, together with its internal companion: ARTRealtimeInternal becomes ARTRealtimeClientInternal. ARTRealtimeChannel, ARTRealtimeChannels, ARTRealtimePresence and ARTRealtimeAnnotations keep their names, which the spec also uses.
ARTHttpClient, ARTHttpChannel, ARTHttpChannels, ARTHttpPresence and ARTHttpAnnotations move from AblyPublic.h to AblyInternal.h, the umbrella for API that is public but intended for Ably-authored SDKs and excluded from the generated documentation. ARTHttpClient's initializers move to ARTHttpClient+Private.h and its three createWith* class factories go entirely. An application reaches Ably through PubSubDevice's factory, so none of these is documented and none can be built from outside the SDK. ARTPushProtocol declared four class methods taking a rest: parameter of that type, each with a realtime: twin. An application has no way to obtain the argument any more, so the four go, along with the wrapper proxy's implementations of them. ARTPushInternal keeps its own set, which is what the push tests now call. Three public realtime headers imported an HTTP header, and two were doing so for a type declared inside it rather than for the HTTP class: ARTPresenceQuery lived in ARTHttpPresence.h and ARTAnnotationsQuery in ARTHttpAnnotations.h, while the public ARTRealtimePresenceQuery inherits from the first and ARTRealtimeAnnotations takes the second. Both are shared query types, so they move to ARTPresence.h and ARTAnnotation.h and stay documented. The realtime headers now import what they use. ARTHttpChannels.h imported ARTHttpClient.h without using it, and jazzy follows imports from AblyPublic.h, so leaving it would have kept the class in the documentation. Doc comments in ARTClientOptions, ARTRealtimeClient and ARTStats named the class and now describe the HTTP client instead. The generated API reference lists none of the five HTTP types and both query types. Tests keep using these classes directly: the headers are still in the module, and the initializers are in the Private submodule.
An application creates a client through PubSubDevice's factory, which declares that the client runs on an end user's device. A client built any other way carries no such declaration, so Ably classifies its traffic by default rules — which is the thing the device package exists to prevent. The three initializers move from the public ARTRealtimeProtocol to a Construction category in ARTRealtimeClient+Private.h. The class itself stays public, since the factory returns one. ARTPubSubDevice.m imports the private header to build it, and tests keep calling the initializers through the Private submodule. The class factories go with them. +createWithOptions:, +createWithKey: and +createWithToken: were NS_SWIFT_UNAVAILABLE convenience wrappers around the initializers they each call, and nothing in the SDK, the tests or the examples used them. ARTHttpClient lost its own set in the commit before this one. Two doc comments in ARTClientOptions referred to the protocol initializer by name and now describe creating a client instead. The README, the LiveObjects README, the SPM example, Examples/AblyPush, the LiveObjects example app and the documentation example on AblyLiveObjects.Plugin all built clients with the initializer and now use PubSubDevice.createClient(options:). ProxySession's usage example built one too. Clients in the UTS come from makeRealtimeForSide(options:), which is what that example now shows.
Every class, protocol, enum, typedef, function and constant in the module's public headers gets an NS_SWIFT_NAME without the prefix, so Swift now writes RealtimeClient, ClientOptions, ErrorInfo and Message. Objective-C is unchanged, and so is the private module: Swift code that reaches internals through `import AblyPubSubDevice.Private` still writes ARTProtocolMessage. ARTState is the one exception. `State` is SwiftUI's property-wrapper type, so a view importing both modules could no longer write the State attribute. The header says so next to the enum. Three names now need a module qualifier in this repository, because _AblyPluginSupportPrivate already spells its mirror protocols without a prefix: RealtimeChannel in two LiveObjects files, RealtimeChannel and RealtimeChannelState in PluginAPITests, and AblyLiveObjects' own internal PublishResult in two test helpers. A consumer never sees this — that module is not a product. Annotation and Cancellable do collide with SwiftUI and Combine. Both are resolvable with a module qualifier rather than breaking, unlike State.
ARTState, ARTStatus, ARTException and ARTClientCodeError are internal machinery that nothing outside Source/ uses. They move to private headers and lose their Swift names, so only the Private submodule sees them, prefix and all. ARTState therefore no longer needs its hand-written exception for shadowing SwiftUI's property wrapper. The public header keeps the error model and is renamed ARTErrorInfo.h after the class it declares; ARTStatus.m splits to match. ARTStatusCallback and two ARTStatus forward declarations go too — none had a use in the repository.
Twelve test files reached SDK internals without naming the submodule they come from — ARTProtocolMessage, ARTDataEncoder, the push storage keys and so on. They compiled because Swift's importer does not enforce an explicit Clang submodule per file: one import anywhere in a module makes its declarations resolve everywhere in that module, and AblyTests has twenty-three other files that do import it. That is not a guarantee to build on, and it hides which files depend on internals. Each of the twelve now imports AblyPubSubDevice.Private itself.
4964e85 to
3bbf750
Compare
Stacked on #2285. PDR-091d decided on 2026-09-14 that the new major takes the renamed public surface and drops the deprecated one, on the grounds that the new packages are "new artifacts with a new major version and no existing consumers… free of backward-compatibility obligation".
Ten commits, each of which builds on its own. 322 files.
Deleted
The three members the headers marked for removal:
ARTClientOptions.fallbackHostsUseDefault,ARTConnection.recoveryKey(a straight alias forcreateRecoveryKey) andARTStats.intervalGranularity. This follows 091d's rule — "anything already marked deprecated in the current release is a deletion candidate by default; keeping it requires the SDK owner to say why".ARTFallbackIncompatibleOptionsExceptionwent with them. It was public but raised only by the two guards against combining the removed flag with a custom fallback-host list, so nothing can raise it now. Flagging it because it was not itself marked deprecated.Eight tests covered the removed property and are gone. A ninth nearly went with them and shouldn't have: RSL1k4's idempotent-publishing test only set the flag to make fallback hosts available, so it now sets
fallbackHostsdirectly.On the spec. Removing
fallbackHostsUseDefaultalso removes RTN17b3's unconditional fallback retry. That clause no longer specifies anything —features.md:638reads "(RTN17b3)This clause has been replaced byRSC17has of specification version 4.0.0" — and the spec's preamble says support for the option "is optional. Client libraries that have no requirement for backwards compatibility with these options (for example, new SDKs) may omit support for them entirely." So no deviation needs recording.One behaviour change worth a second look. The custom
setFallbackHosts:existed only for one of those guards. Removing it lets the compiler synthesise the setter, which honours the property'scopyattribute — the hand-written one assigned without copying.Renamed
ARTRest→ARTHttpClient,ARTRestChannel(s)→ARTHttpChannel(s),ARTRestPresence→ARTHttpPresence,ARTRestAnnotations→ARTHttpAnnotations, with their internal counterparts, protocols, the sixteen files carrying those names, and the seven test suites that exercise them.ARTRealtime→ARTRealtimeClient, together with its internal companionARTRealtimeInternal→ARTRealtimeClientInternal.ARTRealtimeChannel,ARTRealtimeChannels,ARTRealtimePresenceandARTRealtimeAnnotationskeep their names, which the spec also uses.The stated rationale for that one does not apply here. 091d justifies it as consistency with a
createRealtimeClient(…)factory, and per 091b2 this SDK has no such factory — ably-cocoa is device-only, withPubSubDevice.createClient(options)as its one door. What carries it instead: the spec already names the interfaceRealtimeClient(features.md:2140), so this moves toward the spec rather than away; and it restores the pair withARTHttpClient, since both top-level entry objects now say what they are.Separately, the private HTTP executor was
ARTHttp, which said nothing about its job and sat one word fromARTHttpClientafter the rename. It becomesARTHTTPExecutor, and the protocol it implements becomesARTHTTPExecuting.No longer public
The HTTP client family.
ARTHttpClient,ARTHttpChannel,ARTHttpChannels,ARTHttpPresenceandARTHttpAnnotationsmove fromAblyPublic.htoAblyInternal.h, andARTHttpClient's initializers move toARTHttpClient+Private.h. Two shared query types were declared inside HTTP headers that public realtime headers had to import for them —ARTPresenceQueryandARTAnnotationsQuery— so they move toARTPresence.handARTAnnotation.hand stay documented.ARTPushProtocoldeclared four class methods taking arest:parameter of that type — the remote- and location-notification registration callbacks — each with arealtime:twin. An application has no way to obtain the argument any more, so those four are removed, along with the wrapper proxy's implementations of them. Therealtime:twins are what an app uses;Examples/AblyPush/App.swiftcalls them.ARTPushInternalkeeps its ownrest:set, which is what the push tests call.Construction.
ARTRealtimeClient's three initializers move to a Construction category inARTRealtimeClient+Private.h, and the sixNS_SWIFT_UNAVAILABLEclass factories on both top-level classes go entirely. An application builds a client throughPubSubDevice.createClient(options:), which declares that the client runs on an end user's device; a client built any other way carries no such declaration. The class itself stays public, since the factory returns one, and tests reach the initializers through thePrivatesubmodule.The internal status types.
ARTState,ARTStatus,ARTExceptionandARTClientCodeErrorare internal machinery that nothing outsideSource/uses, and no public declaration names them —ARTStatusCallbackand twoARTStatusforward declarations had no use in the repository at all. They move to private headers. The public header keeps the error model and is renamedARTErrorInfo.hafter the class it declares.Naming where the internals come from. Moving those types exposed something worth fixing on its own: twelve test files and five implementation files used SDK internals without importing the header or submodule that declares them. They compiled because neither Clang nor Swift enforces that strictly — a transitive include in Objective-C, and in Swift one
import AblyPubSubDevice.Privateanywhere in a module resolving the name everywhere in it. The last commit makes each of those files say what it depends on.No ART prefix in Swift
186 declarations in the public headers gain an
NS_SWIFT_NAMEwithout the prefix, so Swift now writesRealtimeClient,ClientOptions,ErrorInfoandMessage. Objective-C is unchanged, and so is the private module: Swift that reaches internals throughimport AblyPubSubDevice.Privatestill writesARTProtocolMessage.Two things to know before approving this part.
AnnotationandCancellablecollide with SwiftUI and Combine. Neither breaks anything — a caller disambiguates withAblyPubSubDevice.Annotation— but a SwiftUI file that writes the bare name gets an ambiguity error.ARTStatewould have been worse, because it shadows SwiftUI's property wrapper and would have broken every view in a file importing both; it is internal now, so the question does not arise.Inside this repository, three names need a module qualifier, because
_AblyPluginSupportPrivatealready spells its mirror protocols without a prefix:RealtimeChannelin two LiveObjects files,RealtimeChannelandRealtimeChannelStateinPluginAPITests, andAblyLiveObjects' own internalPublishResultin two test helpers. A consumer never sees this, since that module is not a product.Through the device door
The README, the LiveObjects README, the SPM example,
Examples/AblyPush, the LiveObjects example app and the DocC example onAblyLiveObjects.Pluginall built clients with the initializer that is now internal. They usePubSubDevice.createClient(options:)instead, in the same commit that makes the initializer internal, so no commit in the stack leaves an example unbuildable.Deliberately not here
Test/UTSkeeps itsrestdirectories: that layout mirrors theutsmodules inably/specification(objects,realtime,rest), whichTest/UTS/README.mdkeeps in sync with the Kotlin module. Test method names still carry the old vocabulary, since they encode the suite path — only the handful naming a renamed symbol were changed. FoldingARTHttpClientintoARTHttpClientInternalis a separate change, and so is doing anything aboutARTStateandARTClientCodeErrorbeing non-spec error-code spaces that leak intoARTErrorInfo.code.Verification
Every one of the ten commits builds under
swift build --build-tests. At the tip: clean under-warnings-as-errors;build-for-testingsucceeds on iOS and tvOS simulators;Examples/SPMtests,AblyPushExampleand the LiveObjects example app all build on every platform their CI jobs use; LiveObjects'sortImportslint is clean; EditorConfig rules hold across the changed files. Tests pass locally against the sandbox.The iOS
build-for-testingleg is the one that matters for the push changes:PushTests.swiftsits entirely inside#if os(iOS), so a macOS-only check never compiles it.Scripts/set-version.shlists one renamed test file by path with no existence check, so it is updated in step; otherwise everymake bump_*would have hit a missing file.