Skip to content

Vend the SDK as a single AblyPubSubDevice module - #2285

Merged
maratal merged 1 commit into
deps/raise-platform-floorfrom
split/drop-core-product
Sep 18, 2026
Merged

maratal merged 1 commit into
deps/raise-platform-floorfrom
split/drop-core-product

Conversation

@maratal

@maratal maratal commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #2284. The package vends two products and one module.

products: [
    .library(name: "AblyPubSubDevice", targets: ["AblyPubSubDevice"]),
    .library(name: "AblyLiveObjects",  targets: ["AblyLiveObjects"]),
]

PDR-091b2 specifies exactly this for ably-cocoa — "New package: SPM product AblyPubSubDevice. Factory door: PubSubDevice.createClient(options)". AblyPubSubDevice is the SDK here: there is no core package or core product beside it, because this SDK has no server half to share a core with. An application has one way in:

import AblyPubSubDevice

let options = ARTClientOptions(key: "…")
let client = PubSubDevice.createClient(options: options)

import Ably no longer exists

That is the part worth reviewing, because it required merging rather than renaming. Removing the core product does not stop anyone writing import Ably: the module is what makes an import resolve, and nothing in SPM or Clang hides a module that sits in the build graph. I verified that — a consumer depending only on AblyPubSubDevice could still import Ably and compile.

So the core target is merged into AblyPubSubDevice. There is now a single module, and the probe that used to compile now fails:

error: no such module 'Ably'

The alternative was to keep two targets and rename the core's module to AblyPubSubCore. That would have left import AblyPubSubCore available as a second entry point; merging leaves none.

What moved

  • PubSubDevice/ARTPubSubDevice.{h,m} into Source, and the directory is gone.
  • Source/include/Ably/ → Source/include/AblyPubSubDevice/ (72 public headers), with Ably.h → AblyPubSubDevice.h as the umbrella. AblyPublic.h now imports the door, so PubSubDevice.createClient is reachable from the module.
  • Source/include/module.modulemap declares module AblyPubSubDevice, and Ably.Private becomes AblyPubSubDevice.Private.
  • Every import follows: 261 #import <Ably/…>, 196 Swift import Ably, 48 Ably.Private, plus @import forms in Objective-C++ and one module-qualified Ably.WebSocketFactory.
  • AblyLiveObjects and every test target depend on AblyPubSubDevice instead of Ably.
  • Scripts/jazzy.sh and Scripts/generate-markdown-api-reference.py both carried the old module name and header path; the API-reference script failed outright until its -module-name was updated.

Consequences to weigh

AblyLiveObjects consumers now link the whole SDK. The plugin's target depends on the merged module, so there is no way to take LiveObjects without it. Acceptable for a plugin that loads into a client, but it is a real coupling that the two-target shape avoided.

The core/device separation is gone, not merely relaxed. The door used to be its own target that could only reach the core's public headers. They are now one target, so nothing stops implementation code referencing the factory. In exchange there is no second module for anyone to import, and nothing in the manifest or the docs describes a core SDK any more.

Objective-C consumers change their imports too — #import <Ably/Ably.h> becomes #import <AblyPubSubDevice/AblyPubSubDevice.h>. A new major with a new package name, so no existing consumer is broken in place.

Verification

swift build --build-tests clean. Examples/SPM builds from a clean .build. AblyPushExample reaches ** BUILD SUCCEEDED ** on the iOS simulator — its project file linked the old product by name in two places. PubSubDeviceTests/test__001 passes against the sandbox, and the generated API reference builds and contains the door.

Wording

Nothing in Package.swift, CLAUDE.md, CONTRIBUTING.md or Docs/plugins.md still calls anything a core SDK or an Ably product, and the Ably target no longer exists to be referred to. generate-markdown-api-reference.py also titled its output after the Ably module; the reference now names AblyPubSubDevice.

@coderabbitai

coderabbitai Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

Important

Review skipped

The saved review history does not include the base for the last reviewed commit. This saved history cannot establish the base for an incremental review. Comment @coderabbitai full review to establish a new review baseline. No full review was started, and the last reviewed checkpoint was preserved.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 59abd239-a1a4-4379-b1df-95d318d790f4

