Skip to main content

Changelog

DittoSwift Version 4.8.1-rc.1

Released: Wed Aug 28th 2024, 3:34 pm

Release Notes:

  • Fixed: A rare scenario where attachments may not be transferred between two peers. (#14158)
  • Other: When failing to load document replication metadata, Ditto now attempts to clear and regenerate the metadata instead of failing to start. This primarily serves to prevent problems after SDK version downgrades. (#13111)
  • Fixed: On-disk logs are now more robust to unclean Ditto shutdown. (#13723)
  • Added: The presence_use_multihop system parameter can be used to disable replicating presence information to other peers in the mesh, reducing network overhead. (#14128)
  • Fixed: iOS devices may fail to sync on LAN when the app is backgrounded then foregrounded. (#14150)
  • Fixed: AWDL may sometimes create spurious advertisements when app is backgrounded and foregrounded, affecting mesh connectivity (#14151)

Installation:

pod 'DittoSwift', '=4.8.1-rc.1'
API Reference URL

DittoSwift Version 4.8.0

Released: Thu Aug 22nd 2024, 12:29 pm

Release Notes:

  • Added: method export(to:) to DittoLogger, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11961)
  • Added: Properties peerKeyString1 and peerKeyString2 on DittoConnection replacing the now deprecated properties peer1 and peer2. (#12799)
  • Deprecated: Properties peer1 and peer2 on DittoConnection, please use peerKeyString1 and peerKeyString2 instead. (#12799)- Added: TvOS platform support (#13049)
  • Added: Mac Catalyst platform support (#13051)
  • Deprecated: property queryOverlapGroup of DittoPeer and DittoRemotePeerV2, always returning 0 going forward.
  • Removed: experimental property queryOverlapGroup of DittoExperimental.
  • Removed: experimental methods priority(forQueryOverlapGroup:) and setPriority(_:forQueryOverlapGroup:) of DittoExperimental.
  • Removed: deprecated methods setQueryOverlapGroup(queryOverlapGroup:) and setPriority(_:forQueryOverlapGroup:ditto:) of DittoExperimental.
  • Changed: Documentation for startSync() and disableSyncWithV3() to include a recommendation for performance improvement. (#13098)
  • Removed tvOS publish steps until tvOS binary is always generated during build. (#13140)
  • Added VisionOS alpha support (#13157)
  • Changed: Documentation for property peerMetadata on DittoPeer to add information about how the property behaves over the lifecycle of the DittoPresenceGraph. (#13479)
  • Changed: new log format now includes more detailed information (#10794)
  • Fix Bytes and Arrays not being always comparable in the legacy query language (#10887)
  • Fix legacy query language casting counters and maps with tombstones to the wrong boolean value (#10887)
  • Improve performance by avoiding deserializing the entire Document if only part of it is required (#10887)
  • Improved: attachments now sync indepenow sync independently of documents, improving rainbow connection efficiency (#11156)
  • Fixed: lowered the log level of some SQLite3 notices that were being unnecessarily logged as warnings (#12032)
  • Added: some diagnostics are now provided when collecting Small Peer Info on-disk logs (#12080)
  • Updating several depdencies for security patching (#12087)
  • DQL: Added the string functions byte_length and char_length. (#12147)
  • feat(core): DQL supports object and array literal creation. (#12312)
  • Fix potential crash that can occur if a DQL query contains a multi-byte character. (#12324)
  • Changed: internally how network OS capabilities are linked into the library (#12362)
  • Changed: documentation for execute to include a note about its interaction with sync subscriptions. (#12365)
  • Fixed a hang in the transports multiplexer when dealing with large messages spanning multiple chunks (>64KB) (#12428)
  • Fixed: a rare edge case that could slow down sync. (#12527)
  • Changed: The Ditto logger is now more verbose by default, with a minimum log level of Info instead of Warning. (#11141)
  • Fixed: Frequent subscription changes concurrent with remote evictions could cause failures to converge (#11431)
  • Improved: (Experimental) Multihop connections are formed more efficiently, e.g., for Ditto Bus. This is an incompatible protocol change from previous versions. (#12108)
  • Added: Remote query capability allows Big Peer to execute read-only queries on Small Peers (#12268)
  • feat(core): Add object_length and deserialize_json functions in DQL. (#12605)
  • Changed: (Experimental) Ditto Link protocol improvements; Ditto Bus will not multihop with previous SDK versions (#12623)
  • Changed: small peer info collection is now enabled by default and its default sync scope is now BigPeerOnly. (#12709)
  • feat(core): DQL INSERT statements support inlining the construction of an object. (#12761)
  • Added: output version, sdk and build information on startup for easier debugging. (#12845)
  • Fixed: Memory leak in third party library used for peer-internal messaging (#12895)
  • Removed: Ditto no longer supports the experimental Query Overlap Groups feature and support has been removed. (#13075)
  • Fixed: Transport inactive connection tracking no longer retains identifiers indefinitely. This could lead to a slow growth in memory consumption for long lived applications (~ 1MB/day on transports with high rate, unreliable discovery - such as BLE). (#13147)
  • Fixed: Unexpected failures to obtain a certificate for P2P sync are now logged at "error" level instead of "warning" (#13323)
  • Introduced a fair scheduler to ensure a highly congested channel can never starve other channels completely.- Changed: always persist on-disk logs at DEBUG level, regardless of the overall log level setting (#13377)
  • Changed: Default to creating backup Bluetooth connections when there is an existing WiFi connection (#13398)
  • Added: mDNS transport can now be configured with a static port for the TCP server using the tcp_server_bind_mdns_server_port system parameter. (#13442)
  • Changed: console logging will now output to STDERR instead of STDOUT (#13477)
  • Fixed: A rare scenario that caused Ditto to reconnect peers under high load (#13849)
  • Changed: Replication logs now clearly distinguish between forgotten sessions (normal behavior) and actual session discontinuity (unexpected behavior), previously conflated as "forgetful peers". (#14027)

Installation:

pod 'DittoSwift', '=4.8.0'
API Reference URL

DittoSwift Version 4.8.0-rc.2

Released: Mon Aug 19th 2024, 5:04 pm

Release Notes:

  • Changed: new log format now includes more detailed information (#10794)
  • Fix Bytes and Arrays not being always comparable in the legacy query language (#10887)
  • Fix legacy query language casting counters and maps with tombstones to the wrong boolean value (#10887)
  • Improve performance by avoiding deserializing the entire Document if only part of it is required (#10887)
  • Improved: attachments now sync indepenow sync independently of documents, improving rainbow connection efficiency (#11156)
  • Fixed: lowered the log level of some SQLite3 notices that were being unnecessarily logged as warnings (#12032)
  • Added: some diagnostics are now provided when collecting Small Peer Info on-disk logs (#12080)
  • Updating several depdencies for security patching (#12087)
  • DQL: Added the string functions byte_length and char_length. (#12147)
  • feat(core): DQL supports object and array literal creation. (#12312)
  • Fix potential crash that can occur if a DQL query contains a multi-byte character. (#12324)
  • Changed: internally how network OS capabilities are linked into the library (#12362)
  • Changed: documentation for execute to include a note about its interaction with sync subscriptions. (#12365)
  • Fixed a hang in the transports multiplexer when dealing with large messages spanning multiple chunks (>64KB) (#12428)
  • Fixed: a rare edge case that could slow down sync. (#12527)
  • Changed: The Ditto logger is now more verbose by default, with a minimum log level of Info instead of Warning. (#11141)
  • Fixed: Frequent subscription changes concurrent with remote evictions could cause failures to converge (#11431)
  • Improved: (Experimental) Multihop connections are formed more efficiently, e.g., for Ditto Bus. This is an incompatible protocol change from previous versions. (#12108)
  • Added: Remote query capability allows Big Peer to execute read-only queries on Small Peers (#12268)
  • feat(core): Add object_length and deserialize_json functions in DQL. (#12605)
  • Changed: (Experimental) Ditto Link protocol improvements; Ditto Bus will not multihop with previous SDK versions (#12623)
  • Changed: small peer info collection is now enabled by default and its default sync scope is now BigPeerOnly. (#12709)
  • feat(core): DQL INSERT statements support inlining the construction of an object. (#12761)
  • Added: output version, sdk and build information on startup for easier debugging. (#12845)
  • Fixed: Memory leak in third party library used for peer-internal messaging (#12895)
  • Removed: Ditto no longer supports the experimental Query Overlap Groups feature and support has been removed. (#13075)
  • Fixed: Transport inactive connection tracking no longer retains identifiers indefinitely. This could lead to a slow growth in memory consumption for long lived applications (~ 1MB/day on transports with high rate, unreliable discovery - such as BLE). (#13147)
  • Fixed: Unexpected failures to obtain a certificate for P2P sync are now logged at "error" level instead of "warning" (#13323)
  • Introduced a fair scheduler to ensure a highly congested channel can never starve other channels completely.- Changed: always persist on-disk logs at DEBUG level, regardless of the overall log level setting (#13377)
  • Changed: Default to creating backup Bluetooth connections when there is an existing WiFi connection (#13398)
  • Added: mDNS transport can now be configured with a static port for the TCP server using the tcp_server_bind_mdns_server_port system parameter. (#13442)
  • Changed: console logging will now output to STDERR instead of STDOUT (#13477)
  • Fixed: A rare scenario that caused Ditto to reconnect peers under high load (#13849)
  • Added: method export(to:) to DittoLogger, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11961)
  • Added: Properties peerKeyString1 and peerKeyString2 on DittoConnection replacing the now deprecated properties peer1 and peer2. (#12799)
  • Deprecated: Properties peer1 and peer2 on DittoConnection, please use peerKeyString1 and peerKeyString2 instead. (#12799)- Added: TvOS platform support (#13049)
  • Added: Mac Catalyst platform support (#13051)
  • Deprecated: property queryOverlapGroup of DittoPeer and DittoRemotePeerV2, always returning 0 going forward.
  • Removed: experimental property queryOverlapGroup of DittoExperimental.
  • Removed: experimental methods priority(forQueryOverlapGroup:) and setPriority(_:forQueryOverlapGroup:) of DittoExperimental.
  • Removed: deprecated methods setQueryOverlapGroup(queryOverlapGroup:) and setPriority(_:forQueryOverlapGroup:ditto:) of DittoExperimental.
  • Changed: Documentation for startSync() and disableSyncWithV3() to include a recommendation for performance improvement. (#13098)
  • Removed tvOS publish steps until tvOS binary is always generated during build. (#13140)
  • Added VisionOS alpha support (#13157)
  • Changed: Documentation for property peerMetadata on DittoPeer to add information about how the property behaves over the lifecycle of the DittoPresenceGraph. (#13479)

Installation:

pod 'DittoSwift', '=4.8.0-rc.2'
API Reference URL

DittoSwift Version 4.7.5-rc.1

Released: Tue Aug 20th 2024, 11:25 pm

Release Notes:

  • Fixed: an issue preventing attachment transfers under high document sync load is now resolved. (#14242)

Installation:

pod 'DittoSwift', '=4.7.5-rc.1'
API Reference URL

DittoSwift Version 4.7.4

Released: Thu Aug 1st 2024, 10:02 pm

Release Notes:

  • Added: mDNS transport can now be configured with a static port for the TCP server using the tcp_server_bind_mdns_server_port system parameter. (#13442)
  • Changed: (Linux/Android) Increased mDNS multicast TTL from 1 to 255 to allow for cross-VLAN announcements (#13590)
  • Fixed: Intermittent crash when finalizing a legacy DittoSubscription that contained a sort() clause. (#13394)
  • Fixed: Included necessary symbols so that Ditto Core crashes can be properly symbolicated with crash reporters. (#13696)
  • Fixed: Null value handling during resource cleanup in Ditto's close(). (#13738)
  • Fixed: A rare scenario that caused Ditto to reconnect peers under high load (#13849)

Installation:

pod 'DittoSwift', '=4.7.4'
API Reference URL

DittoSwift Version 4.7.2

Released: Thu Jun 13th 2024, 7:30 pm

Release Notes:

  • Added: System parameter mesh_chooser_avoid_redundant_bluetooth can be set to "false" to create extra mesh redundancy using Bluetooth connections (#12984)
  • Changed: Improved parsing and diagnostics in AuthClient (#13138)
  • Improved: Compress more data when establishing connections between Peers, which will especially improve Bluetooth performance when devices have a long list of permissions. (#11264)
  • Fixed: an issue with attachments where evicting many attachment-containing documents at once could slow down fetches. (#12331)
  • Fixed: HTTP Client not including content-length: 0 header on empty POST requests (#12346)
  • Fixed: invalid subscription queries are now logged as errors and individually disabled, where before they would prevent syncing for all subscriptions. (#12463)
  • Fixed: Potential document divergence triggered by quick back and forth subscription change with concurrent document changes. (#12541)
  • Fixed: Replication sends unnecessary redundant document summaries after subscription change. (#12967)
  • Fixed: iOS and Mac may randomly fail to authenticate against a webhook provider with an error about "no auth config set up" (#13160)

Installation:

pod 'DittoSwift', '=4.7.2'
API Reference URL

DittoSwift Version 4.7.2-rc.2

Released: Mon Jun 10th 2024, 4:30 pm

Release Notes:

  • Added: System parameter mesh_chooser_avoid_redundant_bluetooth can be set to "false" to create extra mesh redundancy using Bluetooth connections (#12984)
  • Changed: Improved parsing and diagnostics in AuthClient (#13138)
  • Fixed: an issue with attachments where evicting many attachment-containing documents at once could slow down fetches. (#12331)
  • Improved: Compress more data when establishing connections between Peers, which will especially improve Bluetooth performance when devices have a long list of permissions. (#11264)
  • Fixed: HTTP Client not including content-length: 0 header on empty POST requests (#12346)
  • Fixed: invalid subscription queries are now logged as errors and individually disabled, where before they would prevent syncing for all subscriptions. (#12463)
  • Fixed: Potential document divergence triggered by quick back and forth subscription change with concurrent document changes. (#12541)
  • Fixed: Replication sends unnecessary redundant document summaries after subscription change. (#12967)
  • Fixed: iOS and Mac may randomly fail to authenticate against a webhook provider with an error about 'no auth config set up' (#13160)

Installation:

pod 'DittoSwift', '=4.7.2-rc.2'
API Reference URL

DittoSwift Version 4.7.2-rc.1

Released: Mon May 6th 2024, 11:16 pm

Release Notes:

  • Fixed: an issue with attachments where evicting many attachment-containing documents at once could slow down fetches. (#12331)
  • Fixed: HTTP Client not including content-length: 0 header on empty POST requests (#12346)
  • Fixed: invalid subscription queries are now logged as errors and individually disabled, where before they would prevent syncing for all subscriptions. (#12463)

Installation:

pod 'DittoSwift', '=4.7.2-rc.1'
API Reference URL

DittoSwift Version 4.7.1

Released: Wed May 1st 2024, 3:54 pm

Release Notes:

  • Fixed: red herring errors related to attachment fetches are no longer logged (#12409)
  • Fixed: Incorrect sync metadata rollback causes convergence failure (#12422)
  • Fixed: an error while creating an attachment is now logged at the error level. Previously, it was logged at the debug level. (#12235)

Installation:

pod 'DittoSwift', '=4.7.1'
API Reference URL

DittoSwift Version 4.7.1-beta.2

Released: Fri Apr 5th 2024, 11:29 pm

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=4.7.1-beta.2'
API Reference URL

DittoSwift Version 4.7.1-beta.1

Released: Fri Apr 5th 2024, 6:18 pm

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=4.7.1-beta.1'
API Reference URL

DittoSwift Version 4.7.0

Released: Fri Apr 5th 2024, 7:37 pm

Release Notes:

  • Changed: WebSocket connect timeout increased from 10 to 20 seconds to support weaker internet connections
  • Removed: is_connected_to_big_peer field from the Small Peer Info document (#11883)
  • Fix legacy query language accepting invalid field names (#11888)
  • Changed: increased the limit on the allowable depth of the Small Peer Info JSON metadata (#11891)
  • Improved: attachments are more performant when working with many attachments concurrently (#11893)
  • Fixed: Sync crashes due to missing update files and other unexpected conditions are now handled recoverably (#11952)
  • MeshChooser now supports a limited set of runtime configurable values via the mesh_chooser_* system parameters. (#11968)
  • Resolved: a warning message that appears when peers connect is no longer logged (No handle found to notify the shutdown; multiple message handling loops??) (#11977)
  • When replicating in mixed meshes from V4 to V3 full state will be sent (#12029)
  • Fixed: the Small Peer Info collector no longer gets stuck waiting to upload logs under certain conditions (#12051)
  • Fixed: bug in Attachments that could make fetches seem unresponsive (#12067)
  • Fixed: Duration parameters can now be set via DQL, where before they would fail to type check. (#12070)
  • Added: setting the deviceName property of a Ditto instance after sync has started will now log a warning: changes to the value only take effect after restarting sync. (#11160)
  • Fixed: deviceName property on Ditto instances now reflects the truncation of the value to 24 bytes when starting sync. (#11340)
  • Added: properties peerMetadata and identityServiceMetadata to DittoPeer. (#11611)
  • Added: property connectionRequestHandler to ditto.presence, including related types, allowing to filter incoming connections from other peers. (#11611)
  • Added: property peerKeyString to DittoPeer as replacement for the now deprecated peerKey. (#11611)
  • Added: property peerMetadataJSONData and method setPeerMetadataJSONData() to ditto.presence. (#11611)
  • Added: property peerMetadata and method setPeerMetadata() to ditto.presence. (#11611)
  • Deprecated: property peerKey on DittoPeer, please use the newly added peerKeyString instead. (#11611)
  • Fixed: retry connection interval milliseconds was being set as seconds (#12157)

Installation:

pod 'DittoSwift', '=4.7.0'
API Reference URL

DittoSwift Version 4.7.0-alpha.1

Released: Fri Mar 1st 2024, 11:46 pm

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=4.7.0-alpha.1'
API Reference URL

DittoSwift Version 4.6.0

Released: Tue Mar 12th 2024, 6:24 pm

Release Notes:

  • Added: method data() on DittoAttachment as a replacement for getData().
  • Added: method jsonData() to DittoQueryResultItem returning a Data object that can be directly used with JSONDecoder. (#10988)
  • Added: a variant of fetchAttachment() and fetchAttachmentPublisher() to DittoStore that takes an attachment token dictionary representation as given by the value of DittoQueryResultItem.(#11410)
  • Added: method newAttachment() on DittoStore as replacement for the corresponding and now deprecated method on DittoCollection. It is now async and failable. (#11410)
  • Added: method fetchAttachment() and fetchAttachmentPublisher() on DittoStore as replacement for the corresponding and now deprecated methods on DittoCollection. It is now failable. (#11410)
  • Added: properties id, len, and metadata to DittoAttachment and DittoAttachmentToken. (#11410)
  • Added: Preliminary support for runtime configuration using DQL ALTER SYSTEM and SHOW statements (#10401)
  • Improved: Synchronization protocol enhanced to prevent accumulation of unsubscribed documents after subscription change, and limits redundant data exchanged when re-synchronizing. (#10440)
  • Improved: Documentation for sort() method on cursor operations to clarify behavior when the field to sort by is missing. (#11383)
  • Improved: Parser error messages emphasize the location of the error and de-emphasize a potential fix. (#11040)
  • Changed: Peers use latest supported protocol version, even if the application is using backwards-compatible CRDT formats. (#10875)
  • Changed: problems that occur when calling the recently deprecated DittoCollection.newAttachment() now log at error level. (#11782)
  • Deprecated: method newAttachment() of DittoCollection. Please use the newly introduced equivalent method on DittoStore instead. (#11410)
  • Deprecated: method fetchAttachment() and fetchAttachmentPublisher() of DittoCollection. Please use the newly introduced equivalent method on DittoStore instead. (#11410)
  • Deprecated: method getData() of DittoAttachment, please use newly introduced method .data() instead.
  • Fixed: A bug where Link could run into an infinite loop. (#11188)
  • Fixed: legacy query language casting counters and maps with tombstones to the wrong boolean value (#11424)
  • Fixed: legacy query language not allowing comparison against attachment objects (#11424)
  • Fixed: DQL queries can now query for the id, len and metadata fields of attachments (#11481)
  • Fixed: possible crash when trying to create an attachment with an invalid path (#11796)
  • Fixed: An issue where an internal data decoding function could panic on certain inputs (#10376)
  • Fixed: Application crashes while preparing to syncing data to remote peer (#11843)
  • Fixed: attachment token dictionary representation given by the value of DittoQueryResultItem. The token is now provided as a dictionary of the form ["id": "...", "len": 123, "metadata": ...] wheremetadatais a dictionary[String: String]`. (#11410)
  • Fixed: DittoPresence.GraphPublisher and Ditto.RemotePeersPublisher (deprecated) could sometimes send items to a subscriber before they were ready to receive them. (#8009)
  • (Experimental) Fixed: Two peers targeting each other simultaneously in Ditto Bus or Query Overlap Groups may struggle to create a multihop connection (#8527)

Installation:

pod 'DittoSwift', '=4.6.0'
API Reference URL

DittoSwift Version 4.6.0-alpha.3

Released: Wed Feb 14th 2024, 4:47 am

Release Notes:

  • Fixed: An issue where an internal data decoding function could panic on certain inputs (#10376)
  • Added: Preliminary support for runtime configuration using DQL ALTER SYSTEM and SHOW statements (#10401)
  • Improved: Synchronization protocol enhanced to prevent accumulation of unsubscribed documents after subscription change, and limits redundant data exchanged when re-synchronizing. (#10440)
  • Changed: Peers use latest supported protocol version, even if the application is using backwards-compatible CRDT formats. (#10875)
  • Parser error messages emphasize the location of the error and de-emphasize a potential fix. (#11040)
  • Fixed: A bug where Link could run into an infinite loop. (#11188)
  • Improved: Documentation for sort() method on cursor operations to clarify behavior when the field to sort by is missing. (#11383)
  • Fix legacy query language casting counters and maps with tombstones to the wrong boolean value (#11424)
  • Fix legacy query language not allowing comparison against attachment objects (#11424)
  • Fixed: bug where certificate request would not check identity data hash with JWT's (#11537)
  • Fixed: bug where the certificate request would fail with big permissions (#11537)
  • Fixed: intermittent crash when syncing over Bluetooth LE GATT with "DataTooLarge" error (#9789)
  • Added: method jsonData() to DittoQueryResultItem returning a Data object that can be directly used with JSONDecoder. (#10988)
  • Fixed: DittoPresence.GraphPublisher and Ditto.RemotePeersPublisher (deprecated) could sometimes send items to a subscriber before they were ready to receive them. (#8009)
  • (Experimental) Fixed: Two peers targeting each other simultaneously in Ditto Bus or Query Overlap Groups may struggle to create a multihop connection (#8527)

Installation:

pod 'DittoSwift', '=4.6.0-alpha.3'
API Reference URL

DittoSwift Version 4.6.0-alpha.2

Released: Tue Feb 13th 2024, 11:11 pm

Release Notes:

  • Added: Preliminary support for runtime configuration using DQL ALTER SYSTEM and SHOW statements (#10401)
  • Added: method jsonData() to DittoQueryResultItem returning a Data object that can be directly used with JSONDecoder. (#10988)
  • Improved: Documentation for sort() method on cursor operations to clarify behavior when the field to sort by is missing. (#11383)
  • Improved: Synchronization protocol enhanced to prevent accumulation of unsubscribed documents after subscription change, and limits redundant data exchanged when re-synchronizing. (#10440)
  • Changed: Peers use latest supported protocol version, even if the application is using backwards-compatible CRDT formats. (#10875)
  • Parser error messages emphasize the location of the error and de-emphasize a potential fix. (#11040)
  • Fixed: A bug where Link could run into an infinite loop. (#11188)
  • Fixed: An issue where an internal data decoding function could panic on certain inputs (#10376)
  • Fix legacy query language casting counters and maps with tombstones to the wrong boolean value (#11424)
  • Fix legacy query language not allowing comparison against attachment objects (#11424)
  • Fixed: bug where certificate request would not check identity data hash with JWT's (#11537)
  • Fixed: bug where the certificate request would fail with big permissions (#11537)
  • Fixed: intermittent crash when syncing over Bluetooth LE GATT with "DataTooLarge" error (#9789)
  • Fixed: DittoPresence.GraphPublisher and Ditto.RemotePeersPublisher (deprecated) could sometimes send items to a subscriber before they were ready to receive them. (#8009)
  • (Experimental) Fixed: Two peers targeting each other simultaneously in Ditto Bus or Query Overlap Groups may struggle to create a multihop connection (#8527)

Installation:

pod 'DittoSwift', '=4.6.0-alpha.2'
API Reference URL

DittoSwift Version 4.6.0-alpha.1

Released: Tue Feb 13th 2024, 1:50 am

Release Notes:

  • Added: Preliminary support for runtime configuration using DQL ALTER SYSTEM and SHOW statements (#10401)
  • Added: method jsonData() to DittoQueryResultItem returning a Data object that can be directly used with JSONDecoder. (#10988)
  • Changed: Peers use latest supported protocol version, even if the application is using backwards-compatible CRDT formats. (#10875)
  • Improved: Documentation for sort() method on cursor operations to clarify behavior when the field to sort by is missing. (#11383)
  • Parser error messages emphasize the location of the error and de-emphasize a potential fix. (#11040)
  • Fixed: A bug where Link could run into an infinite loop. (#11188)
  • Fix legacy query language casting counters and maps with tombstones to the wrong boolean value (#11424)
  • Fix legacy query language not allowing comparison against attachment objects (#11424)
  • Fixed: An issue where an internal data decoding function could panic on certain inputs (#10376)
  • Fixed: bug where certificate request would not check identity data hash with JWT's (#11537)
  • Fixed: bug where the certificate request would fail with big permissions (#11537)
  • Fixed: intermittent crash when syncing over Bluetooth LE GATT with "DataTooLarge" error (#9789)
  • Fixed: DittoPresence.GraphPublisher and Ditto.RemotePeersPublisher (deprecated) could sometimes send items to a subscriber before they were ready to receive them. (#8009)
  • (Experimental) Fixed: Two peers targeting each other simultaneously in Ditto Bus or Query Overlap Groups may struggle to create a multihop connection (#8527)

Installation:

pod 'DittoSwift', '=4.6.0-alpha.1'
API Reference URL

DittoSwift Version 4.5.5-alpha.2

Released: Tue May 21st 2024, 9:10 pm

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=4.5.5-alpha.2'
API Reference URL

DittoSwift Version 4.5.4

Released: Thu Feb 22nd 2024, 1:46 am

Release Notes:

  • Fixed: intermittent crash when syncing over Bluetooth LE GATT with "DataTooLarge" error (#9789)

Installation:

pod 'DittoSwift', '=4.5.4'
API Reference URL

DittoSwift Version 4.5.4-transports-behind-core

Released: Thu Feb 22nd 2024, 11:00 pm

Release Notes:

  • Fixed: intermittent crash when syncing over Bluetooth LE GATT with "DataTooLarge" error (#9789)

Installation:

pod 'DittoSwift', '=4.5.4-transports-behind-core'
API Reference URL

DittoSwift Version 4.5.4-alpha.1-transports-behind-core

Released: Wed Feb 21st 2024, 3:49 am

Release Notes:

  • Fixed: intermittent crash when syncing over Bluetooth LE GATT with "DataTooLarge" error (#9789)

Installation:

pod 'DittoSwift', '=4.5.4-alpha.1-transports-behind-core'
API Reference URL

DittoSwift Version 4.5.3

Released: Tue Feb 6th 2024, 2:22 am

Release Notes:

  • Fixed: bug where certificate request would not check identity data hash with JWT's.
  • Fixed: bug where the certificate request would fail with big permissions.

Installation:

pod 'DittoSwift', '=4.5.3'
API Reference URL

DittoSwift Version 4.5.2

Released: Thu Jan 25th 2024, 4:23 pm

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=4.5.2'
API Reference URL

DittoSwift Version 4.5.2-rc.3

Released: Wed Jan 17th 2024, 10:00 pm

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=4.5.2-rc.3'
API Reference URL

DittoSwift Version 4.5.1

Released: Mon Dec 18th 2023, 10:19 pm

Release Notes:

  • Added: Support for light JWTs (separating identity data) (#11063)
  • Fixed: A potential panic if an f64::Nan is compared to a u64 or i64 during collation. (#10940)
  • Fixed: DittoSwift SDK would report as being Objective-C via Small Peer Info in the portal. (#10965)

Installation:

pod 'DittoSwift', '=4.5.1'
API Reference URL

DittoSwift Version 4.5.0

Released: Thu Dec 7th 2023, 5:59 pm

Release Notes:

  • Added: Ditto.version class property providing access to the semantic version of the SDK. (#10223)
  • Added: class DittoQueryResultItem representing a single match of a DQL query. (#10319, #10394)
  • Added: class DittoQueryResult representing the result of executing a DQL query. (#10319, #10394)
  • Added: method execute() on DittoStore that executes a DQL query and returns a DittoQueryResult containig DittoQueryResultItems for each match. (#10319, #10394)
  • Added: class DittoSyncSubscription that configures Ditto to receive updates from remote peers about documents matching the subscription's query. It's a DQL counterpart and successor to the old Subscription class. (#10395, #10394)
  • Added: method registerSubscription() on DittoSync that installs and returns a SyncSubscription. (#10395, #10394)
  • Added: property subscriptions on DittoSync providing access to all currently active sync subscriptions. (#10395, #10394)
  • Added: property sync on Ditto of type DittoSync to serve as an entry point for sync functionality. (#10395, #10394)
  • Added: class DittoStoreObserver on DittoStore that configures Ditto to invoke an observation handler whenever results for its query change. (#10396, #10394)
  • Added: method registerObserver() on DittoStore that installs and returns a DittoStoreObserver. (#10396, #10394)
  • Added: property observers on DittoStore providing access to all currently active store observers. (#10396, #10394)
  • Improved: Performance by implementing bipartite distance-aware mesh topology. (#10632)
  • Improved: Memory usage and performance of Documents. (#10736)
  • Improved: Reduced metadata accumulation after eviction by clearing remote summaries. (#7065)
  • Improved: Serialization performance. (#9112)
  • Deprecated: DittoLANConfig.isMulticastEnabled property.. (#10126)- Changed: Ditto SDK is built and tested with Xcode 14.3.1. (#10177)
  • Changed: This version of Ditto drops support for iOS 13 and earlier. All devices that support iOS 13 also support iOS 14 and iOS 15. (#9842)
  • Fixed: Made logging more robust to failed writes in a specific set of circumstances. (#10077)
  • Fixed: Addressed a warning from SQLite that sometimes occurs on startup about a schema change. (#10501)
  • Fixed: Presence graph may not show all active connections. (#10507)
  • Fixed: When observing peers, isConnectedToDittoCloud property may be incorrect. (#10534)
  • Fixed: initial logging events now use the same format as all other logs. (#10611)
  • Fixed: mesh could choose random connections. (#10711)
  • Fixed: A bug with Ditto's internal crash handler. (#10022)

Installation:

pod 'DittoSwift', '=4.5.0'
API Reference URL

DittoSwift Version 4.5.0-alpha3

Released: Wed Nov 15th 2023, 5:55 pm

Release Notes:

  • Fixed: Made logging more robust to failed writes in a specific set of circumstances (#10077)
  • Fixed: Addressed a warning from SQLite that sometimes occurs on startup about a schema change (#10501)
  • Added: SDK version/language/platform and device name are now included in the small peer info document. (#10515)
  • fixed: When observing peers, isConnectedToDittoCloud property may be incorrect (#10534)
  • Reduced metadata accumulation after eviction by clearing remote summaries (#7065)
  • Changed: Improved serialization performance (#9112)
  • Deprecated: DittoLANConfig.isMulticastEnabled property. (#10126)- Changed: Ditto SDK is built and tested with Xcode 14.3.1. (#10177)
  • Changed: This version of Ditto drops support for iOS 13 and earlier. All devices that support iOS 13 also support iOS 14 and iOS 15. (#9842)

Installation:

pod 'DittoSwift', '=4.5.0-alpha3'
API Reference URL

DittoSwift Version 4.5.0-alpha1

Released: Tue Nov 21st 2023, 7:23 am

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=4.5.0-alpha1'
API Reference URL

DittoSwift Version 4.5.0-alpha.4

Released: Thu Nov 23rd 2023, 12:25 am

Release Notes:

  • Added: class DittoQueryResultItem representing a single match of a DQL query. (#10319, #10394)
  • Added: class DittoQueryResult representing the result of executing a DQL query. (#10319, #10394)
  • Added: method execute() on DittoStore that executes a DQL query and returns a DittoQueryResultcontainig DittoQueryResultItems for each match. (#10319, #10394)
  • Added: class DittoSyncSubscription that configures Ditto to receive updates from remote peers about documents matching the subscription's query. It's a DQL counterpart and successor to the old Subscription class. (#10395, #10394)
  • Added: method registerSubscription() on DittoSync that installs and returns a SyncSubscription. (#10395, #10394)
  • Added: property subscriptions on DittoSync providing access to all currently active sync subscriptions. (#10395, #10394)
  • Added: property sync on Ditto of type DittoSync to serve as an entry point for sync functionality. (#10395, #10394)
  • Added: class DittoStoreObserver on DittoStore that configures Ditto to invoke an observation handler whenever results for its query change. (#10396, #10394)
  • Added: method registerObserver() on DittoStore that installs and returns a DittoStoreObserver. (#10396, #10394)
  • Added: property observers on DittoStore providing access to all currently active store observers. (#10396, #10394)
  • Performance: Improved memory usage and performance of Documents (#10736)
  • Performance: Implemented bipartite distance-aware mesh topology (#10632)
  • Performance: Improved serialization performance (#9112)
  • Performance: Reduced metadata accumulation after eviction by clearing remote summaries (#7065)
  • Changed: This version of Ditto drops support for iOS 13 and earlier. All devices that support iOS 13 also support iOS 14 and iOS 15. (#9842)
  • Changed: Ditto SDK is built and tested with Xcode 14.3.1. (#10177)
  • Deprecated: DittoLANConfig.isMulticastEnabled property. (#10126)
  • Fixed: An issue with Ditto's internal crash handler (#10022)
  • Fixed: Made logging more robust to failed writes in a specific set of circumstances (#10077)
  • Fixed: Addressed a warning from SQLite that sometimes occurs on startup about a schema change (#10501)
  • Fixed: Presence graph may not show all active connections (#10507)
  • Fixed: When observing peers, isConnectedToDittoCloud property may be incorrect (#10534)
  • Fixed: mesh could choose random connections (#10711)

Installation:

pod 'DittoSwift', '=4.5.0-alpha.4'
API Reference URL

DittoSwift Version 4.4.5

Released: Fri Nov 17th 2023, 1:53 am

Release Notes:

  • Added: SDK version/language/platform and device name are now included in the small peer info document. (#10515)

Installation:

pod 'DittoSwift', '=4.4.5'
API Reference URL

DittoSwift Version 4.4.4

Released: Thu Nov 2nd 2023, 10:03 pm

Release Notes:

  • Improved: run-time validation of corrupted attachments being inserted into documents. (#10552)
  • Fixed: an issue introduced in 4.4.2 where the Small Peer Info attachments were not replicated to the Portal. (#10538)

Installation:

pod 'DittoSwift', '=4.4.4'
API Reference URL

DittoSwift Version 4.4.3

Released: Tue Oct 24th 2023, 9:01 pm

Release Notes:

  • Changed: made DittoAttachmentToken conform to Hashable. (#10195)

Installation:

pod 'DittoSwift', '=4.4.3'
API Reference URL

DittoSwift Version 4.4.2

Released: Fri Oct 6th 2023, 5:02 pm

Release Notes:

  • Fixed: Small Peer info collection now defaults to localPeerOnly, preventing data from being collected on the Big Peer until the feature is explicitly enabled and sync scope is set to bigPeerOnly. (#10203, #10204)

Installation:

pod 'DittoSwift', '=4.4.2'
API Reference URL

DittoSwift Version 4.4.1

Released: Tue Sep 26th 2023, 11:39 pm

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=4.4.1'
API Reference URL

DittoSwift Version 4.4.0

Released: Thu Aug 31st 2023, 10:43 pm

Release Notes:

  • Added: Property smallPeerInfo to Ditto allowing to configure the collection and sync of small peer info. (#9560)
  • Added: More informative log message for query failures caused by database access errors. (#9364)
  • Added: Small peers now persist structured log data to disk for later retrieval, with limits on the resulting disk usage. (#9547)
  • Added: More informative log message for query failures caused by database access errors. (#9364)
  • Changed: Print some internal errors in a more human-readable format. (#9269)
  • Changed: TransportConfig and its associated types can be serialized/deserialized into/from JSON and CBOR. (#9585)
  • Changed: Sets a minimum session refresh period. The small peer will always try to start refreshing its session after 3 days no matter how long the session period issue. Previously the small peer would start to refresh after half of the session length had elapsed. (#9594, #9645)
  • Improved: Initial replication time by reducing one roundtrip of messages before peers can sync. (#9404)
  • Improved: Attachment fetch time in several edge case scenarios. (#9501)
  • Improved: efficiency by using less system resources when connected to peers but no replication changes are needing to be sent. (#9479, #7995)
  • Improved: Significantly reduced startup resource consumption linked to total document count. (#9501)
  • Fixed: A small memory leak each time ditto.auth.login(token:provider:completion:) was called. (#9695)
  • Fixed: Warning "Failed to clean up attachment fetcher. Token not found" that could occur during normal operation. (#9639)
  • Fixed: A scenario where a peer could incorrectly receive data back from other peers even after they had modified their subscription and evicted the old data. (#9404)
  • Fixed: An issue where unusually high replication write load in large meshes could block all readers from reading the database. (#9395, #8872)

Installation:

pod 'DittoSwift', '=4.4.0'
API Reference URL

DittoSwift Version 4.3.1

Released: Thu Aug 10th 2023, 9:22 pm

Release Notes:

  • Changed: Improved clarity of error messages when data on disk cannot be read by this version following a downgrade from a newer version of Ditto. (#9267)
  • Changed: Print some internal errors in a more human-readable format. (#9495)
  • Added: iOS can now connect to servers with custom certificates. (#9368)

Installation:

pod 'DittoSwift', '=4.3.1'
API Reference URL

DittoSwift Version 4.3.0

Released: Wed Jul 19th 2023, 5:02 am

Release Notes:

⚠️ Warning: This SDK version will migrate some data formats on disk. Once upgraded to 4.3.0, an SDK can only be downgraded back to 4.2.2 and 4.2.1 but no earlier. Downgrading to versions earlier than 4.2.1 will require uninstalling and re-installing to clear out the new data formats. (#8946)

  • Added: Optional customAuthURL parameter to the DittoIdentity.onlinePlayground enum case. (#9131)
  • Added: An internal ability to measure & report the level of redundancy in replication updates to calculate the percentage of updates that are arriving from multiple peers. This will be used for future self-balancing mesh actions which are not yet enabled. (#8937)
  • Changed: new serialization format improves efficiency of replication, particularly in the Big Peer. (#8946)
  • Changed: Better logging for diagnosing auth failures. (#8984)
  • Changed: Improved replication performance by introducing a small internal caching layer for commonly computed values. (#8777)
  • Fixed: The replication engine can now recover from certain filesystem corruption issues during sync instead of panicking. (#8965)
  • Fixed: Increased validation of document updates, preventing updates that try to modify the document id. (#9063)

Installation:

pod 'DittoSwift', '=4.3.0'
API Reference URL

DittoSwift Version 4.2.3

Released: Wed Jul 5th 2023, 10:32 pm

Release Notes:

  • Fixed: Problems connecting to the Ditto Cloud using OnlinePlayground identity (#9233)

Installation:

pod 'DittoSwift', '=4.2.3'
API Reference URL

DittoSwift Version 4.2.2

Released: Tue Jul 4th 2023, 5:42 pm

Release Notes:

  • Improved mesh performance when using 50+ Small Peer devices (#9077)
  • Changed: Improved deserialization performance of Documents. (#9123)
  • Fixed: Increased validation of document updates, preventing updates that try to modify the document id. (#9129)
  • Fixed: Removed outdated ERROR level log statements in Ditto store related to _id keys being present in CRDT documents. (#9123)
  • Fixed: The UpdateDifferentValues write strategy was incorrectly skipping non-alphanumeric document properties. (#9165)
  • Fixed: a potential crash if a document attachment was malformed (#9045)
  • Fixed: AWDL sync when certain special characters are present in device name (#9010, #9152)
  • Fixed: Possible crash in AWDL transport in large meshes (#9143)

Installation:

pod 'DittoSwift', '=4.2.2'
API Reference URL

DittoSwift Version 4.2.1

Released: Tue Jun 13th 2023, 10:47 pm

Release Notes:

  • Fixed: a possible crash due to serialisation when upgrading from version 4.1.0 or 4.1.1 (#8925)

Installation:

pod 'DittoSwift', '=4.2.1'
API Reference URL

DittoSwift Version 4.2.0

Released: Tue Jun 13th 2023, 8:53 am

Release Notes:

  • Added: Experimental support for disk encryption. This API is experimental for the time being and is likely to change in the next couple of releases. (#8847)
  • Added: login method that provides an extra String? argument (as compared to loginWithToken) that will be non-nil if the auth webhook provided any clientInfo JSON value. The String will be a JSON encoded string. (#8787)
  • Changed: the existing loginWithToken is marked as deprecated. (#8787)
  • Changed: Improved replication uses compressed message stream to decrease bandwidth consumption. (#8807)
  • Changed: Reduce verbosity in replication logs (#8370)
  • Fixed: a crash when using the typed(as:) API with a type that contains an optional array. (#8855)

Installation:

pod 'DittoSwift', '=4.2.0'
API Reference URL

DittoSwift Version 4.1.1

Released: Fri May 19th 2023, 6:35 am

Release Notes:

  • Fixed: Devices with hostnames longer than 35 bytes will no longer fail to sync over LAN.
  • Added: dSYMs are now bundled inside the XCFramework to improve crash report symbolication.
  • Changed: The dSYMs directory has been removed from the root directory of the CocoaPods artifact since it's no longer required now that dSYMs are bundled inside XCFreameworks.

Installation:

pod 'DittoSwift', '=4.1.1'
API Reference URL

DittoSwift Version 4.1.0

Released: Fri Apr 28th 2023, 6:52 pm

Release Notes:

  • Added: Disabled replication state. When the Big Peer receives a query that is too big to be satisfied, it will explicitly disable replication with the remote peer, and send a message informing the remote peer that replication is disabled. This is in contrast to the previous behavior, where the Big Peer simply did not respond to the query.
  • Changed: now including NSNetServicesErrorCode and Domain in AWDL connect log messages
  • Changed: Ditto instances cannot be closed/deallocated from within a live query callback closure otherwise this can lead to a deadlock.
  • Changed: (Experimental) Query Overlap Groups, Bus: a breaking protocol change for upcoming improvements. Peers using older versions will not be able to connect with newer peers until they upgrade.
  • Fixed: A replication issue where certain cases that should have reset the replication session with a remote peer would instead temporarily terminate the connection while not resetting the session.
  • Fixed: A replication issue that could cause failed convergence on small number of documents if updates are being received during a local eviction.
  • Security: Enforce immediate disconnection of any connected peers whose certificate expires during a sync session.

Installation:

pod 'DittoSwift', '=4.1.0'
API Reference URL

DittoSwift Version 4.0.3-alpha.linux-ble-fixes-2

Released: Tue Apr 18th 2023, 8:22 am

Release Notes:

  • Improvements to Bluetooth connection reliability on Linux

Installation:

pod 'DittoSwift', '=4.0.3-alpha.linux-ble-fixes-2'
API Reference URL

DittoSwift Version 4.0.3-alpha.linux-ble-fixes

Released: Mon Apr 17th 2023, 10:19 pm

Release Notes:

  • Fixed: a replication issue that could cause failed convergence on small number of documents if updates are being received during a local eviction.
  • Improvements to Bluetooth connection reliability on Linux

Installation:

pod 'DittoSwift', '=4.0.3-alpha.linux-ble-fixes'
API Reference URL

DittoSwift Version 4.0.2

Released: Thu Apr 20th 2023, 10:36 pm

Release Notes:

  • Fixed: A replication issue where certain cases that should have reset the replication session with a remote peer would instead temporarily terminate the connection while not resetting the session.
  • Fixed: Correct handling of reset and disable errors from receive_update

Installation:

pod 'DittoSwift', '=4.0.2'
API Reference URL

DittoSwift Version 4.0.1

Released: Thu Apr 6th 2023, 6:54 pm

Release Notes:

  • Fixed: Resolved an issue with logging when the stdout is not available.

Installation:

pod 'DittoSwift', '=4.0.1'
API Reference URL

DittoSwift Version 4.0.0

Released: Wed Mar 22nd 2023, 10:48 pm

Release Notes:

  • Added: AddWins removes will now be used if disableSyncWithV3 has been called on the Ditto object or the a peer has synced with another peer that has called disableSyncWithV3, or they have synced with another peer that has called disableSyncWithV3, etc.
  • Changed: If a problem occurs with an app's authentication webhook, the Small Peer that is trying to authenticate will log more detailed information for the developer.
  • Changed: old multi-hop connections are now automatically disconnected when direct connections are established with peers, freeing up unneeded resources faster.
  • Changed: reduced severity level for some routine log statements which were previously emitted at a WARN level.
  • Fixed: some threads spawned by the SDK no longer wait up to 30 seconds before being stopped.
  • Fixed: an issue which could cause Ditto to hang if more than 500 peers were encountered.
  • Fixed: replication hanging under some circumstances, especially WebSocket connections to Big Peer
  • Fixed: a possible crash if Ditto is configured with an invalid App ID. An error message is emitted instead.
  • Fixed: an issue preventing clean Ditto shutdown.
  • Fixed: cancelling subscriptions for queries with args would not work, the subscription would remain active indefinitely.
  • Fixed: some memory leaks.
  • Fixed: using the DittoBus no longer leads to Ditto instances not being deallocated properly.

Installation:

pod 'DittoSwift', '=4.0.0'
API Reference URL

DittoSwift Version 4.0.0-beta1

Released: Thu Jan 26th 2023, 11:37 pm

Release Notes:

  • Fixed: an issue which could cause Ditto to hang if more than 500 peers were encountered.
  • Fixed: an issue preventing clean Ditto shutdown.
  • Fixed: AddWins removes will now be used if disableSyncWithV3 has been called on the Ditto object or the a peer has synced with another peer that has called disableSyncWithV3, or they have synced with another peer that has called disableSyncWithV3, etc.

Installation:

pod 'DittoSwift', '=4.0.0-beta1'
API Reference URL

DittoSwift Version 4.0.0-alpha2

Released: Mon Jan 16th 2023, 10:16 pm

Release Notes:

  • Added: disableSyncWithV3 functionality to Ditto. Calling this will permanently remove the ability for the device that it is called on to sync with devices running v3 of the SDK. It also means that the device will then start performing AddWins removes when calling remove(). Any other device running v4 of the SDK that syncs with a device that has called disableSyncWithV3 (or has themselves synced with another device that has called disableSyncWithV3, etc - if any chain of syncing exists that involves a device that has called disableSyncWithV3) will also no longer be able to sync with v3 peers and will perform AddWins removes when calling remove().

Installation:

pod 'DittoSwift', '=4.0.0-alpha2'
API Reference URL

DittoSwift Version 3.0.11

Released: Thu Aug 10th 2023, 2:07 pm

Release Notes:

  • Changed: Improved clarity of error messages when data on disk cannot be read by this version following a downgrade from a newer version of Ditto. (#9267)
  • Changed: Print some internal errors in a more human-readable format. (#9495)

Installation:

pod 'DittoSwift', '=3.0.11'
API Reference URL

DittoSwift Version 3.0.10

Released: Sat Jul 1st 2023, 3:25 am

Release Notes:

  • Fixed: a potential crash if a document attachment was malformed (#9045)

Installation:

pod 'DittoSwift', '=3.0.10'
API Reference URL

DittoSwift Version 3.0.9

Released: Wed Jun 14th 2023, 3:23 pm

Release Notes:

  • Fixed: a crash when using the typed(as:) API with a type that contains an optional array.

Installation:

pod 'DittoSwift', '=3.0.9'
API Reference URL

DittoSwift Version 3.0.9-alpha1

Released: Mon May 22nd 2023, 11:34 pm

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=3.0.9-alpha1'
API Reference URL

DittoSwift Version 3.0.8

Released: Fri May 19th 2023, 6:33 am

Release Notes:

  • Added: dSYMs are now bundled inside the XCFramework to improve crash report symbolication.
  • Changed: The dSYMs directory has been removed from the root directory of the CocoaPods artifact since it's no longer required now that dSYMs are bundled inside XCFreameworks.
  • Fixed: NewRelic hanging when used together with Ditto at the time of crash. We've identified an incompatibility between PLCrashReporter, used by NewRelic under the hood, and Rust 1.65 and later versions. As a workaround, we've temporarily downgraded Ditto 3.x to be compiled with Rust 1.64 until this incompatibility is resolved.

Installation:

pod 'DittoSwift', '=3.0.8'
API Reference URL

DittoSwift Version 3.0.7

Released: Fri Apr 7th 2023, 4:28 pm

Release Notes:

  • Fixed: Resolved an issue with logging when the stdout is not available.

Installation:

pod 'DittoSwift', '=3.0.7'
API Reference URL

DittoSwift Version 3.0.6

Released: Thu Mar 16th 2023, 1:00 am

Release Notes:

  • Fixed: FetchAttachmentPublisher.Progress struct properties are now public
  • Fixed: Issue where Ditto instance using OnlinePlayground identity doesn't shut down properly
  • Fixed: Potential crash on Windows and Linux from invoking startSync() if LAN transport is enabled.

Installation:

pod 'DittoSwift', '=3.0.6'
API Reference URL

DittoSwift Version 3.0.5

Released: Wed Mar 1st 2023, 5:31 am

Release Notes:

  • Changed: some threads spawned by the SDK no longer wait up to 30 seconds before being stopped.
  • Changed: added more logging when a peer is unable to connect to another peer because of no overlapping supported protocol versions.
  • Fixed: replication hanging under some circumstances, especially WebSocket connections to Big Peer
  • Fixed: cancelling subscriptions for queries with args would not work, the subscription would remain active indefinitely.
  • Fixed: some memory leaks.
  • Fixed: using the DittoBus no longer leads to Ditto instances not being deallocated properly.

Installation:

pod 'DittoSwift', '=3.0.5'
API Reference URL

DittoSwift Version 3.0.4

Released: Sat Jan 28th 2023, 12:10 am

Release Notes:

  • Changed: Slow or blocked write transactions now log hints showing the waiting and blocking transactions

Installation:

pod 'DittoSwift', '=3.0.4'
API Reference URL

DittoSwift Version 3.0.3

Released: Thu Jan 26th 2023, 2:35 pm

Release Notes:

  • Fixed: an issue which could cause Ditto to hang if more than 500 peers were encountered.

Installation:

pod 'DittoSwift', '=3.0.3'
API Reference URL

DittoSwift Version 3.0.3-alpha2

Released: Mon Jan 23rd 2023, 6:05 pm

Release Notes:

  • Resolved an issue where presence evictions could deadlock on startup with large numbers of peers

Installation:

pod 'DittoSwift', '=3.0.3-alpha2'
API Reference URL

DittoSwift Version 3.0.2

Released: Fri Jan 20th 2023, 9:20 pm

Release Notes:

  • Fixed issue preventing clean Ditto shutdown

Installation:

pod 'DittoSwift', '=3.0.2'
API Reference URL

DittoSwift Version 3.0.1

Released: Sat Jan 14th 2023, 2:57 am

Release Notes:

  • Added: DiskUsage class which can be used to monitor disk usage.
  • Added: diskUsage property to Ditto class for access to a DiskUsage instance.
  • Added: diskUsagePublisher() method to Ditto class, returning a DiskUsagePublisher.
  • Added: DiskUsageItem class which contains data about the space used by files in the Ditto working directory.
  • Changed: better readability of data sizes and durations in logs.

Installation:

pod 'DittoSwift', '=3.0.1'
API Reference URL

DittoSwift Version 3.0.0

Released: Fri Dec 16th 2022, 1:38 pm

Release Notes:

  • Removed: the DittoRGA constructor. You cannot create new RGAs.
  • Removed: the deprecated DittoMutableRGA type. You cannot mutate existing RGAs.
  • Deprecated: DittoDocument.typed<Codable>(as:) method.
  • Deprecated: DittoMutableDocument.typed<Codable>(as:) method.
  • Deprecated: DittoTypedDocument<Decodable> class.
  • Deprecated: DittoCollection.upsert<Encodable>(_,writeStrategy:) method.
  • Deprecated: DittoPendingIDSpecificOperation.update<Codable>(using:) method.
  • Deprecated: DittoScopedWriteTransaction.upsert<Codable>(_,writeStrategy:) method.
  • Deprecated: DittoWriteTransactionPendingIDSpecificOperation.update<Codable>(using:) method.
  • Removed: observe() and observeWithNextSignal() methods of DittoPendingCollectionsOperation, DittoPendingCursorOperation, and DittoPendingIDSpecificOperation. Please use the corresponding observeLocal(deliverOn:eventHandler:) and observeLocalWithNextSignal(deliverOn:eventHandler:) variants along with a separate call to subscribe() instead. See https://docs.ditto.live/ios/common/concepts/syncing-data#subscribe
  • Added: class DittoPresence as entry point for all of presence functionality, accessible via the newly introduced presence property on the Ditto object.
  • Added: struct DittoPresenceGraph and related sub-types DittoAddress, DittoConnection, DittoConnectionType, and DittoPeer.
  • Added DittoPresence.GraphPublisher, replaces the now deprecated Ditto.RemotePeersPublisher. You can get a graph publisher via the graphPublisher() on the newly introduced DittoPresence (accessible via newly introduced presence property of Ditto).
  • Deprecated: methods observePeers() and observePeersV2() of Ditto, please use observe() of DittoPresence instead (accessible via newly introduced presence property of Ditto).
  • Deprecated: DITRemotePeer, replaced by DITPeer.
  • Deprecated: DITPeersObserver, replaced by DITObserver protocol.
  • Deprecated: DITPeersObserverV2, replaced by DITObserver protocol.
  • Deprecated: Ditto.RemotePeersPublisher and corresponding remotePeersPublisher() method on Ditto. Please use newly introduced DittoPresence.GraphPublisher and method graphPublisher() of DittoPresence instead.
  • Removed: all persistenceDirectory arguments from all of the identity type constructors.
  • Changed: performance improvements.
  • Added: disableSyncWithV2 method to Ditto. This allows you to explicitly opt-in to disabling the ability to sync with Ditto peers running any version of the SDK in the v2 series of releases. Assuming this succeeds then this peer will only be able to sync with other peers using SDKs in the v3 series of releases. Note that this disabling of sync spreads to peers that sync with a peer that has disabled, or has (transitively) had disabled, syncing with v2 SDK peers.
  • Improved: reliability if app crashes occur while persisting authentication data.
  • Added: statusPublisher() method to DittoAuthenticator.
  • Added: DittoAuthenticator.StatusPublisher, a Combine publisher for DittoAuthenticationStatus change events.
  • Improved: log increased detail to help debug blocked write transactions.

Installation:

pod 'DittoSwift', '=3.0.0'
API Reference URL

DittoSwift Version 3.0.0-alpha3

Released: Mon Dec 12th 2022, 1:19 pm

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=3.0.0-alpha3'
API Reference URL

DittoSwift Version 3.0.0-alpha2

Released: Tue Dec 6th 2022, 4:01 pm

Release Notes:

-Fixed: Incorrect import of DITAddress.h header in DittoObjC, which was causing an issue in DittoSwift.

  • Improved: reliability if app crashes occur while persisting authentication data.

Installation:

pod 'DittoSwift', '=3.0.0-alpha2'
API Reference URL

DittoSwift Version 3.0.0-alpha1

Released: Thu Dec 1st 2022, 8:01 pm

Release Notes:

  • Removed: the DittoRGA constructor. You cannot create new RGAs.
  • Removed: the deprecated DittoMutableRGA type. You cannot mutate existing RGAs.
  • Deprecated: DittoDocument.typed<Codable>(as:) method.
  • Deprecated: DittoMutableDocument.typed<Codable>(as:) method.
  • Deprecated: DittoTypedDocument<Decodable> class.
  • Deprecated: DittoCollection.upsert<Encodable>(_,writeStrategy:) method.
  • Deprecated: DittoPendingIDSpecificOperation.update<Codable>(using:) method.
  • Deprecated: DittoScopedWriteTransaction.upsert<Codable>(_,writeStrategy:) method.
  • Deprecated: DittoWriteTransactionPendingIDSpecificOperation.update<Codable>(using:) method.
  • Removed: observe() and observeWithNextSignal() methods of DittoPendingCollectionsOperation, DittoPendingCursorOperation, and DittoPendingIDSpecificOperation. Please use the corresponding observeLocal(deliverOn:eventHandler:) and observeLocalWithNextSignal(deliverOn:eventHandler:) variants along with a separate call to subscribe() instead. See https://docs.ditto.live/ios/common/concepts/syncing-data#subscribe
  • Added: class DittoPresence as entry point for all of presence functionality, accessible via the newly introduced presence property on the Ditto object.
  • Added: struct DittoPresenceGraph and related sub-types DittoAddress, DittoConnection, DittoConnectionType, and DittoPeer.
  • Added DittoPresence.GraphPublisher, replaces the now deprecated Ditto.RemotePeersPublisher. You can get a graph publisher via the graphPublisher() on the newly introduced DittoPresence (accessible via newly introduced presence property of Ditto).
  • Deprecated: methods observePeers() and observePeersV2() of Ditto, please use observe() of DittoPresence instead (accessible via newly introduced presence property of Ditto).
  • Deprecated: DITRemotePeer, replaced by DITPeer.
  • Deprecated: DITPeersObserver, replaced by DITObserver protocol.
  • Deprecated: DITPeersObserverV2, replaced by DITObserver protocol.
  • Deprecated: Ditto.RemotePeersPublisher and corresponding remotePeersPublisher() method on Ditto. Please use newly introduced DittoPresence.GraphPublisher and method graphPublisher() of DittoPresence instead.
  • Removed: all persistenceDirectory arguments from all of the identity type constructors.
  • Changed: performance improvements.
  • Added disableSyncWithV2 method to Ditto. This allows you to explicitly opt-in to disabling the ability to sync with Ditto peers running any version of the SDK in the v2 series of releases. Assuming this succeeds then this peer will only be able to sync with other peers using SDKs in the v3 series of releases. Note that this disabling of sync spreads to peers that sync with a peer that has disabled, or has (transitively) had disabled, syncing with v2 SDK peers.

Installation:

pod 'DittoSwift', '=3.0.0-alpha1'
API Reference URL

DittoSwift Version 2.1.0

Released: Wed Nov 2nd 2022, 11:51 pm

Release Notes:

  • Deprecated: observe() and observeWithNextSignal() methods of DittoPendingCollectionsOperation, DittoPendingCursorOperation and DittoPendingIDSpecificOperation. Please use the corresponding observeLocal(deliverOn:eventHandler:) and observeLocalWithNextSignal(deliverOn:eventHandler:) variants along with a separate call tosubscribe() instead. See https://docs.ditto.live/ios/common/concepts/syncing-data#subscribe

Installation:

pod 'DittoSwift', '=2.1.0'
API Reference URL

DittoSwift Version 2.0.8

Released: Fri Oct 28th 2022, 12:14 am

Release Notes:

  • Added: appID property to Ditto class
  • Added: persistenceDirectory property to Ditto class

Installation:

pod 'DittoSwift', '=2.0.8'
API Reference URL

DittoSwift Version 2.0.7

Released: Fri Sep 23rd 2022, 3:02 am

Release Notes:

  • Changed: New lock file ensures we have only 1 SDK instance per working dir
  • Removed: Bitcode is no longer embedded in the Ditto SDK as use of this technology has been deprecated by Apple.
  • Fixed: Swift package manifest is now updated on the main branch.
  • Fixed: Reduced the amount of disk space used by sync metadata by up to 50% in some cases

Installation:

pod 'DittoSwift', '=2.0.7'
API Reference URL

DittoSwift Version 2.0.6

Released: Thu Sep 15th 2022, 11:46 pm

Release Notes:

  • Fixed: Ensure Ditto internal auth client is shut down correctly when it's no longer needed
  • Fixed: The SwiftPM .zip artifact included an unintended .swiftsourceinfo file which causes mismatched versions of the Swift toolchain to cause errors. CocoaPods artifacts were unaffected.

Installation:

pod 'DittoSwift', '=2.0.6'
API Reference URL

DittoSwift Version 2.0.5

Released: Thu Sep 8th 2022, 10:20 pm

Release Notes:

  • Fixed: a very rare deadlock when starting sync immediately after creating the Ditto instance.

Installation:

pod 'DittoSwift', '=2.0.5'
API Reference URL

DittoSwift Version 2.0.4

Released: Thu Sep 1st 2022, 6:31 pm

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=2.0.4'
API Reference URL

DittoSwift Version 2.0.3

Released: Wed Aug 31st 2022, 5:20 pm

Release Notes:

  • Fixed: rare crash due to a race condition within Ditto's Bluetooth subsystem.
  • Changed: presence data is no longer synced with the big peer.

Installation:

pod 'DittoSwift', '=2.0.3'
API Reference URL

DittoSwift Version 2.0.2

Released: Sat Aug 27th 2022, 1:58 am

Release Notes:

  • Added: method cancel() to DittoSubscription allowing explicit cancelling of a subscription.
  • Fixed: memory leak, observer objects returned by observeStatus() of DittoAuthenticator were never deallocated.
  • Fixed: Reduced size of DittoSwift framework
  • Changed: performing an .exec() call, outside the scope of a store.write { } block, no longer tries to obtain a write transaction and instead uses a read transaction.

Installation:

pod 'DittoSwift', '=2.0.2'
API Reference URL

DittoSwift Version 2.0.1

Released: Sun Aug 14th 2022, 4:57 am

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=2.0.1'
API Reference URL

DittoSwift Version 2.0.0

Released: Wed Aug 3rd 2022, 2:54 pm

Release Notes:

  • Note: peers running 2.0.0 are able to sync with peers running at least version 1.1.8 of the SDK.
  • Added: support for explicitly typing values as registers. This is via 2 new types: DittoRegister and DittoMutableRegister, and new registerValue value accessors added to DittoDocumentPath and DittoMutableDocumentPath.
  • Added: DittoCounter and DittoMutableCounter types resembling the CRDT type underneath, which replace the old counter mechanics. A new counter value accessor has been added to DittoDocumentPath and DittoMutableDocumentPath, which returns a DittoCounter or a DittoMutableCounter respectively, if one is present at the document path specified.
  • Added: support for accessing and creating RGAs (Replicated Growable Arrays), which was the default CRDT type for arrays in Ditto v1. There are 2 new types: DittoRGA and DittoMutableRGA in v2, and new rga value accessors added to DittoDocumentPath and DittoMutableDocumentPath. Note that these are deprecated though and arrays should instead be used in registers (which is now the default).
  • Changed: arrays now default to being Register arrays. This means that when you want to update a property in a document that's an array you need to set the whole value as the new array. You can't perform mutating operations on an array in a document other than to fully replace it.
  • Added: value accessor properties have been added to DittoDocumentID: value, string{Value}, bool{Value}, int{Value}, uint{Value}, float{Value}, double{Value}, array{Value}, dictionary{Value}.
  • Changed: the keys DittoAccessLicense and DittoLicenseToken in Info.plist will now fail with a fatal error instead of logging a deprecation warning. Please use the key DittoOfflineOnlyLicenseToken instead.
  • Changed: renamed identity onlinePlaygroundV2 to just onlinePlayground, which replaces the previously deprecated onlinePlayground.
  • Changed: renamed Ditto method tryStartSync() to just startSync(), which replaces the previously deprecated startSync().
  • Removed: deprecated DittoRemotePeerV2 property meshRole, please queryOverlapGroup instead.
  • Removed: deprecated type DittoPeersObserver, please use DittoObserver instead.
  • Removed: deprecated DittoDocumentID method toNative(), please use property value instead.
  • Removed: deprecated DittoScopedWriteTransaction method find(query:), please use find() instead.
  • Removed: deprecated DittoScopedWriteTransaction methods insert() and insertWithStrategy(), please use upsert() and upsertWithStrategy() instead.
  • Removed: deprecated DittoCollection methods insert() and insertWithStrategy(), please use upsert() and upsertWithStrategy() instead.
  • Removed: deprecated identities development and online, please use the available ones instead.
  • Removed: deprecated Ditto methods setAccessLicense() and setLicenseToken(), please use setOfflineOnlyLicenseToken() instead.
  • Removed: deprecated Ditto method setTransportConfig(), please set the transportConfig property directly.
  • Removed: deprecated DittoAuthenticator method isAuthenticated() and property userID, please use status instead.
  • Removed: DittoWriteStrategy.overwrite.

Installation:

pod 'DittoSwift', '=2.0.0'
API Reference URL

DittoSwift Version 2.0.0-alpha1

Released: Wed Jul 20th 2022, 11:55 am

Release Notes:

This is a preview release of Ditto v2. Full changelog will be provided with the official release.

Installation:

pod 'DittoSwift', '=2.0.0-alpha1'
API Reference URL

DittoSwift Version 1.1.11

Released: Fri Sep 9th 2022, 11:11 pm

Release Notes:

  • Fixed: a very rare deadlock when starting sync immediately after creating the Ditto instance.

Installation:

pod 'DittoSwift', '=1.1.11'
API Reference URL

DittoSwift Version 1.1.10

Released: Thu Jul 7th 2022, 7:53 pm

Release Notes:

  • Changed: reduced total memory overhead during sync.
  • Fixed: private class inside the Ditto SDK was named CBOR and conflicted with a private Apple class named exactly the same, which produced a warning at launch time.

Installation:

pod 'DittoSwift', '=1.1.10'
API Reference URL

DittoSwift Version 1.1.9

Released: Thu Jun 16th 2022, 1:27 am

Release Notes:

  • Changed: reduced CRDT memory overhead.

  • Changed: HTTP/WebSocket service now allows any origin for CORS, so it may be used from a webapp on localhost.

  • Fixed: a peer using an online identity would fail to sync peer-to-peer after app restarts.

  • Fixed: DittoDelegate method dittoIdentityProviderAuthenticationRequest(ditto:request:) would receive a DittoAuthenticationRequest with some properties being incorrectly set to nil.

Installation:

pod 'DittoSwift', '=1.1.9'
API Reference URL

DittoSwift Version 1.1.9-alpha1

Released: Thu Jun 9th 2022, 3:12 am

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=1.1.9-alpha1'
API Reference URL

DittoSwift Version 1.1.8

Released: Fri Jun 3rd 2022, 7:13 am

Release Notes:

  • Fixed: Ditto with onlinePlaygroundV2 identity would fail to sync with the Big Peer if internet access isn't available at the time when Ditto is instantiated.

  • Fixed: DittoSwift contained an invalid development signature.

Installation:

pod 'DittoSwift', '=1.1.8'
API Reference URL

DittoSwift Version 1.1.7

Released: Fri May 13th 2022, 2:18 pm

Release Notes:

Synchronized version bump release.

Installation:

pod 'DittoSwift', '=1.1.7'
API Reference URL

DittoSwift Version 1.1.6

Released: Mon May 9th 2022, 12:04 pm

Release Notes:

  • Fixed: a correctness issue in replication when peer permissions changed in the middle of a replication exchange.
  • Fixed: error when querying a collection and there was a type mismatch for a field being used in a comparison in the query.
  • Fixed: restarting an app too quickly could lead to multiple connection attempts to rejoin peers in the mesh.
  • Fixed: apps using OnlinePlaygroundV2 identities could experience a one minute delay before peer-to-peer sync occurs.
  • Fixed: cloud sync would stop working when setting a newly created transport config.
  • Changed: improvements to Ditto mesh performance via fastest-available-transport prioritization.

Installation:

pod 'DittoSwift', '=1.1.6'
API Reference URL

DittoSwift Version 1.1.5

Released: Fri Apr 8th 2022, 8:00 am

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=1.1.5'
API Reference URL

DittoSwift Version 1.1.4

Released: Fri Apr 8th 2022, 6:25 am

Release Notes:

  • Changed: improved replication performance in some scenarios.
  • Fixed: accessing a DittoMutableDocument's value property now correctly decodes data such that it works in the same way as DittoDocument's value property.

Installation:

pod 'DittoSwift', '=1.1.4'
API Reference URL

DittoSwift Version 1.1.3

Released: Tue Mar 22nd 2022, 10:13 am

Release Notes:

  • Added: onlinePlaygroundV2 case to DittoIdentity allowing for basic authentication for playgrounds

  • Deprecated: onlinePlayground case of DittoIdentity, use newly added onlinePlaygroundV2 instead

  • Fixed: sync issues due to inconsistent handling of app IDs across SDKs

  • Fixed: document IDs are now validated when synced and removed if invalid (some of our early versions of the SDK stored malformed IDs under certain circumstances)

Installation:

pod 'DittoSwift', '=1.1.3'
API Reference URL

DittoSwift Version 1.1.2

Released: Mon Feb 28th 2022, 2:36 pm

Release Notes:

  • Added: property isReady to experimental DittoBusStream to check if a message may be enqueued.
  • Added: method setOfflineOnlyLicenseToken() to class Ditto as replacement for now deprecated setLicenseToken().
  • Changed: made DittoBusStream, DittoRemotePeerV2, and DittoAddress adopt Equatable and Hashable protocols.
  • Changed: made DittoRemotePeerV2 adopt the Identifiable protocol.
  • Deprecated: method setLicenseToken() of class Ditto, please use newly added setOfflineOnlyLicenseToken() instead.

Installation:

pod 'DittoSwift', '=1.1.2'
API Reference URL

DittoSwift Version 1.1.1

Released: Sat Feb 12th 2022, 5:38 am

Release Notes:

  • Changed: Optimized the performance of accessing the value of a Document
  • Added: Combine publisher APIs obviating the CombineDitto extension library
    • Added: remotePeersPublisher() method to Ditto class
    • Added: fetchAttachmentPublisher(attachmentToken:) method to DittoCollection class
    • Added: liveQueryPublisher() method to DittoPendingCursorOperation class
    • Added: singleDocumentLiveQueryPublisher() method to DittoPendingIDSpecificOperation class
  • Added: Experimental Bus API
    • Added: dittoBus(_, didReceiveSingleMessage:) method to DittoBusDelegate protocol
    • Added: dittoBus(_, didReceiveIncomingStream:, fromPeer:) method to DittoBusDelegate protocol
    • Removed: dittoBus(_, didReceive:) method from `DittoBusDelegate protocol
  • Added: Experimental mesh roles API
    • Added: setMeshRole(meshRole:, ditto:) method to DittoExperimental class
    • Added: setPriorityForMeshRole(_, forMeshRole:, ditto:) to DittoExperimental class
  • Fixed: Improved AWDL reliability on iOS 12

Installation:

pod 'DittoSwift', '=1.1.1'
API Reference URL

DittoSwift Version 1.1.0

Released: Fri Jan 28th 2022, 11:21 am

Release Notes:

  • Changed: improved peer-to-peer algorithms to create meshes that are more efficient and diverse.
  • Changed: improved routing algorithms for more efficiency.
  • Changed: improved performance of query parsing.
  • Added: property isSyncActive to class Ditto.
  • Added: method logout() to class DittoAuthenticator.
  • Added: set of APIs to observe authentication status (see API reference for DittoAuthenticator and DittoAuthenticationDelegate).
  • Added: method upsert() to classes DittoCollection and DittoScopedWriteTransaction (as a replacement for insert() & friends) which by default merges the newly inserted document if one with the same ID already exists.
  • Deprecated: properties isAuthenticated and userID of class DittoAuthenticator in favor of newly introduced property status.
  • Deprecated: methods insert() & frinds of classes DittoCollection and DittoScopedWriteTransaction in favor of newly introduced upsert().

Installation:

pod 'DittoSwift', '=1.1.0'
API Reference URL

DittoSwift Version 1.0.19

Released: Thu Dec 23rd 2021, 8:42 pm

Release Notes:

  • Fixed: collections were not appearing in the data browser under certain permission configurations.
  • Fixed: race condition when subscriptions were configured from multiple threads in parallel (sometimes leading to a crash).

Installation:

pod 'DittoSwift', '=1.0.19'
API Reference URL

DittoSwift Version 1.0.18

Released: Mon Dec 20th 2021, 1:22 pm

Release Notes:

  • Fixed a number of Codable-related bugs. One of the more notable fixes involves Codable-conforming types from Foundation now working as you'd expect.
  • Fixed some small memory leaks.
  • Reduced the opportunity for rapid memory growth in some scenarios.

Installation:

pod 'DittoSwift', '=1.0.18'
API Reference URL

DittoSwift Version 1.0.18-alpha2

Released: Tue Dec 14th 2021, 4:32 pm

Release Notes:

  • Improve attachment sync performance.
  • Fix an issue where memory usage could grow very quickly when using a live query and performing lots of operations that led to a live query update.

Installation:

pod 'DittoSwift', '=1.0.18-alpha2'
API Reference URL

DittoSwift Version 1.0.18-alpha1

Released: Wed Dec 8th 2021, 5:25 pm

Release Notes:

  • Fixed an issue where document IDs that were specified inside the document's value as opposed to being specified explicitly (as a separate argument to insert) weren't being processed correctly, potentially leading to bugs with merge and overwrite behaviors.
  • macOS (including Apple Silicon) and iOS simulator (on an Apple Silicon device) support has been added.

Installation:

pod 'DittoSwift', '=1.0.18-alpha1'
API Reference URL

DittoSwift Version 1.0.17

Released: Fri Nov 26th 2021, 12:11 am

Release Notes:

  • Fix an issue with write strategies not working correctly. Unexpected results could occur when performing sequences of operations on documents.
  • Fix a bug with Codable-conforming enums that was causing a runtime error.

Installation:

pod 'DittoSwift', '=1.0.17'
API Reference URL

DittoSwift Version 1.0.16

Released: Fri Nov 19th 2021, 10:39 pm

Release Notes:

  • Fix an issue with live queries that involved a limit, no offset, at least one document being deleted, and some other conditions being met. Live queries that met these conditions could report incorrect sets of matching documents.
  • Fix an issue that could potentially lead to an infinite loop in the replication system, meaning no sync progress would be made.

Installation:

pod 'DittoSwift', '=1.0.16'
API Reference URL

DittoSwift Version 1.0.15

Released: Fri Nov 5th 2021, 10:03 pm

Release Notes:

  • Ensure that when performing a sort that if a document that matches the filter specified via the accompanying find call doesn't have the key specified in the sort expression then it won't lead to an error. Now, if you're sorting in a descending order then the documents without the key specified in the sort will appear at the end of the set of results, after all of the documents that do have the key present. If you're sorting in an ascending order then the documents without the sort key will appear first in the set of documents, before all of the documents that do contain the sort key.
  • Fixed handling of large integers in documents. Integers larger than Int.max were still trying to be handled as Ints, leading to crashes. We now correctly handle them as UInts when appropriate.
  • Add the ability to directly set values inside the closure passed to an update call with assignments done via = sets, e.g. collection.findByID("123").update { $0!["color"] = "white" }
  • Fix a bug where some transports related calls were not being run on the correct thread and so could lead to a crash.

Installation:

pod 'DittoSwift', '=1.0.15'
API Reference URL

DittoSwift Version 1.0.15-alpha1

Released: Wed Oct 27th 2021, 10:33 am

Release Notes:

  • Fix a bug where large integers (greater than Int.max) would mistakenly try to get internally represented by an Int. They are now correctly represented using a UInt instead.

Installation:

pod 'DittoSwift', '=1.0.15-alpha1'
API Reference URL

DittoSwift Version 1.0.14

Released: Mon Oct 25th 2021, 8:31 am

Release Notes:

  • Add support for array projections to DittoQL.
  • Deprecate the online identity in favor of the new onlineWithAuthentication identity.
  • Deprecate the development identity in favor of the new offlinePlayground identity.
  • Add an auth property to Ditto that provides access to a DittoAuthenticator when using an appropriate identity with your Ditto instance.
  • Add support for using a document ID that is an object that conforms to Codable.

Installation:

pod 'DittoSwift', '=1.0.14'
API Reference URL

DittoSwift Version 1.0.13

Released: Mon Oct 18th 2021, 5:02 pm

Release Notes:

  • Synchronized version bump release

Installation:

pod 'DittoSwift', '=1.0.13'
API Reference URL

DittoSwift Version 1.0.12

Released: Mon Oct 18th 2021, 10:00 am

Release Notes:

  • Added global section to TransportConfig allowing P2P sync to be contained within certain groups of devices by putting them in the same "sync group".
  • Fixed Xcode warning regarding .swiftsourceinfo files being present.

Installation:

pod 'DittoSwift', '=1.0.12'
API Reference URL

DittoSwift Version 1.0.11

Released: Fri Oct 8th 2021, 5:09 am

Release Notes:

  • Added DittoWriteStrategy enum.
  • Added method insertWithStrategy() to DittoCollection, allowing to specify the behavior when inserting a document with an ID that matches the ID of a document already in the store.
  • Fixed AWDL peers never re-connecting after transport is toggled.
  • Fixed mDNS transport crash.
  • Fixed sporadic hangs and crashes when using Online identity.
  • Added isAuthenticated() method and userID property to DittoAuthenticator.
  • Fixed Codable support for non-string IDs and Float and Double types.

Installation:

pod 'DittoSwift', '=1.0.11'
API Reference URL

DittoSwift Version 1.0.10

Released: Fri Sep 10th 2021, 4:21 pm

Release Notes:

  • Fix to stop a change in site ID from leading to an unnecessary error.
  • Improve handling of persisted authentication data. Note that this might lead to a one-off change to a peer's site ID if you weren't and continue to not be specifying an explicit site ID when creating your identity.

Installation:

pod 'DittoSwift', '=1.0.10'
API Reference URL

DittoSwift Version 1.0.9

Released: Fri Sep 3rd 2021, 10:38 pm

Release Notes:

  • Added support for getting information about all of the collections that the device is aware of. This is achieved by accessing collections() through the store object and then using the same sort of API used when getting documents in collections, i.e. exec/observe/etc.
  • Added multicast as a transport option to the LAN config part of TransportConfig.
  • Added new identity types: Online and OnlinePlayground. An Online identity should be used when running Ditto in secure production mode, logging on to Ditto Cloud, or using an on-premises authentication server. User permissions are centrally managed. Sync will not work until a successful login has occurred. An OnlinePlayground identity should be used when you want to test a Ditto Cloud app without authentication ("Playground mode"). This mode offers no security and must only be used for development.
  • The Production identity has been renamed to Manual.
  • Added a DittoAuthenticator type, accessible via the Ditto object, which allows you to perform login operations when you're using an Online identity.
  • Similarly, added an DittoAuthenticationDelegate type that needs to be used when using an Online identity.
  • Report an error if more than one Ditto instance is started using the same working directory.

Installation:

pod 'DittoSwift', '=1.0.9'
API Reference URL

DittoSwift Version 1.0.8

Released: Mon Aug 2nd 2021, 4:19 pm

Release Notes:

  • Improved debug logging.

Installation:

pod 'DittoSwift', '=1.0.8'
API Reference URL

DittoSwift Version 1.0.7

Released: Thu Jul 22nd 2021, 11:38 pm

Release Notes:

  • Fix bug where sync may fail if an unusually long deviceName is configured
  • Fix intermittent crash when Bluetooth L2CAP connections fail
  • Fix intermittent crash when using the presence viewer component and the app is backgrounded

Installation:

pod 'DittoSwift', '=1.0.7'
API Reference URL

DittoSwift Version 1.0.6

Released: Thu Jul 8th 2021, 6:22 pm

Release Notes:

  • Add value accessor on DittoDocumentPath, DittoMutableDocumentPath, and DittoDocumentIDPath types to allow accessing a nested value in a document/ID as an Any?.

Installation:

pod 'DittoSwift', '=1.0.6'
API Reference URL

DittoSwift Version 1.0.5

Released: Fri Jun 25th 2021, 10:36 pm

Release Notes:

  • Added a new find function that accepts a query containing placeholders in the form of $args.my_arg along with a map of query arguments in the form of { "my_arg": "some value" }. The placeholders in the query will be replaced by a query-appropriate representation of the relevant value from the map of query arguments.

    For example, a query of color == $args.color with a query arguments map of { "color": "red" } would internally be treated as a query of: color == "red".

  • Added the ability to get a hash and/or a mnemonic (string) representation of the matching documents from a live query event. This means you can do something like this:

    let liveQuery = collection.findAll().observe() { docs, event in
        event.hash(docs); // e.g. `1950015808188223905`
        event.hashMnemonic(docs); // e.g. `locate-quality-tina--helena-remote-cat`
        // ...
    }
    
  • Fix for using floats in queries.

  • Accessing the store property of a Ditto instance will no longer throw an error if you have not yet activated your Ditto instance with a valid license token.

  • Deprecated setAccessLicense and added a new function, setLicenseToken, which will throw an appropriate error if your provided license token is expired or invalid somehow.

  • Deprecated startSync and added a new function, tryStartSync, which will throw an error if your Ditto instance hasn't yet been activated via a successful call to setLicenseToken.

Installation:

pod 'DittoSwift', '=1.0.5'
API Reference URL

DittoSwift Version 1.0.4

Released: Fri Jun 11th 2021, 10:36 pm

Release Notes:

  • Fix issue with AWDL transport where it could end up in a stuck state.
  • Deprecate the find(query:) function on DittoScopedWriteTransaction and add a new version of find(:) that doesn't require the query argument label. This makes this consistent with the find(:) function on DittoCollection.

Installation:

pod 'DittoSwift', '=1.0.4'
API Reference URL

DittoSwift Version 1.0.3

Released: Thu Jun 10th 2021, 4:34 pm

Release Notes:

  • Bluetooth sync performance improvements with L2CAP support added.

Installation:

pod 'DittoSwift', '=1.0.3'
API Reference URL

DittoSwift Version 1.0.2

Released: Thu May 20th 2021, 9:39 pm

Release Notes:

  • Add support for subscripting DittoDocumentIDs in order to get nested values when a document ID is based on an array or a dictionary.
  • Deprecated .toNative() on DittoDocumentID. You should use .value instead.

Installation:

pod 'DittoSwift', '=1.0.2'
API Reference URL

DittoSwift Version 1.0.1

Released: Tue May 4th 2021, 4:02 pm

Release Notes:

  • If you provide an invalid query then you will now get a better error message.

Installation:

pod 'DittoSwift', '=1.0.1'
API Reference URL

DittoSwift Version 1.0.0

Released: Thu Apr 22nd 2021, 12:29 am

Release Notes:

  • This release is not compatible with any previous SDK releases. There are a number of breaking changes both in terms of the SDK API and in terms of the internal systems used by the SDK to perform operations such as synchronization. If you have previously made use of the Ditto SDK and wish to update to this version then note that you will need to delete all existing Ditto data otherwise you will run into errors. If you have existing data that you need to keep then please contact us and we can advise you as to how you can migrate your data.
  • The most notable API breaking changes are:
    • Document IDs are no longer restricted to just strings. You can now create a document ID that is a string, integer, boolean, array, map, or null. This means that when making findByID or insert calls you now need to provide a DittoDocumentID object rather than a string. Similarly, when you access a document's ID it will now return a DittoDocumentID object instead of a string.
    • The start() and stop() functions on the Ditto object have been renamed to startSync() and stopSync() respectively. They now also don't accept any arguments. If you wish to specify which transports you would like the Ditto SDK to make use of (along with any configuration that they might require) you now need to use the setTransportConfig function on the Ditto object, and pass to that a transport config object. The default transports that will be enabled are still the same as they were in previous releases of the SDK though, so if you have no custom requirements then you can simply change your start() call to startSync().
  • Lots of performance improvements and bug fixes.

Installation:

pod 'DittoSwift', '=1.0.0'
API Reference URL

DittoSwift Version 1.0.0-alpha9

Released: Fri Feb 5th 2021, 12:58 am

Release Notes:

  • Fixed a bug where mDNS advertising may continue after Ditto is stopped.
  • Fixed a hang that could occur creating an attachment fetcher while requesting many attachments at once.
  • Fixed sync failure when there are multiple overlapping subscriptions or live queries with the same query string for the same collection.
  • Fixed a potential crash and other sync failures that could occur under certain conditions.

Installation:

pod 'DittoSwift', '=1.0.0-alpha9'
API Reference URL

DittoSwift Version 1.0.0-alpha8

Released: Fri Jan 22nd 2021, 3:09 pm

Release Notes:

  • Site IDs, which make up part of a Ditto identity object, are now unsigned, 64-bit integers instead of unsigned 32-bit integers.
  • Fix a crash that could occur if an offset with a value greater than the number of matching documents was provided.
  • Fix a potential crash that would occur if a live query had stop called on it immediately after it was created.

Installation:

pod 'DittoSwift', '=1.0.0-alpha8'
API Reference URL