📥 Commits

Reviewing files that changed from the base of the PR and between 7f1807e and 62ed19a.

📒 Files selected for processing (6)
  • CLAUDE.md
  • CONTRIBUTING.md
  • Examples/AblyPush/AblyPushExample.xcodeproj/project.pbxproj
  • Examples/SPM/Package.swift
  • Package.swift
  • README.md

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


Walkthrough

The core Swift Package Manager product is renamed from AblyPubSubCore to Ably. Example projects, package dependencies, installation instructions, release guidance, and application dependency documentation now use Ably.

Changes

SPM Product Rename

Layer / File(s) Summary
Core product declaration
Package.swift
The library product is renamed to Ably. Obsolete product-name comments are removed.
Example integration updates
Examples/SPM/Package.swift, Examples/AblyPush/AblyPushExample.xcodeproj/project.pbxproj
SPM and Xcode example targets now reference the Ably product.
Documentation and release guidance
README.md, CONTRIBUTING.md, CLAUDE.md
Installation, release, and dependency documentation now names the product Ably.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Bug fix

Suggested reviewers: lawrence-forooghian

Merge Risk: ⚪ Minimal · up to 62ed1

The renamed SPM product is consistently referenced by the examples and documentation, with the reported builds passing.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning The title is misleading. The pull request renames the SPM core product from AblyPubSubCore to Ably; it does not vend the SDK as a single AblyPubSubDevice module. Use a title such as Rename the SPM core product to Ably.
✅ Passed checks (4 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 2…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch split/drop-core-product

A rabbit hops where package names align
Ably now shines on every line
Examples follow, neat and bright
Release notes point to the right
SPM paths now match just right

Comment @coderabbitai help to get the list of available commands.

@maratal
maratal added this pull request to stack #2276 September 15, 2026 22:12
@maratal
maratal requested a review from ttypic September 16, 2026 00:56
maratal added a commit that referenced this pull request Sep 16, 2026
Seventeen tests declared an implicitly unwrapped optional, assigned it only
inside a waitUntil closure, and read it after. When the wait times out the
value is still nil, and reading it raises a fatal error that kills the whole
test process rather than failing one test.

That is worse than it sounds. xcodebuild relaunches the runner and resumes
from the *next* test, so the crashed test is never retried — a failure that
-retry-tests-on-failure would otherwise absorb becomes a red lane, and the
tests that happened to be in flight are reported as failures too. A run on
#2285 lost RealtimeClientConnectionTests.test__085 and three unrelated tests
to a single timeout this way.

Each site now captures into a plain optional and binds the original name
with XCTUnwrap after the wait, so the code below is unchanged. A timeout
becomes an ordinary, retryable failure.

Two force unwraps inside the same recovery test go with them: an
implicitly unwrapped createRecoveryKey() result and a try!.
maratal added a commit that referenced this pull request Sep 16, 2026
Seventeen tests declared an implicitly unwrapped optional, assigned it only
inside a waitUntil closure, and read it after. When the wait times out the
value is still nil, and reading it raises a fatal error that kills the whole
test process rather than failing one test.

That is worse than it sounds. xcodebuild relaunches the runner and resumes
from the *next* test, so the crashed test is never retried — a failure that
-retry-tests-on-failure would otherwise absorb becomes a red lane, and the
tests that happened to be in flight are reported as failures too. A run on
#2285 lost RealtimeClientConnectionTests.test__085 and three unrelated tests
to a single timeout this way.

Each site now captures into a plain optional and binds the original name
with XCTUnwrap after the wait, so the code below is unchanged. A timeout
becomes an ordinary, retryable failure.

Three force unwraps inside the callbacks go with them, since each could kill
the process the same way: an implicitly unwrapped createRecoveryKey() result
and a try! in the recovery test, and a try! XCTUnwrap on the token request in
AuthTests. The callbacks now assign whatever they were given and let the
XCTUnwrap after the wait report a nil.
@maratal
maratal force-pushed the split/drop-core-product branch from 62ed19a to 4568437 Compare September 16, 2026 14:32
@maratal maratal changed the title Vend the core SDK as the Ably product again Vend the SDK as a single AblyPubSubDevice module Sep 16, 2026
@maratal
maratal force-pushed the split/drop-core-product branch from 4568437 to 6231c41 Compare September 16, 2026 16:18
@maratal
maratal force-pushed the split/drop-core-product branch from 6231c41 to 7fe8054 Compare September 16, 2026 18:29

@sacOO7 sacOO7 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previously we also provided Rest API on top of existing ably-cocoa library right?
Current AblyPubSubDevice only provides access to realtime api via factory method. How we planning expose REST api then? We already have functionality for the same. I feel we should also expose AblyPubSubServer but use-case for the same will be limited, that would be the only thing wdyt

@sacOO7
sacOO7 requested a lite review from Copilot September 18, 2026 09:20

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

There are a couple of verified module-name mismatches/incomplete declarations in changed files that will break or degrade tooling/builds (e.g., Jazzy module name and missing emit declaration in ARTEventEmitter.h).

Get a fresh assessment by requesting another Copilot review.

Pull request overview

This PR restructures the SwiftPM packaging so the SDK is vended as a single Clang/Swift module named AblyPubSubDevice, eliminating the previously-importable Ably module entry point while keeping AblyLiveObjects as a separate product that depends on the SDK module.

Changes:

  • Merge the former “core” target/module into AblyPubSubDevice and update the module map / umbrella headers accordingly (AblyPubSubDevice + AblyPubSubDevice.Private).
  • Update all Swift/ObjC imports across tests, LiveObjects, examples, and docs from Ably / Ably.Private to AblyPubSubDevice / AblyPubSubDevice.Private.
  • Update tooling/scripts to use the new module/header locations (symbolgraph extraction, docs generation, etc.).
File summaries
File Description
Test/UTS/unit/rest/TimeTests.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/UTS/unit/realtime/ConnectionRecoveryTests.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/UTS/unit/objects/ValueTypesTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/unit/objects/RealtimeObjectTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/unit/objects/PathObjectSubscribeTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/unit/objects/PathObjectMutationsTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/unit/objects/ObjectsUTSHelpers.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/unit/objects/ObjectsPoolTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/unit/objects/LiveObjectSubscribeTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/unit/objects/InternalLiveCounterApiTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/README.md Update documentation references from Ably.Private to AblyPubSubDevice.Private.
Test/UTS/integration/standard/rest/PublishTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/integration/standard/rest/PresenceTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/integration/standard/rest/HistoryTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/integration/standard/realtime/TokenRequestTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/integration/standard/realtime/ChannelHistoryTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/integration/standard/objects/ObjectsSyncTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/integration/standard/objects/ObjectsLifecycleTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/integration/standard/objects/ObjectsGcTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/integration/standard/objects/helpers/ObjectsIntegrationHelpers.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/integration/proxy/realtime/AuthReauthTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/integration/proxy/objects/ObjectsFaultsTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/infra/Utils.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/UTS/infra/unit/UTSTestCase.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/UTS/infra/unit/ProtocolMessage.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/UTS/infra/unit/NoOpReachability.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/UTS/infra/unit/MockWebSocket.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/UTS/infra/unit/MockTimeProvider.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/UTS/infra/unit/MockHTTPClient.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/UTS/infra/unit/CapturingLog.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/infra/SideSeamTests.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/UTS/infra/Side.swift Remove import Ably, keep import AblyPubSubDevice.
Test/UTS/infra/integration/proxy/ProxyTestCase.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/infra/integration/proxy/ProxySession.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/infra/integration/IntegrationTestCase.swift Update Swift import from Ably to AblyPubSubDevice.
Test/UTS/deviations.md Update documentation paths to Source/include/AblyPubSubDevice/....
Test/AblyTestsObjC/ObjcppTest.mm Update umbrella import to <AblyPubSubDevice/AblyPubSubDevice.h>.
Test/AblyTestsObjC/CryptoTest.m Update @import to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/AblyTestsObjC/ARTPubSubDeviceTests.m Update private import to AblyPubSubDevice.Private.
Test/AblyTestsObjC/ARTInternalLogTests.m Update @import to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/AblyTestsObjC/ARTArchiveTests.m Update @import to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/AblyTests/Tests/WrapperSDKProxyTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/UtilitiesTests.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/AblyTests/Tests/SystemTimeProviderTests.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Tests/SummaryTypesTests.swift Update @testable import to AblyPubSubDevice.
Test/AblyTests/Tests/StringifiableTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/StatsTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/RetrySequenceTests.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Tests/RestPaginatedTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/RestClientTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/RestClientStatsTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/RestClientPresenceTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/RestClientChannelTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/RestClientChannelsTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/RestAnnotationsTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/RealtimeClientTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/RealtimeClientPresenceTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/RealtimeClientConnectionTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/RealtimeClientChannelTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/RealtimeClientChannelsTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/RealtimeAnnotationsTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/PushTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/PushChannelTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/PushAdminTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/PushActivationStateMachineTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/PubSubDeviceTests.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/AblyTests/Tests/PluginAPITests.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Tests/ObjectLifetimesTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/MessageUpdatesDeletesTests.swift Update imports to AblyPubSubDevice (including @testable).
Test/AblyTests/Tests/LogAdapterTests.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Tests/LocalDeviceStorageTests.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/AblyTests/Tests/DeltaCodecTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/DefaultJitterCoefficientGeneratorTests.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Tests/DefaultInternalLogCoreTests.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Tests/DefaultErrorCheckerTests.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Tests/CryptoTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/ConnectRetryStateTests.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Tests/ClientInformationTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/ChannelOptionsTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/BackoffRetryDelayCalculatorTests.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTests/Tests/AuthTests.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/AblyTests/Tests/AttachRetryStateTests.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Tests/ARTDefaultTests.swift Update submodule import to AblyPubSubDevice.ARTDefault.
Test/AblyTests/Test Utilities/TestUtilities.swift Update imports to AblyPubSubDevice and AblyPubSubDevice.Private.
Test/AblyTests/Test Utilities/TestProxyTransportFactory.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Test Utilities/MockVersion2Log.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Test Utilities/MockRetryDelayCalculator.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Test Utilities/MockJitterCoefficientGenerator.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Test Utilities/MockErrorChecker.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyTests/Test Utilities/MockDeviceStorage.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyTesting/MockInternalLogCore.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblySoakTests/SoakTestWebSocket.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblySoakTests/SoakTestURLSession.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblySoakTests/SoakTestReachability.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblySoakTests/SoakTest.swift Update Swift private import to AblyPubSubDevice.Private.
Test/AblyLiveObjectsTesting/Internals/InternalDefaultRealtimeObjects+TestsOnly.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyLiveObjectsTesting/Internals/ARTRealtimeChannel+TestsOnly.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyLiveObjectsTesting/Internals/ARTErrorInfo+TestsOnly.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyLiveObjectsTesting/Helpers/MockRealtimeObjects.swift Update Swift import from Ably to AblyPubSubDevice.
Test/AblyLiveObjectsTesting/Helpers/MockCoreSDK.swift Update Swift import from Ably to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTWrapperSDKProxyRealtimePresence+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTWrapperSDKProxyRealtimeChannels+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTWrapperSDKProxyRealtimeChannel+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTWrapperSDKProxyRealtimeAnnotations+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTWrapperSDKProxyRealtime+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTWrapperSDKProxyPushDeviceRegistrations+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTWrapperSDKProxyPushChannelSubscriptions+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTWrapperSDKProxyPushChannel+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTWrapperSDKProxyPushAdmin+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTWrapperSDKProxyPush+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTWebSocketTransport+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTVersion2Log.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTURLSessionServerTrust.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTTypes+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTTokenParams+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTRestPresence+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTRestChannels+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTRestChannel+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTRestAnnotations+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTRest+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTRealtimeTransport.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTRealtimePresence+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTRealtimeChannels+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTRealtimeChannel+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTRealtimeAnnotations+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTRealtime+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTQueuedMessage.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTPushDeviceRegistrations+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTPushChannelSubscriptions+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTPushChannel+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTPushAdmin+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTPush+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTPublishResultSerial+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTPublishResult+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTProtocolMessage.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTPresenceMessage+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTPresence+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTPaginatedResult+Subclass.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTPaginatedResult+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTNSMutableRequest+ARTPush.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTMessageVersion+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTMessageSendStatus.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTMessageOperation+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTMessageAnnotations+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTMessage+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTLog+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTLocalDevice+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTJsonLikeEncoder.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTInternalLogCore.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTInternalLog.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTHTTPPaginatedResponse+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTHttp.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTEventEmitter+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTErrorInfo+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTEncoder.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTDeviceStorage.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTDevicePushDetails+Private.h Ensure private header imports new public module path.
Source/PrivateHeaders/Ably/ARTDeviceIdentityTokenDetails+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTDeviceDetails+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTDefault+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTDataQuery+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTDataEncoder.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTCrypto+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTConnectRetryState.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTConnection+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTClientOptions+TestConfiguration.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTClientOptions+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTClientInformation+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTChannelStateChangeParams.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTChannels+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTChannelOptions+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTChannel.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTBaseMessage+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTAuthOptions+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTAuth+Private.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTAttachRetryState.h Update public header include path to AblyPubSubDevice.
Source/PrivateHeaders/Ably/ARTAnnotation+Private.h Update public header include path to AblyPubSubDevice.
Source/include/module.modulemap Rename the module to AblyPubSubDevice and update umbrella header path; keep .Private submodule.
Source/include/AblyPubSubDevice/ARTWrapperSDKProxyRealtimePresence.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTWrapperSDKProxyRealtimeChannels.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTWrapperSDKProxyRealtimeChannel.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTWrapperSDKProxyRealtimeAnnotations.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTWrapperSDKProxyRealtime.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTWrapperSDKProxyPushDeviceRegistrations.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTWrapperSDKProxyPushChannelSubscriptions.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTWrapperSDKProxyPushChannel.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTWrapperSDKProxyPushAdmin.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTWrapperSDKProxyPush.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTWrapperSDKProxyOptions.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTUpdateDeleteResult.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTTypes.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTTokenRequest.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTTokenParams.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTTokenDetails.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTSummaryTypes.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTStringifiable.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTStatus.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTStats.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTRestPresence.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTRestChannels.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTRestChannel.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTRestAnnotations.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTRest.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTRealtimePresence.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTRealtimeChannels.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTRealtimeChannelOptions.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTRealtimeChannel.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTRealtimeAnnotations.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTRealtime+WrapperSDKProxy.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTRealtime.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTPushDeviceRegistrations.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTPushChannelSubscriptions.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTPushChannelSubscription.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTPushChannel.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTPushAdmin.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTPush.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTPubSubDevice.h Update entry-point header to import required SDK headers directly.
Source/include/AblyPubSubDevice/ARTPublishResultSerial.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTPublishResult.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTPresenceMessage.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTPresence.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTPaginatedResult.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTOutboundAnnotation.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTMessageVersion.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTMessageOperation.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTMessageAnnotations.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTMessage.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTLog.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTLocalDevice.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTHTTPPaginatedResponse.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTEventEmitter.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTDevicePushDetails.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTDeviceIdentityTokenDetails.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTDeviceDetails.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTDefault.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTDataQuery.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTCrypto.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTConnection.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTClientOptions.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTClientInformation.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTChannels.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTChannelProtocol.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTChannelOptions.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTBaseMessage.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTAuthOptions.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTAuthDetails.h New/relocated public header under AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTAuth.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/ARTAnnotation.h Update nested includes to AblyPubSubDevice.
Source/include/AblyPubSubDevice/AblyPubSubDevice.h Update umbrella to import new AblyPubSubDevice umbrella headers.
Source/include/AblyPubSubDevice/AblyPublic.h New umbrella header listing public headers for the new module.
Source/include/AblyPubSubDevice/AblyInternal.h New umbrella header listing Ably-internal-but-public SDK surface.
Source/include/Ably/AblyPublic.h Remove old Ably module umbrella header.
Source/include/Ably/AblyInternal.h Remove old Ably module internal umbrella header.
Source/ARTPubSubDevice.m Import ARTClientInformation from new module for agent stamping.
Source/ARTOutboundAnnotation.m Update include to AblyPubSubDevice header path.
Source/ARTDefault.m Update internal include from Ably.h to AblyPubSubDevice.h.
Scripts/jazzy.sh Update Jazzy umbrella header path (module name still needs updating).
Scripts/generate-markdown-api-reference.py Update symbolgraph extraction and header paths for AblyPubSubDevice.
README.md Update installation instructions to reference AblyPubSubDevice product.
Package.swift Remove the Ably target/product and make AblyPubSubDevice the sole SDK module; rewire dependencies.
LiveObjects/Tests/AblyLiveObjectsTests/Unit/WireValueTests.swift Update private import to AblyPubSubDevice.Private.
LiveObjects/Tests/AblyLiveObjectsTests/Unit/WireObjectMessageSizeTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Unit/TestsOnlySeamsTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Unit/SyncCursorTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Unit/PublicRealtimeObjectTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Unit/PathObjectSubscriptionTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Unit/ObjectMessageTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Unit/LiveObjectMutableStateTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Unit/InternalDefaultRealtimeObjectsTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Unit/InternalDefaultLiveMapTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Unit/InternalDefaultLiveCounterTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Unit/DefaultInternalPluginTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Unit/DefaultInstanceTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/JS Integration Tests/TestProxyTransport.swift Update private import and qualified type to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Integration/ObjectLifetimesTests.swift Update private import to AblyPubSubDevice.Private.
LiveObjects/Tests/AblyLiveObjectsTests/Integration/NumberPrecisionTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Integration/AblyLiveObjectsTests.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Helpers/Sandbox.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Helpers/ClientHelper.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/Helpers/Ably+Concurrency.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Tests/AblyLiveObjectsTests/CLAUDE.md Update documented import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Utility/WireValue.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Utility/WireCodable.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Utility/MarkerProtocolHelpers.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Utility/JSONValue.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Utility/Errors.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Utility/Data+Extensions.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Public/Public Proxy Objects/PublicDefaultRealtimeObject.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Public/Plugin.swift Update documentation snippet import to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Protocol/WireObjectMessage.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Protocol/SyncCursor.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Protocol/ObjectMessage.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Public/ValueTypes.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Public/Subscriptions.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Public/RealtimeObject.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Public/PublicObjectMessage.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Public/PathObject.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Public/Instance.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Public/Channel+Object.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Default/DefaultSubscription.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Default/DefaultStatusSubscription.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Default/DefaultPrimitivePathObject.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Default/DefaultPrimitiveInstance.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Default/DefaultPathObject.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Default/DefaultLiveMapPathObject.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Default/DefaultLiveMapInstance.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Default/DefaultLiveCounterPathObject.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Path Based API/Default/DefaultLiveCounterInstance.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Internal/PathObjectSubscriptionRegister.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Internal/ObjectCreationHelpers.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Internal/LiveObjectMutableState.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Internal/InternalTypes.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Internal/InternalDefaultRealtimeObjects.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Internal/InternalDefaultLiveMap.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Internal/InternalDefaultLiveCounter.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Internal/DefaultInternalPlugin.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Internal/CoreSDK.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Internal/ChannelConfigGuards.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/Sources/AblyLiveObjects/Internal/ARTClientOptions+Objects.swift Update Swift import from Ably to AblyPubSubDevice.
LiveObjects/README.md Update usage examples to import AblyPubSubDevice.
LiveObjects/Example/AblyLiveObjectsExample/Views/TaskBoardView.swift Update Swift import to AblyPubSubDevice.
LiveObjects/Example/AblyLiveObjectsExample/Views/LiveCounterView.swift Update Swift import to AblyPubSubDevice.
LiveObjects/Example/AblyLiveObjectsExample/ViewModels/TaskBoardViewModel.swift Update Swift import to AblyPubSubDevice.
LiveObjects/Example/AblyLiveObjectsExample/ViewModels/LiveCounterViewModel.swift Update Swift import to AblyPubSubDevice.
LiveObjects/Example/AblyLiveObjectsExample/ContentView.swift Update Swift import to AblyPubSubDevice.
LiveObjects/Example/AblyLiveObjectsExample/AblyLiveObjectsExampleApp.swift Update Swift import to AblyPubSubDevice.
LiveObjects/CONTRIBUTING.md Update guidance to use import AblyPubSubDevice.Private.
LiveObjects/CLAUDE.md Update documented import from Ably to AblyPubSubDevice.
Examples/SPM/Tests/SPMTests/SPMTests.swift Remove import Ably, keep import AblyPubSubDevice.
Examples/SPM/Package.swift Remove AblyPubSubCore product dependency, keep AblyPubSubDevice.
Examples/AblyPush/AblyPushExample/ContentView.swift Update Swift import from Ably to AblyPubSubDevice.
Examples/AblyPush/AblyPushExample/App.swift Update Swift import from Ably to AblyPubSubDevice.
Examples/AblyPush/AblyPushExample/AblyHelper.swift Update Swift import from Ably to AblyPubSubDevice.
Examples/AblyPush/AblyPushExample.xcodeproj/project.pbxproj Update Xcode package product dependency from AblyPubSubCore to AblyPubSubDevice.
Docs/plugins.md Update docs to reflect plugin support is compiled into AblyPubSubDevice target.
CONTRIBUTING.md Update file paths and target/module references for the new AblyPubSubDevice layout.
CLAUDE.md Update repository guidance to reflect single-module SDK (AblyPubSubDevice).
.swiftpm/xcode/xcshareddata/xcschemes/ably-cocoa.xcscheme Update scheme buildable references from Ably to AblyPubSubDevice.
.claude/skills/uts-to-swift/SKILL.md Update skill docs examples to import AblyPubSubDevice / .Private.
.claude/skills/uts-to-swift/references/objects-mapping.md Update skill reference docs to import AblyPubSubDevice.
Review details
  • Files reviewed: 286/341 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread Scripts/jazzy.sh Outdated
@ttypic

ttypic commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Previously we also provided Rest API on top of existing ably-cocoa library right?
Current AblyPubSubDevice only provides access to realtime api via factory method. How we planning expose REST api then? We already have functionality for the same. I feel we should also expose AblyPubSubServer but use-case for the same will be limited, that would be the only thing wdyt

for device packages we no longer going to provide rest clients in public api across all sdks

The package exposes two products, AblyPubSubDevice and AblyLiveObjects.
AblyPubSubDevice is the SDK: one target, one module, reached through
PubSubDevice.createClient(options:), which declares that the client runs on
an end user's device.

There is no longer a core separate from the device package, so nothing is
described as a core SDK or vended as an Ably product. `import Ably` does not
compile — the module does not exist. Keeping the core as a target of its own
could not achieve that, because nothing in SPM or Clang hides a module that
is in the build graph.

The public headers move to Source/include/AblyPubSubDevice under an
AblyPubSubDevice.h umbrella, the module map declares the new name, and every
`#import <Ably/…>`, `@import Ably`, `import Ably` and `Ably.Private` follows.
jazzy and generate-markdown-api-reference.py carried the old module name,
header path and document title. The tracked ably-cocoa scheme named the old
target too, so the Fastlane lanes could not resolve it.
@maratal
maratal merged commit 356a206 into integration/v2 Sep 18, 2026
32 checks passed
@maratal
maratal deleted the split/drop-core-product branch September 18, 2026 19:26

This branch was successfully deployed

4 active deployments
staging/pull/2285/markdown-api-reference — c6c83a50 Deployed Sep 18, 2026 by github-actions[bot]
staging/pull/2285/jazzydoc — c6c83a50 Deployed Sep 18, 2026 by github-actions[bot]
staging/pull/2285/AblyLiveObjects — c6c83a50 Deployed Sep 18, 2026 by github-actions[bot]
staging/pull/2285/features — c6c83a50 Deployed Sep 18, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants