Changelog
JavaScript 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: Prevent race condition that can cause attachment fetchers to fail being cleaned up. (#12336)
- Fixed: a memory leak affecting attachments downloaded using the legacy query builder API. (#13819)
- Fixed: iOS devices may fail to sync on LAN when the app is backgrounded then foregrounded. (#14150)
Installation:
npm install --save @dittolive/ditto@4.8.1-rc.1
If you have yarn:
yarn add @dittolive/ditto@4.8.1-rc.1
JavaScript Version 4.8.0
Released: Thu Aug 22nd 2024, 12:29 pm
Release Notes:
- Fixed: errors that occur while running manual garbage collection with
Ditto.runGarbageCollection()
are now thrown. (#8743) - Changed:
Ditto.runGarbageCollection()
is now an async method, which allows awaiting the completion of manual garbage collection. (#8743) - Fixed: Ditto logger is now initialized when first constructing a
Ditto
instance, when it used to be initialized on callinginit()
in browser environments and on import of the SDK in other environments. This fixes an issue where it was not possible to set the logger's verbosity level before logging began. (#12719) - Added: method
exportToFile()
toLogger
, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11961) - Added: properties
peerKeyString1
andpeerKeyString2
onConnection
, replacing the now deprecated propertiespeer1
andpeer2
. (#12799) - Deprecated: Properties
peer1
andpeer2
onConnection
. Please usepeerKeyString1
andpeerKeyString2
instead. (#12799) - Changed: Documentation for
startSync()
anddisableSyncWithV3()
to include a recommendation for performance improvement. (#13098) - Changed: DQL methods now use generics for improved type safety and better IDE support. This change affects the Ditto
Store
's methodsexecute()
,registerObserver()
,registerObserverWithNextSignal()
, itsobservers
field, as well as the related typesQueryResult
,QueryResultItem
,StoreObserver
,StoreObservationHandler
, andStoreObservationHandlerWithSignalNext
. In theSync
class, the methodregisterSubscription()
and thesubscriptions
field are updated, as well as the relatedSyncSubscription
class. Type generics are added in a backwards-compatible manner by providing default types with wide bounds. - Changed: Documentation for property
peerMetadata
onPeer
to add information about how the property behaves over the lifecycle of thePresenceGraph
. (#13479) - Fixed: calling
Logger.setCustomLogCallback()
with a non-function value now throws aTypeError
instead of silently failing. (#14001) - 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
andchar_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 ofWarning
. (#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:
npm install --save @dittolive/ditto@4.8.0
If you have yarn:
yarn add @dittolive/ditto@4.8.0
JavaScript 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
andchar_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 ofWarning
. (#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)
- Fixed: errors that occur while running manual garbage collection with
Ditto.runGarbageCollection()
are now thrown. (#8743) - Changed:
Ditto.runGarbageCollection()
is now an async method, which allows awaiting the completion of manual garbage collection. (#8743) - Fixed: Ditto logger is now initialized when first constructing a
Ditto
instance, when it used to be initialized on callinginit()
in browser environments and on import of the SDK in other environments. This fixes an issue where it was not possible to set the logger's verbosity level before logging began. (#12719) - Added: method
exportToFile()
toLogger
, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11961) - Added: properties
peerKeyString1
andpeerKeyString2
onConnection
, replacing the now deprecated propertiespeer1
andpeer2
. (#12799) - Deprecated: Properties
peer1
andpeer2
onConnection
. Please usepeerKeyString1
andpeerKeyString2
instead. (#12799) - Changed: Documentation for
startSync()
anddisableSyncWithV3()
to include a recommendation for performance improvement. (#13098) - Changed: DQL methods now use generics for improved type safety and better IDE support. This change affects the Ditto
Store
's methodsexecute()
,registerObserver()
,registerObserverWithNextSignal()
, itsobservers
field, as well as the related typesQueryResult
,QueryResultItem
,StoreObserver
,StoreObservationHandler
, andStoreObservationHandlerWithSignalNext
. In theSync
class, the methodregisterSubscription()
and thesubscriptions
field are updated, as well as the relatedSyncSubscription
class. Type generics are added in a backwards-compatible manner by providing default types with wide bounds. - Changed: Documentation for property
peerMetadata
onPeer
to add information about how the property behaves over the lifecycle of thePresenceGraph
. (#13479) - Fixed: calling
Logger.setCustomLogCallback()
with a non-function value now throws aTypeError
instead of silently failing. (#14001)
Installation:
npm install --save @dittolive/ditto@4.8.0-rc.2
If you have yarn:
yarn add @dittolive/ditto@4.8.0-rc.2
JavaScript 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:
npm install --save @dittolive/ditto@4.7.5-rc.1
If you have yarn:
yarn add @dittolive/ditto@4.7.5-rc.1
JavaScript 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) - Fixed: A rare scenario that caused Ditto to reconnect peers under high load (#13849)
Installation:
npm install --save @dittolive/ditto@4.7.4
If you have yarn:
yarn add @dittolive/ditto@4.7.4
JavaScript 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: the React Native SDK to be compatible with versions lower than 0.72 (#12641)
- Fixes: blank
deviceName
property on Ditto instances in React Native apps. (#12661)
Installation:
npm install --save @dittolive/ditto@4.7.2
If you have yarn:
yarn add @dittolive/ditto@4.7.2
JavaScript 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)
- 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: the React Native SDK to be compatible with versions lower than 0.72 (#12641)
- Fixes: blank
deviceName
property on Ditto instances in React Native apps . (#12661)
Installation:
npm install --save @dittolive/ditto@4.7.2-rc.2
If you have yarn:
yarn add @dittolive/ditto@4.7.2-rc.2
JavaScript Version 4.7.2-rc.1
Released: Mon May 6th 2024, 11:16 pm
Release Notes:
- Fixed: the React Native SDK to be compatible with versions lower than 0.72 (#12641)
- Fixes: blank
deviceName
property on Ditto instances in React Native apps . (#12661) - 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:
npm install --save @dittolive/ditto@4.7.2-rc.1
If you have yarn:
yarn add @dittolive/ditto@4.7.2-rc.1
JavaScript 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: prevent unlikely crashes when closing Ditto immediately following a call to
setPeerMetadata
orsetPeerMetadataJSON
. (#12351) - Fixed: prevent unlikely crashes that could have occurred when closing Ditto after having registered a presence observer using
Ditto.presence.observe()
. (#12351) Fixed: Prevented a possible crash when closing a ditto instance after having set up a presence observer usingDitto.presence.observe()
(#12388). Fixed: Live queries with async callback handlers created usingobserveLocal()
now only trigger the next callback when the handler function has settled (#12388).
Installation:
npm install --save @dittolive/ditto@4.7.1
If you have yarn:
yarn add @dittolive/ditto@4.7.1
JavaScript Version 4.7.1-beta.2
Released: Fri Apr 5th 2024, 11:29 pm
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@4.7.1-beta.2
If you have yarn:
yarn add @dittolive/ditto@4.7.1-beta.2
JavaScript Version 4.7.1-beta.1
Released: Fri Apr 5th 2024, 6:18 pm
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@4.7.1-beta.1
If you have yarn:
yarn add @dittolive/ditto@4.7.1-beta.1
JavaScript 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)
- Fixed (Linux): P2P LAN failed to advertise on a newly added interface, e.g., enabling WiFi at runtime (#10265)
- Added: setting the
deviceName
property of aDitto
instance after sync has started will now log a warning: changes to the value only take effect after restarting sync. (#11160) - Fixed:
deviceName
property onDitto
instances now reflects the truncation of the value to 24 bytes when starting sync. (#11340) - Changed: documentation for
DittoError
to add a usage example. (#11828) - Added: property
connectionRequestHandler
toditto.presence
, which allows filtering incoming connections from other peers (#11982). - Added: property
peerMetadataJSONString
and methodsetPeerMetadataJSONString
toditto.presence
(#11982). - Added: property
peerMetadata
and methodsetPeerMetadata()
toditto.presence
(#11982). - Added: properties
peerMetadata
andidentityServiceMetadata
toPeer
(#12047). - Added: property
peerKeyString
toPeer
as replacement for the now deprecatedpeerKey
(#12047). - Deprecated: property
peerKey
onPeer
, please use the newly addedpeerKeyString
instead (#12047). - Security: Fixed an issue where DQL methods may include sensitive information
in error logs. The methods
ditto.store.execute()
,ditto.store.registerObserver()
, andditto.sync.registerSubscription()
were including query string and query arguments from their parameters in thecontext
property of errors thrown. If these errors are included in logs, the sensitive information could be exposed. This release removes the query string and query arguments from thecontext
property (#12168). - Added: setting the
deviceName
property of aDitto
instance after sync has started will now log a warning: changes to the value only take effect after restarting sync, for the React Native SDK. (#11160) - Fix:
setOfflineOnlyLicenseToken()
error messages not propagating correctly for the React Native SDK. (#12048) - Fix: Offline transport protocols not starting for the React Native SDK. (#12049)
Installation:
npm install --save @dittolive/ditto@4.7.0
If you have yarn:
yarn add @dittolive/ditto@4.7.0
JavaScript Version 4.7.0-alpha.1
Released: Fri Mar 1st 2024, 11:46 pm
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@4.7.0-alpha.1
If you have yarn:
yarn add @dittolive/ditto@4.7.0-alpha.1
JavaScript Version 4.6.0
Released: Tue Mar 12th 2024, 6:24 pm
Release Notes:
- Added: Support for Linux ARM 64 (#7050)
- Added: Debug representations in Node.js
console.log()
forDocument
,MutableDocument
, andQueryResultItem
(#10411) - Added: method
fetchAttachment()
onStore
as 1:1 replacement for the corresponding and now deprecated method onCollection
. This new method can now also take a plain object representation of an attachment token as returned in aQueryResultItem
. Documentation has been updated with error cases to expect. (#11535) - Added: method
newAttachment()
onStore
as a 1:1 replacement for the corresponding and now deprecated method onCollection
. Documentation has been updated with error cases to expect. (#11535) - Added: properties
id
andlen
toAttachment
andAttachmentToken
. Also, added propertymetadata
toAttachmentToken
. (#11535) - Added: method
data()
onAttachment
as a replacement forgetData()
. (#11772) - Added: Preliminary support for runtime configuration using DQL
ALTER SYSTEM
andSHOW
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)
- Improved: Added documentation on unsupported non-finite values. (#8085)
- Changed: Peers use latest supported protocol version, even if the application is using backwards-compatible CRDT formats. (#10875)
- Changed: the default bind IP address of TCP and HTTP transports to be IPv6 "any" ([::]) rather than IPv4 (0.0.0.0) (#11473)
- Deprecated: method
fetchAttachment()
ofCollection
. Please use the newly introduced equivalent methods onStore
instead. (#11535) - Deprecated: method
newAttachment()
ofCollection
. Please use the newly introduced equivalent methods onStore
instead. (#11535) - Deprecated: method
toBase64String()
onDocumentID
. (#11732) - Deprecated: method
toQueryCompatibleString()
onDocumentID
. Use document IDs in queries by passing them in the query arguments parameter. (#4567) - Deprecated: method
getData()
onAttachment
, please use newly introduced methoddata()
instead. (#11772) - 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
andmetadata
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: The attachment token representation returned by the
value
ofQueryResultItem
can now be used to fetch the attachment usingStore.fetchAttachment()
. (#11535) - Fixed: Query arguments containing instances of
DocumentID
no longer cause an error to be thrown when given to the methodsfind()
andupsert()
onCollection
andWriteTransactionCollection
. (#11562) - Fixed: Variables that are passed as query arguments are now longer mutated by the call when they contain instances of
DocumentID
,Attachment
,Counter
orRegister
. (#11562) - Fixed: Store observers that have been set up through
registerObserver
no longer stall when errors are thrown in the observation handler callback. (#11293) - Fixed: Changed
Ditto.disableSyncWithV3()
to be async to allow awaiting the completion of the upgrade. (#11385) - Fixed: Added missing documentation on the
upsert()
method onCollection
andWriteTransactionCollection
, as well as theUpsertOptions
type. (#11435) - Added: [React Native] Attachments API. (#11742)
- Fixed: [React Native] Exported
init()
function for the React Native SDK. (#11600) - Fixed: [React Native] Memory management bug in the React Native SDK. (#11600)
- Fixed: [React Native] potential overflow in DQL
registerObserver()
API not usingBigInt
. (#11742)
Installation:
npm install --save @dittolive/ditto@4.6.0
If you have yarn:
yarn add @dittolive/ditto@4.6.0
JavaScript 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
andSHOW
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: Debug representations in Node.js
console.log()
forDocument
,MutableDocument
, andQueryResultItem
(#10411) - Fixed: Store observers that have been set up through
registerObserver
no longer stall when errors are thrown in the observation handler callback. (#11293) - Fixed: Changed
Ditto.disableSyncWithV3()
to be async to allow awaiting the completion of the upgrade. (#11385) - Changed: the default bind IP address of TCP and HTTP transports to be IPv6 "any" ([::]) rather than IPv4 (0.0.0.0) (#11473)
- Fixed: Query arguments containing instances of
DocumentID
no longer cause an error to be thrown when given to the methodsfind()
andupsert()
onCollection
andWriteTransactionCollection
. (#11562) - Fixed: Variables that are passed as query arguments are now longer mutated by the call when they contain instances of
DocumentID
,Attachment
,Counter
orRegister
. (#11562) - Improved: Added documentation on unsupported non-finite values. (#8085)
- Added: Support for Linux ARM 64 (#7050)
Installation:
npm install --save @dittolive/ditto@4.6.0-alpha.3
If you have yarn:
yarn add @dittolive/ditto@4.6.0-alpha.3
JavaScript 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
andSHOW
statements (#10401) - Added: Support for Linux ARM 64 (#7050)
- Added: Debug representations in Node.js
console.log()
forDocument
,MutableDocument
, andQueryResultItem
(#10411) - Improved: Added documentation on unsupported non-finite values. (#8085)
- 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: the default bind IP address of TCP and HTTP transports to be IPv6 "any" ([::]) rather than IPv4 (0.0.0.0) (#11473)
- 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: Store observers that have been set up through
registerObserver
no longer stall when errors are thrown in the observation handler callback. (#11293) - Fixed: Changed
Ditto.disableSyncWithV3()
to be async to allow awaiting the completion of the upgrade. (#11385) - Fixed: Query arguments containing instances of
DocumentID
no longer cause an error to be thrown when given to the methodsfind()
andupsert()
onCollection
andWriteTransactionCollection
. (#11562) - Fixed: Variables that are passed as query arguments are now longer mutated by the call when they contain instances of
DocumentID
,Attachment
,Counter
orRegister
. (#11562)
Installation:
npm install --save @dittolive/ditto@4.6.0-alpha.2
If you have yarn:
yarn add @dittolive/ditto@4.6.0-alpha.2
JavaScript 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
andSHOW
statements (#10401) - Added: Support for Linux ARM 64 (#7050)
- Added: Debug representations in Node.js
console.log()
forDocument
,MutableDocument
, andQueryResultItem
(#10411) - Changed: the default bind IP address of TCP and HTTP transports to be IPv6 "any" ([::]) rather than IPv4 (0.0.0.0) (#11473)
- 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: The
QueryArguments
type definition for the query builder API now accurately represents possible value types. (#10393) - Fixed: Store observers that have been set up through
registerObserver
no longer stall when errors are thrown in the observation handler callback. (#11293) - Fixed: Changed
Ditto.disableSyncWithV3()
to be async to allow awaiting the completion of the upgrade. (#11385) - Deprecated: The types
DQLQueryArguments
andDQLQueryArgumentValue
were deprecated, useQueryArguments
andQueryArgumentsValue
instead. (#10393)
Installation:
npm install --save @dittolive/ditto@4.6.0-alpha.1
If you have yarn:
yarn add @dittolive/ditto@4.6.0-alpha.1
JavaScript Version 4.5.5-alpha.2
Released: Tue May 21st 2024, 9:10 pm
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@4.5.5-alpha.2
If you have yarn:
yarn add @dittolive/ditto@4.5.5-alpha.2
JavaScript 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:
npm install --save @dittolive/ditto@4.5.4
If you have yarn:
yarn add @dittolive/ditto@4.5.4
JavaScript 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:
npm install --save @dittolive/ditto@4.5.4-transports-behind-core
If you have yarn:
yarn add @dittolive/ditto@4.5.4-transports-behind-core
JavaScript 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:
npm install --save @dittolive/ditto@4.5.4-alpha.1-transports-behind-core
If you have yarn:
yarn add @dittolive/ditto@4.5.4-alpha.1-transports-behind-core
JavaScript 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:
npm install --save @dittolive/ditto@4.5.3
If you have yarn:
yarn add @dittolive/ditto@4.5.3
JavaScript Version 4.5.2
Released: Thu Jan 25th 2024, 4:23 pm
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@4.5.2
If you have yarn:
yarn add @dittolive/ditto@4.5.2
JavaScript Version 4.5.2-rc.3
Released: Wed Jan 17th 2024, 10:00 pm
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@4.5.2-rc.3
If you have yarn:
yarn add @dittolive/ditto@4.5.2-rc.3
JavaScript 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 au64
ori64
during collation. (#10940) - Fixed: Closing a Ditto instance after having set an invalid transport config no longer throws an error. (#10889)
- Fixed: Configuring unsupported HTTP and TCP transport options in the browser now throws an error. (#10890)
Installation:
npm install --save @dittolive/ditto@4.5.1
If you have yarn:
yarn add @dittolive/ditto@4.5.1
JavaScript Version 4.5.0
Released: Thu Dec 7th 2023, 5:59 pm
Release Notes:
- Added: The all-new Ditto for React Native SDK. (#10708)
- Added: class
QueryResultItem
representing a single match in a DQL query result. (#10375) - Added: class
QueryResult
representing the result of executing a DQL query. (#10375) - Added: method
execute()
onStore
that executes a DQL query and returns aQueryResult
containingQueryResultItems
. (#10375) - Added: class
SyncSubscription
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 existingSubscription
class. (#10437) - Added: method
registerSubscription()
onSync
that installs and returns aSyncSubscription
. (#10437) - Added: class
StoreObserver
that configures Ditto to invoke a callback whenever results for its query change. (#10550) - Added: method
registerObserver()
onStore
that registers and returns aStoreObserver
. (#10550) - Added: property
observers
onStore
providing access to all currently active store observers. (#10637) - Added: property
subscriptions
onSync
providing access to all currently active sync subscriptions. (#10637) - Added: property
sync
onDitto
of typeSync
to serve as an entry point for sync functionality. (#10637) - Added: class
DittoError
used for all errors thrown from DQL APIs.. (#10651) - Added:
Ditto.smallPeerInfo
now allows setting user-supplied metadata to be stored along with the collected info. (#10735) - Added: static property
VERSION
toDitto
class. (#10789) - 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:
TransportConfigLan.isMulticastEnabled
property. (#10126) - Changed: Ditto JavaScript SDK for macOS is built and tested with Xcode 14.3.1.. (#10177)
- Fixed: Updated some logging fallbacks to always use the configurable Ditto logger instead of
console.error()
. (#10322) - Fixed: Removed misleading error logs when presence information changes after a presence observer has been stopped. (#10322)
- Fixed: Bluetooth and LAN transports fail to stop on Windows and Linux. (#8809)
- 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:
npm install --save @dittolive/ditto@4.5.0
If you have yarn:
yarn add @dittolive/ditto@4.5.0
JavaScript 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:
TransportConfigLan.isMulticastEnabled
property. (#10126) - Changed:
.store.experimental.execute()
to fail early rather than when requesting the.results
(#10172) - Changed: Ditto JavaScript SDK for macOS is built and tested with Xcode 14.3.1. (#10177)
- Fixed: Updated some logging fallbacks to always use the configurable Ditto logger instead of console.error() (#10322)
- Fixed: Removed misleading error logs when presence information changes after a presence observer has been stopped. (#10322)
- fixed: Bluetooth and LAN transports fail to stop on Windows and Linux (#8809)
Installation:
npm install --save @dittolive/ditto@4.5.0-alpha3
If you have yarn:
yarn add @dittolive/ditto@4.5.0-alpha3
JavaScript Version 4.5.0-alpha1
Released: Tue Nov 21st 2023, 7:23 am
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@4.5.0-alpha1
If you have yarn:
yarn add @dittolive/ditto@4.5.0-alpha1
JavaScript Version 4.5.0-alpha.4
Released: Thu Nov 23rd 2023, 12:25 am
Release Notes:
- Fixed a bug 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)
- performance: implement bipartite distance-aware mesh topology (#10632)
- Fixed: mesh could choose random connections (#10711)
- Improve memory usage and performance of Documents (#10736)
- Reduced metadata accumulation after eviction by clearing remote summaries (#7065)
- Changed: Improved serialization performance (#9112)
Installation:
npm install --save @dittolive/ditto@4.5.0-alpha.4
If you have yarn:
yarn add @dittolive/ditto@4.5.0-alpha.4
JavaScript 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:
npm install --save @dittolive/ditto@4.4.5
If you have yarn:
yarn add @dittolive/ditto@4.4.5
JavaScript Version 4.4.4
Released: Thu Nov 2nd 2023, 10:03 pm
Release Notes:
- Added: the
smallPeerInfo
property to Ditto allowing to configure the collection and sync of Small Peer Info. (#10525) - 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:
npm install --save @dittolive/ditto@4.4.4
If you have yarn:
yarn add @dittolive/ditto@4.4.4
JavaScript Version 4.4.3
Released: Tue Oct 24th 2023, 9:01 pm
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@4.4.3
If you have yarn:
yarn add @dittolive/ditto@4.4.3
JavaScript 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 tobigPeerOnly
. (#10203, #10204)
Installation:
npm install --save @dittolive/ditto@4.4.2
If you have yarn:
yarn add @dittolive/ditto@4.4.2
JavaScript Version 4.4.1
Released: Tue Sep 26th 2023, 11:39 pm
Release Notes:
- Fixed: Persistence directories on Windows are now automatically normalized to prevent Windows' restrictions on path lenghts from causing disk access failure. (#9980)
- Fixed: Configuring Ditto with a persistence directory that is not readable or writable now shows an error message and aborts initialization. (#9833)
Installation:
npm install --save @dittolive/ditto@4.4.1
If you have yarn:
yarn add @dittolive/ditto@4.4.1
JavaScript Version 4.4.0
Released: Thu Aug 31st 2023, 10:43 pm
Release Notes:
- 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)
- Deprecated:
hash()
andhashMnemonic()
methods on live query events were deprecated. Use the methods with the same name on the Document class instead. (#9661, #9610) - 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 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)
- Fixed: The
Connection
type definition, which had previously contained a field named type that is now correctly defined with the name connectionType. (#9432) - Fixed: The
Address
type definition, which had previously defined the siteId field to be of type string and has now been updated to define it with the correct number | BigInt type. (#9432)
Installation:
npm install --save @dittolive/ditto@4.4.0
If you have yarn:
yarn add @dittolive/ditto@4.4.0
JavaScript 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)
- Fixed: the
Connection
type definition, which had previously contained a field namedtype
that is now correctly defined with the nameconnectionType
. (#9483) - Fixed: the
Address
type definition, which had previously defined thesiteId
field to be of typestring
and has now been updated to define it with the correctnumber | BigInt
type. (#9483) - Fixed: an issue on Linux that caused excessive multicast traffic over LAN transport. (#9398)
Installation:
npm install --save @dittolive/ditto@4.3.1
If you have yarn:
yarn add @dittolive/ditto@4.3.1
JavaScript 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:
appID
property to Ditto class. (#8050) - Added:
persistenceDirectory
property to Ditto class. (#8050) - 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)
- Deprecated:
path
property ofDitto
class was deprecated and replaced by thepersistenceDirectory
property. (#8050) - 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:
npm install --save @dittolive/ditto@4.3.0
If you have yarn:
yarn add @dittolive/ditto@4.3.0
JavaScript Version 4.2.3
Released: Wed Jul 5th 2023, 10:32 pm
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@4.2.3
If you have yarn:
yarn add @dittolive/ditto@4.2.3
JavaScript 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)
Installation:
npm install --save @dittolive/ditto@4.2.2
If you have yarn:
yarn add @dittolive/ditto@4.2.2
JavaScript 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:
npm install --save @dittolive/ditto@4.2.1
If you have yarn:
yarn add @dittolive/ditto@4.2.1
JavaScript Version 4.2.0
Released: Tue Jun 13th 2023, 8:53 am
Release Notes:
- Added:
Ditto.disableDeadlockDetection()
, which allows running Ditto in a Node.js process with an interactive debugger attached. Also,Ditto.hasDeadlockDetection()
can be used to check if this has been called before. (#8601) - Changed: Automatically disables deadlock detection when running Ditto in a Node.js process that has the Inspector enabled with a command line parameter. (#8601)
- Changed: Improved replication uses compressed message stream to decrease bandwidth consumption. (#8807)
- Changed: Reduce verbosity in replication logs (#8370)
- Fixed: Potential crash on Linux when handling Bluetooth advertisement during Ditto startup (#8538)
Installation:
npm install --save @dittolive/ditto@4.2.0
If you have yarn:
yarn add @dittolive/ditto@4.2.0
JavaScript 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.
- Fixed: Potential crash on Linux when handling Bluetooth advertisement during Ditto startup.
- Added:
Ditto.disableDeadlockDetection()
, which allows running Ditto in a Node.js process with an interactive debugger attached. Also,Ditto.hasDeadlockDetection()
can be used to check if this has been called before. - Changed: Automatically disables deadlock detection when running Ditto in a Node.js process that has the Inspector enabled with a command line parameter.
- Changed: Improved the error message shown when attempting to write unsupported non-finite float values to documents.
Installation:
npm install --save @dittolive/ditto@4.1.1
If you have yarn:
yarn add @dittolive/ditto@4.1.1
JavaScript Version 4.1.0
Released: Fri Apr 28th 2023, 6:52 pm
Release Notes:
- Added:
close()
async method toDitto
allowing to close a Ditto object and release all associated resources. The method will stop all observers, live queries, subscriptions, and attachment fetchers. Furthermose, all open files will be closed, all file locks released, and RAM freed. A Ditto object can't be used after closing and will throw an error otherwise. This also enables reusing the same persistence directory with a newDitto
instance as soon as theclose()
call has completed. - 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: the Bluetooth LE transport is now enabled by default on Linux when running on Node.js. Previously, it needed to be enabled by a developer using
updateTransportConfig
. - 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.
- Fixed: Improved Bluetooth LE connection reliability on Linux
- Fixed: (Wasm) Removed unsupported usage of
tokio::sleep
which could cause a crash. - Fixed: P2P transports were disabled by default for the JS SDK, while enabled for all other SDKs. Fixed by enabling all P2P transports, that are available in the current environment (i.e. on Node/Electron running on macOS, no P2P transports when running in the browser).
Installation:
npm install --save @dittolive/ditto@4.1.0
If you have yarn:
yarn add @dittolive/ditto@4.1.0
JavaScript 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:
npm install --save @dittolive/ditto@4.0.3-alpha.linux-ble-fixes-2
If you have yarn:
yarn add @dittolive/ditto@4.0.3-alpha.linux-ble-fixes-2
JavaScript 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:
npm install --save @dittolive/ditto@4.0.3-alpha.linux-ble-fixes
If you have yarn:
yarn add @dittolive/ditto@4.0.3-alpha.linux-ble-fixes
JavaScript 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:
npm install --save @dittolive/ditto@4.0.2
If you have yarn:
yarn add @dittolive/ditto@4.0.2
JavaScript 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:
npm install --save @dittolive/ditto@4.0.1
If you have yarn:
yarn add @dittolive/ditto@4.0.1
JavaScript 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 theDitto
object or the a peer has synced with another peer that has calleddisableSyncWithV3
, or they have synced with another peer that has calleddisableSyncWithV3
, etc. - Added: transaction support, which can be accessed through the Ditto store's
write()
method. - Added: static method
isEnvironmentSupported()
toDitto
returningtrue
if the current environment supports Ditto, otherwise returningfalse
. - 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.
- Changed: the
Ditto
constructor now validates the JavaScript environment (using the newly introducedisEnvironmentSupported()
method) to make sure all required APIs are available and throws an error if this is not the case. - 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: when enabling a P2P transport that is not available in an environment,
startSync()
would throw an exception. Catching that exception and just swallowing it would lead to an inconsistent sync state causing more errors down the line. This has been fixed by running the availability checks before applying any state changes, so the exception will make the method return before introducing inconsistent state in the first place.
Installation:
npm install --save @dittolive/ditto@4.0.0
If you have yarn:
yarn add @dittolive/ditto@4.0.0
JavaScript 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: AddWins removes will now be used if
disableSyncWithV3
has been called on theDitto
object or the a peer has synced with another peer that has calleddisableSyncWithV3
, or they have synced with another peer that has calleddisableSyncWithV3
, etc.
Installation:
npm install --save @dittolive/ditto@4.0.0-beta1
If you have yarn:
yarn add @dittolive/ditto@4.0.0-beta1
JavaScript Version 4.0.0-alpha2
Released: Mon Jan 16th 2023, 10:16 pm
Release Notes:
- Added:
disableSyncWithV3
functionality toDitto
. 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 callingremove()
. Any other device running v4 of the SDK that syncs with a device that has calleddisableSyncWithV3
(or has themselves synced with another device that has calleddisableSyncWithV3
, etc - if any chain of syncing exists that involves a device that has calleddisableSyncWithV3
) will also no longer be able to sync with v3 peers and will perform AddWins removes when callingremove()
.
Installation:
npm install --save @dittolive/ditto@4.0.0-alpha2
If you have yarn:
yarn add @dittolive/ditto@4.0.0-alpha2
JavaScript 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:
npm install --save @dittolive/ditto@3.0.11
If you have yarn:
yarn add @dittolive/ditto@3.0.11
JavaScript 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:
npm install --save @dittolive/ditto@3.0.10
If you have yarn:
yarn add @dittolive/ditto@3.0.10
JavaScript Version 3.0.9
Released: Wed Jun 14th 2023, 3:23 pm
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@3.0.9
If you have yarn:
yarn add @dittolive/ditto@3.0.9
JavaScript Version 3.0.9-alpha1
Released: Mon May 22nd 2023, 11:34 pm
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@3.0.9-alpha1
If you have yarn:
yarn add @dittolive/ditto@3.0.9-alpha1
JavaScript Version 3.0.8
Released: Fri May 19th 2023, 6:33 am
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@3.0.8
If you have yarn:
yarn add @dittolive/ditto@3.0.8
JavaScript 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:
npm install --save @dittolive/ditto@3.0.7
If you have yarn:
yarn add @dittolive/ditto@3.0.7
JavaScript Version 3.0.6
Released: Thu Mar 16th 2023, 1:00 am
Release Notes:
- 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:
npm install --save @dittolive/ditto@3.0.6
If you have yarn:
yarn add @dittolive/ditto@3.0.6
JavaScript 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
Installation:
npm install --save @dittolive/ditto@3.0.5
If you have yarn:
yarn add @dittolive/ditto@3.0.5
JavaScript Version 3.0.4
Released: Sat Jan 28th 2023, 12:10 am
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@3.0.4
If you have yarn:
yarn add @dittolive/ditto@3.0.4
JavaScript 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:
npm install --save @dittolive/ditto@3.0.3
If you have yarn:
yarn add @dittolive/ditto@3.0.3
JavaScript 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:
npm install --save @dittolive/ditto@3.0.3-alpha2
If you have yarn:
yarn add @dittolive/ditto@3.0.3-alpha2
JavaScript Version 3.0.2
Released: Fri Jan 20th 2023, 9:20 pm
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@3.0.2
If you have yarn:
yarn add @dittolive/ditto@3.0.2
JavaScript Version 3.0.1
Released: Sat Jan 14th 2023, 2:57 am
Release Notes:
- Added:
routingHint
property toTransportConfigGlobal
class. - Added:
NO_PREFERRED_ROUTE_HINT
constant, used internally byTransportConfigGlobal
if no routing hint is specified. - Changed: better readability of data sizes and durations in logs.
Installation:
npm install --save @dittolive/ditto@3.0.1
If you have yarn:
yarn add @dittolive/ditto@3.0.1
JavaScript Version 3.0.0
Released: Fri Dec 16th 2022, 1:38 pm
Release Notes:
- Removed: the
RGA
constructor. You cannot create new RGAs. - Removed: the deprecated
MutableRGA
type. You cannot mutate existing RGAs. - Fixed:
LiveQuery
'sisStopped
getter implementation. - Removed:
observe()
andobserveWithNextSignal()
methods ofPendingCollectionsOperation
,PendingCursorOperation
, andPendingIdSpecificOperation
. Please use the correspondingobserveLocal()
andobserveLocalWithNextSignal()
variants along with a separate call tosubscribe()
instead. See https://docs.ditto.live/javascript/common/concepts/syncing-data#subscribe - Added: class
Presence
as an entry point for all of presence functionality, accessible via thepresence
property on theDitto
object. - Added: type
PresenceGraph
and related sub-typesAddress
,Connection
,ConnectionType
, andPeer
. - Deprecated:
observePeers()
method ofDitto
, please useobserve()
ofPresence
instead, which you can get viaditto.presence
. - Deprecated:
RemotePeer
, replaced byPeer
. - Changed: performance improvements.
- Added:
disableSyncWithV2
method toDitto
. 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. - Added: initial (alpha) support for Node.js on Windows.
- Improved: reliability if app crashes occur while persisting authentication data.
- Improved: log increased detail to help debug blocked write transactions.
Installation:
npm install --save @dittolive/ditto@3.0.0
If you have yarn:
yarn add @dittolive/ditto@3.0.0
JavaScript Version 3.0.0-alpha3
Released: Mon Dec 12th 2022, 1:19 pm
Release Notes:
- Initial (alpha) support for Node.js on Windows
Installation:
npm install --save @dittolive/ditto@3.0.0-alpha3
If you have yarn:
yarn add @dittolive/ditto@3.0.0-alpha3
JavaScript Version 3.0.0-alpha2
Released: Tue Dec 6th 2022, 4:01 pm
Release Notes:
- Improved: reliability if app crashes occur while persisting authentication data.
Installation:
npm install --save @dittolive/ditto@3.0.0-alpha2
If you have yarn:
yarn add @dittolive/ditto@3.0.0-alpha2
JavaScript Version 3.0.0-alpha1
Released: Thu Dec 1st 2022, 8:01 pm
Release Notes:
- Removed: the
RGA
constructor. You cannot create new RGAs. - Removed: the deprecated
MutableRGA
type. You cannot mutate existing RGAs. - Fixed:
LiveQuery
'sisStopped
getter implementation. - Removed:
observe()
andobserveWithNextSignal()
methods ofPendingCollectionsOperation
,PendingCursorOperation
, andPendingIdSpecificOperation
. Please use the correspondingobserveLocal()
andobserveLocalWithNextSignal()
variants along with a separate call tosubscribe()
instead. See https://docs.ditto.live/javascript/common/concepts/syncing-data#subscribe - Added: class
Presence
as an entry point for all of presence functionality, accessible via thepresence
property on theDitto
object. - Added: type
PresenceGraph
and related sub-typesAddress
,Connection
,ConnectionType
, andPeer
. - Deprecated:
observePeers()
method ofDitto
, please useobserve()
ofPresence
instead, which you can get viaditto.presence
. - Deprecated:
RemotePeer
, replaced byPeer
. - Changed: performance improvements.
- Added
disableSyncWithV2
method toDitto
. 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:
npm install --save @dittolive/ditto@3.0.0-alpha1
If you have yarn:
yarn add @dittolive/ditto@3.0.0-alpha1
JavaScript Version 2.1.0
Released: Wed Nov 2nd 2022, 11:51 pm
Release Notes:
- Added: missing methods
observeLocal()
andobserveLocalWithNextSignal()
toPendingCollectionsOperation
(now on par withPendingCursorOperation
andPendingIDSpecificOperation
). - Deprecated: method
observe()
andobserveWithNextSignal()
ofPendingCursorOperation
,PendingIDSpecificOperation
andPendingCollectionsOperation
. Please use the correspondingobserveLocal()
andobserveLocalWithNextSignal()
variants together along with a separate call tosubscribe()
instead. See https://docs.ditto.live/javascript/common/concepts/syncing-data#subscribe
Installation:
npm install --save @dittolive/ditto@2.1.0
If you have yarn:
yarn add @dittolive/ditto@2.1.0
JavaScript Version 2.0.8
Released: Fri Oct 28th 2022, 12:14 am
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@2.0.8
If you have yarn:
yarn add @dittolive/ditto@2.0.8
JavaScript 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
- Fixed: Reduced the amount of disk space used by sync metadata by up to 50% in some cases
Installation:
npm install --save @dittolive/ditto@2.0.7
If you have yarn:
yarn add @dittolive/ditto@2.0.7
JavaScript 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
Installation:
npm install --save @dittolive/ditto@2.0.6
If you have yarn:
yarn add @dittolive/ditto@2.0.6
JavaScript Version 2.0.5
Released: Thu Sep 8th 2022, 10:20 pm
Release Notes:
- Fixed: a very rare deadlock when running on Node/macOS and starting sync immediately after creating the Ditto instance.
Installation:
npm install --save @dittolive/ditto@2.0.5
If you have yarn:
yarn add @dittolive/ditto@2.0.5
JavaScript Version 2.0.4
Released: Thu Sep 1st 2022, 6:31 pm
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@2.0.4
If you have yarn:
yarn add @dittolive/ditto@2.0.4
JavaScript Version 2.0.3
Released: Wed Aug 31st 2022, 5:20 pm
Release Notes:
- Fixed: when calling
document.value
the returned object will include the document's ID under the_id
key - Changed: the status observer returned by
observeStatus()
ofAuthenticator
has to be kept alive in order for the observation to remain active. The observation stops automatically as soon as theObserver
object is garbage collected. We recommend to always call thestop()
method on theObserver
manually as soon as the observation isn't needed, do not rely on the garbage collector for this. The reason for the change is consistency across all of our SDKs. - Changed: the attachment fetcher returned by
fetchAttachment()
ofCollection
has to be kept alive in order for the fetching to continue and finish. The fetching stops automatically as soon as theAttachmentFetcher
object is garbage collected. The reason for the change is consistency across all of our SDKs. - Changed: method
toString()
ofDocumentID
now returns human readable strings, which are not query compatible. Use newly introducedtoQueryCompatibleString()
method instead. - Added: method
toQueryCompatibleString()
toDocumentID
as a replacement fortoString()
. - Changed: presence data is no longer synced with the big peer.
Installation:
npm install --save @dittolive/ditto@2.0.3
If you have yarn:
yarn add @dittolive/ditto@2.0.3
JavaScript Version 2.0.2
Released: Sat Aug 27th 2022, 1:58 am
Release Notes:
- Fixed: when calling
document.value
the returned object will include the document's ID under the_id
key
Installation:
npm install --save @dittolive/ditto@2.0.2
If you have yarn:
yarn add @dittolive/ditto@2.0.2
JavaScript Version 2.0.1
Released: Sun Aug 14th 2022, 4:57 am
Release Notes:
- Fixed: inserting a
DittoCounter
into a document and then syncing with a big peer before the counter had ever been incremented would cause an error on the big peer.
Installation:
npm install --save @dittolive/ditto@2.0.1
If you have yarn:
yarn add @dittolive/ditto@2.0.1
JavaScript Version 2.0.0
Released: Wed Aug 3rd 2022, 2:54 pm
Release Notes:
- Added:
DocumentID
class representing a document ID. - Added: property
id
toDocument
returningDocumentID
(as opposed toDocumentIDValue
). - Changed: method
findByID()
ofCollection
to also acceptDocumentID
(in addition toDocumentIDValue
). - Changed: method
upsert()
ofCollection
to returnPromise<DocumentID>
instead ofPromise<DocumentIDValue>
. - Changed type of property
docID
ofUpdateResult
fromDocumentIDValue
toDocumentID
and adapted allUpdateResult
factory methods. - Changed: method
get()
ofUpdateResultsMap
to also acceptDocumentID
(in addition toDocumentIDValue
). - Changed: method
keys()
ofUpdateResultsMap
to return an array ofDocumentID
s instead ofDocumentIDValue
s. - Removed: property
_id
fromDocument
andMutableDocument
, please useid
andDocumentID.value
instead. - Removed: static method
stringForID()
ofDocument
, please useDocumentID.toString()
instead. - Removed: static method
base64StringForID()
ofDocument
, please useDocumentID.toBase64String()
instead. - Note: peers running
2.0.0
are able to sync with peers running at least version1.1.8
of the SDK. - Added: support for explicitly typing values as CRDT registers. This is via 2 new types:
Register
andMutableRegister
, and a newregister
accessor added toDocumentPath
andMutableDocumentPath
. - Changed: the
Counter
type has been split up into aCounter
andMutableCounter
type, which now resemble the CRDT type underneath and replace the old counter mechanics. A newcounter
accessor has been added toDocumentPath
andMutableDocumentPath
, which returns aCounter
or aMutableCounter
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:
RGA
andMutableRGA
in v2, and a newrga
accessor added toDocumentPath
andMutableDocumentPath
. Note that this API has only been added for backwards compatibility with existing data and code. Instead, arrays in registers (new Register([1, 2, 3])
) should be used going forward (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. - Changed:
DocumentPath
andMutableDocumentPath
methodvalue()
is now a computed propertyvalue
. - Removed:
MutableDocumentPath
methodspush()
,pop()
,insert()
, please use the.rga
accessor and the mutation methods ofMutableRGA
instead. - Added: property
path
toDocument
andMutableDocument
which will give you aDocumentPath
andMutableDocumentPath
instance for a document pointing at the root of the document contents. Those can then be used to further traverse, query, and update specific parts of a document. - Added: property
value
toDocument
andMutableDocument
, allowing you to get a dictionary representation of the document's contents. - Added: convenience method
at()
toDocument
andMutableDocument
, which is equivalent to calling.path.at()
. - Removed type
DocumentLike
andMutableDocumentLike
, plus the corresponding proxy-based document access & update API, please useDocument
andDocumentPath
explicitly from now on to query and update a document. - Removed: static
Document
andMutableDocument
methodpathAt()
, please use the newly introduced instance methodat()
instead. - Removed: static
Document
andMutableDocument
methodvalueAt()
, please use the newly introduced instance methodat()
followed byvalue()
instead. - Removed: static
Document
andMutableDocument
methodvalue()
, please use newly introduced instance propertyvalue
instead. - Removed: static
Document
andMutableDocument
methodid()
, please use instance property_id
instead. - Removed: deprecated static
Logger
methodshared()
, please use theLogger
class directly instead. - Removed: deprecated identities of type
development
,production
, andonline
, please use the available ones, matching your use-case, instead. - Removed: deprecated
DocumentPath
&MutableDocumentPath
methodatIndex()
, please useat()
instead. - Removed: deprecated
Identity
propertyappName
, please useappID
instead. - Removed: deprecated
Ditto
propertyisSyncEnabled
, please useisSyncActive
instead. - Removed: deprecated static
Ditto
propertywebAssemblyModule
, please pass it via theinit()
function instead. - Removed: deprecated
Ditto
methodssetLicenseToken()
,setAccessLicense()
, please usesetOfflineOnlyLicenseToken()
instead. - Removed: deprecated
Collection
methodinsert()
, please useupsert()
instead. - Removed: deprecated
Authenticator
propertiesisAuthenticated
anduserID
, please usestatus
instead. - Changed: renamed
onlinePlaygroundV2
identity to justonlinePlayground
which replaces the previously deprecatedonlinePlayground
. - Changed: removed
Ditto
methodtryStartSync()
, which was an alias forstartSync()
. Please usestartSync()
directly instead. - Removed:
overwrite
write strategy.
Installation:
npm install --save @dittolive/ditto@2.0.0
If you have yarn:
yarn add @dittolive/ditto@2.0.0
JavaScript 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:
npm install --save @dittolive/ditto@2.0.0-alpha1
If you have yarn:
yarn add @dittolive/ditto@2.0.0-alpha1
JavaScript Version 1.1.11
Released: Fri Sep 9th 2022, 11:11 pm
Release Notes:
- Fixed: a very rare deadlock when running on Node/macOS and starting sync immediately after creating the Ditto instance.
Installation:
npm install --save @dittolive/ditto@1.1.11
If you have yarn:
yarn add @dittolive/ditto@1.1.11
JavaScript Version 1.1.10
Released: Thu Jul 7th 2022, 7:53 pm
Release Notes:
- Changed: reduced total memory overhead during sync.
Installation:
npm install --save @dittolive/ditto@1.1.10
If you have yarn:
yarn add @dittolive/ditto@1.1.10
JavaScript 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.
-
Changed: P2P transports were disabled by default for the JS SDK, while enabled for all other SDKs. Starting with this release, all P2P transports, that are available in the current environment, are enabled by default (i.e. on Node/Electron running on macOS, no P2P transports when running in the browser).
Installation:
npm install --save @dittolive/ditto@1.1.9
If you have yarn:
yarn add @dittolive/ditto@1.1.9
JavaScript Version 1.1.9-alpha1
Released: Thu Jun 9th 2022, 3:12 am
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@1.1.9-alpha1
If you have yarn:
yarn add @dittolive/ditto@1.1.9-alpha1
JavaScript 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: memory leak when observing collections.
-
Fixed: memory leak when observing peers.
Installation:
npm install --save @dittolive/ditto@1.1.8
If you have yarn:
yarn add @dittolive/ditto@1.1.8
JavaScript Version 1.1.7
Released: Fri May 13th 2022, 2:18 pm
Release Notes:
- Fixed: module not found warnings when bundling for the Web (via Webpack & other bundlers).
Installation:
npm install --save @dittolive/ditto@1.1.7
If you have yarn:
yarn add @dittolive/ditto@1.1.7
JavaScript 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: compatibility with packagers that perform static analysis to locate native Node modules, such as Electron Forge.
- Fixed: issues when inserting a value at a specific index in an array via
MutableDocument.pathAt()
. - Changed: improvements to Ditto mesh performance via fastest-available-transport prioritization.
Installation:
npm install --save @dittolive/ditto@1.1.6
If you have yarn:
yarn add @dittolive/ditto@1.1.6
JavaScript Version 1.1.5
Released: Fri Apr 8th 2022, 8:00 am
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@1.1.5
If you have yarn:
yarn add @dittolive/ditto@1.1.5
JavaScript Version 1.1.4
Released: Fri Apr 8th 2022, 6:25 am
Release Notes:
- Changed: improved replication performance in some scenarios.
Installation:
npm install --save @dittolive/ditto@1.1.4
If you have yarn:
yarn add @dittolive/ditto@1.1.4
JavaScript Version 1.1.3
Released: Tue Mar 22nd 2022, 10:13 am
Release Notes:
-
Added:
onlinePlaygroundV2
identity type and correspondingIdentityOnlinePlaygroundV2
allowing for basic authentication for playgrounds -
Deprecated:
onlinePlayground
identity type and correspondingIdentityOnlinePlayground
, use newly addedONLINE_PLAYGROUND_V2
andIdentityOnlinePlaygroundV2
instead -
Fixed: multiple retain cycles preventing
Ditto
instances from being properly garbage collected -
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:
npm install --save @dittolive/ditto@1.1.3
If you have yarn:
yarn add @dittolive/ditto@1.1.3
JavaScript Version 1.1.2
Released: Mon Feb 28th 2022, 2:36 pm
Release Notes:
- Added: method
setOfflineOnlyLicenseToken()
to classDitto
as replacement for now deprecatedsetLicenseToken()
. - Deprecated: method
setLicenseToken()
of classDitto
, please use newly addedsetOfflineOnlyLicenseToken()
instead.
Installation:
npm install --save @dittolive/ditto@1.1.2
If you have yarn:
yarn add @dittolive/ditto@1.1.2
JavaScript 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
- Changed: Make
identity
optional forDitto
constructor - Added:
toJSON()
toDocument
andMutableDocument
- Added: Support for observing transport condition of websocket connections
- Fixed: Node process from exiting prematurely
- Fixed: Obscure exception if
appID
is not given for certain identities
Installation:
npm install --save @dittolive/ditto@1.1.1
If you have yarn:
yarn add @dittolive/ditto@1.1.1
JavaScript 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 classDitto
. - Added: method
logout()
to classAuthenticator
. - Added: set of APIs to observe authentication status (see API reference for
Authenticator
andAuthenticationHandler
). - Added: method
upsert()
to classAuthenticator
(as a replacement forinsert()
) which by default merges the newly inserted document if one with the same ID already exists. - Fixed: crashes when many insertions or removals were in flight (only WebAssembly were affected, i.e. when running in the browser).
- Fixed: high memory consumption and main thread blocking in certain edge cases.
- Fixed: type signature and API documentation for methods
loginWithToken()
andloginWithCredentials()
of classAuthenticator
, where the second parameter should beportal
instead of options. (The actual implementation itself was correct.) - Deprecated: property
isSyncEnabled
of classDitto
in favor of the newly introducedisSyncActive
. - Deprecated: properties
isAuthenticated
anduserID
of classAuthenticator
in favor of newly introduced propertystatus
. - Deprecated: method
insert()
in favor of newly introducedupsert()
.
Installation:
npm install --save @dittolive/ditto@1.1.0
If you have yarn:
yarn add @dittolive/ditto@1.1.0
JavaScript 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).
- Fixed: missing canonicalization step for IDs of inserted documents leading to multiple instances of documents with the "same" ID being stored in the DB.
IMPORTANT: This fix only applies to newly inserted documents, documents inserted with an older version of the JavaScript SDK may still have multiple instances in the DB and replicated to other peers. We'll provide a proper migration for these in follow-up releases.
Installation:
npm install --save @dittolive/ditto@1.0.19
If you have yarn:
yarn add @dittolive/ditto@1.0.19
JavaScript Version 1.0.18
Released: Mon Dec 20th 2021, 1:22 pm
Release Notes:
- Reduced the opportunity for rapid memory growth in some scenarios.
Installation:
npm install --save @dittolive/ditto@1.0.18
If you have yarn:
yarn add @dittolive/ditto@1.0.18
JavaScript Version 1.0.18-alpha2
Released: Tue Dec 14th 2021, 4:32 pm
Release Notes:
- Improve attachment sync performance.
Installation:
npm install --save @dittolive/ditto@1.0.18-alpha2
If you have yarn:
yarn add @dittolive/ditto@1.0.18-alpha2
JavaScript Version 1.0.18-alpha1
Released: Wed Dec 8th 2021, 5:25 pm
Release Notes:
- Fixed a bug where Ditto Cloud sync was not enabled by default for
Online
-based identities. - 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.
Installation:
npm install --save @dittolive/ditto@1.0.18-alpha1
If you have yarn:
yarn add @dittolive/ditto@1.0.18-alpha1
JavaScript 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.
- Removed the
DocumentID
type and replaced it withDocumentIDValue
. - Fixed the
sort(...)
functionality not having an effect for live queries.
Installation:
npm install --save @dittolive/ditto@1.0.17
If you have yarn:
yarn add @dittolive/ditto@1.0.17
JavaScript 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.
- Expose
CollectionsEvent
as part of the public API.
Installation:
npm install --save @dittolive/ditto@1.0.16
If you have yarn:
yarn add @dittolive/ditto@1.0.16
JavaScript 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 accompanyingfind
call doesn't have the key specified in thesort
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 thesort
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 thesort
key will appear first in the set of documents, before all of the documents that do contain thesort
key. - Fix a potential deadlock in relation to logging.
Installation:
npm install --save @dittolive/ditto@1.0.15
If you have yarn:
yarn add @dittolive/ditto@1.0.15
JavaScript Version 1.0.15-alpha1
Released: Wed Oct 27th 2021, 10:33 am
Release Notes:
- Synchronized version bump release
Installation:
npm install --save @dittolive/ditto@1.0.15-alpha1
If you have yarn:
yarn add @dittolive/ditto@1.0.15-alpha1
JavaScript 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 newOnlineWithAuthentication
identity. - Deprecate the
Development
identity in favor of the newOfflinePlayground
identity. - Add validation of all queries specified as part of
find()
calls.
Installation:
npm install --save @dittolive/ditto@1.0.14
If you have yarn:
yarn add @dittolive/ditto@1.0.14
JavaScript Version 1.0.13
Released: Mon Oct 18th 2021, 5:02 pm
Release Notes:
- Fixed serialization errors during authentication when running in the browser.
Installation:
npm install --save @dittolive/ditto@1.0.13
If you have yarn:
yarn add @dittolive/ditto@1.0.13
JavaScript Version 1.0.12
Released: Mon Oct 18th 2021, 10:00 am
Release Notes:
- Added
global
section toTransportConfig
allowing P2P sync to be contained within certain groups of devices by putting them in the same "sync group". - Fixed issues with key-paths containing dashes.
- Fixed issues with key-paths containing multiple subscript operators.
Installation:
npm install --save @dittolive/ditto@1.0.12
If you have yarn:
yarn add @dittolive/ditto@1.0.12
JavaScript Version 1.0.11
Released: Fri Oct 8th 2021, 5:09 am
Release Notes:
- Fixed exception when creating a
Ditto
instance without providing apath
. - Added
WriteStrategy
type. - Added option
writeStrategy
to methodinsert()
ofCollection
, allowing to specify the behavior when inserting a document with an ID that matches the ID of a document already in the store. - Added Node support for macOS/x86_64, Linux/x86_64 and Linux/ARMhf. Support for more OS/arch combinations will follow.
- Added method
value()
toDocumentPath
andMutableDocumentPath
allowing to access the value at the key-path represented by the receiver. - Added static method
valueAt()
and corresponding (convenience) instance method_valueAt()
toDocument
andMutableDocument
allowing to access the value at a given key-path. - Added static method
replaceWithCounterAt()
and corresponding (convenience) instance method_replaceWithCounterAt()
toMutableDocument
allowing to turn a property at a given key-path into a counter. - Added static method
incrementCounterAt()
and corresponding (convenience) instance method_incrementCounterAt()
toMutableDocument
allowing to increment a counter property at a given key-path. - Added
isAuthenticated()
method anduserID
property toAuthenticator
. - Changed
at()
method ofDocumentPath
andMutableDocumentPath
to also take a number (index). - Changed
MutableDocument
proxy to returnundefined
for non-existing paths. - Changed property
siteID
of relevantIdentity
variants to be optional and allow0
to be passed. - Deprecated
appName
in favor ofappID
for identities of typedevelopment
andsharedKey
. - Deprecated
atIndex()
method ofDocumentPath
andMutableDocumentPath
in favor ofat()
. - Deprecated option
isDefault
for methodinsert()
ofCollection
in favor ofwriteStrategy
.
Installation:
npm install --save @dittolive/ditto@1.0.11
If you have yarn:
yarn add @dittolive/ditto@1.0.11
JavaScript 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:
npm install --save @dittolive/ditto@1.0.10
If you have yarn:
yarn add @dittolive/ditto@1.0.10
JavaScript Version 1.0.9
Released: Fri Sep 3rd 2021, 10:38 pm
Release Notes:
- Added support for attachments.
- When calling
insert
you should no longer nest the document's content under thevalue
key. Instead the object that you provide toinsert
will directly be used to form the contents of the document. - Similarly, when using
observe
orexec
functionality you will no longer have aDocument
type returned to you and instead will have aDocumentLike
object, which represents the document's contents, returned to you. You can directly subscript this object to get values at the specified key path of the document. - Enabled support for loading
ditto.wasm
from Ditto's CDN. - Allow passing a "raw" primitive type, instead of requiring a
DocumentID
, to theinsert
andfindByID
functions. - 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 ofTransportConfig
. - Added new identity types:
Online
andOnlinePlayground.
AnOnline
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. AnOnlinePlayground
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 toManual
. - Added an
Authenticator
type, accessible via theDitto
object, which allows you to perform login operations when you're using anOnline
identity. - Similarly, added an
AuthenticationHandler
type that needs to be used when using anOnline
identity. - Report an error if more than one Ditto instance is started using the same working directory.
Installation:
npm install --save @dittolive/ditto@1.0.9
If you have yarn:
yarn add @dittolive/ditto@1.0.9
JavaScript Version 1.0.8
Released: Mon Aug 2nd 2021, 4:19 pm
Release Notes:
-
Initial public Beta release of the JS SDK with the following constraints:
- Web only for now. Node & Electron support will follow shortly.
- Counters work only partially. Full support is in development.
- No support for batch operations yet.
- No support for attachments yet.
-
Known bugs and issues:
runGarbageCollection()
doesn't work and throws an exception.observeWithNextSignal()
&observeLocalWithNextSignal()
do not work and throw an exception.- Longer running queries might block the JS event loop.
Installation:
npm install --save @dittolive/ditto@1.0.8
If you have yarn:
yarn add @dittolive/ditto@1.0.8
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'
DittoSwift Version 4.8.0
Released: Thu Aug 22nd 2024, 12:29 pm
Release Notes:
- Added: method
export(to:)
toDittoLogger
, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11961) - Added: Properties
peerKeyString1
andpeerKeyString2
onDittoConnection
replacing the now deprecated propertiespeer1
andpeer2
. (#12799) - Deprecated: Properties
peer1
andpeer2
onDittoConnection
, please usepeerKeyString1
andpeerKeyString2
instead. (#12799)- Added: TvOS platform support (#13049) - Added: Mac Catalyst platform support (#13051)
- Deprecated: property
queryOverlapGroup
ofDittoPeer
andDittoRemotePeerV2
, always returning0
going forward. - Removed: experimental property
queryOverlapGroup
ofDittoExperimental
. - Removed: experimental methods
priority(forQueryOverlapGroup:)
andsetPriority(_:forQueryOverlapGroup:)
ofDittoExperimental
. - Removed: deprecated methods
setQueryOverlapGroup(queryOverlapGroup:)
andsetPriority(_:forQueryOverlapGroup:ditto:)
ofDittoExperimental
. - Changed: Documentation for
startSync()
anddisableSyncWithV3()
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
onDittoPeer
to add information about how the property behaves over the lifecycle of theDittoPresenceGraph
. (#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
andchar_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 ofWarning
. (#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'
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
andchar_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 ofWarning
. (#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:)
toDittoLogger
, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11961) - Added: Properties
peerKeyString1
andpeerKeyString2
onDittoConnection
replacing the now deprecated propertiespeer1
andpeer2
. (#12799) - Deprecated: Properties
peer1
andpeer2
onDittoConnection
, please usepeerKeyString1
andpeerKeyString2
instead. (#12799)- Added: TvOS platform support (#13049) - Added: Mac Catalyst platform support (#13051)
- Deprecated: property
queryOverlapGroup
ofDittoPeer
andDittoRemotePeerV2
, always returning0
going forward. - Removed: experimental property
queryOverlapGroup
ofDittoExperimental
. - Removed: experimental methods
priority(forQueryOverlapGroup:)
andsetPriority(_:forQueryOverlapGroup:)
ofDittoExperimental
. - Removed: deprecated methods
setQueryOverlapGroup(queryOverlapGroup:)
andsetPriority(_:forQueryOverlapGroup:ditto:)
ofDittoExperimental
. - Changed: Documentation for
startSync()
anddisableSyncWithV3()
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
onDittoPeer
to add information about how the property behaves over the lifecycle of theDittoPresenceGraph
. (#13479)
Installation:
pod 'DittoSwift', '=4.8.0-rc.2'
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'
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 asort()
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'
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'
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'
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'
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'
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'
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'
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 aDitto
instance after sync has started will now log a warning: changes to the value only take effect after restarting sync. (#11160) - Fixed:
deviceName
property onDitto
instances now reflects the truncation of the value to 24 bytes when starting sync. (#11340) - Added: properties
peerMetadata
andidentityServiceMetadata
toDittoPeer
. (#11611) - Added: property
connectionRequestHandler
toditto.presence
, including related types, allowing to filter incoming connections from other peers. (#11611) - Added: property
peerKeyString
toDittoPeer
as replacement for the now deprecatedpeerKey
. (#11611) - Added: property
peerMetadataJSONData
and methodsetPeerMetadataJSONData()
toditto.presence
. (#11611) - Added: property
peerMetadata
and methodsetPeerMetadata()
toditto.presence
. (#11611) - Deprecated: property
peerKey
onDittoPeer
, please use the newly addedpeerKeyString
instead. (#11611) - Fixed: retry connection interval milliseconds was being set as seconds (#12157)
Installation:
pod 'DittoSwift', '=4.7.0'
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'
DittoSwift Version 4.6.0
Released: Tue Mar 12th 2024, 6:24 pm
Release Notes:
- Added: method
data()
onDittoAttachment
as a replacement forgetData()
. - Added: method
jsonData()
toDittoQueryResultItem
returning aData
object that can be directly used withJSONDecoder
. (#10988) - Added: a variant of
fetchAttachment()
andfetchAttachmentPublisher()
toDittoStore
that takes an attachment token dictionary representation as given by the value ofDittoQueryResultItem
.(#11410) - Added: method
newAttachment()
onDittoStore
as replacement for the corresponding and now deprecated method onDittoCollection
. It is now async and failable. (#11410) - Added: method
fetchAttachment()
andfetchAttachmentPublisher()
onDittoStore
as replacement for the corresponding and now deprecated methods onDittoCollection
. It is now failable. (#11410) - Added: properties
id
,len
, andmetadata
toDittoAttachment
andDittoAttachmentToken
. (#11410) - Added: Preliminary support for runtime configuration using DQL
ALTER SYSTEM
andSHOW
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()
ofDittoCollection
. Please use the newly introduced equivalent method onDittoStore
instead. (#11410) - Deprecated: method
fetchAttachment()
andfetchAttachmentPublisher()
ofDittoCollection
. Please use the newly introduced equivalent method onDittoStore
instead. (#11410) - Deprecated: method
getData()
ofDittoAttachment
, 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
andmetadata
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
ofDittoQueryResultItem
. The token is now provided as a dictionary of the form["id": "...", "len": 123, "metadata": ...] where
metadatais a dictionary
[String: String]`. (#11410) - Fixed:
DittoPresence.GraphPublisher
andDitto.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'
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
andSHOW
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()
toDittoQueryResultItem
returning aData
object that can be directly used withJSONDecoder
. (#10988) - Fixed:
DittoPresence.GraphPublisher
andDitto.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'
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
andSHOW
statements (#10401) - Added: method
jsonData()
toDittoQueryResultItem
returning aData
object that can be directly used withJSONDecoder
. (#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
andDitto.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'
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
andSHOW
statements (#10401) - Added: method
jsonData()
toDittoQueryResultItem
returning aData
object that can be directly used withJSONDecoder
. (#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
andDitto.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'
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'
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'
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'
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'
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'
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'
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'
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 au64
ori64
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'
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()
onDittoStore
that executes a DQL query and returns aDittoQueryResult
containigDittoQueryResultItem
s 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 oldSubscription
class. (#10395, #10394) - Added: method
registerSubscription()
onDittoSync
that installs and returns aSyncSubscription
. (#10395, #10394) - Added: property
subscriptions
onDittoSync
providing access to all currently active sync subscriptions. (#10395, #10394) - Added: property
sync
onDitto
of typeDittoSync
to serve as an entry point for sync functionality. (#10395, #10394) - Added: class
DittoStoreObserver
onDittoStore
that configures Ditto to invoke an observation handler whenever results for its query change. (#10396, #10394) - Added: method
registerObserver()
onDittoStore
that installs and returns aDittoStoreObserver
. (#10396, #10394) - Added: property
observers
onDittoStore
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'
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'
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'
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()
onDittoStore
that executes a DQL query and returns aDittoQueryResult
containigDittoQueryResultItem
s 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 oldSubscription
class. (#10395, #10394) - Added: method
registerSubscription()
onDittoSync
that installs and returns aSyncSubscription
. (#10395, #10394) - Added: property
subscriptions
onDittoSync
providing access to all currently active sync subscriptions. (#10395, #10394) - Added: property
sync
onDitto
of typeDittoSync
to serve as an entry point for sync functionality. (#10395, #10394) - Added: class
DittoStoreObserver
onDittoStore
that configures Ditto to invoke an observation handler whenever results for its query change. (#10396, #10394) - Added: method
registerObserver()
onDittoStore
that installs and returns aDittoStoreObserver
. (#10396, #10394) - Added: property
observers
onDittoStore
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'
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'
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'
DittoSwift Version 4.4.3
Released: Tue Oct 24th 2023, 9:01 pm
Release Notes:
- Changed: made
DittoAttachmentToken
conform toHashable
. (#10195)
Installation:
pod 'DittoSwift', '=4.4.3'
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 tobigPeerOnly
. (#10203, #10204)
Installation:
pod 'DittoSwift', '=4.4.2'
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'
DittoSwift Version 4.4.0
Released: Thu Aug 31st 2023, 10:43 pm
Release Notes:
- Added: Property
smallPeerInfo
toDitto
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'
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'
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 theDittoIdentity.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'
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'
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'
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'
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 extraString?
argument (as compared tologinWithToken
) that will be non-nil
if the auth webhook provided anyclientInfo
JSON value. TheString
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'
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'
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
andDomain
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'
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'
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'
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'
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'
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 theDitto
object or the a peer has synced with another peer that has calleddisableSyncWithV3
, or they have synced with another peer that has calleddisableSyncWithV3
, 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 toDitto
instances not being deallocated properly.
Installation:
pod 'DittoSwift', '=4.0.0'
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 theDitto
object or the a peer has synced with another peer that has calleddisableSyncWithV3
, or they have synced with another peer that has calleddisableSyncWithV3
, etc.
Installation:
pod 'DittoSwift', '=4.0.0-beta1'
DittoSwift Version 4.0.0-alpha2
Released: Mon Jan 16th 2023, 10:16 pm
Release Notes:
- Added:
disableSyncWithV3
functionality toDitto
. 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 callingremove()
. Any other device running v4 of the SDK that syncs with a device that has calleddisableSyncWithV3
(or has themselves synced with another device that has calleddisableSyncWithV3
, etc - if any chain of syncing exists that involves a device that has calleddisableSyncWithV3
) will also no longer be able to sync with v3 peers and will perform AddWins removes when callingremove()
.
Installation:
pod 'DittoSwift', '=4.0.0-alpha2'
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'
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'
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'
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'
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'
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'
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'
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 toDitto
instances not being deallocated properly.
Installation:
pod 'DittoSwift', '=3.0.5'
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'
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'
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'
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'
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 toDitto
class for access to aDiskUsage
instance. - Added:
diskUsagePublisher()
method toDitto
class, returning aDiskUsagePublisher
. - 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'
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()
andobserveWithNextSignal()
methods ofDittoPendingCollectionsOperation
,DittoPendingCursorOperation
, andDittoPendingIDSpecificOperation
. Please use the correspondingobserveLocal(deliverOn:eventHandler:)
andobserveLocalWithNextSignal(deliverOn:eventHandler:)
variants along with a separate call tosubscribe()
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 introducedpresence
property on theDitto
object. - Added: struct
DittoPresenceGraph
and related sub-typesDittoAddress
,DittoConnection
,DittoConnectionType
, andDittoPeer
. - Added
DittoPresence.GraphPublisher
, replaces the now deprecatedDitto.RemotePeersPublisher
. You can get a graph publisher via thegraphPublisher()
on the newly introducedDittoPresence
(accessible via newly introducedpresence
property ofDitto
). - Deprecated: methods
observePeers()
andobservePeersV2()
ofDitto
, please useobserve()
ofDittoPresence
instead (accessible via newly introducedpresence
property ofDitto
). - Deprecated:
DITRemotePeer
, replaced byDITPeer
. - Deprecated:
DITPeersObserver
, replaced byDITObserver
protocol. - Deprecated:
DITPeersObserverV2
, replaced byDITObserver
protocol. - Deprecated:
Ditto.RemotePeersPublisher
and correspondingremotePeersPublisher()
method onDitto
. Please use newly introducedDittoPresence.GraphPublisher
and methodgraphPublisher()
ofDittoPresence
instead. - Removed: all
persistenceDirectory
arguments from all of the identity type constructors. - Changed: performance improvements.
- Added:
disableSyncWithV2
method toDitto
. 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 toDittoAuthenticator
. - Added:
DittoAuthenticator.StatusPublisher
, a Combine publisher forDittoAuthenticationStatus
change events. - Improved: log increased detail to help debug blocked write transactions.
Installation:
pod 'DittoSwift', '=3.0.0'
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'
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'
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()
andobserveWithNextSignal()
methods ofDittoPendingCollectionsOperation
,DittoPendingCursorOperation
, andDittoPendingIDSpecificOperation
. Please use the correspondingobserveLocal(deliverOn:eventHandler:)
andobserveLocalWithNextSignal(deliverOn:eventHandler:)
variants along with a separate call tosubscribe()
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 introducedpresence
property on theDitto
object. - Added: struct
DittoPresenceGraph
and related sub-typesDittoAddress
,DittoConnection
,DittoConnectionType
, andDittoPeer
. - Added
DittoPresence.GraphPublisher
, replaces the now deprecatedDitto.RemotePeersPublisher
. You can get a graph publisher via thegraphPublisher()
on the newly introducedDittoPresence
(accessible via newly introducedpresence
property ofDitto
). - Deprecated: methods
observePeers()
andobservePeersV2()
ofDitto
, please useobserve()
ofDittoPresence
instead (accessible via newly introducedpresence
property ofDitto
). - Deprecated:
DITRemotePeer
, replaced byDITPeer
. - Deprecated:
DITPeersObserver
, replaced byDITObserver
protocol. - Deprecated:
DITPeersObserverV2
, replaced byDITObserver
protocol. - Deprecated:
Ditto.RemotePeersPublisher
and correspondingremotePeersPublisher()
method onDitto
. Please use newly introducedDittoPresence.GraphPublisher
and methodgraphPublisher()
ofDittoPresence
instead. - Removed: all
persistenceDirectory
arguments from all of the identity type constructors. - Changed: performance improvements.
- Added
disableSyncWithV2
method toDitto
. 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'
DittoSwift Version 2.1.0
Released: Wed Nov 2nd 2022, 11:51 pm
Release Notes:
- Deprecated:
observe()
andobserveWithNextSignal()
methods ofDittoPendingCollectionsOperation
,DittoPendingCursorOperation
andDittoPendingIDSpecificOperation
. Please use the correspondingobserveLocal(deliverOn:eventHandler:)
andobserveLocalWithNextSignal(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'
DittoSwift Version 2.0.8
Released: Fri Oct 28th 2022, 12:14 am
Release Notes:
- Added:
appID
property toDitto
class - Added:
persistenceDirectory
property toDitto
class
Installation:
pod 'DittoSwift', '=2.0.8'
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'
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'
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'
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'
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'
DittoSwift Version 2.0.2
Released: Sat Aug 27th 2022, 1:58 am
Release Notes:
- Added: method
cancel()
toDittoSubscription
allowing explicit cancelling of a subscription. - Fixed: memory leak, observer objects returned by
observeStatus()
ofDittoAuthenticator
were never deallocated. - Fixed: Reduced size of DittoSwift framework
- Changed: performing an
.exec()
call, outside the scope of astore.write { }
block, no longer tries to obtain a write transaction and instead uses a read transaction.
Installation:
pod 'DittoSwift', '=2.0.2'
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'
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 version1.1.8
of the SDK. - Added: support for explicitly typing values as registers. This is via 2 new types:
DittoRegister
andDittoMutableRegister
, and newregisterValue
value accessors added toDittoDocumentPath
andDittoMutableDocumentPath
. - Added:
DittoCounter
andDittoMutableCounter
types resembling the CRDT type underneath, which replace the old counter mechanics. A newcounter
value accessor has been added toDittoDocumentPath
andDittoMutableDocumentPath
, which returns aDittoCounter
or aDittoMutableCounter
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
andDittoMutableRGA
in v2, and newrga
value accessors added toDittoDocumentPath
andDittoMutableDocumentPath
. 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
andDittoLicenseToken
inInfo.plist
will now fail with a fatal error instead of logging a deprecation warning. Please use the keyDittoOfflineOnlyLicenseToken
instead. - Changed: renamed identity
onlinePlaygroundV2
to justonlinePlayground
, which replaces the previously deprecatedonlinePlayground
. - Changed: renamed
Ditto
methodtryStartSync()
to juststartSync()
, which replaces the previously deprecatedstartSync()
. - Removed: deprecated
DittoRemotePeerV2
propertymeshRole
, pleasequeryOverlapGroup
instead. - Removed: deprecated type
DittoPeersObserver
, please useDittoObserver
instead. - Removed: deprecated
DittoDocumentID
methodtoNative()
, please use propertyvalue
instead. - Removed: deprecated
DittoScopedWriteTransaction
methodfind(query:)
, please usefind()
instead. - Removed: deprecated
DittoScopedWriteTransaction
methodsinsert()
andinsertWithStrategy()
, please useupsert()
andupsertWithStrategy()
instead. - Removed: deprecated
DittoCollection
methodsinsert()
andinsertWithStrategy()
, please useupsert()
andupsertWithStrategy()
instead. - Removed: deprecated identities
development
andonline
, please use the available ones instead. - Removed: deprecated
Ditto
methodssetAccessLicense()
andsetLicenseToken()
, please usesetOfflineOnlyLicenseToken()
instead. - Removed: deprecated
Ditto
methodsetTransportConfig()
, please set thetransportConfig
property directly. - Removed: deprecated
DittoAuthenticator
methodisAuthenticated()
and propertyuserID
, please usestatus
instead. - Removed:
DittoWriteStrategy.overwrite
.
Installation:
pod 'DittoSwift', '=2.0.0'
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'
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'
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'
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
methoddittoIdentityProviderAuthenticationRequest(ditto:request:)
would receive aDittoAuthenticationRequest
with some properties being incorrectly set tonil
.
Installation:
pod 'DittoSwift', '=1.1.9'
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'
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'
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'
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'
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'
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
'svalue
property now correctly decodes data such that it works in the same way asDittoDocument
'svalue
property.
Installation:
pod 'DittoSwift', '=1.1.4'
DittoSwift Version 1.1.3
Released: Tue Mar 22nd 2022, 10:13 am
Release Notes:
-
Added:
onlinePlaygroundV2
case toDittoIdentity
allowing for basic authentication for playgrounds -
Deprecated:
onlinePlayground
case ofDittoIdentity
, use newly addedonlinePlaygroundV2
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'
DittoSwift Version 1.1.2
Released: Mon Feb 28th 2022, 2:36 pm
Release Notes:
- Added: property
isReady
to experimentalDittoBusStream
to check if a message may be enqueued. - Added: method
setOfflineOnlyLicenseToken()
to classDitto
as replacement for now deprecatedsetLicenseToken()
. - Changed: made
DittoBusStream
,DittoRemotePeerV2
, andDittoAddress
adoptEquatable
andHashable
protocols. - Changed: made
DittoRemotePeerV2
adopt theIdentifiable
protocol. - Deprecated: method
setLicenseToken()
of classDitto
, please use newly addedsetOfflineOnlyLicenseToken()
instead.
Installation:
pod 'DittoSwift', '=1.1.2'
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 toDitto
class - Added:
fetchAttachmentPublisher(attachmentToken:)
method toDittoCollection
class - Added:
liveQueryPublisher()
method toDittoPendingCursorOperation
class - Added:
singleDocumentLiveQueryPublisher()
method toDittoPendingIDSpecificOperation
class
- Added:
- Added: Experimental Bus API
- Added:
dittoBus(_, didReceiveSingleMessage:)
method toDittoBusDelegate
protocol - Added:
dittoBus(_, didReceiveIncomingStream:, fromPeer:)
method toDittoBusDelegate
protocol - Removed:
dittoBus(_, didReceive:)
method from `DittoBusDelegate protocol
- Added:
- Added: Experimental mesh roles API
- Added:
setMeshRole(meshRole:, ditto:)
method toDittoExperimental
class - Added:
setPriorityForMeshRole(_, forMeshRole:, ditto:)
toDittoExperimental
class
- Added:
- Fixed: Improved AWDL reliability on iOS 12
Installation:
pod 'DittoSwift', '=1.1.1'
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 classDitto
. - Added: method
logout()
to classDittoAuthenticator
. - Added: set of APIs to observe authentication status (see API reference for
DittoAuthenticator
andDittoAuthenticationDelegate
). - Added: method
upsert()
to classesDittoCollection
andDittoScopedWriteTransaction
(as a replacement forinsert()
& friends) which by default merges the newly inserted document if one with the same ID already exists. - Deprecated: properties
isAuthenticated
anduserID
of classDittoAuthenticator
in favor of newly introduced propertystatus
. - Deprecated: methods
insert()
& frinds of classesDittoCollection
andDittoScopedWriteTransaction
in favor of newly introducedupsert()
.
Installation:
pod 'DittoSwift', '=1.1.0'
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'
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 involvesCodable
-conforming types fromFoundation
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'
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'
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'
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'
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'
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 accompanyingfind
call doesn't have the key specified in thesort
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 thesort
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 thesort
key will appear first in the set of documents, before all of the documents that do contain thesort
key. - Fixed handling of large integers in documents. Integers larger than
Int.max
were still trying to be handled asInt
s, leading to crashes. We now correctly handle them asUInt
s 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'
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 anInt
. They are now correctly represented using aUInt
instead.
Installation:
pod 'DittoSwift', '=1.0.15-alpha1'
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 newonlineWithAuthentication
identity. - Deprecate the
development
identity in favor of the newofflinePlayground
identity. - Add an
auth
property toDitto
that provides access to aDittoAuthenticator
when using an appropriate identity with yourDitto
instance. - Add support for using a document ID that is an object that conforms to
Codable
.
Installation:
pod 'DittoSwift', '=1.0.14'
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'
DittoSwift Version 1.0.12
Released: Mon Oct 18th 2021, 10:00 am
Release Notes:
- Added
global
section toTransportConfig
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'
DittoSwift Version 1.0.11
Released: Fri Oct 8th 2021, 5:09 am
Release Notes:
- Added
DittoWriteStrategy
enum. - Added method
insertWithStrategy()
toDittoCollection
, 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 anduserID
property toDittoAuthenticator
. - Fixed Codable support for non-string IDs and
Float
andDouble
types.
Installation:
pod 'DittoSwift', '=1.0.11'
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'
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 ofTransportConfig
. - Added new identity types:
Online
andOnlinePlayground.
AnOnline
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. AnOnlinePlayground
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 toManual
. - Added a
DittoAuthenticator
type, accessible via theDitto
object, which allows you to perform login operations when you're using anOnline
identity. - Similarly, added an
DittoAuthenticationDelegate
type that needs to be used when using anOnline
identity. - Report an error if more than one Ditto instance is started using the same working directory.
Installation:
pod 'DittoSwift', '=1.0.9'
DittoSwift Version 1.0.8
Released: Mon Aug 2nd 2021, 4:19 pm
Release Notes:
- Improved debug logging.
Installation:
pod 'DittoSwift', '=1.0.8'
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'
DittoSwift Version 1.0.6
Released: Thu Jul 8th 2021, 6:22 pm
Release Notes:
- Add
value
accessor onDittoDocumentPath
,DittoMutableDocumentPath
, andDittoDocumentIDPath
types to allow accessing a nested value in a document/ID as anAny?
.
Installation:
pod 'DittoSwift', '=1.0.6'
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 aDitto
instance will no longer throw an error if you have not yet activated yourDitto
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 yourDitto
instance hasn't yet been activated via a successful call tosetLicenseToken
.
Installation:
pod 'DittoSwift', '=1.0.5'
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 onDittoScopedWriteTransaction
and add a new version offind(:)
that doesn't require thequery
argument label. This makes this consistent with thefind(:)
function onDittoCollection
.
Installation:
pod 'DittoSwift', '=1.0.4'
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'
DittoSwift Version 1.0.2
Released: Thu May 20th 2021, 9:39 pm
Release Notes:
- Add support for subscripting
DittoDocumentID
s in order to get nested values when a document ID is based on an array or a dictionary. - Deprecated
.toNative()
onDittoDocumentID
. You should use.value
instead.
Installation:
pod 'DittoSwift', '=1.0.2'
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'
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
orinsert
calls you now need to provide aDittoDocumentID
object rather than a string. Similarly, when you access a document's ID it will now return aDittoDocumentID
object instead of a string. - The
start()
andstop()
functions on theDitto
object have been renamed tostartSync()
andstopSync()
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 thesetTransportConfig
function on theDitto
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 yourstart()
call tostartSync()
.
- 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
- Lots of performance improvements and bug fixes.
Installation:
pod 'DittoSwift', '=1.0.0'
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'
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'
Java Android Version 4.5.0-alpha1
Released: Tue Nov 21st 2023, 7:05 am
Release Notes:
- Added: New C++ SDK for Android. (#10218)
Installation:
implementation "live.ditto:dittocpp:4.5.0-alpha1"
Java Android 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: crash in WiFi Aware registering network publisher callback (#14013)
Installation:
implementation "live.ditto:ditto:4.8.1-rc.1"
Java Android Version 4.8.0
Released: Thu Aug 22nd 2024, 12:29 pm
Release Notes:
- Fix: crash when multiple threads calling
stopSync()
(#11554) - Added: method
exportToFile()
toDittoLogger
, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11961) - Added: synchronous method
exportToFileBlocking()
toDittoLogger
for Java callers. (#11961) - Fixed: crash when SDK observes certain malformed mDNS traffic (#12396)
- Change: Android Wifi Aware leader election to avoid duplicate createNetwork attempts (#12458)
- Removed:
delete()
,swigReleaseOwnership()
andswigTakeOwnership()
methods fromDittoLogger
. These are internal memory management APIs that can cause memory leaks or crashes if used. (#12617) - Added: new getter and setter for
Presence.connectionRequestHandler
which take aDittoConnectionRequestHandlerCallback
, making the API much easier to call from Java. (#12770) - Added: Properties
peerKeyString1
andpeerKeyString2
onDittoConnection
replacing the now deprecated propertiespeer1
andpeer2
. (#12799) - Deprecated: Properties
peer1
andpeer2
onDittoConnection
. Please usepeerKeyString1
andpeerKeyString2
instead. (#12799) - Changed: improve Android WifiAware stability by actively terminate/resume on application background/foreground (#12804)
- Changed: improve staleness detection in Android Wifi Aware (#12866)
- Changed: Documentation for
startSync()
anddisableSyncWithV3()
to include a recommendation for performance improvement. (#13098) - Changed: API docs no longer include
protected
members. Most Ditto classes are final and cannot be extended, so these APIs are not useful. (#13200) - Deprecated: property
queryOverlapGroup
ofDittoPeer
andDittoRemotePeerV2
, always returning0
going forward. (#13215) - Removed: experimental method
setQueryOverlapGroup()
fromDittoExperimental
. (#13215) - Removed: experimental method
setPriorityForQueryOverlapGroup()
fromDittoExperimental
. (#13215) - Fixed: Intermittent crash when finalizing a legacy
DittoSubscription
that contained asort()
clause. (#13394) - Changed: Documentation for property
peerMetadata
onDittoPeer
to add information about how the property behaves over the lifecycle of theDittoPresenceGraph
. (#13479) - Fixed:
ditto.close()
not waiting for an outstandingDittoAttachmentFetcher
atomic callback invocation to complete (#13553) - Linux/Android: Increased mDNS multicast TTL from 1 to 255 to allow for cross-VLAN announcements (#13590)
- 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) - Added: optional hint parameter to
upsert()
ofDittoCollection
andDittoScopedWriteTransaction
. (#7110) - Changed: Slow or blocked write transactions now log hints showing the waiting and blocking transactions. (#7110)
- 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
andchar_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 ofWarning
. (#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:
implementation "live.ditto:ditto:4.8.0"
Java Android 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
andchar_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 ofWarning
. (#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)
- Fix: crash when multiple threads calling
stopSync()
(#11554) - Added: method
exportToFile()
toDittoLogger
, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11961) - Added: synchronous method
exportToFileBlocking()
toDittoLogger
for Java callers. (#11961) - Fixed: crash when SDK observes certain malformed mDNS traffic (#12396)
- Change: Android Wifi Aware leader election to avoid duplicate createNetwork attempts (#12458)
- Removed:
delete()
,swigReleaseOwnership()
andswigTakeOwnership()
methods fromDittoLogger
. These are internal memory management APIs that can cause memory leaks or crashes if used. (#12617) - Added: new getter and setter for
Presence.connectionRequestHandler
which take aDittoConnectionRequestHandlerCallback
, making the API much easier to call from Java. (#12770) - Added: Properties
peerKeyString1
andpeerKeyString2
onDittoConnection
replacing the now deprecated propertiespeer1
andpeer2
. (#12799) - Deprecated: Properties
peer1
andpeer2
onDittoConnection
. Please usepeerKeyString1
andpeerKeyString2
instead. (#12799) - Changed: improve Android WifiAware stability by actively terminate/resume on application background/foreground (#12804)
- Changed: improve staleness detection in Android Wifi Aware (#12866)
- Changed: Documentation for
startSync()
anddisableSyncWithV3()
to include a recommendation for performance improvement. (#13098) - Changed: API docs no longer include
protected
members. Most Ditto classes are final and cannot be extended, so these APIs are not useful. (#13200) - Deprecated: property
queryOverlapGroup
ofDittoPeer
andDittoRemotePeerV2
, always returning0
going forward. (#13215) - Removed: experimental method
setQueryOverlapGroup()
fromDittoExperimental
. (#13215) - Removed: experimental method
setPriorityForQueryOverlapGroup()
fromDittoExperimental
. (#13215) - Fixed: Intermittent crash when finalizing a legacy
DittoSubscription
that contained asort()
clause. (#13394) - Changed: Documentation for property
peerMetadata
onDittoPeer
to add information about how the property behaves over the lifecycle of theDittoPresenceGraph
. (#13479) - Fixed:
ditto.close()
not waiting for an outstandingDittoAttachmentFetcher
atomic callback invocation to complete (#13553) - Linux/Android: Increased mDNS multicast TTL from 1 to 255 to allow for cross-VLAN announcements (#13590)
- 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) - Added: optional hint parameter to
upsert()
ofDittoCollection
andDittoScopedWriteTransaction
. (#7110) - Changed: Slow or blocked write transactions now log hints showing the waiting and blocking transactions. (#7110)
Installation:
implementation "live.ditto:ditto:4.8.0-rc.2"
Java Android 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:
implementation "live.ditto:ditto:4.7.5-rc.1"
Java Android 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) - Fixed: A rare scenario that caused Ditto to reconnect peers under high load (#13849)
Installation:
implementation "live.ditto:ditto:4.7.4"
Java Android 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)
- Changed: Reduced Bluetooth warn log noise (#12674)
- Changed: handle reverse DNS lookup queries in Android mdns to avoid mdns failing to connect in specific network configs (#13000)
- 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: WifiAware is now available on API level 32 (#12631)
- Fixed: missing version metadata is now correctly included in the string returned from
Ditto.sdkVersion
. (#12843) - Fixed: SDK language is now reported as "JVMBased" instead of "Unknown". (#13251)
Installation:
implementation "live.ditto:ditto:4.7.2"
Java Android 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)
- Changed: Reduced Bluetooth warn log noise (#12674)
- Changed: handle reverse DNS lookup queries in Android mdns to avoid mdns failing to connect in specific network configs (#13000)
- 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: WifiAware is now available on API level 32 (#12631)
- Fixed: missing version metadata is now correctly included in the string returned from
Ditto.sdkVersion
. (#12843)
Installation:
implementation "live.ditto:ditto:4.7.2-rc.2"
Java Android Version 4.7.2-rc.1
Released: Mon May 6th 2024, 11:16 pm
Release Notes:
- Changed: Reduced Bluetooth warn log noise (#12674)
- Fixed: WifiAware is now available on API level 32 (#12631)
- 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:
implementation "live.ditto:ditto:4.7.2-rc.1"
Java Android 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: documentation for
DittoStore.fetchAttachment
, which previously stated that its return value had to be kept in scope for the fetch to complete. The return value does not have to be kept in scope for this API. The documentation has been updated to clarify usage of the return value. (#11783) - Added:
DittoExperimental.constructDittoFailable()
method which throwsDittoError.LockedWorkingDirectoryError
instead of crashing when the persistence directory is in use by anotherDitto
instance. (#11801) - Fixed: an exception while creating/fetching an attachment now includes the underlying cause for easier debugging. (#12235)
- Fixed: an issue which prevented attachment fetcher events from being delivered to observers. (#12331)
- Fixed: error closing attachment fetcher that failed to start downloading attachment. (#12490)
- Fixed: document paths containing non-alphanumeric (or non-underscore) characters no longer lead to errors. (#12556)
Installation:
implementation "live.ditto:ditto:4.7.1"
Java Android Version 4.7.1-beta.2
Released: Fri Apr 5th 2024, 11:29 pm
Release Notes:
- Fixed: an issue which prevented attachment fetcher events from being delivered to observers. (#12331)
Installation:
implementation "live.ditto:ditto:4.7.1-beta.2"
Java Android Version 4.7.1-beta.1
Released: Fri Apr 5th 2024, 6:18 pm
Release Notes:
- Fixed: an issue which prevented attachment fetcher events from being delivered to observers. (#12331)
Installation:
implementation "live.ditto:ditto:4.7.1-beta.1"
Java Android 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)
- Fixed: P2P LAN failed to advertise on a newly added interface, e.g., enabling WiFi at runtime (#10265)
- Fixed:
deviceName
property onDitto
instances now reflects the truncation of the value to 24 bytes when starting sync. (#11340) - Added: property
connectionRequestHandler
toditto.presence
, including related types, allowing to filter incoming connections from other peers. (#11611) - Added: property
peerMetadata
toditto.presence
. (#11611) - Added: property
peerMetadataJsonString
toditto.presence
. (#11611) - Added: property
identityServiceMetadata
toDittoPeer
. (#11611) - Added: property
peerKeyString
toDittoPeer
as replacement for the now deprecatedpeerKey
. (#11611) - Added: property
peerMetadata
toDittoPeer
. (#11611) - Deprecated: property
peerKey
onDittoPeer
, please use the newly addedpeerKeyString
instead. (#11611)- Added: runtime checks and locks to guard against dangling raw Ditto pointer usage in extremely unlucky race condition scenarios (#11837) - Fixed: a possible crash while downloading an attachment due to improper decoding of attachment token. (#12039)
Installation:
implementation "live.ditto:ditto:4.7.0"
Java Android Version 4.7.0-alpha.1
Released: Fri Mar 1st 2024, 11:46 pm
Release Notes:
- Changed: This release is built with Android SDK 34. (#8991)
- Changed: Java compatibility has been increased to 17. (#8991)
Installation:
implementation "live.ditto:ditto:4.7.0-alpha.1"
Java Android Version 4.6.0
Released: Tue Mar 12th 2024, 6:24 pm
Release Notes:
- Added: Preliminary support for runtime configuration using DQL
ALTER SYSTEM
andSHOW
statements (#10401) - Added: (Java) Synchronous (non-suspending)
DittoStore.execute(String)
andDittoStore.execute(String, Map)
convenience methods. (#10974) - Added: (Java) Read-only
queryString
andqueryArgument
fields toDittoStoreObserver
andDittoSyncSubscription
. (#10974) - Added: (Java)
DittoStore.registerObserver()
andDittoSync.registerSubscription()
method overloads removingarguments
parameter. (#10974) - Added a new experimental version of the Bluetooth transport to improve sync reliability on modern versions of Android, currently disabled by default (#11326)
- Added: method
newAttachment()
onDittoStore
as replacement for the corresponding and now deprecated method onDittoCollection
. It is now async and failable. (#11410) - Added: method
fetchAttachment()
onDittoStore
as replacement for the corresponding and now deprecated methods onDittoCollection
. It is now failable. (#11410) - Added: property
attachmentFetchers
toDittoStore
which contains aSet
of all activeDittoAttachmentFetcher
instances. (#11745) - Added: a variant of
fetchAttachment()
toDittoStore
that takes an attachment token Map representation as given by the value ofDittoQueryResultItem
. (#11410) - Added: properties
id
,len
, andmetadata
toDittoAttachment
andDittoAttachmentToken
. (#11410) - Added: method
getLength()
toDittoAttachment
andDittoAttachmentToken
returningBigInteger
variant of the underlyingULong
value for Java compatibility. (#11410) - Added: Javadocs jar artifact for easier API reference. (#11652)
- Added: Accessors for
syncGroup
androutingHint
withLong
values of the underlyingUInt
for Java compatibility. (#7285) - 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)
- Deprecated: method
newAttachment()
ofDittoCollection
. Please use the newly introduced equivalent method onDittoStore
instead. (#11410) - Deprecated: method
fetchAttachment()
andfetchAttachmentPublisher()
ofDittoCollection
. Please use the newly introduced equivalent method onDittoStore
instead. (#11410) - 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
andmetadata
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 Map representation given by the
value
ofDittoQueryResultItem
. The token is now provided as a Map of the form["id": "...", "len": 123, "metadata": ...] where
metadatais a
Map<String, String>`. (#11410) - (Experimental) Fixed: Two peers targeting each other simultaneously in Ditto Bus or Query Overlap Groups may struggle to create a multihop connection (#8527)
Installation:
implementation "live.ditto:ditto:4.6.0"
Java Android 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
andSHOW
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:
DittoTransportConfig
and all Ditto types that appear inside aDittoTransportConfig
now implementCloneable
(#10972) - Fixed: calling
startSync
, thenstopSync, and then
startSync` again no longer leads to all transports being disabled (#10972) - Fixed: if using an
OnlinePlayground
orOnlineWithAuthentication
identity withenableDittoCloudSync
set totrue
then a WebSocket connection to Ditto's cloud will now nbe preserved if/when theDitto
instance's transport config is updated. (#10972) - Added: (Java) Synchronous (non-suspending)
DittoStore.execute(String)
andDittoStore.execute(String, Map)
convenience methods. (#10974) - Added: (Java)
DittoStore.registerObserver()
andDittoSync.registerSubscription()
method overloads removingarguments
parameter. (#10974) - Added: (Java) Read-only
queryString
andqueryArgument
fields toDittoStoreObserver
andDittoSyncSubscription
. (#10974) - Added: Javadocs jar artifact for easier API reference. (#11652)
- Added: Accessors for
syncGroup
androutingHint
withLong
values of the underlyingUInt
for Java compatibility. (#7285) - (Experimental) Fixed: Two peers targeting each other simultaneously in Ditto Bus or Query Overlap Groups may struggle to create a multihop connection (#8527)
Installation:
implementation "live.ditto:ditto:4.6.0-alpha.3"
Java Android 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
andSHOW
statements (#10401) - Added:
DittoTransportConfig
and all Ditto types that appear inside aDittoTransportConfig
now implementCloneable
(#10972) - Added: (Java) Synchronous (non-suspending)
DittoStore.execute(String)
andDittoStore.execute(String, Map)
convenience methods. (#10974) - Added: (Java)
DittoStore.registerObserver()
andDittoSync.registerSubscription()
method overloads removingarguments
parameter. (#10974) - Added: (Java) Read-only
queryString
andqueryArgument
fields toDittoStoreObserver
andDittoSyncSubscription
. (#10974) - Added: Accessors for
syncGroup
androutingHint
withLong
values of the underlyingUInt
for Java compatibility. (#7285) - 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: calling
startSync
, thenstopSync, and then
startSync` again no longer leads to all transports being disabled (#10972) - Fixed: if using an
OnlinePlayground
orOnlineWithAuthentication
identity withenableDittoCloudSync
set totrue
then a WebSocket connection to Ditto's cloud will now nbe preserved if/when theDitto
instance's transport config is updated. (#10972) - (Experimental) Fixed: Two peers targeting each other simultaneously in Ditto Bus or Query Overlap Groups may struggle to create a multihop connection (#8527)
Installation:
implementation "live.ditto:ditto:4.6.0-alpha.2"
Java Android 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
andSHOW
statements (#10401) - Added:
DittoTransportConfig
and all Ditto types that appear inside aDittoTransportConfig
now implementCloneable
(#10972) - Added: (Java) Synchronous (non-suspending)
DittoStore.execute(String)
andDittoStore.execute(String, Map)
convenience methods. (#10974) - Added: (Java)
DittoStore.registerObserver()
andDittoSync.registerSubscription()
method overloads removingarguments
parameter. (#10974) - Added: (Java) Read-only
queryString
andqueryArgument
fields toDittoStoreObserver
andDittoSyncSubscription
. (#10974) - Changed: Upgraded Android SDK to 34. (#8991)
- 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: calling
startSync
, thenstopSync, and then
startSync` again no longer leads to all transports being disabled (#10972) - Fixed: if using an
OnlinePlayground
orOnlineWithAuthentication
identity withenableDittoCloudSync
set totrue
then a WebSocket connection to Ditto's cloud will now nbe preserved if/when theDitto
instance's transport config is updated. (#10972) - (Experimental) Fixed: Two peers targeting each other simultaneously in Ditto Bus or Query Overlap Groups may struggle to create a multihop connection (#8527)
Installation:
implementation "live.ditto:ditto:4.6.0-alpha.1"
Java Android Version 4.5.5-alpha.2
Released: Tue May 21st 2024, 9:10 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:4.5.5-alpha.2"
Java Android Version 4.5.4
Released: Thu Feb 22nd 2024, 1:46 am
Release Notes:
- Changed: Additional logging in the rare case an exception is thrown during a live query callback. (#11644)
- Fixed: intermittent crash when syncing over Bluetooth LE GATT with "DataTooLarge" error (#9789)
Installation:
implementation "live.ditto:ditto:4.5.4"
Java Android 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:
implementation "live.ditto:ditto:4.5.4-transports-behind-core"
Java Android 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:
implementation "live.ditto:ditto:4.5.4-alpha.1-transports-behind-core"
Java Android 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.
- Fix a crash in Android bluetooth subsystem.
Installation:
implementation "live.ditto:ditto:4.5.3"
Java Android Version 4.5.2
Released: Thu Jan 25th 2024, 4:23 pm
Release Notes:
- Added:
DittoTransportConfig
and all Ditto types that appear inside aDittoTransportConfig
now implementCloneable
(#10972) - Fixed: calling
startSync
, thenstopSync
, and thenstartSync
again no longer leads to all transports being disabled (#10972) - Fixed: if using an
OnlinePlayground
orOnlineWithAuthentication
identity withenableDittoCloudSync
set totrue
then a WebSocket connection to Ditto's cloud will now be preserved if/when theDitto
instance's transport config is updated. (#10972)
Installation:
implementation "live.ditto:ditto:4.5.2"
Java Android Version 4.5.2-rc.3
Released: Wed Jan 17th 2024, 10:00 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:4.5.2-rc.3"
Java Android 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 au64
ori64
during collation. (#10940) - Fixed: Presence observers are now correctly removed when passed to
removeObserver()
. (#10183)
Installation:
implementation "live.ditto:ditto:4.5.1"
Java Android Version 4.5.0
Released: Thu Dec 7th 2023, 5:59 pm
Release Notes:
- Added: New C++ SDK for Android. (#10218)
- Added:
VERSION
static property to theDitto
class. (#10223) - Added:
DittoError.FatalError
data class. (#10536) - Added:
DittoStore.execute()
method for querying the store using the new Ditto Query Language. (#8354) - Added:
DittoSyncSubscription
class for managing sync subscriptions. (#8354, #10536) - Added:
DittoSync
class whoseregisterSubscription()
method allows for controlling sync using Ditto Query Language. (#8354, #10536) - Added:
registerObserver()
method to theDittoStore
class. (#8354, #10536) - 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.multicastEnabled
property. (#10126) - Deprecated:
DittoError.InternalErrorReason
data class. These very unlikely exceptions will be thrown asFatalError
instea. (#10536) - Changed: Failure to load the Ditto native binary now throws a
FatalError
instead of aborting the process. (#10015) - Changed:
DittoError.FailedToEncodeValue.error
has been replaced withFailedToEncodeValue.message
which is a simple string type, reducing API dependency on Jackson/FasterXML. (#10536) - 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)
- Fixed: The Android log level could not be set to a more verbose level at runtime under certain circumstances. (#10786)
- Fixed: LAN P2P transport fails to stop. (#8809)
Installation:
implementation "live.ditto:ditto:4.5.0"
Java Android 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.multicastEnabled
property. (#10126) - Added:
VERSION
property toDitto
class. (#10223) - Added:
DittoReplicationSubscription
class for managing replication subscriptions. (#8354) - Added:
DittoStore.execute()
for querying the store using the new Ditto Query Language. (#8354) - Added:
addReplicationSubscription()
andremoveReplicationSubscription()
methods toDittoStore
. (#8354) - Added:
replicationSubscriptions
property toDittoStore
. (#8354) - fixed: LAN P2P transport fails to stop (#8809)
Installation:
implementation "live.ditto:ditto:4.5.0-alpha3"
Java Android Version 4.5.0-alpha1
Released: Tue Nov 21st 2023, 7:23 am
Release Notes:
- Added: New C++ SDK for Android. (#10218)
Installation:
implementation "live.ditto:ditto:4.5.0-alpha1"
Java Android Version 4.5.0-alpha.4
Released: Thu Nov 23rd 2023, 12:25 am
Release Notes:
- Added:
VERSION
property toDitto
class. (#10223) - Added:
DittoReplicationSubscription
class for managing replication subscriptions. (#8354) - Added:
DittoStore.execute()
for querying the store using the new Ditto Query Language. (#8354) - Added:
addReplicationSubscription()
andremoveReplicationSubscription()
methods toDittoStore
. (#8354) - Added:
replicationSubscriptions
property toDittoStore
. (#8354) - 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)
- Deprecated:
DittoLanConfig.multicastEnabled
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:
implementation "live.ditto:ditto:4.5.0-alpha.4"
Java Android 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:
implementation "live.ditto:ditto:4.4.5"
Java Android 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:
implementation "live.ditto:ditto:4.4.4"
Java Android Version 4.4.3
Released: Tue Oct 24th 2023, 9:01 pm
Release Notes:
- Changed: Implemented
equals()
andhashCode()
forDittoAttachmentToken
. (#10195)
Installation:
implementation "live.ditto:ditto:4.4.3"
Java Android Version 4.4.2
Released: Fri Oct 6th 2023, 5:02 pm
Release Notes:
- Fixed:
DittoCollection.upsert()
andDittoScopedWriteTransaction.upsert()
are now annotated to indicate that they can throw aDittoError
(#10109) - 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 tobigPeerOnly
. (#10203, #10204)
Installation:
implementation "live.ditto:ditto:4.4.2"
Java Android Version 4.4.1
Released: Tue Sep 26th 2023, 11:39 pm
Release Notes:
- Improved: BLE connection reliability on Android 13. (#10005)
Installation:
implementation "live.ditto:ditto:4.4.1"
Java Android Version 4.4.0
Released: Thu Aug 31st 2023, 10:43 pm
Release Notes:
- Added: New
smallPeerInfo
property toDitto
class for access to the singleDittoSmallPeerInfo
class instance. (#9704) - Added: New
DittoSmallPeerInfoSyncScope
enum class. ThesmallPeerInfo
collection's sync scope determines which "kind" of peers it will replicate to. Defaults toBigPeerOnly
. (#9704, #9788) - Added: New
ValidationError
andInternalError
classes to help diagnose issues. (#9704) - 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 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:
implementation "live.ditto:ditto:4.4.0"
Java Android 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)
- Fixed: an issue that caused excessive multicast traffic over LAN transport. (#9398)
Installation:
implementation "live.ditto:ditto:4.3.1"
Java Android 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: Nullable
customAuthURL
parameter to theDittoIdentity.OnlinePlayground
class. (#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:
implementation "live.ditto:ditto:4.3.0"
Java Android Version 4.2.3
Released: Wed Jul 5th 2023, 10:32 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:4.2.3"
Java Android 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)
- Changed: Improved reliability of LAN sync when using large numbers of devices. (#8901)
- 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)
Installation:
implementation "live.ditto:ditto:4.2.2"
Java Android 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:
implementation "live.ditto:ditto:4.2.1"
Java Android 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 extraString?
argument (as compared tologinWithToken
) that will be non-nil
if the auth webhook provided anyclientInfo
JSON value. TheString
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)
- Changed: Improved support for IPv6 Wi-Fi Aware connections (#8518)
- Fixed: Ditto store errors now include more details instead of just an object description. (#8730)
- Fixed: WiFi-Aware P2P connections are now more stable when more than two peers are nearby. (#8598)
- Fixed: Exception TooManyRequests when using WiFi-Aware transport is now handled correctly by the SDK. (#8598)
Installation:
implementation "live.ditto:ditto:4.2.0"
Java Android 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.
- Fixed: Crash when logging out.
Installation:
implementation "live.ditto:ditto:4.1.1"
Java Android 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:
DittoSyncPermissions.context
is now ptional for compatibility with Compose apps, which should leverage the Accompanist library for doing permissions check & request - 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: Improved stability when transferring large updates over Bluetooth LE
- 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:
implementation "live.ditto:ditto:4.1.0"
Java Android 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:
implementation "live.ditto:ditto:4.0.3-alpha.linux-ble-fixes-2"
Java Android 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:
implementation "live.ditto:ditto:4.0.3-alpha.linux-ble-fixes"
Java Android 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:
implementation "live.ditto:ditto:4.0.2"
Java Android 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:
implementation "live.ditto:ditto:4.0.1"
Java Android 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 theDitto
object or the a peer has synced with another peer that has calleddisableSyncWithV3
, or they have synced with another peer that has calleddisableSyncWithV3
, 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: potential crash when stopping and restarting WiFi transport very rapidly
- Fixed: attempt to sync with the cloud before the user requests it with
startSync()
- Removed: made a number of erroneously public constants and types internal or private.
Installation:
implementation "live.ditto:ditto:4.0.0"
Java Android 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: AddWins removes will now be used if
disableSyncWithV3
has been called on theDitto
object or the a peer has synced with another peer that has calleddisableSyncWithV3
, or they have synced with another peer that has calleddisableSyncWithV3
, etc.
Installation:
implementation "live.ditto:ditto:4.0.0-beta1"
Java Android Version 4.0.0-alpha2
Released: Mon Jan 16th 2023, 10:16 pm
Release Notes:
- Added:
disableSyncWithV3
functionality toDitto
. 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 callingremove()
. Any other device running v4 of the SDK that syncs with a device that has calleddisableSyncWithV3
(or has themselves synced with another device that has calleddisableSyncWithV3
, etc - if any chain of syncing exists that involves a device that has calleddisableSyncWithV3
) will also no longer be able to sync with v3 peers and will perform AddWins removes when callingremove()
.
Installation:
implementation "live.ditto:ditto:4.0.0-alpha2"
Java Android 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:
implementation "live.ditto:ditto:3.0.11"
Java Android 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:
implementation "live.ditto:ditto:3.0.10"
Java Android Version 3.0.9
Released: Wed Jun 14th 2023, 3:23 pm
Release Notes:
- Fixed: Ditto store errors now include more details instead of just an object description.
Installation:
implementation "live.ditto:ditto:3.0.9"
Java Android Version 3.0.9-alpha1
Released: Mon May 22nd 2023, 11:34 pm
Release Notes:
- Fixed: Ditto store errors now include more details instead of just an object description.
Installation:
implementation "live.ditto:ditto:3.0.9-alpha1"
Java Android Version 3.0.8
Released: Fri May 19th 2023, 6:33 am
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:3.0.8"
Java Android 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:
implementation "live.ditto:ditto:3.0.7"
Java Android Version 3.0.6
Released: Thu Mar 16th 2023, 1:00 am
Release Notes:
- 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:
implementation "live.ditto:ditto:3.0.6"
Java Android 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
Installation:
implementation "live.ditto:ditto:3.0.5"
Java Android Version 3.0.4
Released: Sat Jan 28th 2023, 12:10 am
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:3.0.4"
Java Android 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:
implementation "live.ditto:ditto:3.0.3"
Java Android 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:
implementation "live.ditto:ditto:3.0.3-alpha2"
Java Android Version 3.0.2
Released: Fri Jan 20th 2023, 9:20 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:3.0.2"
Java Android 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 toDitto
class for access to aDiskUsage
instance. -
Added:
DiskUsageItem
class which contains data about the space used by files in the Ditto working directory. -
Added:
routingHint
property toDittoGlobalConfig
class. -
Added:
NO_PREFERRED_ROUTE_HINT
constant, used internally byDittoGlobalConfig
if no routing hint is specified. -
Changed: better readability of data sizes and durations in logs.
Installation:
implementation "live.ditto:ditto:3.0.1"
Java Android 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. - Renamed:
siteID
property ->siteId
inDitto
class - Renamed:
DittoDocumentID
->DittoDocumentId
- Renamed:
DittoDocumentIDPath
->DittoDocumentIdPath
- Renamed:
appID
property ->appId
inDittoIdentity
nested classes - Renamed:
siteID
property ->siteId
inDittoIdentity
nested classes - Renamed:
DittoPendingIDSpecificOperation
->DittoPendingIdSpecificOperation
- Renamed:
docID
propertydocId
inDittoPendingIdSpecificOperation
class - Renamed:
DittoWriteTransactionPendingIDSpecificOperation
->DittoWriteTransactionPendingIdSpecificOperation
- Renamed:
docID
property ->docId
inDittoWriteTransactionPendingIdSpecificOperation
class - Renamed:
NoIDPresentInDocument
->NoIdPresentInDocument
inDittoError.StoreErrorReason
class - Renamed:
InvalidLiveQueryID
->InvalidLiveQueryId
inDittoError.StoreErrorReason
class - Renamed:
findByID()
methodfindById()
inDittoCollection
class - Renamed:
docID
property ->docId
inDittoUpdateResult
nested classes - Renamed:
docID
property ->docId
inDittoMutableDocumentPath
class - Added:
close()
method toDittoLiveQuery
, addingCloseable
conformance. - Added:
close()
method toDittoAttachmentFetcher
, addingCloseable
conformance. - Deprecated:
DittoLiveQuery.stop()
, please use the newly addedDittoLiveQuery.close()
instead. - Deprecated:
DittoAttachmentFetcher.stop()
, Please use the newly addedDittoAttachmentFetcher.close()
instead. - Fixed: The
Closeable
returned fromobserveStatus
is now held weakly allowing it to be garbage-collected when the reference goes out of scope. - Removed:
observe()
andobserveWithNextSignal()
methods ofDittoPendingCollectionsOperation
,DittoPendingCursorOperation
, andDittoPendingIdSpecificOperation
. Please use the correspondingobserveLocal()
andobserveLocalWithNextSignal()
variants along with a separate call tosubscribe()
instead. See https://docs.ditto.live/android/common/concepts/syncing-data#subscribe - Deprecated:
DittoRemotePeer
,DittoRemotePeerV2
,DittoPeerV2Parser
,DittoPeersObserverV1
,DittoPeersObserverV2
,DittoPeersObserverV1Callback
, andDittoPeersObserverV2Callback
types. - Changed: performance improvements.
- Added:
disableSyncWithV2
method toDitto
. 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.
- Fixed: WiFi Aware stability when WiFi is turned on/off.
- Improved: log increased detail to help debug blocked write transactions.
Installation:
implementation "live.ditto:ditto:3.0.0"
Java Android Version 3.0.0-alpha3
Released: Mon Dec 12th 2022, 1:19 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:3.0.0-alpha3"
Java Android Version 3.0.0-alpha2
Released: Tue Dec 6th 2022, 4:01 pm
Release Notes:
- Fixed: WiFi Aware stability when WiFi is turned on/off.
- Improved: reliability if app crashes occur while persisting authentication data.
Installation:
implementation "live.ditto:ditto:3.0.0-alpha2"
Java Android 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. - Renamed:
siteID
property ->siteId
inDitto
class - Renamed:
DittoDocumentID
->DittoDocumentId
- Renamed:
DittoDocumentIDPath
->DittoDocumentIdPath
- Renamed:
appID
property ->appId
inDittoIdentity
nested classes - Renamed:
siteID
property ->siteId
inDittoIdentity
nested classes - Renamed:
DittoPendingIDSpecificOperation
->DittoPendingIdSpecificOperation
- Renamed:
docID
propertydocId
inDittoPendingIdSpecificOperation
class - Renamed:
DittoWriteTransactionPendingIDSpecificOperation
->DittoWriteTransactionPendingIdSpecificOperation
- Renamed:
docID
property ->docId
inDittoWriteTransactionPendingIdSpecificOperation
class - Renamed:
NoIDPresentInDocument
->NoIdPresentInDocument
inDittoError.StoreErrorReason
class - Renamed:
InvalidLiveQueryID
->InvalidLiveQueryId
inDittoError.StoreErrorReason
class - Renamed:
findByID()
methodfindById()
inDittoCollection
class - Renamed:
docID
property ->docId
inDittoUpdateResult
nested classes - Renamed:
docID
property ->docId
inDittoMutableDocumentPath
class - Added:
close()
method toDittoLiveQuery
, addingCloseable
conformance. - Added:
close()
method toDittoAttachmentFetcher
, addingCloseable
conformance. - Deprecated:
DittoLiveQuery.stop()
, please use the newly addedDittoLiveQuery.close()
instead. - Deprecated:
DittoAttachmentFetcher.stop()
, Please use the newly addedDittoAttachmentFetcher.close()
instead. - Fixed: The
Closeable
returned fromobserveStatus
is now held weakly allowing it to be garbage-collected when the reference goes out of scope. - Removed:
observe()
andobserveWithNextSignal()
methods ofDittoPendingCollectionsOperation
,DittoPendingCursorOperation
, andDittoPendingIdSpecificOperation
. Please use the correspondingobserveLocal()
andobserveLocalWithNextSignal()
variants along with a separate call tosubscribe()
instead. See https://docs.ditto.live/android/common/concepts/syncing-data#subscribe - Deprecated:
DittoRemotePeer
,DittoRemotePeerV2
,DittoPeerV2Parser
,DittoPeersObserverV1
,DittoPeersObserverV2
,DittoPeersObserverV1Callback
, andDittoPeersObserverV2Callback
types. - Changed: performance improvements.
- Added
disableSyncWithV2
method toDitto
. 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:
implementation "live.ditto:ditto:3.0.0-alpha1"
Java Android Version 2.1.0
Released: Wed Nov 2nd 2022, 11:51 pm
Release Notes:
- Added:
appId
andpersistenceDirectory
properties toDitto
class. - Deprecated:
observe()
andobserveWithNextSignal()
methods ofDittoPendingCollectionsOperation
,DittoPendingCursorOperation
andDittoPendingIDSpecificOperation
. Please use the correspondingobserveLocal()
andobserveLocalWithNextSignal()
variants along with a separate call tosubscribe()
instead. https://docs.ditto.live/android/common/concepts/syncing-data#subscribe
Installation:
implementation "live.ditto:ditto:2.1.0"
Java Android Version 2.0.8
Released: Fri Oct 28th 2022, 12:14 am
Release Notes:
- Added:
close()
method toDitto
class so that we can shut an instance down before recreating it - Added: Updated permissions to request
NEARBY_WIFI_DEVICES
on Android 13 - Changed: Improved error messages if concurrent Ditto instances attempt to use the same persistence directory
Installation:
implementation "live.ditto:ditto:2.0.8"
Java Android 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
- Fixed: Reduced the amount of disk space used by sync metadata by up to 50% in some cases
Installation:
implementation "live.ditto:ditto:2.0.7"
Java Android 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
Installation:
implementation "live.ditto:ditto:2.0.6"
Java Android Version 2.0.5
Released: Thu Sep 8th 2022, 10:20 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:2.0.5"
Java Android Version 2.0.4
Released: Thu Sep 1st 2022, 6:31 pm
Release Notes:
- Fixed: prevent a crash on devices where Wifi Aware is not available.
Installation:
implementation "live.ditto:ditto:2.0.4"
Java Android Version 2.0.3
Released: Wed Aug 31st 2022, 5:20 pm
Release Notes:
- Changed: presence data is no longer synced with the big peer.
Installation:
implementation "live.ditto:ditto:2.0.3"
Java Android Version 2.0.2
Released: Sat Aug 27th 2022, 1:58 am
Release Notes:
- Added support for Wi-Fi Aware
- Changed: performing an
.exec()
call, outside the scope of astore.write { }
block, no longer tries to obtain a write transaction and instead uses a read transaction.
Installation:
implementation "live.ditto:ditto:2.0.2"
Java Android Version 2.0.1
Released: Sun Aug 14th 2022, 4:57 am
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:2.0.1"
Java Android 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 version1.1.8
of the SDK. - Added: support for explicitly typing values as registers. This is via 2 new types:
DittoRegister
andDittoMutableRegister
, and newregisterValue
value accessors added toDittoDocumentPath
andDittoMutableDocumentPath
. - Added:
DittoCounter
andDittoMutableCounter
types resembling the CRDT type underneath, which replace the old counter mechanics. A newcounter
value accessor has been added toDittoDocumentPath
andDittoMutableDocumentPath
, which returns aDittoCounter
or aDittoMutableCounter
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
andDittoMutableRGA
in v2, and newrga
value accessors added toDittoDocumentPath
andDittoMutableDocumentPath
. 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. - Changed: renamed identity
OnlinePlaygroundV2
to justOnlinePlayground
, which replaces the previously deprecatedOnlinePlayground
. - Changed: renamed
Ditto
methodtryStartSync()
to juststartSync()
, which replaces the previously deprecatedstartSync()
. - Removed: deprecated
DittoRemotePeerV2
propertymeshRole
, pleasequeryOverlapGroup
instead. - Removed: deprecated type
DittoPeersObserver
, please useDittoObserver
instead. - Removed: deprecated
DittoDocumentID
methodtoNative()
, please use propertyvalue
instead. - Removed: deprecated
DittoScopedWriteTransaction
methodfind(query:)
, please usefind()
instead. - Removed: deprecated
DittoScopedWriteTransaction
methodsinsert()
andinsertWithStrategy()
, please useupsert()
andupsertWithStrategy()
instead. - Removed: deprecated
DittoCollection
methodsinsert()
andinsertWithStrategy()
, please useupsert()
andupsertWithStrategy()
instead. - Removed: deprecated identities
Development
andOnline
, please use the available ones instead. - Removed: deprecated
Ditto
methodssetAccessLicense()
andsetLicenseToken()
, please usesetOfflineOnlyLicenseToken()
instead. - Removed: deprecated
DittoAuthenticator
methodisAuthenticated()
and propertyuserID
, please usestatus
instead. - Changed: all Ditto error cases are now capitalized.
- Changed:
failedToInitialiseDittoDirectory
is now namedFailedToInitializeDittoDirectory
- Removed:
DittoWriteStrategy.Overwrite
write strategy.
Installation:
implementation "live.ditto:ditto:2.0.0"
Java Android 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:
implementation "live.ditto:ditto:2.0.0-alpha1"
Java Android Version 1.1.11
Released: Fri Sep 9th 2022, 11:11 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:1.1.11"
Java Android Version 1.1.10
Released: Thu Jul 7th 2022, 7:53 pm
Release Notes:
- Changed: reduced total memory overhead during sync.
Installation:
implementation "live.ditto:ditto:1.1.10"
Java Android 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.
Installation:
implementation "live.ditto:ditto:1.1.9"
Java Android Version 1.1.9-alpha1
Released: Thu Jun 9th 2022, 3:12 am
Release Notes:
- Added: deviceName property to Ditto class #5692
Installation:
implementation "live.ditto:ditto:1.1.9-alpha1"
Java Android 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: crash when starting LAN transport.
-
Fixed: crash when Ditto would try to stop BLE scanning.
Installation:
implementation "live.ditto:ditto:1.1.8"
Java Android Version 1.1.7
Released: Fri May 13th 2022, 2:18 pm
Release Notes:
Synchronized version bump release.
Installation:
implementation "live.ditto:ditto:1.1.7"
Java Android 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. - Changed: improvements to Ditto mesh performance via fastest-available-transport prioritization.
Installation:
implementation "live.ditto:ditto:1.1.6"
Java Android Version 1.1.5
Released: Fri Apr 8th 2022, 8:00 am
Release Notes:
- Fixed: Some Android phones may not connect on Bluetooth - regression in 1.1.4
Installation:
implementation "live.ditto:ditto:1.1.5"
Java Android Version 1.1.4
Released: Fri Apr 8th 2022, 6:25 am
Release Notes:
- Changed: improved replication performance in some scenarios.
Installation:
implementation "live.ditto:ditto:1.1.4"
Java Android Version 1.1.3
Released: Tue Mar 22nd 2022, 10:13 am
Release Notes:
-
Added:
OnlinePlaygroundV2
identity allowing for basic authentication for playgrounds -
Deprecated:
OnlinePlayground
identity, use newly addedOnlinePlaygroundV2
instead -
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:
implementation "live.ditto:ditto:1.1.3"
Java Android Version 1.1.2
Released: Mon Feb 28th 2022, 2:36 pm
Release Notes:
- Added: method
setOfflineOnlyLicenseToken()
to classDitto
as replacement for now deprecatedsetLicenseToken()
. - Deprecated: method
setLicenseToken()
of classDitto
, please use newly addedsetOfflineOnlyLicenseToken()
instead.
Installation:
implementation "live.ditto:ditto:1.1.2"
Java Android 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: Experimental mesh roles API
- Added:
DittoExperimental
class - Added:
setMeshRole()
method toDittoExperimental
class - Added:
setPriorityForMeshRole()
method toDittoExperimental
class
- Added:
Installation:
implementation "live.ditto:ditto:1.1.1"
Java Android 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 classDitto
. - Added: method
logout()
to classDittoAuthenticator
. - Added: set of APIs to observe authentication status (see API reference for
DittoAuthenticator
andDittoAuthenticationCallback
). - Added: method
upsert()
to classesDittoCollection
andDittoScopedWriteTransaction
(as a replacement forinsert()
& friends) which by default merges the newly inserted document if one with the same ID already exists. - Deprecated: properties
isAuthenticated
anduserId
of classDittoAuthenticator
in favor of newly introduced propertystatus
. - Deprecated: methods
insert()
& frinds of classesDittoCollection
andDittoScopedWriteTransaction
in favor of newly introducedupsert()
.
Installation:
implementation "live.ditto:ditto:1.1.0"
Java Android 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).
- Fixed: crash when calling
tryStartSync()
due to new Bluetooth rules and permissions in Android 12. - Fixed: "Receiver not registered" exception occuring due to a race condition in Bluetooth registration.
Installation:
implementation "live.ditto:ditto:1.0.19"
Java Android Version 1.0.18
Released: Mon Dec 20th 2021, 1:22 pm
Release Notes:
- Reduced the opportunity for rapid memory growth in some scenarios.
Installation:
implementation "live.ditto:ditto:1.0.18"
Java Android Version 1.0.18-alpha2
Released: Tue Dec 14th 2021, 4:32 pm
Release Notes:
- Improve attachment sync performance.
Installation:
implementation "live.ditto:ditto:1.0.18-alpha2"
Java Android 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.
Installation:
implementation "live.ditto:ditto:1.0.18-alpha1"
Java Android 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.
Installation:
implementation "live.ditto:ditto:1.0.17"
Java Android 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:
implementation "live.ditto:ditto:1.0.16"
Java Android 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 accompanyingfind
call doesn't have the key specified in thesort
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 thesort
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 thesort
key will appear first in the set of documents, before all of the documents that do contain thesort
key. - Add versions of
loginWithToken
andloginWithCredentials
that can be used with Java that don't require returningnull
at the end of the lambda. - Remove the empty default implementations of
authenticationRequired
andauthenticationExpiringSoon
onDittoAuthenticationCallback
.
Installation:
implementation "live.ditto:ditto:1.0.15"
Java Android Version 1.0.15-alpha1
Released: Wed Oct 27th 2021, 10:33 am
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:1.0.15-alpha1"
Java Android 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 newOnlineWithAuthentication
identity. - Deprecate the
Development
identity in favor of the newOfflinePlayground
identity. - Make outgoing BLE connections and MTU customisable.
Installation:
implementation "live.ditto:ditto:1.0.14"
Java Android Version 1.0.13
Released: Mon Oct 18th 2021, 5:02 pm
Release Notes:
- Changed
DittoIdentity
's propertyappID
to be of typeString
instead ofUUID
.
Installation:
implementation "live.ditto:ditto:1.0.13"
Java Android Version 1.0.12
Released: Mon Oct 18th 2021, 10:00 am
Release Notes:
- Added
global
section toTransportConfig
allowing P2P sync to be contained within certain groups of devices by putting them in the same "sync group".
Installation:
implementation "live.ditto:ditto:1.0.12"
Java Android Version 1.0.11
Released: Fri Oct 8th 2021, 5:09 am
Release Notes:
- Added
DittoWriteStrategy
enum. - Added method
insertWithStrategy()
toDittoCollection
, allowing to specify the behavior when inserting a document with an ID that matches the ID of a document already in the store. - Added
isAuthenticated
method anduserID
property toDittoAuthenticator
.
Installation:
implementation "live.ditto:ditto:1.0.11"
Java Android 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:
implementation "live.ditto:ditto:1.0.10"
Java Android 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 ofTransportConfig
. - Added new identity types:
Online
andOnlinePlayground.
AnOnline
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. AnOnlinePlayground
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 toManual
. - Added a
DittoAuthenticator
type, accessible via theDitto
object, which allows you to perform login operations when you're using anOnline
identity. - Similarly, added a
DittoAuthenticationCallback
type that needs to be used when using anOnline
identity. - Report an error if more than one Ditto instance is started using the same working directory.
Installation:
implementation "live.ditto:ditto:1.0.9"
Java Android Version 1.0.8
Released: Mon Aug 2nd 2021, 4:19 pm
Release Notes:
- Improved debug logging.
Installation:
implementation "live.ditto:ditto:1.0.8"
Java Android 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
Installation:
implementation "live.ditto:ditto:1.0.7"
Java Android Version 1.0.6
Released: Thu Jul 8th 2021, 6:22 pm
Release Notes:
- Add
value
accessor onDittoDocumentPath
,DittoMutableDocumentPath
, andDittoDocumentIDPath
types to allow accessing a nested value in a document/ID as anAny?
.
Installation:
implementation "live.ditto:ditto:1.0.6"
Java Android 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:
val liveQuery = collection.findAll().observe() { docs, event -> 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 aDitto
instance will no longer throw an error if you have not yet activated yourDitto
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 yourDitto
instance hasn't yet been activated via a successful call tosetLicenseToken
.
Installation:
implementation "live.ditto:ditto:1.0.5"
Java Android Version 1.0.4
Released: Fri Jun 11th 2021, 10:36 pm
Release Notes:
- Bluetooth sync performance improvements with L2CAP support added, which will be used when available.
Installation:
implementation "live.ditto:ditto:1.0.4"
Java Android Version 1.0.3
Released: Thu Jun 10th 2021, 4:34 pm
Release Notes:
- Bluetooth sync performance improvements.
- Enable configuration of advertisement power and frequency.
Installation:
implementation "live.ditto:ditto:1.0.3"
Java Android Version 1.0.2
Released: Thu May 20th 2021, 9:39 pm
Release Notes:
- Add support for subscripting
DittoDocumentID
s in order to get nested values when a document ID is based on an array or a map. - Deprecated
.toNative()
onDittoDocumentID
. You should use.value
instead.
Installation:
implementation "live.ditto:ditto:1.0.2"
Java Android 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:
implementation "live.ditto:ditto:1.0.1"
Java Android 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
orinsert
calls you now need to provide aDittoDocumentID
object rather than a string. Similarly, when you access a document's ID it will now return aDittoDocumentID
object instead of a string. - The
start()
andstop()
functions on theDitto
object have been renamed tostartSync()
andstopSync()
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 thesetTransportConfig
function on theDitto
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 yourstart()
call tostartSync()
.
- 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
- Lots of performance improvements and bug fixes.
Installation:
implementation "live.ditto:ditto:1.0.0"
Java Android 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:
implementation "live.ditto:ditto:1.0.0-alpha9"
Java Android 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.
Installation:
implementation "live.ditto:ditto:1.0.0-alpha8"
Java Android Version 1.0.0-alpha7
Released: Mon Jan 4th 2021, 11:12 am
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha7"
Java Android Version 1.0.0-alpha6
Released: Tue Dec 15th 2020, 1:00 am
Release Notes:
- Performance and stability improvements.
- Fix default data insertion such that merge semantics are consistent and duplicate data isn't created.
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha6"
Java Android Version 1.0.0-alpha5
Released: Mon Nov 23rd 2020, 4:43 am
Release Notes:
- Added a new intermediate security identity for a shared secret key. This is a simplistic authentication mode which is normally only suitable for private apps where all the users and devices are trusted.
- Fixed an issue that prevented Counter values from syncing correctly
- Renamed DittoAttachmentStatus to DittoAttachmentFetchEvent and subsequently Incomplete status to Progre ss.
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha5"
Java Android Version 1.0.0-alpha4
Released: Mon Nov 9th 2020, 6:15 pm
Release Notes:
- Fix issue where attachments could stop being fetched incorrectly.
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha4"
Java Android Version 1.0.0-alpha3
Released: Wed Nov 4th 2020, 7:46 am
Release Notes:
- Added new observeWithNextSignal API to allow the application to control the delivery of the next observe callback ev ent.
- Fixed several issues related to attachments that could delay sync.
- Simplified log statements
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha3"
Java Android Version 1.0.0-alpha2
Released: Fri Oct 9th 2020, 9:04 pm
Release Notes:
- Decreases the file size of the AAR
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha2"
Java Android Version 1.0.0-alpha1
Released: Thu Oct 8th 2020, 9:23 pm
Release Notes:
- Note that this is a release with breaking changes and clients using releases in the 1.0 series will not be able to communicate with clients running a version that is anything less than 1.0. This should hopefully not be an issue because this release of the SDK has changed the name to be DittoSyncKit as opposed to DittoKit.
- Lots of performance improvements and some bug fixes.
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha1"
Java Android Version 0.4.0-alpha6
Released: Fri Sep 25th 2020, 3:16 am
Release Notes:
- Fixed an issue where extensive writes can cause a session time-out
Installation:
implementation "live.ditto:dittokit:0.4.0-alpha6"
Java Android Version 0.4.0-alpha5
Released: Wed Sep 23rd 2020, 9:10 pm
Release Notes:
- Fixed finalizer logic with the following types:
DittoAttachment
DittoAttachmentFetcher
DittoKit
DittoLiveQuery
DittoSubscription
Installation:
implementation "live.ditto:dittokit:0.4.0-alpha5"
Java Android Version 0.4.0-alpha4
Released: Fri Sep 18th 2020, 2:12 am
Release Notes:
- Fixes an issue where deletes might not propagate correctly in a multi-hop mesh
Installation:
implementation "live.ditto:dittokit:0.4.0-alpha4"
Java Android Version 0.4.0-alpha3
Released: Fri Sep 11th 2020, 9:34 am
Release Notes:
- Fixed an error where presence data was failing to be deserialized properly.
Installation:
implementation "live.ditto:dittokit:0.4.0-alpha3"
Java Android Version 0.4.0-alpha2
Released: Thu Sep 10th 2020, 8:16 am
Release Notes:
From the 0.4.0-alpha1 release notes:
- Note that this is a release with breaking changes, even just in terms of clients running 0.4.0 not being able to communicate with clients running 0.3.X releases.
- Fixes for memory leaks.
- Performance improvements.
Installation:
implementation "live.ditto:dittokit:0.4.0-alpha2"
Java Android Version 0.4.0-alpha1
Released: Wed Sep 9th 2020, 9:42 pm
Release Notes:
- Note that this is a release with breaking changes, even just in terms of clients running 0.4.0 not being able to communicate with clients running 0.3.X releases.
- Fixes for memory leaks.
- Performance improvements.
Installation:
implementation "live.ditto:dittokit:0.4.0-alpha1"
Java Android Version 0.3.5
Released: Fri Sep 4th 2020, 8:04 pm
Release Notes:
- Fixed an issue where inserting data as default data (setting the
isDefault
parameter to true) could lead to data that would not merge as expected.
Installation:
implementation "live.ditto:dittokit:0.3.5"
Java Android Version 0.3.4
Released: Mon Aug 10th 2020, 3:13 pm
Release Notes:
- Fixed a bug with query compilation where integer literals in the query would lead to a query compilation failure.
Installation:
implementation "live.ditto:dittokit:0.3.4"
Java Android Version 0.3.3
Released: Fri Aug 7th 2020, 3:31 am
Release Notes:
- Android-specific performance improvements for large collections
- Java: DittoDocument's "value" field has been replaced with "getValue()"
Installation:
implementation "live.ditto:dittokit:0.3.3"
Java Android Version 0.3.2
Released: Thu Jul 30th 2020, 5:32 am
Release Notes:
- Fixes bug where Android phones sometimes do not activate Bluetooth if it is enabled after launching the app
Installation:
implementation "live.ditto:dittokit:0.3.2"
Java Android Version 0.3.1
Released: Thu Jul 16th 2020, 1:36 am
Release Notes:
- Added a new LAN transport mode WiFiFixedPort to listen for connections on a known port.
- Android phones using the Bluetooth transport will no longer change their device name.
- DittoKit has a new sdkVersion property describing which build of DittoKit is installed. Please include this information in support requests.
- Fixed bug where an attachment transfer may not resume after being interrupted.
- Fixed bug where a long-lasting Bluetooth connection may spontaneously disconnect and reconnect.
- Improvements to reconnection speed.
Installation:
implementation "live.ditto:dittokit:0.3.1"
Java Android Version 0.3.0
Released: Thu Jun 4th 2020, 10:39 am
Release Notes:
- DittoKit 0.3 includes incompatible changes to data storage and networking - please uninstall all apps based on DittoKit 0.2 first
- Support for attaching large binary files to documents and syncing them on demand
- When creating documents you can no longer specify the id by providing an
_id
key. Instead you must specify an id as an extra argument to theinsert
function, if you want to explicitly set a document’s id - A document’s id property is now
id
rather than_id
- The parameters for a live query callback have changed
- The sort order for a query is now controlled by an ascending/descending enum
- Fixed crash when inserting large amounts of data into a document
- Faster sync performance
- Ability to connect to a peer at a known address using the Server transport type
Installation:
implementation "live.ditto:dittokit:0.3.0"
Java Android Version 0.2.3
Released: Tue May 5th 2020, 9:42 am
Release Notes:
- Fixed an issue where DittoKit would not work in 32-bit contexts.
Installation:
implementation "live.ditto:dittokit:0.2.3"
Java Android Version 0.2.2
Released: Fri Feb 14th 2020, 12:11 am
Release Notes:
- Reduced minimum Android SDK API level from 26 to 25 to support Android 7.1 devices.
Installation:
implementation "live.ditto:dittokit:0.2.2"
Java Android Version 0.2.1
Released: Thu Jan 9th 2020, 6:28 am
Release Notes:
- Fixes a crash that can occur when calling stop().
Installation:
implementation "live.ditto:dittokit:0.2.1"
Java Android Version 0.2.0
Released: Tue Dec 17th 2019, 4:49 pm
Release Notes:
- Improved query results performance
- Fixed two bugs that could lead to a crash
- Many networking improvements to speed up sync on iOS and Android
Note: SyncKit 0.2 is incompatible with version 0.1.
Installation:
implementation "live.ditto:dittokit:0.2.0"
Java Android Version 0.1.3
Released: Tue Oct 8th 2019, 12:37 pm
Release Notes:
- Improved handling of retrieving numeric fields from documents
- Fixes a bug where observe would not create a subscription
Installation:
implementation "live.ditto:dittokit:0.1.3"
Kotlin Android Version 4.5.0-alpha1
Released: Tue Nov 21st 2023, 7:05 am
Release Notes:
- Added: New C++ SDK for Android. (#10218)
Installation:
implementation "live.ditto:dittocpp:4.5.0-alpha1"
Kotlin Android 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: crash in WiFi Aware registering network publisher callback (#14013)
Installation:
implementation "live.ditto:ditto:4.8.1-rc.1"
Kotlin Android Version 4.8.0
Released: Thu Aug 22nd 2024, 12:29 pm
Release Notes:
- Fix: crash when multiple threads calling
stopSync()
(#11554) - Added: method
exportToFile()
toDittoLogger
, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11961) - Added: synchronous method
exportToFileBlocking()
toDittoLogger
for Java callers. (#11961) - Fixed: crash when SDK observes certain malformed mDNS traffic (#12396)
- Change: Android Wifi Aware leader election to avoid duplicate createNetwork attempts (#12458)
- Removed:
delete()
,swigReleaseOwnership()
andswigTakeOwnership()
methods fromDittoLogger
. These are internal memory management APIs that can cause memory leaks or crashes if used. (#12617) - Added: new getter and setter for
Presence.connectionRequestHandler
which take aDittoConnectionRequestHandlerCallback
, making the API much easier to call from Java. (#12770) - Added: Properties
peerKeyString1
andpeerKeyString2
onDittoConnection
replacing the now deprecated propertiespeer1
andpeer2
. (#12799) - Deprecated: Properties
peer1
andpeer2
onDittoConnection
. Please usepeerKeyString1
andpeerKeyString2
instead. (#12799) - Changed: improve Android WifiAware stability by actively terminate/resume on application background/foreground (#12804)
- Changed: improve staleness detection in Android Wifi Aware (#12866)
- Changed: Documentation for
startSync()
anddisableSyncWithV3()
to include a recommendation for performance improvement. (#13098) - Changed: API docs no longer include
protected
members. Most Ditto classes are final and cannot be extended, so these APIs are not useful. (#13200) - Deprecated: property
queryOverlapGroup
ofDittoPeer
andDittoRemotePeerV2
, always returning0
going forward. (#13215) - Removed: experimental method
setQueryOverlapGroup()
fromDittoExperimental
. (#13215) - Removed: experimental method
setPriorityForQueryOverlapGroup()
fromDittoExperimental
. (#13215) - Fixed: Intermittent crash when finalizing a legacy
DittoSubscription
that contained asort()
clause. (#13394) - Changed: Documentation for property
peerMetadata
onDittoPeer
to add information about how the property behaves over the lifecycle of theDittoPresenceGraph
. (#13479) - Fixed:
ditto.close()
not waiting for an outstandingDittoAttachmentFetcher
atomic callback invocation to complete (#13553) - Linux/Android: Increased mDNS multicast TTL from 1 to 255 to allow for cross-VLAN announcements (#13590)
- 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) - Added: optional hint parameter to
upsert()
ofDittoCollection
andDittoScopedWriteTransaction
. (#7110) - Changed: Slow or blocked write transactions now log hints showing the waiting and blocking transactions. (#7110)
- 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
andchar_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 ofWarning
. (#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:
implementation "live.ditto:ditto:4.8.0"
Kotlin Android 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
andchar_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 ofWarning
. (#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)
- Fix: crash when multiple threads calling
stopSync()
(#11554) - Added: method
exportToFile()
toDittoLogger
, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11961) - Added: synchronous method
exportToFileBlocking()
toDittoLogger
for Java callers. (#11961) - Fixed: crash when SDK observes certain malformed mDNS traffic (#12396)
- Change: Android Wifi Aware leader election to avoid duplicate createNetwork attempts (#12458)
- Removed:
delete()
,swigReleaseOwnership()
andswigTakeOwnership()
methods fromDittoLogger
. These are internal memory management APIs that can cause memory leaks or crashes if used. (#12617) - Added: new getter and setter for
Presence.connectionRequestHandler
which take aDittoConnectionRequestHandlerCallback
, making the API much easier to call from Java. (#12770) - Added: Properties
peerKeyString1
andpeerKeyString2
onDittoConnection
replacing the now deprecated propertiespeer1
andpeer2
. (#12799) - Deprecated: Properties
peer1
andpeer2
onDittoConnection
. Please usepeerKeyString1
andpeerKeyString2
instead. (#12799) - Changed: improve Android WifiAware stability by actively terminate/resume on application background/foreground (#12804)
- Changed: improve staleness detection in Android Wifi Aware (#12866)
- Changed: Documentation for
startSync()
anddisableSyncWithV3()
to include a recommendation for performance improvement. (#13098) - Changed: API docs no longer include
protected
members. Most Ditto classes are final and cannot be extended, so these APIs are not useful. (#13200) - Deprecated: property
queryOverlapGroup
ofDittoPeer
andDittoRemotePeerV2
, always returning0
going forward. (#13215) - Removed: experimental method
setQueryOverlapGroup()
fromDittoExperimental
. (#13215) - Removed: experimental method
setPriorityForQueryOverlapGroup()
fromDittoExperimental
. (#13215) - Fixed: Intermittent crash when finalizing a legacy
DittoSubscription
that contained asort()
clause. (#13394) - Changed: Documentation for property
peerMetadata
onDittoPeer
to add information about how the property behaves over the lifecycle of theDittoPresenceGraph
. (#13479) - Fixed:
ditto.close()
not waiting for an outstandingDittoAttachmentFetcher
atomic callback invocation to complete (#13553) - Linux/Android: Increased mDNS multicast TTL from 1 to 255 to allow for cross-VLAN announcements (#13590)
- 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) - Added: optional hint parameter to
upsert()
ofDittoCollection
andDittoScopedWriteTransaction
. (#7110) - Changed: Slow or blocked write transactions now log hints showing the waiting and blocking transactions. (#7110)
Installation:
implementation "live.ditto:ditto:4.8.0-rc.2"
Kotlin Android 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:
implementation "live.ditto:ditto:4.7.5-rc.1"
Kotlin Android 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) - Fixed: A rare scenario that caused Ditto to reconnect peers under high load (#13849)
Installation:
implementation "live.ditto:ditto:4.7.4"
Kotlin Android 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)
- Changed: Reduced Bluetooth warn log noise (#12674)
- Changed: handle reverse DNS lookup queries in Android mdns to avoid mdns failing to connect in specific network configs (#13000)
- 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: WifiAware is now available on API level 32 (#12631)
- Fixed: missing version metadata is now correctly included in the string returned from
Ditto.sdkVersion
. (#12843) - Fixed: SDK language is now reported as "JVMBased" instead of "Unknown". (#13251)
Installation:
implementation "live.ditto:ditto:4.7.2"
Kotlin Android 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)
- Changed: Reduced Bluetooth warn log noise (#12674)
- Changed: handle reverse DNS lookup queries in Android mdns to avoid mdns failing to connect in specific network configs (#13000)
- 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: WifiAware is now available on API level 32 (#12631)
- Fixed: missing version metadata is now correctly included in the string returned from
Ditto.sdkVersion
. (#12843)
Installation:
implementation "live.ditto:ditto:4.7.2-rc.2"
Kotlin Android Version 4.7.2-rc.1
Released: Mon May 6th 2024, 11:16 pm
Release Notes:
- Changed: Reduced Bluetooth warn log noise (#12674)
- Fixed: WifiAware is now available on API level 32 (#12631)
- 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:
implementation "live.ditto:ditto:4.7.2-rc.1"
Kotlin Android 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: documentation for
DittoStore.fetchAttachment
, which previously stated that its return value had to be kept in scope for the fetch to complete. The return value does not have to be kept in scope for this API. The documentation has been updated to clarify usage of the return value. (#11783) - Added:
DittoExperimental.constructDittoFailable()
method which throwsDittoError.LockedWorkingDirectoryError
instead of crashing when the persistence directory is in use by anotherDitto
instance. (#11801) - Fixed: an exception while creating/fetching an attachment now includes the underlying cause for easier debugging. (#12235)
- Fixed: an issue which prevented attachment fetcher events from being delivered to observers. (#12331)
- Fixed: error closing attachment fetcher that failed to start downloading attachment. (#12490)
- Fixed: document paths containing non-alphanumeric (or non-underscore) characters no longer lead to errors. (#12556)
Installation:
implementation "live.ditto:ditto:4.7.1"
Kotlin Android Version 4.7.1-beta.2
Released: Fri Apr 5th 2024, 11:29 pm
Release Notes:
- Fixed: an issue which prevented attachment fetcher events from being delivered to observers. (#12331)
Installation:
implementation "live.ditto:ditto:4.7.1-beta.2"
Kotlin Android Version 4.7.1-beta.1
Released: Fri Apr 5th 2024, 6:18 pm
Release Notes:
- Fixed: an issue which prevented attachment fetcher events from being delivered to observers. (#12331)
Installation:
implementation "live.ditto:ditto:4.7.1-beta.1"
Kotlin Android 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)
- Fixed: P2P LAN failed to advertise on a newly added interface, e.g., enabling WiFi at runtime (#10265)
- Fixed:
deviceName
property onDitto
instances now reflects the truncation of the value to 24 bytes when starting sync. (#11340) - Added: property
connectionRequestHandler
toditto.presence
, including related types, allowing to filter incoming connections from other peers. (#11611) - Added: property
peerMetadata
toditto.presence
. (#11611) - Added: property
peerMetadataJsonString
toditto.presence
. (#11611) - Added: property
identityServiceMetadata
toDittoPeer
. (#11611) - Added: property
peerKeyString
toDittoPeer
as replacement for the now deprecatedpeerKey
. (#11611) - Added: property
peerMetadata
toDittoPeer
. (#11611) - Deprecated: property
peerKey
onDittoPeer
, please use the newly addedpeerKeyString
instead. (#11611)- Added: runtime checks and locks to guard against dangling raw Ditto pointer usage in extremely unlucky race condition scenarios (#11837) - Fixed: a possible crash while downloading an attachment due to improper decoding of attachment token. (#12039)
Installation:
implementation "live.ditto:ditto:4.7.0"
Kotlin Android Version 4.7.0-alpha.1
Released: Fri Mar 1st 2024, 11:46 pm
Release Notes:
- Changed: This release is built with Android SDK 34. (#8991)
- Changed: Java compatibility has been increased to 17. (#8991)
Installation:
implementation "live.ditto:ditto:4.7.0-alpha.1"
Kotlin Android Version 4.6.0
Released: Tue Mar 12th 2024, 6:24 pm
Release Notes:
- Added: Preliminary support for runtime configuration using DQL
ALTER SYSTEM
andSHOW
statements (#10401) - Added: (Java) Synchronous (non-suspending)
DittoStore.execute(String)
andDittoStore.execute(String, Map)
convenience methods. (#10974) - Added: (Java) Read-only
queryString
andqueryArgument
fields toDittoStoreObserver
andDittoSyncSubscription
. (#10974) - Added: (Java)
DittoStore.registerObserver()
andDittoSync.registerSubscription()
method overloads removingarguments
parameter. (#10974) - Added a new experimental version of the Bluetooth transport to improve sync reliability on modern versions of Android, currently disabled by default (#11326)
- Added: method
newAttachment()
onDittoStore
as replacement for the corresponding and now deprecated method onDittoCollection
. It is now async and failable. (#11410) - Added: method
fetchAttachment()
onDittoStore
as replacement for the corresponding and now deprecated methods onDittoCollection
. It is now failable. (#11410) - Added: property
attachmentFetchers
toDittoStore
which contains aSet
of all activeDittoAttachmentFetcher
instances. (#11745) - Added: a variant of
fetchAttachment()
toDittoStore
that takes an attachment token Map representation as given by the value ofDittoQueryResultItem
. (#11410) - Added: properties
id
,len
, andmetadata
toDittoAttachment
andDittoAttachmentToken
. (#11410) - Added: method
getLength()
toDittoAttachment
andDittoAttachmentToken
returningBigInteger
variant of the underlyingULong
value for Java compatibility. (#11410) - Added: Javadocs jar artifact for easier API reference. (#11652)
- Added: Accessors for
syncGroup
androutingHint
withLong
values of the underlyingUInt
for Java compatibility. (#7285) - 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)
- Deprecated: method
newAttachment()
ofDittoCollection
. Please use the newly introduced equivalent method onDittoStore
instead. (#11410) - Deprecated: method
fetchAttachment()
andfetchAttachmentPublisher()
ofDittoCollection
. Please use the newly introduced equivalent method onDittoStore
instead. (#11410) - 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
andmetadata
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 Map representation given by the
value
ofDittoQueryResultItem
. The token is now provided as a Map of the form["id": "...", "len": 123, "metadata": ...] where
metadatais a
Map<String, String>`. (#11410) - (Experimental) Fixed: Two peers targeting each other simultaneously in Ditto Bus or Query Overlap Groups may struggle to create a multihop connection (#8527)
Installation:
implementation "live.ditto:ditto:4.6.0"
Kotlin Android 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
andSHOW
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:
DittoTransportConfig
and all Ditto types that appear inside aDittoTransportConfig
now implementCloneable
(#10972) - Fixed: calling
startSync
, thenstopSync, and then
startSync` again no longer leads to all transports being disabled (#10972) - Fixed: if using an
OnlinePlayground
orOnlineWithAuthentication
identity withenableDittoCloudSync
set totrue
then a WebSocket connection to Ditto's cloud will now nbe preserved if/when theDitto
instance's transport config is updated. (#10972) - Added: (Java) Synchronous (non-suspending)
DittoStore.execute(String)
andDittoStore.execute(String, Map)
convenience methods. (#10974) - Added: (Java)
DittoStore.registerObserver()
andDittoSync.registerSubscription()
method overloads removingarguments
parameter. (#10974) - Added: (Java) Read-only
queryString
andqueryArgument
fields toDittoStoreObserver
andDittoSyncSubscription
. (#10974) - Added: Javadocs jar artifact for easier API reference. (#11652)
- Added: Accessors for
syncGroup
androutingHint
withLong
values of the underlyingUInt
for Java compatibility. (#7285) - (Experimental) Fixed: Two peers targeting each other simultaneously in Ditto Bus or Query Overlap Groups may struggle to create a multihop connection (#8527)
Installation:
implementation "live.ditto:ditto:4.6.0-alpha.3"
Kotlin Android 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
andSHOW
statements (#10401) - Added:
DittoTransportConfig
and all Ditto types that appear inside aDittoTransportConfig
now implementCloneable
(#10972) - Added: (Java) Synchronous (non-suspending)
DittoStore.execute(String)
andDittoStore.execute(String, Map)
convenience methods. (#10974) - Added: (Java)
DittoStore.registerObserver()
andDittoSync.registerSubscription()
method overloads removingarguments
parameter. (#10974) - Added: (Java) Read-only
queryString
andqueryArgument
fields toDittoStoreObserver
andDittoSyncSubscription
. (#10974) - Added: Accessors for
syncGroup
androutingHint
withLong
values of the underlyingUInt
for Java compatibility. (#7285) - 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: calling
startSync
, thenstopSync, and then
startSync` again no longer leads to all transports being disabled (#10972) - Fixed: if using an
OnlinePlayground
orOnlineWithAuthentication
identity withenableDittoCloudSync
set totrue
then a WebSocket connection to Ditto's cloud will now nbe preserved if/when theDitto
instance's transport config is updated. (#10972) - (Experimental) Fixed: Two peers targeting each other simultaneously in Ditto Bus or Query Overlap Groups may struggle to create a multihop connection (#8527)
Installation:
implementation "live.ditto:ditto:4.6.0-alpha.2"
Kotlin Android 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
andSHOW
statements (#10401) - Added:
DittoTransportConfig
and all Ditto types that appear inside aDittoTransportConfig
now implementCloneable
(#10972) - Added: (Java) Synchronous (non-suspending)
DittoStore.execute(String)
andDittoStore.execute(String, Map)
convenience methods. (#10974) - Added: (Java)
DittoStore.registerObserver()
andDittoSync.registerSubscription()
method overloads removingarguments
parameter. (#10974) - Added: (Java) Read-only
queryString
andqueryArgument
fields toDittoStoreObserver
andDittoSyncSubscription
. (#10974) - Changed: Upgraded Android SDK to 34. (#8991)
- 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: calling
startSync
, thenstopSync, and then
startSync` again no longer leads to all transports being disabled (#10972) - Fixed: if using an
OnlinePlayground
orOnlineWithAuthentication
identity withenableDittoCloudSync
set totrue
then a WebSocket connection to Ditto's cloud will now nbe preserved if/when theDitto
instance's transport config is updated. (#10972) - (Experimental) Fixed: Two peers targeting each other simultaneously in Ditto Bus or Query Overlap Groups may struggle to create a multihop connection (#8527)
Installation:
implementation "live.ditto:ditto:4.6.0-alpha.1"
Kotlin Android Version 4.5.5-alpha.2
Released: Tue May 21st 2024, 9:10 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:4.5.5-alpha.2"
Kotlin Android Version 4.5.4
Released: Thu Feb 22nd 2024, 1:46 am
Release Notes:
- Changed: Additional logging in the rare case an exception is thrown during a live query callback. (#11644)
- Fixed: intermittent crash when syncing over Bluetooth LE GATT with "DataTooLarge" error (#9789)
Installation:
implementation "live.ditto:ditto:4.5.4"
Kotlin Android 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:
implementation "live.ditto:ditto:4.5.4-transports-behind-core"
Kotlin Android 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:
implementation "live.ditto:ditto:4.5.4-alpha.1-transports-behind-core"
Kotlin Android 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.
- Fix a crash in Android bluetooth subsystem.
Installation:
implementation "live.ditto:ditto:4.5.3"
Kotlin Android Version 4.5.2
Released: Thu Jan 25th 2024, 4:23 pm
Release Notes:
- Added:
DittoTransportConfig
and all Ditto types that appear inside aDittoTransportConfig
now implementCloneable
(#10972) - Fixed: calling
startSync
, thenstopSync
, and thenstartSync
again no longer leads to all transports being disabled (#10972) - Fixed: if using an
OnlinePlayground
orOnlineWithAuthentication
identity withenableDittoCloudSync
set totrue
then a WebSocket connection to Ditto's cloud will now be preserved if/when theDitto
instance's transport config is updated. (#10972)
Installation:
implementation "live.ditto:ditto:4.5.2"
Kotlin Android Version 4.5.2-rc.3
Released: Wed Jan 17th 2024, 10:00 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:4.5.2-rc.3"
Kotlin Android 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 au64
ori64
during collation. (#10940) - Fixed: Presence observers are now correctly removed when passed to
removeObserver()
. (#10183)
Installation:
implementation "live.ditto:ditto:4.5.1"
Kotlin Android Version 4.5.0
Released: Thu Dec 7th 2023, 5:59 pm
Release Notes:
- Added: New C++ SDK for Android. (#10218)
- Added:
VERSION
static property to theDitto
class. (#10223) - Added:
DittoError.FatalError
data class. (#10536) - Added:
DittoStore.execute()
method for querying the store using the new Ditto Query Language. (#8354) - Added:
DittoSyncSubscription
class for managing sync subscriptions. (#8354, #10536) - Added:
DittoSync
class whoseregisterSubscription()
method allows for controlling sync using Ditto Query Language. (#8354, #10536) - Added:
registerObserver()
method to theDittoStore
class. (#8354, #10536) - 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.multicastEnabled
property. (#10126) - Deprecated:
DittoError.InternalErrorReason
data class. These very unlikely exceptions will be thrown asFatalError
instea. (#10536) - Changed: Failure to load the Ditto native binary now throws a
FatalError
instead of aborting the process. (#10015) - Changed:
DittoError.FailedToEncodeValue.error
has been replaced withFailedToEncodeValue.message
which is a simple string type, reducing API dependency on Jackson/FasterXML. (#10536) - 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)
- Fixed: The Android log level could not be set to a more verbose level at runtime under certain circumstances. (#10786)
- Fixed: LAN P2P transport fails to stop. (#8809)
Installation:
implementation "live.ditto:ditto:4.5.0"
Kotlin Android 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.multicastEnabled
property. (#10126) - Added:
VERSION
property toDitto
class. (#10223) - Added:
DittoReplicationSubscription
class for managing replication subscriptions. (#8354) - Added:
DittoStore.execute()
for querying the store using the new Ditto Query Language. (#8354) - Added:
addReplicationSubscription()
andremoveReplicationSubscription()
methods toDittoStore
. (#8354) - Added:
replicationSubscriptions
property toDittoStore
. (#8354) - fixed: LAN P2P transport fails to stop (#8809)
Installation:
implementation "live.ditto:ditto:4.5.0-alpha3"
Kotlin Android Version 4.5.0-alpha1
Released: Tue Nov 21st 2023, 7:23 am
Release Notes:
- Added: New C++ SDK for Android. (#10218)
Installation:
implementation "live.ditto:ditto:4.5.0-alpha1"
Kotlin Android Version 4.5.0-alpha.4
Released: Thu Nov 23rd 2023, 12:25 am
Release Notes:
- Added:
VERSION
property toDitto
class. (#10223) - Added:
DittoReplicationSubscription
class for managing replication subscriptions. (#8354) - Added:
DittoStore.execute()
for querying the store using the new Ditto Query Language. (#8354) - Added:
addReplicationSubscription()
andremoveReplicationSubscription()
methods toDittoStore
. (#8354) - Added:
replicationSubscriptions
property toDittoStore
. (#8354) - 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)
- Deprecated:
DittoLanConfig.multicastEnabled
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:
implementation "live.ditto:ditto:4.5.0-alpha.4"
Kotlin Android 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:
implementation "live.ditto:ditto:4.4.5"
Kotlin Android 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:
implementation "live.ditto:ditto:4.4.4"
Kotlin Android Version 4.4.3
Released: Tue Oct 24th 2023, 9:01 pm
Release Notes:
- Changed: Implemented
equals()
andhashCode()
forDittoAttachmentToken
. (#10195)
Installation:
implementation "live.ditto:ditto:4.4.3"
Kotlin Android Version 4.4.2
Released: Fri Oct 6th 2023, 5:02 pm
Release Notes:
- Fixed:
DittoCollection.upsert()
andDittoScopedWriteTransaction.upsert()
are now annotated to indicate that they can throw aDittoError
(#10109) - 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 tobigPeerOnly
. (#10203, #10204)
Installation:
implementation "live.ditto:ditto:4.4.2"
Kotlin Android Version 4.4.1
Released: Tue Sep 26th 2023, 11:39 pm
Release Notes:
- Improved: BLE connection reliability on Android 13. (#10005)
Installation:
implementation "live.ditto:ditto:4.4.1"
Kotlin Android Version 4.4.0
Released: Thu Aug 31st 2023, 10:43 pm
Release Notes:
- Added: New
smallPeerInfo
property toDitto
class for access to the singleDittoSmallPeerInfo
class instance. (#9704) - Added: New
DittoSmallPeerInfoSyncScope
enum class. ThesmallPeerInfo
collection's sync scope determines which "kind" of peers it will replicate to. Defaults toBigPeerOnly
. (#9704, #9788) - Added: New
ValidationError
andInternalError
classes to help diagnose issues. (#9704) - 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 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:
implementation "live.ditto:ditto:4.4.0"
Kotlin Android 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)
- Fixed: an issue that caused excessive multicast traffic over LAN transport. (#9398)
Installation:
implementation "live.ditto:ditto:4.3.1"
Kotlin Android 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: Nullable
customAuthURL
parameter to theDittoIdentity.OnlinePlayground
class. (#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:
implementation "live.ditto:ditto:4.3.0"
Kotlin Android Version 4.2.3
Released: Wed Jul 5th 2023, 10:32 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:4.2.3"
Kotlin Android 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)
- Changed: Improved reliability of LAN sync when using large numbers of devices. (#8901)
- 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)
Installation:
implementation "live.ditto:ditto:4.2.2"
Kotlin Android 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:
implementation "live.ditto:ditto:4.2.1"
Kotlin Android 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 extraString?
argument (as compared tologinWithToken
) that will be non-nil
if the auth webhook provided anyclientInfo
JSON value. TheString
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)
- Changed: Improved support for IPv6 Wi-Fi Aware connections (#8518)
- Fixed: Ditto store errors now include more details instead of just an object description. (#8730)
- Fixed: WiFi-Aware P2P connections are now more stable when more than two peers are nearby. (#8598)
- Fixed: Exception TooManyRequests when using WiFi-Aware transport is now handled correctly by the SDK. (#8598)
Installation:
implementation "live.ditto:ditto:4.2.0"
Kotlin Android 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.
- Fixed: Crash when logging out.
Installation:
implementation "live.ditto:ditto:4.1.1"
Kotlin Android 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:
DittoSyncPermissions.context
is now ptional for compatibility with Compose apps, which should leverage the Accompanist library for doing permissions check & request - 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: Improved stability when transferring large updates over Bluetooth LE
- 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:
implementation "live.ditto:ditto:4.1.0"
Kotlin Android 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:
implementation "live.ditto:ditto:4.0.3-alpha.linux-ble-fixes-2"
Kotlin Android 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:
implementation "live.ditto:ditto:4.0.3-alpha.linux-ble-fixes"
Kotlin Android 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:
implementation "live.ditto:ditto:4.0.2"
Kotlin Android 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:
implementation "live.ditto:ditto:4.0.1"
Kotlin Android 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 theDitto
object or the a peer has synced with another peer that has calleddisableSyncWithV3
, or they have synced with another peer that has calleddisableSyncWithV3
, 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: potential crash when stopping and restarting WiFi transport very rapidly
- Fixed: attempt to sync with the cloud before the user requests it with
startSync()
- Removed: made a number of erroneously public constants and types internal or private.
Installation:
implementation "live.ditto:ditto:4.0.0"
Kotlin Android 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: AddWins removes will now be used if
disableSyncWithV3
has been called on theDitto
object or the a peer has synced with another peer that has calleddisableSyncWithV3
, or they have synced with another peer that has calleddisableSyncWithV3
, etc.
Installation:
implementation "live.ditto:ditto:4.0.0-beta1"
Kotlin Android Version 4.0.0-alpha2
Released: Mon Jan 16th 2023, 10:16 pm
Release Notes:
- Added:
disableSyncWithV3
functionality toDitto
. 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 callingremove()
. Any other device running v4 of the SDK that syncs with a device that has calleddisableSyncWithV3
(or has themselves synced with another device that has calleddisableSyncWithV3
, etc - if any chain of syncing exists that involves a device that has calleddisableSyncWithV3
) will also no longer be able to sync with v3 peers and will perform AddWins removes when callingremove()
.
Installation:
implementation "live.ditto:ditto:4.0.0-alpha2"
Kotlin Android 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:
implementation "live.ditto:ditto:3.0.11"
Kotlin Android 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:
implementation "live.ditto:ditto:3.0.10"
Kotlin Android Version 3.0.9
Released: Wed Jun 14th 2023, 3:23 pm
Release Notes:
- Fixed: Ditto store errors now include more details instead of just an object description.
Installation:
implementation "live.ditto:ditto:3.0.9"
Kotlin Android Version 3.0.9-alpha1
Released: Mon May 22nd 2023, 11:34 pm
Release Notes:
- Fixed: Ditto store errors now include more details instead of just an object description.
Installation:
implementation "live.ditto:ditto:3.0.9-alpha1"
Kotlin Android Version 3.0.8
Released: Fri May 19th 2023, 6:33 am
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:3.0.8"
Kotlin Android 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:
implementation "live.ditto:ditto:3.0.7"
Kotlin Android Version 3.0.6
Released: Thu Mar 16th 2023, 1:00 am
Release Notes:
- 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:
implementation "live.ditto:ditto:3.0.6"
Kotlin Android 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
Installation:
implementation "live.ditto:ditto:3.0.5"
Kotlin Android Version 3.0.4
Released: Sat Jan 28th 2023, 12:10 am
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:3.0.4"
Kotlin Android 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:
implementation "live.ditto:ditto:3.0.3"
Kotlin Android 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:
implementation "live.ditto:ditto:3.0.3-alpha2"
Kotlin Android Version 3.0.2
Released: Fri Jan 20th 2023, 9:20 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:3.0.2"
Kotlin Android 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 toDitto
class for access to aDiskUsage
instance. -
Added:
DiskUsageItem
class which contains data about the space used by files in the Ditto working directory. -
Added:
routingHint
property toDittoGlobalConfig
class. -
Added:
NO_PREFERRED_ROUTE_HINT
constant, used internally byDittoGlobalConfig
if no routing hint is specified. -
Changed: better readability of data sizes and durations in logs.
Installation:
implementation "live.ditto:ditto:3.0.1"
Kotlin Android 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. - Renamed:
siteID
property ->siteId
inDitto
class - Renamed:
DittoDocumentID
->DittoDocumentId
- Renamed:
DittoDocumentIDPath
->DittoDocumentIdPath
- Renamed:
appID
property ->appId
inDittoIdentity
nested classes - Renamed:
siteID
property ->siteId
inDittoIdentity
nested classes - Renamed:
DittoPendingIDSpecificOperation
->DittoPendingIdSpecificOperation
- Renamed:
docID
propertydocId
inDittoPendingIdSpecificOperation
class - Renamed:
DittoWriteTransactionPendingIDSpecificOperation
->DittoWriteTransactionPendingIdSpecificOperation
- Renamed:
docID
property ->docId
inDittoWriteTransactionPendingIdSpecificOperation
class - Renamed:
NoIDPresentInDocument
->NoIdPresentInDocument
inDittoError.StoreErrorReason
class - Renamed:
InvalidLiveQueryID
->InvalidLiveQueryId
inDittoError.StoreErrorReason
class - Renamed:
findByID()
methodfindById()
inDittoCollection
class - Renamed:
docID
property ->docId
inDittoUpdateResult
nested classes - Renamed:
docID
property ->docId
inDittoMutableDocumentPath
class - Added:
close()
method toDittoLiveQuery
, addingCloseable
conformance. - Added:
close()
method toDittoAttachmentFetcher
, addingCloseable
conformance. - Deprecated:
DittoLiveQuery.stop()
, please use the newly addedDittoLiveQuery.close()
instead. - Deprecated:
DittoAttachmentFetcher.stop()
, Please use the newly addedDittoAttachmentFetcher.close()
instead. - Fixed: The
Closeable
returned fromobserveStatus
is now held weakly allowing it to be garbage-collected when the reference goes out of scope. - Removed:
observe()
andobserveWithNextSignal()
methods ofDittoPendingCollectionsOperation
,DittoPendingCursorOperation
, andDittoPendingIdSpecificOperation
. Please use the correspondingobserveLocal()
andobserveLocalWithNextSignal()
variants along with a separate call tosubscribe()
instead. See https://docs.ditto.live/android/common/concepts/syncing-data#subscribe - Deprecated:
DittoRemotePeer
,DittoRemotePeerV2
,DittoPeerV2Parser
,DittoPeersObserverV1
,DittoPeersObserverV2
,DittoPeersObserverV1Callback
, andDittoPeersObserverV2Callback
types. - Changed: performance improvements.
- Added:
disableSyncWithV2
method toDitto
. 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.
- Fixed: WiFi Aware stability when WiFi is turned on/off.
- Improved: log increased detail to help debug blocked write transactions.
Installation:
implementation "live.ditto:ditto:3.0.0"
Kotlin Android Version 3.0.0-alpha3
Released: Mon Dec 12th 2022, 1:19 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:3.0.0-alpha3"
Kotlin Android Version 3.0.0-alpha2
Released: Tue Dec 6th 2022, 4:01 pm
Release Notes:
- Fixed: WiFi Aware stability when WiFi is turned on/off.
- Improved: reliability if app crashes occur while persisting authentication data.
Installation:
implementation "live.ditto:ditto:3.0.0-alpha2"
Kotlin Android 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. - Renamed:
siteID
property ->siteId
inDitto
class - Renamed:
DittoDocumentID
->DittoDocumentId
- Renamed:
DittoDocumentIDPath
->DittoDocumentIdPath
- Renamed:
appID
property ->appId
inDittoIdentity
nested classes - Renamed:
siteID
property ->siteId
inDittoIdentity
nested classes - Renamed:
DittoPendingIDSpecificOperation
->DittoPendingIdSpecificOperation
- Renamed:
docID
propertydocId
inDittoPendingIdSpecificOperation
class - Renamed:
DittoWriteTransactionPendingIDSpecificOperation
->DittoWriteTransactionPendingIdSpecificOperation
- Renamed:
docID
property ->docId
inDittoWriteTransactionPendingIdSpecificOperation
class - Renamed:
NoIDPresentInDocument
->NoIdPresentInDocument
inDittoError.StoreErrorReason
class - Renamed:
InvalidLiveQueryID
->InvalidLiveQueryId
inDittoError.StoreErrorReason
class - Renamed:
findByID()
methodfindById()
inDittoCollection
class - Renamed:
docID
property ->docId
inDittoUpdateResult
nested classes - Renamed:
docID
property ->docId
inDittoMutableDocumentPath
class - Added:
close()
method toDittoLiveQuery
, addingCloseable
conformance. - Added:
close()
method toDittoAttachmentFetcher
, addingCloseable
conformance. - Deprecated:
DittoLiveQuery.stop()
, please use the newly addedDittoLiveQuery.close()
instead. - Deprecated:
DittoAttachmentFetcher.stop()
, Please use the newly addedDittoAttachmentFetcher.close()
instead. - Fixed: The
Closeable
returned fromobserveStatus
is now held weakly allowing it to be garbage-collected when the reference goes out of scope. - Removed:
observe()
andobserveWithNextSignal()
methods ofDittoPendingCollectionsOperation
,DittoPendingCursorOperation
, andDittoPendingIdSpecificOperation
. Please use the correspondingobserveLocal()
andobserveLocalWithNextSignal()
variants along with a separate call tosubscribe()
instead. See https://docs.ditto.live/android/common/concepts/syncing-data#subscribe - Deprecated:
DittoRemotePeer
,DittoRemotePeerV2
,DittoPeerV2Parser
,DittoPeersObserverV1
,DittoPeersObserverV2
,DittoPeersObserverV1Callback
, andDittoPeersObserverV2Callback
types. - Changed: performance improvements.
- Added
disableSyncWithV2
method toDitto
. 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:
implementation "live.ditto:ditto:3.0.0-alpha1"
Kotlin Android Version 2.1.0
Released: Wed Nov 2nd 2022, 11:51 pm
Release Notes:
- Added:
appId
andpersistenceDirectory
properties toDitto
class. - Deprecated:
observe()
andobserveWithNextSignal()
methods ofDittoPendingCollectionsOperation
,DittoPendingCursorOperation
andDittoPendingIDSpecificOperation
. Please use the correspondingobserveLocal()
andobserveLocalWithNextSignal()
variants along with a separate call tosubscribe()
instead. https://docs.ditto.live/android/common/concepts/syncing-data#subscribe
Installation:
implementation "live.ditto:ditto:2.1.0"
Kotlin Android Version 2.0.8
Released: Fri Oct 28th 2022, 12:14 am
Release Notes:
- Added:
close()
method toDitto
class so that we can shut an instance down before recreating it - Added: Updated permissions to request
NEARBY_WIFI_DEVICES
on Android 13 - Changed: Improved error messages if concurrent Ditto instances attempt to use the same persistence directory
Installation:
implementation "live.ditto:ditto:2.0.8"
Kotlin Android 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
- Fixed: Reduced the amount of disk space used by sync metadata by up to 50% in some cases
Installation:
implementation "live.ditto:ditto:2.0.7"
Kotlin Android 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
Installation:
implementation "live.ditto:ditto:2.0.6"
Kotlin Android Version 2.0.5
Released: Thu Sep 8th 2022, 10:20 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:2.0.5"
Kotlin Android Version 2.0.4
Released: Thu Sep 1st 2022, 6:31 pm
Release Notes:
- Fixed: prevent a crash on devices where Wifi Aware is not available.
Installation:
implementation "live.ditto:ditto:2.0.4"
Kotlin Android Version 2.0.3
Released: Wed Aug 31st 2022, 5:20 pm
Release Notes:
- Changed: presence data is no longer synced with the big peer.
Installation:
implementation "live.ditto:ditto:2.0.3"
Kotlin Android Version 2.0.2
Released: Sat Aug 27th 2022, 1:58 am
Release Notes:
- Added support for Wi-Fi Aware
- Changed: performing an
.exec()
call, outside the scope of astore.write { }
block, no longer tries to obtain a write transaction and instead uses a read transaction.
Installation:
implementation "live.ditto:ditto:2.0.2"
Kotlin Android Version 2.0.1
Released: Sun Aug 14th 2022, 4:57 am
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:2.0.1"
Kotlin Android 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 version1.1.8
of the SDK. - Added: support for explicitly typing values as registers. This is via 2 new types:
DittoRegister
andDittoMutableRegister
, and newregisterValue
value accessors added toDittoDocumentPath
andDittoMutableDocumentPath
. - Added:
DittoCounter
andDittoMutableCounter
types resembling the CRDT type underneath, which replace the old counter mechanics. A newcounter
value accessor has been added toDittoDocumentPath
andDittoMutableDocumentPath
, which returns aDittoCounter
or aDittoMutableCounter
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
andDittoMutableRGA
in v2, and newrga
value accessors added toDittoDocumentPath
andDittoMutableDocumentPath
. 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. - Changed: renamed identity
OnlinePlaygroundV2
to justOnlinePlayground
, which replaces the previously deprecatedOnlinePlayground
. - Changed: renamed
Ditto
methodtryStartSync()
to juststartSync()
, which replaces the previously deprecatedstartSync()
. - Removed: deprecated
DittoRemotePeerV2
propertymeshRole
, pleasequeryOverlapGroup
instead. - Removed: deprecated type
DittoPeersObserver
, please useDittoObserver
instead. - Removed: deprecated
DittoDocumentID
methodtoNative()
, please use propertyvalue
instead. - Removed: deprecated
DittoScopedWriteTransaction
methodfind(query:)
, please usefind()
instead. - Removed: deprecated
DittoScopedWriteTransaction
methodsinsert()
andinsertWithStrategy()
, please useupsert()
andupsertWithStrategy()
instead. - Removed: deprecated
DittoCollection
methodsinsert()
andinsertWithStrategy()
, please useupsert()
andupsertWithStrategy()
instead. - Removed: deprecated identities
Development
andOnline
, please use the available ones instead. - Removed: deprecated
Ditto
methodssetAccessLicense()
andsetLicenseToken()
, please usesetOfflineOnlyLicenseToken()
instead. - Removed: deprecated
DittoAuthenticator
methodisAuthenticated()
and propertyuserID
, please usestatus
instead. - Changed: all Ditto error cases are now capitalized.
- Changed:
failedToInitialiseDittoDirectory
is now namedFailedToInitializeDittoDirectory
- Removed:
DittoWriteStrategy.Overwrite
write strategy.
Installation:
implementation "live.ditto:ditto:2.0.0"
Kotlin Android 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:
implementation "live.ditto:ditto:2.0.0-alpha1"
Kotlin Android Version 1.1.11
Released: Fri Sep 9th 2022, 11:11 pm
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:1.1.11"
Kotlin Android Version 1.1.10
Released: Thu Jul 7th 2022, 7:53 pm
Release Notes:
- Changed: reduced total memory overhead during sync.
Installation:
implementation "live.ditto:ditto:1.1.10"
Kotlin Android 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.
Installation:
implementation "live.ditto:ditto:1.1.9"
Kotlin Android Version 1.1.9-alpha1
Released: Thu Jun 9th 2022, 3:12 am
Release Notes:
- Added: deviceName property to Ditto class #5692
Installation:
implementation "live.ditto:ditto:1.1.9-alpha1"
Kotlin Android 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: crash when starting LAN transport.
-
Fixed: crash when Ditto would try to stop BLE scanning.
Installation:
implementation "live.ditto:ditto:1.1.8"
Kotlin Android Version 1.1.7
Released: Fri May 13th 2022, 2:18 pm
Release Notes:
Synchronized version bump release.
Installation:
implementation "live.ditto:ditto:1.1.7"
Kotlin Android 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. - Changed: improvements to Ditto mesh performance via fastest-available-transport prioritization.
Installation:
implementation "live.ditto:ditto:1.1.6"
Kotlin Android Version 1.1.5
Released: Fri Apr 8th 2022, 8:00 am
Release Notes:
- Fixed: Some Android phones may not connect on Bluetooth - regression in 1.1.4
Installation:
implementation "live.ditto:ditto:1.1.5"
Kotlin Android Version 1.1.4
Released: Fri Apr 8th 2022, 6:25 am
Release Notes:
- Changed: improved replication performance in some scenarios.
Installation:
implementation "live.ditto:ditto:1.1.4"
Kotlin Android Version 1.1.3
Released: Tue Mar 22nd 2022, 10:13 am
Release Notes:
-
Added:
OnlinePlaygroundV2
identity allowing for basic authentication for playgrounds -
Deprecated:
OnlinePlayground
identity, use newly addedOnlinePlaygroundV2
instead -
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:
implementation "live.ditto:ditto:1.1.3"
Kotlin Android Version 1.1.2
Released: Mon Feb 28th 2022, 2:36 pm
Release Notes:
- Added: method
setOfflineOnlyLicenseToken()
to classDitto
as replacement for now deprecatedsetLicenseToken()
. - Deprecated: method
setLicenseToken()
of classDitto
, please use newly addedsetOfflineOnlyLicenseToken()
instead.
Installation:
implementation "live.ditto:ditto:1.1.2"
Kotlin Android 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: Experimental mesh roles API
- Added:
DittoExperimental
class - Added:
setMeshRole()
method toDittoExperimental
class - Added:
setPriorityForMeshRole()
method toDittoExperimental
class
- Added:
Installation:
implementation "live.ditto:ditto:1.1.1"
Kotlin Android 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 classDitto
. - Added: method
logout()
to classDittoAuthenticator
. - Added: set of APIs to observe authentication status (see API reference for
DittoAuthenticator
andDittoAuthenticationCallback
). - Added: method
upsert()
to classesDittoCollection
andDittoScopedWriteTransaction
(as a replacement forinsert()
& friends) which by default merges the newly inserted document if one with the same ID already exists. - Deprecated: properties
isAuthenticated
anduserId
of classDittoAuthenticator
in favor of newly introduced propertystatus
. - Deprecated: methods
insert()
& frinds of classesDittoCollection
andDittoScopedWriteTransaction
in favor of newly introducedupsert()
.
Installation:
implementation "live.ditto:ditto:1.1.0"
Kotlin Android 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).
- Fixed: crash when calling
tryStartSync()
due to new Bluetooth rules and permissions in Android 12. - Fixed: "Receiver not registered" exception occuring due to a race condition in Bluetooth registration.
Installation:
implementation "live.ditto:ditto:1.0.19"
Kotlin Android Version 1.0.18
Released: Mon Dec 20th 2021, 1:22 pm
Release Notes:
- Reduced the opportunity for rapid memory growth in some scenarios.
Installation:
implementation "live.ditto:ditto:1.0.18"
Kotlin Android Version 1.0.18-alpha2
Released: Tue Dec 14th 2021, 4:32 pm
Release Notes:
- Improve attachment sync performance.
Installation:
implementation "live.ditto:ditto:1.0.18-alpha2"
Kotlin Android 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.
Installation:
implementation "live.ditto:ditto:1.0.18-alpha1"
Kotlin Android 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.
Installation:
implementation "live.ditto:ditto:1.0.17"
Kotlin Android 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:
implementation "live.ditto:ditto:1.0.16"
Kotlin Android 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 accompanyingfind
call doesn't have the key specified in thesort
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 thesort
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 thesort
key will appear first in the set of documents, before all of the documents that do contain thesort
key. - Add versions of
loginWithToken
andloginWithCredentials
that can be used with Java that don't require returningnull
at the end of the lambda. - Remove the empty default implementations of
authenticationRequired
andauthenticationExpiringSoon
onDittoAuthenticationCallback
.
Installation:
implementation "live.ditto:ditto:1.0.15"
Kotlin Android Version 1.0.15-alpha1
Released: Wed Oct 27th 2021, 10:33 am
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:ditto:1.0.15-alpha1"
Kotlin Android 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 newOnlineWithAuthentication
identity. - Deprecate the
Development
identity in favor of the newOfflinePlayground
identity. - Make outgoing BLE connections and MTU customisable.
Installation:
implementation "live.ditto:ditto:1.0.14"
Kotlin Android Version 1.0.13
Released: Mon Oct 18th 2021, 5:02 pm
Release Notes:
- Changed
DittoIdentity
's propertyappID
to be of typeString
instead ofUUID
.
Installation:
implementation "live.ditto:ditto:1.0.13"
Kotlin Android Version 1.0.12
Released: Mon Oct 18th 2021, 10:00 am
Release Notes:
- Added
global
section toTransportConfig
allowing P2P sync to be contained within certain groups of devices by putting them in the same "sync group".
Installation:
implementation "live.ditto:ditto:1.0.12"
Kotlin Android Version 1.0.11
Released: Fri Oct 8th 2021, 5:09 am
Release Notes:
- Added
DittoWriteStrategy
enum. - Added method
insertWithStrategy()
toDittoCollection
, allowing to specify the behavior when inserting a document with an ID that matches the ID of a document already in the store. - Added
isAuthenticated
method anduserID
property toDittoAuthenticator
.
Installation:
implementation "live.ditto:ditto:1.0.11"
Kotlin Android 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:
implementation "live.ditto:ditto:1.0.10"
Kotlin Android 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 ofTransportConfig
. - Added new identity types:
Online
andOnlinePlayground.
AnOnline
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. AnOnlinePlayground
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 toManual
. - Added a
DittoAuthenticator
type, accessible via theDitto
object, which allows you to perform login operations when you're using anOnline
identity. - Similarly, added a
DittoAuthenticationCallback
type that needs to be used when using anOnline
identity. - Report an error if more than one Ditto instance is started using the same working directory.
Installation:
implementation "live.ditto:ditto:1.0.9"
Kotlin Android Version 1.0.8
Released: Mon Aug 2nd 2021, 4:19 pm
Release Notes:
- Improved debug logging.
Installation:
implementation "live.ditto:ditto:1.0.8"
Kotlin Android 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
Installation:
implementation "live.ditto:ditto:1.0.7"
Kotlin Android Version 1.0.6
Released: Thu Jul 8th 2021, 6:22 pm
Release Notes:
- Add
value
accessor onDittoDocumentPath
,DittoMutableDocumentPath
, andDittoDocumentIDPath
types to allow accessing a nested value in a document/ID as anAny?
.
Installation:
implementation "live.ditto:ditto:1.0.6"
Kotlin Android 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:
val liveQuery = collection.findAll().observe() { docs, event -> 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 aDitto
instance will no longer throw an error if you have not yet activated yourDitto
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 yourDitto
instance hasn't yet been activated via a successful call tosetLicenseToken
.
Installation:
implementation "live.ditto:ditto:1.0.5"
Kotlin Android Version 1.0.4
Released: Fri Jun 11th 2021, 10:36 pm
Release Notes:
- Bluetooth sync performance improvements with L2CAP support added, which will be used when available.
Installation:
implementation "live.ditto:ditto:1.0.4"
Kotlin Android Version 1.0.3
Released: Thu Jun 10th 2021, 4:34 pm
Release Notes:
- Bluetooth sync performance improvements.
- Enable configuration of advertisement power and frequency.
Installation:
implementation "live.ditto:ditto:1.0.3"
Kotlin Android Version 1.0.2
Released: Thu May 20th 2021, 9:39 pm
Release Notes:
- Add support for subscripting
DittoDocumentID
s in order to get nested values when a document ID is based on an array or a map. - Deprecated
.toNative()
onDittoDocumentID
. You should use.value
instead.
Installation:
implementation "live.ditto:ditto:1.0.2"
Kotlin Android 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:
implementation "live.ditto:ditto:1.0.1"
Kotlin Android 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
orinsert
calls you now need to provide aDittoDocumentID
object rather than a string. Similarly, when you access a document's ID it will now return aDittoDocumentID
object instead of a string. - The
start()
andstop()
functions on theDitto
object have been renamed tostartSync()
andstopSync()
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 thesetTransportConfig
function on theDitto
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 yourstart()
call tostartSync()
.
- 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
- Lots of performance improvements and bug fixes.
Installation:
implementation "live.ditto:ditto:1.0.0"
Kotlin Android 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:
implementation "live.ditto:ditto:1.0.0-alpha9"
Kotlin Android 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.
Installation:
implementation "live.ditto:ditto:1.0.0-alpha8"
Kotlin Android Version 1.0.0-alpha7
Released: Mon Jan 4th 2021, 11:12 am
Release Notes:
- Synchronized version bump release
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha7"
Kotlin Android Version 1.0.0-alpha6
Released: Tue Dec 15th 2020, 1:00 am
Release Notes:
- Performance and stability improvements.
- Fix default data insertion such that merge semantics are consistent and duplicate data isn't created.
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha6"
Kotlin Android Version 1.0.0-alpha5
Released: Mon Nov 23rd 2020, 4:43 am
Release Notes:
- Added a new intermediate security identity for a shared secret key. This is a simplistic authentication mode which is normally only suitable for private apps where all the users and devices are trusted.
- Fixed an issue that prevented Counter values from syncing correctly
- Renamed DittoAttachmentStatus to DittoAttachmentFetchEvent and subsequently Incomplete status to Progre ss.
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha5"
Kotlin Android Version 1.0.0-alpha4
Released: Mon Nov 9th 2020, 6:15 pm
Release Notes:
- Fix issue where attachments could stop being fetched incorrectly.
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha4"
Kotlin Android Version 1.0.0-alpha3
Released: Wed Nov 4th 2020, 7:46 am
Release Notes:
- Added new observeWithNextSignal API to allow the application to control the delivery of the next observe callback ev ent.
- Fixed several issues related to attachments that could delay sync.
- Simplified log statements
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha3"
Kotlin Android Version 1.0.0-alpha2
Released: Fri Oct 9th 2020, 9:04 pm
Release Notes:
- Decreases the file size of the AAR
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha2"
Kotlin Android Version 1.0.0-alpha1
Released: Thu Oct 8th 2020, 9:23 pm
Release Notes:
- Note that this is a release with breaking changes and clients using releases in the 1.0 series will not be able to communicate with clients running a version that is anything less than 1.0. This should hopefully not be an issue because this release of the SDK has changed the name to be DittoSyncKit as opposed to DittoKit.
- Lots of performance improvements and some bug fixes.
Installation:
implementation "live.ditto:dittosynckit:1.0.0-alpha1"
Kotlin Android Version 0.4.0-alpha6
Released: Fri Sep 25th 2020, 3:16 am
Release Notes:
- Fixed an issue where extensive writes can cause a session time-out
Installation:
implementation "live.ditto:dittokit:0.4.0-alpha6"
Kotlin Android Version 0.4.0-alpha5
Released: Wed Sep 23rd 2020, 9:10 pm
Release Notes:
- Fixed finalizer logic with the following types:
DittoAttachment
DittoAttachmentFetcher
DittoKit
DittoLiveQuery
DittoSubscription
Installation:
implementation "live.ditto:dittokit:0.4.0-alpha5"
Kotlin Android Version 0.4.0-alpha4
Released: Fri Sep 18th 2020, 2:12 am
Release Notes:
- Fixes an issue where deletes might not propagate correctly in a multi-hop mesh
Installation:
implementation "live.ditto:dittokit:0.4.0-alpha4"
Kotlin Android Version 0.4.0-alpha3
Released: Fri Sep 11th 2020, 9:34 am
Release Notes:
- Fixed an error where presence data was failing to be deserialized properly.
Installation:
implementation "live.ditto:dittokit:0.4.0-alpha3"
Kotlin Android Version 0.4.0-alpha2
Released: Thu Sep 10th 2020, 8:16 am
Release Notes:
From the 0.4.0-alpha1 release notes:
- Note that this is a release with breaking changes, even just in terms of clients running 0.4.0 not being able to communicate with clients running 0.3.X releases.
- Fixes for memory leaks.
- Performance improvements.
Installation:
implementation "live.ditto:dittokit:0.4.0-alpha2"
Kotlin Android Version 0.4.0-alpha1
Released: Wed Sep 9th 2020, 9:42 pm
Release Notes:
- Note that this is a release with breaking changes, even just in terms of clients running 0.4.0 not being able to communicate with clients running 0.3.X releases.
- Fixes for memory leaks.
- Performance improvements.
Installation:
implementation "live.ditto:dittokit:0.4.0-alpha1"
Kotlin Android Version 0.3.5
Released: Fri Sep 4th 2020, 8:04 pm
Release Notes:
- Fixed an issue where inserting data as default data (setting the
isDefault
parameter to true) could lead to data that would not merge as expected.
Installation:
implementation "live.ditto:dittokit:0.3.5"
Kotlin Android Version 0.3.4
Released: Mon Aug 10th 2020, 3:13 pm
Release Notes:
- Fixed a bug with query compilation where integer literals in the query would lead to a query compilation failure.
Installation:
implementation "live.ditto:dittokit:0.3.4"
Kotlin Android Version 0.3.3
Released: Fri Aug 7th 2020, 3:31 am
Release Notes:
- Android-specific performance improvements for large collections
- Java: DittoDocument's "value" field has been replaced with "getValue()"
Installation:
implementation "live.ditto:dittokit:0.3.3"
Kotlin Android Version 0.3.2
Released: Thu Jul 30th 2020, 5:32 am
Release Notes:
- Fixes bug where Android phones sometimes do not activate Bluetooth if it is enabled after launching the app
Installation:
implementation "live.ditto:dittokit:0.3.2"
Kotlin Android Version 0.3.1
Released: Thu Jul 16th 2020, 1:36 am
Release Notes:
- Added a new LAN transport mode WiFiFixedPort to listen for connections on a known port.
- Android phones using the Bluetooth transport will no longer change their device name.
- DittoKit has a new sdkVersion property describing which build of DittoKit is installed. Please include this information in support requests.
- Fixed bug where an attachment transfer may not resume after being interrupted.
- Fixed bug where a long-lasting Bluetooth connection may spontaneously disconnect and reconnect.
- Improvements to reconnection speed.
Installation:
implementation "live.ditto:dittokit:0.3.1"
Kotlin Android Version 0.3.0
Released: Thu Jun 4th 2020, 10:39 am
Release Notes:
- DittoKit 0.3 includes incompatible changes to data storage and networking - please uninstall all apps based on DittoKit 0.2 first
- Support for attaching large binary files to documents and syncing them on demand
- When creating documents you can no longer specify the id by providing an
_id
key. Instead you must specify an id as an extra argument to theinsert
function, if you want to explicitly set a document’s id - A document’s id property is now
id
rather than_id
- The parameters for a live query callback have changed
- The sort order for a query is now controlled by an ascending/descending enum
- Fixed crash when inserting large amounts of data into a document
- Faster sync performance
- Ability to connect to a peer at a known address using the Server transport type
Installation:
implementation "live.ditto:dittokit:0.3.0"
Kotlin Android Version 0.2.3
Released: Tue May 5th 2020, 9:42 am
Release Notes:
- Fixed an issue where DittoKit would not work in 32-bit contexts.
Installation:
implementation "live.ditto:dittokit:0.2.3"
Kotlin Android Version 0.2.2
Released: Fri Feb 14th 2020, 12:11 am
Release Notes:
- Reduced minimum Android SDK API level from 26 to 25 to support Android 7.1 devices.
Installation:
implementation "live.ditto:dittokit:0.2.2"
Kotlin Android Version 0.2.1
Released: Thu Jan 9th 2020, 6:28 am
Release Notes:
- Fixes a crash that can occur when calling stop().
Installation:
implementation "live.ditto:dittokit:0.2.1"
Kotlin Android Version 0.2.0
Released: Tue Dec 17th 2019, 4:49 pm
Release Notes:
- Improved query results performance
- Fixed two bugs that could lead to a crash
- Many networking improvements to speed up sync on iOS and Android
Note: SyncKit 0.2 is incompatible with version 0.1.
Installation:
implementation "live.ditto:dittokit:0.2.0"
Kotlin Android Version 0.1.3
Released: Tue Oct 8th 2019, 12:37 pm
Release Notes:
- Improved handling of retrieving numeric fields from documents
- Fixes a bug where observe would not create a subscription
Installation:
implementation "live.ditto:dittokit:0.1.3"
C# / .NET 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)
Installation:
Command Line
Install-Package Ditto -Version 4.8.1-rc.1
PackageReference
<PackageReference Include="Ditto" Version=4.8.1-rc.1" />
C# / .NET Version 4.8.0
Released: Thu Aug 22nd 2024, 12:29 pm
Release Notes:
- Added: method
ExportToFileAsync()
toDittoLogger
, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11961) - Added: Properties
PeerKeyString1
andPeerKeyString2
onDittoConnection
replacing the now deprecated propertiesPeer1
andPeer2
. (#12799) - Deprecated: Properties
Peer1
andPeer2
onDittoConnection
, please usePeerKeyString1
andPeerKeyString2
instead. (#12799) - Added: Method
GetAllConnectionsByID
onDittoPresenceGraph
providing easy access to all connections in the presence graph, grouped by their IDs. (#12799) - Changed: Documentation for
StartSync()
andDisableSyncWithV3()
to include a recommendation for performance improvement. (#13098)- Fixed: No longer losing precision while working with larger floating-point numbers. (#13229) - Changed: Documentation for property
PeerMetadata
onDittoPeer
to add information about how the property behaves over the lifecycle of theDittoPresenceGraph
. (#13479)- Linux: Increased mDNS multicast TTL from 1 to 255 to allow for cross-VLAN announcements (#13590) - Added: BLE and Wi-Fi Aware transports on Android. (#11288)
- Added:
Login
method toDittoAuthenticator
that provides access to authentication feedback on the returnedclientInfoJson
string. (#4804) - Deprecated: Method
LoginWithToken
fromDittoAuthenticator
. Use the newly addedLogin
method instead. (#4804) - 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
andchar_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 ofWarning
. (#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:
Command Line
Install-Package Ditto -Version 4.8.0
PackageReference
<PackageReference Include="Ditto" Version=4.8.0" />
C# / .NET 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
andchar_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 ofWarning
. (#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
ExportToFileAsync()
toDittoLogger
, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11961) - Added: Properties
PeerKeyString1
andPeerKeyString2
onDittoConnection
replacing the now deprecated propertiesPeer1
andPeer2
. (#12799) - Deprecated: Properties
Peer1
andPeer2
onDittoConnection
, please usePeerKeyString1
andPeerKeyString2
instead. (#12799) - Added: Method
GetAllConnectionsByID
onDittoPresenceGraph
providing easy access to all connections in the presence graph, grouped by their IDs. (#12799) - Changed: Documentation for
StartSync()
andDisableSyncWithV3()
to include a recommendation for performance improvement. (#13098)- Fixed: No longer losing precision while working with larger floating-point numbers. (#13229) - Changed: Documentation for property
PeerMetadata
onDittoPeer
to add information about how the property behaves over the lifecycle of theDittoPresenceGraph
. (#13479)- Linux: Increased mDNS multicast TTL from 1 to 255 to allow for cross-VLAN announcements (#13590) - Added: BLE and Wi-Fi Aware transports on Android. (#11288)
- Added:
Login
method toDittoAuthenticator
that provides access to authentication feedback on the returnedclientInfoJson
string. (#4804) - Deprecated: Method
LoginWithToken
fromDittoAuthenticator
. Use the newly addedLogin
method instead. (#4804)
Installation:
Command Line
Install-Package Ditto -Version 4.8.0-rc.2
PackageReference
<PackageReference Include="Ditto" Version=4.8.0-rc.2" />
C# / .NET 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)
- Fixed:
DittoAttachmentFetcher.Dispose()
would not cancel theonFetchEvent
callbacks. (#13859)
Installation:
Command Line
Install-Package Ditto -Version 4.7.5-rc.1
PackageReference
<PackageReference Include="Ditto" Version=4.7.5-rc.1" />
C# / .NET 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) Increased mDNS multicast TTL from 1 to 255 to allow for cross-VLAN announcements (#13590)
- Fixed: A rare scenario that caused Ditto to reconnect peers under high load (#13849)
Installation:
Command Line
Install-Package Ditto -Version 4.7.4
PackageReference
<PackageReference Include="Ditto" Version=4.7.4" />
C# / .NET 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: A bug that would wrongly raise a
DittoValidationException
trying to fetch an attachment from a dictionary representation. (#12668) - Fixed: The
DittoPeer.IsDittoCloudConnected
property now correctly reflects the actual connection status. (#13062) - 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)
Installation:
Command Line
Install-Package Ditto -Version 4.7.2
PackageReference
<PackageReference Include="Ditto" Version=4.7.2" />
C# / .NET 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)
- 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: A bug that would wrongly raise a
DittoValidationException
trying to fetch an attachment from a dictionary representation. (#12668) - Fixed: The
DittoPeer.IsDittoCloudConnected
property now correctly reflects the actual connection status. (#13062)
Installation:
Command Line
Install-Package Ditto -Version 4.7.2-rc.2
PackageReference
<PackageReference Include="Ditto" Version=4.7.2-rc.2" />
C# / .NET Version 4.7.2-rc.1
Released: Mon May 6th 2024, 11:16 pm
Release Notes:
- Fixed: A bug that would wrongly raise a
DittoValidationException
trying to fetch an attachment from a dictionary representation. (#12668) - 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:
Command Line
Install-Package Ditto -Version 4.7.2-rc.1
PackageReference
<PackageReference Include="Ditto" Version=4.7.2-rc.1" />
C# / .NET 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: document paths containing non-alphanumeric (or non-underscore) characters no longer lead to errors. (#12556)
Installation:
Command Line
Install-Package Ditto -Version 4.7.1
PackageReference
<PackageReference Include="Ditto" Version=4.7.1" />
C# / .NET Version 4.7.1-beta.2
Released: Fri Apr 5th 2024, 11:29 pm
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 4.7.1-beta.2
PackageReference
<PackageReference Include="Ditto" Version=4.7.1-beta.2" />
C# / .NET Version 4.7.1-beta.1
Released: Fri Apr 5th 2024, 6:18 pm
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 4.7.1-beta.1
PackageReference
<PackageReference Include="Ditto" Version=4.7.1-beta.1" />
C# / .NET 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)
- Fixed (Linux): P2P LAN failed to advertise on a newly added interface, e.g., enabling WiFi at runtime (#10265)
- Added: setting the
DeviceName
property of aDitto
instance after sync has started will now log a warning: changes to the value only take effect after restarting sync. (#11160) - Fixed:
DeviceName
property onDitto
instances now reflects the truncation of the value to 24 bytes when starting sync. (#11340) - Added: Property
PeerKeyString
toDittoPeer
as replacement for the now deprecatedPeerKey
. (#11611) - Added: property
PeerMetadataJsonString
and methodSetPeerMetadataJsonString
toDitto.Presence
. (#11611) - Added: property
PeerMetadata
and methodSetPeerMetadata
toDitto.Presence
. (#11611) - Added: properties
PeerMetadata
andIdentityServiceMetadata
toDittoPeer
. (#11611) - Added: property
ConnectionRequestHandler
toDitto.Presence
, including related types, allowing to filter incoming connections from other peers. (#11611) - Deprecated: Method
DittoPresence.Exec()
. Please use the newly introduced propertyGraph
onDitto.Presence
instead. (#11611) - Deprecated: property
PeerKey
onDittoPeer
, please use the newly addedpeerKeyString
instead. (#11611)
Installation:
Command Line
Install-Package Ditto -Version 4.7.0
PackageReference
<PackageReference Include="Ditto" Version=4.7.0" />
C# / .NET Version 4.7.0-alpha.1
Released: Fri Mar 1st 2024, 11:46 pm
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 4.7.0-alpha.1
PackageReference
<PackageReference Include="Ditto" Version=4.7.0-alpha.1" />
C# / .NET Version 4.6.0
Released: Tue Mar 12th 2024, 6:24 pm
Release Notes:
- Added: a variant of
FetchAttachment()
toDittoStore
that takes an attachment token dictionary representation as given by the value ofDittoQueryResultItem
(#11410) - Added: method
NewAttachmentAsync()
onDittoStore
as replacement for the corresponding and now deprecated method onDittoCollection
. It is now async. (#11410) - Added: method
FetchAttachment()
onDittoStore
as replacement for the corresponding and now deprecated method onDittoCollection
. (#11410) - Added: properties
Id
,Len
andMetadata
toDittoAttachment
andDittoAttachmentToken
(#11410) - Added: method
Stop()
onDittoAttachmentFetcher
. (#11776) - Added: UpdateDifferentValues option on the DittoWriteStrategy enum. (#8758)
- Added: Preliminary support for runtime configuration using DQL
ALTER SYSTEM
andSHOW
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: the default bind IP address of TCP and HTTP transports to be IPv6 "any" ([::]) rather than IPv4 (0.0.0.0) (#11473)
- Deprecated: method
NewAttachment()
ofDittoCollection
. Please use the newly introduced equivalent method onDittoStore
instead. (#11410) - Deprecated: method
FetchAttachment()
ofDittoCollection
. Please use the newly introduced equivalent method onDittoStore
instead. (#11410) - 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
andmetadata
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
ofDittoQueryResultItem
. The token is now provided as a dictionary of the form["id": "...", "len": 123, "metadata": ...] where
metadatais a
Dictionary<string,string>`. (#11410) - Fixed:
DittoAttachment
implements theIDisposable
interface now and the resources are properly cleared. (#11776)
Installation:
Command Line
Install-Package Ditto -Version 4.6.0
PackageReference
<PackageReference Include="Ditto" Version=4.6.0" />
C# / .NET 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
andSHOW
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)
- Fixed: Properly cleans up native resources while disposing a Ditto instance. Trying to access a disposed Ditto instance will now throw an
ObjectDisposedException
. (#11065) - Added: BLE and Wi-Fi Aware transports on Android. (#11288)
- Fixed: Windows P2P LAN only used IPv4 while advertising the service on IPv6 too (#11308)
- Changed: the default bind IP address of TCP and HTTP transports to be IPv6 "any" ([::]) rather than IPv4 (0.0.0.0) (#11473)
- Fixed: Calling
Dispose()
on a DittoQueryResult instance would now directly dispose its Items collection. (#11628) - Added: UpdateDifferentValues option on the DittoWriteStrategy enum. (#8758)
Installation:
Command Line
Install-Package Ditto -Version 4.6.0-alpha.3
PackageReference
<PackageReference Include="Ditto" Version=4.6.0-alpha.3" />
C# / .NET 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
andSHOW
statements (#10401) - Added: UpdateDifferentValues option on the DittoWriteStrategy enum. (#8758)
- Added: BLE and Wi-Fi Aware transports on Android. (#11288)
- 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: the default bind IP address of TCP and HTTP transports to be IPv6 "any" ([::]) rather than IPv4 (0.0.0.0) (#11473)
- 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: Windows P2P LAN only used IPv4 while advertising the service on IPv6 too (#11308)
- Fixed: Properly cleans up native resources while disposing a Ditto instance. Trying to access a disposed Ditto instance will now throw an
ObjectDisposedException
. (#11065) - Fixed: Calling
Dispose()
on a DittoQueryResult instance would now directly dispose its Items collection. (#11628)
Installation:
Command Line
Install-Package Ditto -Version 4.6.0-alpha.2
PackageReference
<PackageReference Include="Ditto" Version=4.6.0-alpha.2" />
C# / .NET 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
andSHOW
statements (#10401) - Added: UpdateDifferentValues option on the DittoWriteStrategy enum. (#8758)
- Added: BLE and Wi-Fi Aware transports on Android. (#11288)
- Changed: Peers use latest supported protocol version, even if the application is using backwards-compatible CRDT formats. (#10875)
- Changed: the default bind IP address of TCP and HTTP transports to be IPv6 "any" ([::]) rather than IPv4 (0.0.0.0) (#11473)
- 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: 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: Windows P2P LAN only used IPv4 while advertising the service on IPv6 too (#11308)
- Fixed: Properly cleans up native resources while disposing a Ditto instance. Trying to access a disposed Ditto instance will now throw an
ObjectDisposedException
. (#11065) - Fixed: Calling
Dispose()
on a DittoQueryResult instance would now directly dispose its Items collection. (#11628)
Installation:
Command Line
Install-Package Ditto -Version 4.6.0-alpha.1
PackageReference
<PackageReference Include="Ditto" Version=4.6.0-alpha.1" />
C# / .NET Version 4.5.5-alpha.2
Released: Tue May 21st 2024, 9:10 pm
Release Notes:
- Fixed: document paths containing non-alphanumeric (or non-underscore) characters no longer lead to errors. (#12556)
Installation:
Command Line
Install-Package Ditto -Version 4.5.5-alpha.2
PackageReference
<PackageReference Include="Ditto" Version=4.5.5-alpha.2" />
C# / .NET Version 4.5.4
Released: Thu Feb 22nd 2024, 1:46 am
Release Notes:
- Fixed: Properly cleans up native resources while disposing a Ditto instance. Trying to access a disposed Ditto instance will now throw an
ObjectDisposedException
. (#11065) - Fixed: Calling
Dispose()
on a DittoQueryResult instance would now directly dispose its Items collection. (#11628) - Fixed: intermittent crash when syncing over Bluetooth LE GATT with "DataTooLarge" error (#9789)
Installation:
Command Line
Install-Package Ditto -Version 4.5.4
PackageReference
<PackageReference Include="Ditto" Version=4.5.4" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 4.5.4-transports-behind-core
PackageReference
<PackageReference Include="Ditto" Version=4.5.4-transports-behind-core" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 4.5.4-alpha.1-transports-behind-core
PackageReference
<PackageReference Include="Ditto" Version=4.5.4-alpha.1-transports-behind-core" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 4.5.3
PackageReference
<PackageReference Include="Ditto" Version=4.5.3" />
C# / .NET Version 4.5.2
Released: Thu Jan 25th 2024, 4:23 pm
Release Notes:
- Fixed: Windows P2P LAN only used IPv4 while advertising the service on IPv6 too (#11308)
Installation:
Command Line
Install-Package Ditto -Version 4.5.2
PackageReference
<PackageReference Include="Ditto" Version=4.5.2" />
C# / .NET Version 4.5.2-rc.3
Released: Wed Jan 17th 2024, 10:00 pm
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 4.5.2-rc.3
PackageReference
<PackageReference Include="Ditto" Version=4.5.2-rc.3" />
C# / .NET 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 au64
ori64
during collation. (#10940)
Installation:
Command Line
Install-Package Ditto -Version 4.5.1
PackageReference
<PackageReference Include="Ditto" Version=4.5.1" />
C# / .NET Version 4.5.0
Released: Thu Dec 7th 2023, 5:59 pm
Release Notes:
- Added: Support for .NET MAUI. (#5794)
- Added: Support for Xamarin Android.. (#5082)
- Added: Support for Xamarin iOS Simulators. (#6081)
- Added:
Ditto.Version
static 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
ExecuteAsync()
onDittoStore
that executes a DQL query and returns aDittoQueryResult
containingDittoQueryResultItem
s 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 oldSubscription
class. (#10395, #10394) - Added: method
RegisterSubscription()
onDittoSync
that installs and returns aSyncSubscription
. (#10395, #10394) - Added: property
Subscriptions
onDittoSync
providing access to all currently active sync subscriptions. (#10395, #10394) - Added: property
Sync
onDitto
of typeDittoSync
to serve as an entry point for sync functionality. (#10395, #10394) - Added: class
DittoStoreObserver
onDittoStore
that configures Ditto to invoke an observation handler whenever results for its query change. (#10396, #10394) - Added: method
RegisterObserver()
onDittoStore
that installs and returns aDittoStoreObserver
. (#10396, #10394) - Added: property
Observers
onDittoStore
providing access to all currently active store observers. (#10396, #10394) - Added: The
SmallPeerInfo
property to Ditto allowing you to configure the collection and sync of Small Peer Info. (#10517) - 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.MulticastEnabled
property. (#10126) - Changed: Ditto .NET SDK for iOS and macOS is built and tested with Xcode 14.3.1. (#10177)
- 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)
- Fixed: Bluetooth and LAN transports fail to stop on Windows and Linux. (#8809)
Installation:
Command Line
Install-Package Ditto -Version 4.5.0
PackageReference
<PackageReference Include="Ditto" Version=4.5.0" />
C# / .NET 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.MulticastEnabled
property. (#10126) - Changed: Ditto .NET SDK for iOS and macOS is built and tested with Xcode 14.3.1. (#10177)
- Added: Support for Xamarin Android. (#5082)
- Added: Support for Xamarin iOS Simulators (#6081)
- fixed: Bluetooth and LAN transports fail to stop on Windows and Linux (#8809)
Installation:
Command Line
Install-Package Ditto -Version 4.5.0-alpha3
PackageReference
<PackageReference Include="Ditto" Version=4.5.0-alpha3" />
C# / .NET Version 4.5.0-alpha1
Released: Tue Nov 21st 2023, 7:23 am
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 4.5.0-alpha1
PackageReference
<PackageReference Include="Ditto" Version=4.5.0-alpha1" />
C# / .NET Version 4.5.0-alpha.4
Released: Thu Nov 23rd 2023, 12:25 am
Release Notes:
- Fixed a bug 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)
- performance: implement bipartite distance-aware mesh topology (#10632)
- Fixed: mesh could choose random connections (#10711)
- Improve memory usage and performance of Documents (#10736)
- Reduced metadata accumulation after eviction by clearing remote summaries (#7065)
- Changed: Improved serialization performance (#9112)
Installation:
Command Line
Install-Package Ditto -Version 4.5.0-alpha.4
PackageReference
<PackageReference Include="Ditto" Version=4.5.0-alpha.4" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 4.4.5
PackageReference
<PackageReference Include="Ditto" Version=4.4.5" />
C# / .NET Version 4.4.4
Released: Thu Nov 2nd 2023, 10:03 pm
Release Notes:
- Added: the
SmallPeerInfo
property to Ditto allowing to configure the collection and sync of Small Peer Info. (#10517) - 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:
Command Line
Install-Package Ditto -Version 4.4.4
PackageReference
<PackageReference Include="Ditto" Version=4.4.4" />
C# / .NET Version 4.4.3
Released: Tue Oct 24th 2023, 9:01 pm
Release Notes:
- Changed: Introduced custom implementations for
DittoAttachmentToken
'sEquals()
andGetHashCode()
methods. (#10211)
Installation:
Command Line
Install-Package Ditto -Version 4.4.3
PackageReference
<PackageReference Include="Ditto" Version=4.4.3" />
C# / .NET 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 tobigPeerOnly
. (#10203, #10204)
Installation:
Command Line
Install-Package Ditto -Version 4.4.2
PackageReference
<PackageReference Include="Ditto" Version=4.4.2" />
C# / .NET Version 4.4.1
Released: Tue Sep 26th 2023, 11:39 pm
Release Notes:
- Changed: Raise Exception when creating a
LiveQuery
or aSubscription
after dropping the Ditto object. (#10062) - Fixed: an issue where the store
.Update()
API was not releasing transaction handle (rollback) when the provided delegate invocation throws. (#10064) - Fixed: Unexpected token error when installing Ditto 4.4.0 on Linux. (#10069)
Installation:
Command Line
Install-Package Ditto -Version 4.4.1
PackageReference
<PackageReference Include="Ditto" Version=4.4.1" />
C# / .NET Version 4.4.0
Released: Thu Aug 31st 2023, 10:43 pm
Release Notes:
- Added: Support for AArch64 CPU architecture on Linux. (#9357)
- 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 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:
Command Line
Install-Package Ditto -Version 4.4.0
PackageReference
<PackageReference Include="Ditto" Version=4.4.0" />
C# / .NET 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)
- Fixed: an issue on Linux that caused excessive multicast traffic over LAN transport. (#9398)
Installation:
Command Line
Install-Package Ditto -Version 4.3.1
PackageReference
<PackageReference Include="Ditto" Version=4.3.1" />
C# / .NET 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: 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:
Command Line
Install-Package Ditto -Version 4.3.0
PackageReference
<PackageReference Include="Ditto" Version=4.3.0" />
C# / .NET Version 4.2.3
Released: Wed Jul 5th 2023, 10:32 pm
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 4.2.3
PackageReference
<PackageReference Include="Ditto" Version=4.2.3" />
C# / .NET 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)
Installation:
Command Line
Install-Package Ditto -Version 4.2.2
PackageReference
<PackageReference Include="Ditto" Version=4.2.2" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 4.2.1
PackageReference
<PackageReference Include="Ditto" Version=4.2.1" />
C# / .NET Version 4.2.0
Released: Tue Jun 13th 2023, 8:53 am
Release Notes:
- Changed: Improved replication uses compressed message stream to decrease bandwidth consumption. (#8807)
- Changed: Reduce verbosity in replication logs (#8370)
- Fixed: Potential crash on Linux when handling Bluetooth advertisement during Ditto startup (#8538)
Installation:
Command Line
Install-Package Ditto -Version 4.2.0
PackageReference
<PackageReference Include="Ditto" Version=4.2.0" />
C# / .NET 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.
- Fixed: Potential crash on Linux when handling Bluetooth advertisement during Ditto startup.
Installation:
Command Line
Install-Package Ditto -Version 4.1.1
PackageReference
<PackageReference Include="Ditto" Version=4.1.1" />
C# / .NET 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:
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: improved Bluetooth LE connection reliability on Linux
- 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:
Command Line
Install-Package Ditto -Version 4.1.0
PackageReference
<PackageReference Include="Ditto" Version=4.1.0" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 4.0.3-alpha.linux-ble-fixes-2
PackageReference
<PackageReference Include="Ditto" Version=4.0.3-alpha.linux-ble-fixes-2" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 4.0.3-alpha.linux-ble-fixes
PackageReference
<PackageReference Include="Ditto" Version=4.0.3-alpha.linux-ble-fixes" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 4.0.2
PackageReference
<PackageReference Include="Ditto" Version=4.0.2" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 4.0.1
PackageReference
<PackageReference Include="Ditto" Version=4.0.1" />
C# / .NET 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 theDitto
object or the a peer has synced with another peer that has calleddisableSyncWithV3
, or they have synced with another peer that has calleddisableSyncWithV3
, 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.
Installation:
Command Line
Install-Package Ditto -Version 4.0.0
PackageReference
<PackageReference Include="Ditto" Version=4.0.0" />
C# / .NET 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: AddWins removes will now be used if
disableSyncWithV3
has been called on theDitto
object or the a peer has synced with another peer that has calleddisableSyncWithV3
, or they have synced with another peer that has calleddisableSyncWithV3
, etc.
Installation:
Command Line
Install-Package Ditto -Version 4.0.0-beta1
PackageReference
<PackageReference Include="Ditto" Version=4.0.0-beta1" />
C# / .NET Version 4.0.0-alpha2
Released: Mon Jan 16th 2023, 10:16 pm
Release Notes:
- Added:
DisableSyncWithV3
functionality toDitto
. 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 callingremove()
. Any other device running v4 of the SDK that syncs with a device that has calleddisableSyncWithV3
(or has themselves synced with another device that has calleddisableSyncWithV3
, etc - if any chain of syncing exists that involves a device that has calleddisableSyncWithV3
) will also no longer be able to sync with v3 peers and will perform AddWins removes when callingremove()
.
Installation:
Command Line
Install-Package Ditto -Version 4.0.0-alpha2
PackageReference
<PackageReference Include="Ditto" Version=4.0.0-alpha2" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 3.0.11
PackageReference
<PackageReference Include="Ditto" Version=3.0.11" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 3.0.10
PackageReference
<PackageReference Include="Ditto" Version=3.0.10" />
C# / .NET Version 3.0.9
Released: Wed Jun 14th 2023, 3:23 pm
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 3.0.9
PackageReference
<PackageReference Include="Ditto" Version=3.0.9" />
C# / .NET Version 3.0.9-alpha1
Released: Mon May 22nd 2023, 11:34 pm
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 3.0.9-alpha1
PackageReference
<PackageReference Include="Ditto" Version=3.0.9-alpha1" />
C# / .NET Version 3.0.8
Released: Fri May 19th 2023, 6:33 am
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 3.0.8
PackageReference
<PackageReference Include="Ditto" Version=3.0.8" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 3.0.7
PackageReference
<PackageReference Include="Ditto" Version=3.0.7" />
C# / .NET Version 3.0.6
Released: Thu Mar 16th 2023, 1:00 am
Release Notes:
- Fixed: .NET peers could be unable to properly decode attachment tokens from peers using the Rust SDK.
- Fixed: incorrect cleanup of SDK objects which can lead to crashes
- 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:
Command Line
Install-Package Ditto -Version 3.0.6
PackageReference
<PackageReference Include="Ditto" Version=3.0.6" />
C# / .NET Version 3.0.5
Released: Wed Mar 1st 2023, 5:31 am
Release Notes:
- Added: more specific
DittoFFIException
subclass of existingDittoException
, which are thrown when there problems from the Ditto FFI layer. - 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
Installation:
Command Line
Install-Package Ditto -Version 3.0.5
PackageReference
<PackageReference Include="Ditto" Version=3.0.5" />
C# / .NET Version 3.0.4
Released: Sat Jan 28th 2023, 12:10 am
Release Notes:
- Added:
NoPreferredRouteHint
property toDittoGlobal
class - Deprecated:
NO_PREFERRED_ROUTE_HINT
property inDittoGlobal
class
Installation:
Command Line
Install-Package Ditto -Version 3.0.4
PackageReference
<PackageReference Include="Ditto" Version=3.0.4" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 3.0.3
PackageReference
<PackageReference Include="Ditto" Version=3.0.3" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 3.0.3-alpha2
PackageReference
<PackageReference Include="Ditto" Version=3.0.3-alpha2" />
C# / .NET Version 3.0.2
Released: Fri Jan 20th 2023, 9:20 pm
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 3.0.2
PackageReference
<PackageReference Include="Ditto" Version=3.0.2" />
C# / .NET Version 3.0.1
Released: Sat Jan 14th 2023, 2:57 am
Release Notes:
- Added:
RoutingHint
property toDittoGlobal
class. - Added:
NO_PREFERRED_ROUTE_HINT
property toDittoGlobal
, used internally byDittoGlobal
if no routing hint is specified. - Changed: better readability of data sizes and durations in logs.
Installation:
Command Line
Install-Package Ditto -Version 3.0.1
PackageReference
<PackageReference Include="Ditto" Version=3.0.1" />
C# / .NET 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. - Renamed:
DittoDocumentID
->DittoDocumentId
- Renamed:
DittoDocumentIDPath
->DittoDocumentIdPath
- Renamed:
DittoPendingIDSpecificOperation
->DittoPendingIdSpecificOperation
- Renamed:
DittoWriteTransactionPendingIDSpecificOperation
->DittoWriteTransactionPendingIdSpecificOperation
- Renamed:
DittoAuthenticator
propertyUserID
->UserId
- Renamed:
DittoIdentity
fieldAppID
->AppId
- Renamed:
appId
andsiteId
parameters inDittoIdentity
constructors - Renamed:
userId
parameter inDittoAuthenticationStatus
constructor - Renamed:
DittoDocumentIDCBORConverter
->DittoDocumentIdCBORConverter
- Added:
Dispose()
method toDittoAuthenticationStatusObserver
, making itIDisposable
. - Deprecated:
DittoAuthenticationStatusObserver.Stop()
, please use the newly addedDittoAuthenticationStatusObserver.Dispose()
method. - Removed: the
PersistenceDir
argument from allIdentity
class methods. - Added: property
Presence
to the class Ditto. - Added:
DittoPresence
type withobserve
andexec
methods. - Added:
DittoPresenceGraph
type, which represents local and remote peers in the Ditto network. - Added:
DittoConnectionType
type. - Deprecated:
ObservePeers
method. - Removed:
Observe()
andObserveWithNextSignal()
methods ofDittoPendingCollectionsOperation
,DittoPendingCursorOperation
, andDittoPendingIdSpecificOperation
. Please use the correspondingObserveLocal()
andObserveLocalWithNextSignal()
variants along with a separate call toSubscribe()
instead. See https://docs.ditto.live/csharp/common/concepts/syncing-data#subscribe - Added:
DittoDiskUsage
type withObserve
andExec
methods. - Added:
DiskUsage
property toDitto
. - Added:
DiskUsage
property toDittoStore
. - Changed: performance improvements.
- Added:
disableSyncWithV2
method toDitto
. 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.
- Improved: log increased detail to help debug blocked write transactions.
Installation:
Command Line
Install-Package Ditto -Version 3.0.0
PackageReference
<PackageReference Include="Ditto" Version=3.0.0" />
C# / .NET Version 3.0.0-alpha3
Released: Mon Dec 12th 2022, 1:19 pm
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 3.0.0-alpha3
PackageReference
<PackageReference Include="Ditto" Version=3.0.0-alpha3" />
C# / .NET Version 3.0.0-alpha2
Released: Tue Dec 6th 2022, 4:01 pm
Release Notes:
- Improved: reliability if app crashes occur while persisting authentication data.
Installation:
Command Line
Install-Package Ditto -Version 3.0.0-alpha2
PackageReference
<PackageReference Include="Ditto" Version=3.0.0-alpha2" />
C# / .NET 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. - Renamed:
DittoDocumentID
->DittoDocumentId
- Renamed:
DittoDocumentIDPath
->DittoDocumentIdPath
- Renamed:
DittoPendingIDSpecificOperation
->DittoPendingIdSpecificOperation
- Renamed:
DittoWriteTransactionPendingIDSpecificOperation
->DittoWriteTransactionPendingIdSpecificOperation
- Renamed:
DittoAuthenticator
propertyUserID
->UserId
- Renamed:
DittoIdentity
fieldAppID
->AppId
- Renamed:
appId
andsiteId
parameters inDittoIdentity
constructors - Renamed:
userId
parameter inDittoAuthenticationStatus
constructor - Renamed:
DittoDocumentIDCBORConverter
->DittoDocumentIdCBORConverter
- Added:
Dispose()
method toDittoAuthenticationStatusObserver
, making itIDisposable
. - Deprecated:
DittoAuthenticationStatusObserver.Stop()
, please use the newly addedDittoAuthenticationStatusObserver.Dispose()
method. - Removed: the
PersistenceDir
argument from allIdentity
class methods. - Added: property
Presence
to the class Ditto. - Added:
DittoPresence
type withobserve
andexec
methods. - Added:
DittoPresenceGraph
type, which represents local and remote peers in the Ditto network. - Added:
DittoConnectionType
type. - Deprecated:
ObservePeers
method. - Removed:
Observe()
andObserveWithNextSignal()
methods ofDittoPendingCollectionsOperation
,DittoPendingCursorOperation
, andDittoPendingIdSpecificOperation
. Please use the correspondingObserveLocal()
andObserveLocalWithNextSignal()
variants along with a separate call toSubscribe()
instead. See https://docs.ditto.live/csharp/common/concepts/syncing-data#subscribe - Added:
DittoDiskUsage
type withObserve
andExec
methods. - Added:
DiskUsage
property toDitto
. - Added:
DiskUsage
property toDittoStore
. - Changed: performance improvements.
- Added
disableSyncWithV2
method toDitto
. 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:
Command Line
Install-Package Ditto -Version 3.0.0-alpha1
PackageReference
<PackageReference Include="Ditto" Version=3.0.0-alpha1" />
C# / .NET Version 2.1.0
Released: Wed Nov 2nd 2022, 11:51 pm
Release Notes:
- Added:
IDisposable
conformance toDitto
. Sync shutdown and resource cleanup can now be done by callingDispose()
- Deprecated:
Observe
andObserveWithNextSignal
methods ofDittoPendingCollectionsOperation
,DittoPendingCursorOperation
andDittoPendingIDSpecificOperation
. Use the correspondingObserveLocal
orObserveLocalWithNextSignal
along with a separate call toSubscribe
instead. See https://docs.ditto.live/csharp/common/concepts/syncing-data#subscribe
Installation:
Command Line
Install-Package Ditto -Version 2.1.0
PackageReference
<PackageReference Include="Ditto" Version=2.1.0" />
C# / .NET Version 2.0.8
Released: Fri Oct 28th 2022, 12:14 am
Release Notes:
- Added:
AppId()
method toDitto
class - Added:
PersistenceDirectory
method toDitto
class - Fixed: Windows BLE connections are more stable and recover better
Installation:
Command Line
Install-Package Ditto -Version 2.0.8
PackageReference
<PackageReference Include="Ditto" Version=2.0.8" />
C# / .NET 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
- Fixed: Reduced the amount of disk space used by sync metadata by up to 50% in some cases
Installation:
Command Line
Install-Package Ditto -Version 2.0.7
PackageReference
<PackageReference Include="Ditto" Version=2.0.7" />
C# / .NET 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
- Added: Bluetooth LE transport for P2P connections on Windows
- Added: Bluetooth LE transport for P2P connections on Linux
Installation:
Command Line
Install-Package Ditto -Version 2.0.6
PackageReference
<PackageReference Include="Ditto" Version=2.0.6" />
C# / .NET Version 2.0.5
Released: Thu Sep 8th 2022, 10:20 pm
Release Notes:
- Fixed: a very rare deadlock when running on macOS or iOS and starting sync immediately after creating the Ditto instance.
Installation:
Command Line
Install-Package Ditto -Version 2.0.5
PackageReference
<PackageReference Include="Ditto" Version=2.0.5" />
C# / .NET Version 2.0.4
Released: Thu Sep 1st 2022, 6:31 pm
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 2.0.4
PackageReference
<PackageReference Include="Ditto" Version=2.0.4" />
C# / .NET Version 2.0.3
Released: Wed Aug 31st 2022, 5:20 pm
Release Notes:
- Changed: presence data is no longer synced with the big peer.
Installation:
Command Line
Install-Package Ditto -Version 2.0.3
PackageReference
<PackageReference Include="Ditto" Version=2.0.3" />
C# / .NET Version 2.0.2
Released: Sat Aug 27th 2022, 1:58 am
Release Notes:
- Changed: performing an
.exec()
call, outside the scope of aStore.Write({ })
block, no longer tries to obtain a write transaction and instead uses a read transaction.
Installation:
Command Line
Install-Package Ditto -Version 2.0.2
PackageReference
<PackageReference Include="Ditto" Version=2.0.2" />
C# / .NET Version 2.0.1
Released: Sun Aug 14th 2022, 4:57 am
Release Notes:
- Fixed:
DittoCounter
constructors are now public. - Added: support for Xamarin.iOS (physical devices).
- Added: support for peer-to-peer transports on macOS (Bluetooth LE & AWDL).
Installation:
Command Line
Install-Package Ditto -Version 2.0.1
PackageReference
<PackageReference Include="Ditto" Version=2.0.1" />
C# / .NET 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 version1.1.8
of the SDK. - Added: support for explicitly typing values as registers. This is via 2 new types:
DittoRegister
andDittoMutableRegister
, and newRegister
value accessors added toDittoDocumentPath
andDittoMutableDocumentPath
. - Added:
DittoCounter
andDittoMutableCounter
types resembling the CRDT type underneath, which replace the old counter mechanics. A newCounter
value accessor has been added toDittoDocumentPath
andDittoMutableDocumentPath
, which returns aDittoCounter
or aDittoMutableCounter
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
andDittoMutableRGA
in v2, and newRGA
value accessors added toDittoDocumentPath
andDittoMutableDocumentPath
. 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. - Removed: deprecated
Ditto
propertyAuthenticator
. Please use theAuth
property instead. - Changed: renamed
Ditto
methodTryStartSync()
toStartSync()
, which replaces the previously deprecatedStartSync()
method. - Removed: deprecated
Ditto
methodsSetAccessLicense()
andSetLicenseToken()
. Please useSetOfflineOnlyLicenseToken()
instead. - Removed: deprecated
DittoAuthenticator
propertyUserId
. Please useStatus.UserID
instead. - Removed: deprecated
DittoAuthenticator
methodIsAuthenticated()
. Please useStatus.IsAuthenticated()
instead. - Removed: deprecated
DittoIdentity
propertytoken
. Please useToken
instead. - Changed: renamed
DittoIdentity
methodOnlinePlaygroundV2()
toOnlinePlayground()
. - Removed: deprecated identities
Development()
andOnline()
. Please use the available identities instead. - Removed: deprecated
DittoDocumentID
methodToNative()
. Please use theValue
property instead. - Removed: deprecated
DittoMutableDocumentPath
methodReplaceWithCounter()
. Please useSet(DittoCounter)
instead. - Removed: deprecated
DittoMutableDocumentPath
methodIncrement()
. Please useDittoMutableCounter::Increment
instead. - Removed: deprecated
DittoScopedWriteTransaction
methodsInsert()
andInsertWithStrategy()
. Please useUpsert()
instead. - Removed:
DittoCollection
methodsInsert()
andInsertWithStrategy()
. Please useUpsert()
instead. - Changed:
DittoCollection.Upsert
andDittoScopedWriteTransaction.Upsert
are no longerunsafe
. - Removed:
DittoWriteStrategy.Overwrite
.
Known issues
- Nested
DittoRGA
instances will not work properly.
Installation:
Command Line
Install-Package Ditto -Version 2.0.0
PackageReference
<PackageReference Include="Ditto" Version=2.0.0" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 2.0.0-alpha1
PackageReference
<PackageReference Include="Ditto" Version=2.0.0-alpha1" />
C# / .NET Version 1.1.11
Released: Fri Sep 9th 2022, 11:11 pm
Release Notes:
- Fixed: a very rare deadlock when running on macOS or iOS and starting sync immediately after creating the Ditto instance.
Installation:
Command Line
Install-Package Ditto -Version 1.1.11
PackageReference
<PackageReference Include="Ditto" Version=1.1.11" />
C# / .NET Version 1.1.10
Released: Thu Jul 7th 2022, 7:53 pm
Release Notes:
- Changed: reduced total memory overhead during sync.
Installation:
Command Line
Install-Package Ditto -Version 1.1.10
PackageReference
<PackageReference Include="Ditto" Version=1.1.10" />
C# / .NET 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.
-
Changed: a Small Peer may now act as an authentication service on its HTTP transport.
-
Fixed: a peer using an online identity would fail to sync peer-to-peer after app restarts.
Installation:
Command Line
Install-Package Ditto -Version 1.1.9
PackageReference
<PackageReference Include="Ditto" Version=1.1.9" />
C# / .NET Version 1.1.9-alpha1
Released: Thu Jun 9th 2022, 3:12 am
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 1.1.9-alpha1
PackageReference
<PackageReference Include="Ditto" Version=1.1.9-alpha1" />
C# / .NET 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: cloud sync would stop working when setting a newly created transport config.
-
Added: a new
DittoTransportConditionChanged
event handler toDitto
, allowing to observe the status of network transports. -
Deprecated:
DittoIdentity.token
and replaced withDittoIdentity.Token
.
Installation:
Command Line
Install-Package Ditto -Version 1.1.8
PackageReference
<PackageReference Include="Ditto" Version=1.1.8" />
C# / .NET Version 1.1.7
Released: Fri May 13th 2022, 2:18 pm
Release Notes:
Synchronized version bump release.
Installation:
Command Line
Install-Package Ditto -Version 1.1.7
PackageReference
<PackageReference Include="Ditto" Version=1.1.7" />
C# / .NET 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. - Changed: improvements to Ditto mesh performance via fastest-available-transport prioritization.
Installation:
Command Line
Install-Package Ditto -Version 1.1.6
PackageReference
<PackageReference Include="Ditto" Version=1.1.6" />
C# / .NET Version 1.1.5
Released: Fri Apr 8th 2022, 8:00 am
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 1.1.5
PackageReference
<PackageReference Include="Ditto" Version=1.1.5" />
C# / .NET Version 1.1.4
Released: Fri Apr 8th 2022, 6:25 am
Release Notes:
- Changed: improved replication performance in some scenarios.
Installation:
Command Line
Install-Package Ditto -Version 1.1.4
PackageReference
<PackageReference Include="Ditto" Version=1.1.4" />
C# / .NET Version 1.1.3
Released: Tue Mar 22nd 2022, 10:13 am
Release Notes:
-
Added:
OnlinePlaygroundV2
identity allowing for basic authentication for playgrounds -
Deprecated:
OnlinePlayground
identity, use newly addedOnlinePlaygroundV2
instead -
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:
Command Line
Install-Package Ditto -Version 1.1.3
PackageReference
<PackageReference Include="Ditto" Version=1.1.3" />
C# / .NET Version 1.1.2
Released: Mon Feb 28th 2022, 2:36 pm
Release Notes:
- Added: method
SetOfflineOnlyLicenseToken()
to classDitto
as replacement for now deprecatedSetLicenseToken()
. - Deprecated:
SetLicenseToken()
of classDitto
, please use newly addedSetOfflineOnlyLicenseToken()
instead.
Installation:
Command Line
Install-Package Ditto -Version 1.1.2
PackageReference
<PackageReference Include="Ditto" Version=1.1.2" />
C# / .NET 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: Experimental mesh roles API
- Added:
SetMeshRole()
method toDittoExperimental
class - Added:
SetPriorityForMeshRole()
toDittoExperimental
class
- Added:
Installation:
Command Line
Install-Package Ditto -Version 1.1.1
PackageReference
<PackageReference Include="Ditto" Version=1.1.1" />
C# / .NET 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 classDitto
. - Added: method
Logout()
to classDittoAuthenticator
. - Added: set of APIs to observe authentication status (see API reference for
DittoAuthenticator
andDittoAuthenticationDelegate
). - Added: method
Upsert()
to classesDittoCollection
andDittoScopedWriteTransaction
(as a replacement forInsert()
& friends) which by default merges the newly inserted document if one with the same ID already exists. - Added: property
DeviceName
to classDitto
. - Deprecated: properties
IsAuthenticated
andUserID
of classDittoAuthenticator
in favor of newly introduced propertyStatus
. - Deprecated: methods
Insert()
& frinds of classesDittoCollection
andDittoScopedWriteTransaction
in favor of newly introducedUpsert()
.
Installation:
Command Line
Install-Package Ditto -Version 1.1.0
PackageReference
<PackageReference Include="Ditto" Version=1.1.0" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 1.0.19
PackageReference
<PackageReference Include="Ditto" Version=1.0.19" />
C# / .NET Version 1.0.18
Released: Mon Dec 20th 2021, 1:22 pm
Release Notes:
- Reduced the opportunity for rapid memory growth in some scenarios.
Installation:
Command Line
Install-Package Ditto -Version 1.0.18
PackageReference
<PackageReference Include="Ditto" Version=1.0.18" />
C# / .NET Version 1.0.18-alpha2
Released: Tue Dec 14th 2021, 4:32 pm
Release Notes:
- Improve attachment sync performance.
Installation:
Command Line
Install-Package Ditto -Version 1.0.18-alpha2
PackageReference
<PackageReference Include="Ditto" Version=1.0.18-alpha2" />
C# / .NET 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.
Installation:
Command Line
Install-Package Ditto -Version 1.0.18-alpha1
PackageReference
<PackageReference Include="Ditto" Version=1.0.18-alpha1" />
C# / .NET 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.
Installation:
Command Line
Install-Package Ditto -Version 1.0.17
PackageReference
<PackageReference Include="Ditto" Version=1.0.17" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 1.0.16
PackageReference
<PackageReference Include="Ditto" Version=1.0.16" />
C# / .NET 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 accompanyingfind
call doesn't have the key specified in thesort
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 thesort
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 thesort
key will appear first in the set of documents, before all of the documents that do contain thesort
key.
Installation:
Command Line
Install-Package Ditto -Version 1.0.15
PackageReference
<PackageReference Include="Ditto" Version=1.0.15" />
C# / .NET Version 1.0.15-alpha1
Released: Wed Oct 27th 2021, 10:33 am
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 1.0.15-alpha1
PackageReference
<PackageReference Include="Ditto" Version=1.0.15-alpha1" />
C# / .NET 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 newOnlineWithAuthentication
identity. - Deprecate the
Development
identity in favor of the newOfflinePlayground
identity. - Deprecate the
Authenticator
property onDitto
in favor of anAuth
property.
Installation:
Command Line
Install-Package Ditto -Version 1.0.14
PackageReference
<PackageReference Include="Ditto" Version=1.0.14" />
C# / .NET Version 1.0.13
Released: Mon Oct 18th 2021, 5:02 pm
Release Notes:
- Changed
DittoIdentity
'sappID
construction parameter to be of typestring
instead ofGuid
.
Installation:
Command Line
Install-Package Ditto -Version 1.0.13
PackageReference
<PackageReference Include="Ditto" Version=1.0.13" />
C# / .NET Version 1.0.12
Released: Mon Oct 18th 2021, 10:00 am
Release Notes:
- Added
global
section toTransportConfig
allowing P2P sync to be contained within certain groups of devices by putting them in the same "sync group".
Installation:
Command Line
Install-Package Ditto -Version 1.0.12
PackageReference
<PackageReference Include="Ditto" Version=1.0.12" />
C# / .NET Version 1.0.11
Released: Fri Oct 8th 2021, 5:09 am
Release Notes:
- Fixed
Update
call when chained to aFindByID
call where no document with the provided ID exists. - Added
WriteStrategy
enum. - Added method
InsertWithStrategy()
toDittoCollection
, allowing to specify the behavior when inserting a document with an ID that matches the ID of a document already in the store. - Added
IsAuthenticated()
method andUserId
property toDittoAuthenticator
.
Installation:
Command Line
Install-Package Ditto -Version 1.0.11
PackageReference
<PackageReference Include="Ditto" Version=1.0.11" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 1.0.10
PackageReference
<PackageReference Include="Ditto" Version=1.0.10" />
C# / .NET Version 1.0.9
Released: Fri Sep 3rd 2021, 10:38 pm
Release Notes:
- Fixed an issue where
Ditto.dll
would fail to be loaded. - Updated the
SharedKey
identity to allow a custom working directory to be provided. - Fixed
default
construction ofDittoIdentity
innew Ditto()
. - 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 ofTransportConfig
. - Added new identity types:
Online
andOnlinePlayground.
AnOnline
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. AnOnlinePlayground
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 toManual
. - Added a
DittoAuthenticator
type, accessible via theDitto
object, which allows you to perform login operations when you're using anOnline
identity. - Similarly, added a
DittoAuthenticationDelegate
type that needs to be used when using anOnline
identity. - Report an error if more than one Ditto instance is started using the same working directory.
Installation:
Command Line
Install-Package Ditto -Version 1.0.9
PackageReference
<PackageReference Include="Ditto" Version=1.0.9" />
C# / .NET Version 1.0.8
Released: Mon Aug 2nd 2021, 4:19 pm
Release Notes:
- Improved debug logging.
Installation:
Command Line
Install-Package Ditto -Version 1.0.8
PackageReference
<PackageReference Include="Ditto" Version=1.0.8" />
C# / .NET 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
Installation:
Command Line
Install-Package Ditto -Version 1.0.7
PackageReference
<PackageReference Include="Ditto" Version=1.0.7" />
C# / .NET Version 1.0.6
Released: Thu Jul 8th 2021, 6:22 pm
Release Notes:
- Add
Value
accessor onDittoDocumentPath
,DittoMutableDocumentPath
, andDittoDocumentIDPath
types to allow accessing a nested value in a document/ID as anobject
.
Installation:
Command Line
Install-Package Ditto -Version 1.0.6
PackageReference
<PackageReference Include="Ditto" Version=1.0.6" />
C# / .NET 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:
var liveQuery = collection.FindAll().Observe((docs, event) => { 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 aDitto
instance will no longer throw an error if you have not yet activated yourDitto
instance with a valid license token. -
Deprecated
SetAccessLicense
and added a new function,SetLicenseToken
, which will throw an appropriate exception if your provided license token is expired or invalid somehow. -
Deprecated
StartSync
and added a new function,TryStartSync
, which will throw an exception if yourDitto
instance hasn't yet been activated via a successful call toSetLicenseToken
.
Installation:
Command Line
Install-Package Ditto -Version 1.0.5
PackageReference
<PackageReference Include="Ditto" Version=1.0.5" />
C# / .NET Version 1.0.4
Released: Fri Jun 11th 2021, 10:36 pm
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 1.0.4
PackageReference
<PackageReference Include="Ditto" Version=1.0.4" />
C# / .NET Version 1.0.3
Released: Thu Jun 10th 2021, 4:34 pm
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 1.0.3
PackageReference
<PackageReference Include="Ditto" Version=1.0.3" />
C# / .NET Version 1.0.2
Released: Thu May 20th 2021, 9:39 pm
Release Notes:
- Add support for subscripting
DITDocumentID
s in order to get nested values when a document ID is based on an array or a dictionary. - Deprecated
.ToNative()
onDittoDocumentID
. You should use.Value
instead.
Installation:
Command Line
Install-Package Ditto -Version 1.0.2
PackageReference
<PackageReference Include="Ditto" Version=1.0.2" />
C# / .NET 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:
Command Line
Install-Package Ditto -Version 1.0.1
PackageReference
<PackageReference Include="Ditto" Version=1.0.1" />
C# / .NET 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
orinsert
calls you now need to provide aDittoDocumentID
object rather than a string. Similarly, when you access a document's ID it will now return aDittoDocumentID
object instead of a string. - The
Start()
andStop()
functions on theDitto
object have been renamed toStartSync()
andStopSync()
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 theSetTransportConfig
function on theDitto
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 yourStart()
call toStartSync()
.
- 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
- Lots of performance improvements and bug fixes.
Installation:
Command Line
Install-Package Ditto -Version 1.0.0
PackageReference
<PackageReference Include="Ditto" Version=1.0.0" />
C# / .NET Version 1.0.0-alpha9
Released: Fri Feb 5th 2021, 12:58 am
Release Notes:
- The exact version of the Ditto SDK can now be retrieved using the
ditto.SDKVersion
property. - 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:
Command Line
Install-Package Ditto -Version 1.0.0-alpha9
PackageReference
<PackageReference Include="Ditto" Version=1.0.0-alpha9" />
C# / .NET 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.
Installation:
Command Line
Install-Package Ditto -Version 1.0.0-alpha8
PackageReference
<PackageReference Include="Ditto" Version=1.0.0-alpha8" />
C# / .NET Version 1.0.0-alpha7
Released: Mon Jan 4th 2021, 11:12 am
Release Notes:
- Synchronized version bump release
Installation:
Command Line
Install-Package Ditto -Version 1.0.0-alpha7
PackageReference
<PackageReference Include="Ditto" Version=1.0.0-alpha7" />
C# / .NET Version 1.0.0-alpha6
Released: Tue Dec 15th 2020, 1:00 am
Release Notes:
- Performance and stability improvements.
- Fix default data insertion such that merge semantics are consistent and duplicate data isn't created.
Installation:
Command Line
Install-Package Ditto -Version 1.0.0-alpha6
PackageReference
<PackageReference Include="Ditto" Version=1.0.0-alpha6" />
C# / .NET Version 1.0.0-alpha5
Released: Mon Nov 23rd 2020, 8:30 pm
Release Notes:
- Added a new intermediate security identity for a shared secret key. This is a simplistic authentication mode which is normally only suitable for private apps where all the users and devices are trusted.
- Fixed an issue that prevented Counter values from syncing correctly
- Renamed DittoAttachmentStatus to DittoAttachmentFetchEvent and subsequently Incomplete status to Progre ss.
Installation:
Command Line
Install-Package Ditto -Version 1.0.0-alpha5
PackageReference
<PackageReference Include="Ditto" Version=1.0.0-alpha5" />
C# / .NET Version 1.0.0-alpha4
Released: Mon Nov 9th 2020, 6:02 pm
Release Notes:
- Fix issue where attachments could stop being fetched incorrectly.
- Introduce a
DittoLogger
class with various log-related functionality to make logging easier and more feature-rich.
Installation:
Command Line
Install-Package Ditto -Version 1.0.0-alpha4
PackageReference
<PackageReference Include="Ditto" Version=1.0.0-alpha4" />
C# / .NET Version 1.0.0-alpha3
Released: Wed Nov 4th 2020, 8:48 am
Release Notes:
- Added new observeWithNextSignal API to allow the application to control the delivery of the next observe callback ev ent.
- Fixed several issues related to attachments that could delay sync.
- Simplified log statements
Installation:
Command Line
Install-Package Ditto -Version 1.0.0-alpha3
PackageReference
<PackageReference Include="Ditto" Version=1.0.0-alpha3" />
C# / .NET Version 1.0.0-alpha2
Released: Wed Oct 14th 2020, 6:01 pm
Release Notes:
Fixed several potential issues with attachment fetching that may result in the fetch callback not firing.
Installation:
Command Line
Install-Package Ditto -Version 1.0.0-alpha2
PackageReference
<PackageReference Include="Ditto" Version=1.0.0-alpha2" />
C# / .NET Version 1.0.0-alpha1
Released: Fri Oct 9th 2020, 5:53 pm
Release Notes:
- Note that this is a release with breaking changes and clients using releases in the 1.0 series will not be able to communicate with clients running a version that is anything less than 1.0. This should hopefully not be an issue because this release of the SDK has changed the name to be DittoSyncKit as opposed to DittoSharp and the namespace has gone from DittoSharp to Ditto.SyncKit.
- Lots of performance improvements and some bug fixes.
Installation:
Command Line
Install-Package Ditto -Version 1.0.0-alpha1
PackageReference
<PackageReference Include="Ditto" Version=1.0.0-alpha1" />
C# / .NET Version 0.4.0-alpha5
Released: Fri Sep 25th 2020, 4:21 am
Release Notes:
- Fixed an issue where extensive writes can cause a session time-out
Installation:
Command Line
Install-Package Ditto -Version 0.4.0-alpha5
PackageReference
<PackageReference Include="Ditto" Version=0.4.0-alpha5" />
C# / .NET Version 0.4.0-alpha4
Released: Fri Sep 18th 2020, 1:01 am
Release Notes:
- Fixes an issue where deletes might not propagate correctly in a multi-hop mesh
Installation:
Command Line
Install-Package Ditto -Version 0.4.0-alpha4
PackageReference
<PackageReference Include="Ditto" Version=0.4.0-alpha4" />
C# / .NET Version 0.4.0-alpha3
Released: Wed Sep 16th 2020, 11:24 pm
Release Notes:
- Fix disposal/clean-up of
DittoAttachmentFetcher
objects. - Add support for Linux 64-bit platforms.
Installation:
Command Line
Install-Package Ditto -Version 0.4.0-alpha3
PackageReference
<PackageReference Include="Ditto" Version=0.4.0-alpha3" />
C# / .NET Version 0.4.0-alpha2
Released: Fri Sep 11th 2020, 9:25 am
Release Notes:
- Fix a potential crash when working with attachments.
Installation:
Command Line
Install-Package Ditto -Version 0.4.0-alpha2
PackageReference
<PackageReference Include="Ditto" Version=0.4.0-alpha2" />
C# / .NET Version 0.4.0-alpha1
Released: Wed Sep 9th 2020, 9:18 pm
Release Notes:
- Note that this is a release with breaking changes, even just in terms of clients running 0.4.0 not being able to communicate with clients running 0.3.X releases.
- Fixes for memory leaks.
- Performance improvements.
Installation:
Command Line
Install-Package Ditto -Version 0.4.0-alpha1
PackageReference
<PackageReference Include="Ditto" Version=0.4.0-alpha1" />
C# / .NET Version 0.3.5-alpha1
Released: Fri Sep 4th 2020, 8:25 pm
Release Notes:
- Fixed an issue where inserting data as default data (setting the
isDefault
parameter to true) could lead to data that would not merge as expected.
Installation:
Command Line
Install-Package Ditto -Version 0.3.5-alpha1
PackageReference
<PackageReference Include="Ditto" Version=0.3.5-alpha1" />
C# / .NET Version 0.3.4-alpha1
Released: Tue Aug 11th 2020, 7:45 am
Release Notes:
- Fixed a bug with query compilation where integer literals in the query would lead to a query compilation failure.
Installation:
Command Line
Install-Package Ditto -Version 0.3.4-alpha1
PackageReference
<PackageReference Include="Ditto" Version=0.3.4-alpha1" />
C# / .NET Version 0.3.1-alpha1
Released: Mon Jul 20th 2020, 9:11 pm
Release Notes:
Compatibility update for 0.3.1 releases.
Installation:
Command Line
Install-Package Ditto -Version 0.3.1-alpha1
PackageReference
<PackageReference Include="Ditto" Version=0.3.1-alpha1" />
C# / .NET Version 0.1.1-alpha2
Released: Mon Jul 20th 2020, 8:48 am
Release Notes:
Further compatibility updates.
Installation:
Command Line
Install-Package Ditto -Version 0.1.1-alpha2
PackageReference
<PackageReference Include="Ditto" Version=0.1.1-alpha2" />
C# / .NET Version 0.1.1-alpha1
Released: Sat Jul 18th 2020, 3:38 pm
Release Notes:
Compatibility update.
Installation:
Command Line
Install-Package Ditto -Version 0.1.1-alpha1
PackageReference
<PackageReference Include="Ditto" Version=0.1.1-alpha1" />
C# / .NET Version 0.1.0-alpha4
Released: Tue Jun 30th 2020, 9:37 am
Release Notes:
- Added the licenses of the dependencies used by the SDK to the NuGet package
Installation:
Command Line
Install-Package Ditto -Version 0.1.0-alpha4
PackageReference
<PackageReference Include="Ditto" Version=0.1.0-alpha4" />
C# / .NET Version 0.1.0-alpha3
Released: Mon Jun 29th 2020, 9:04 pm
Release Notes:
- Sorted out the packaging so that installing the SDK doesn't require any extra actions after installation.
Installation:
Command Line
Install-Package Ditto -Version 0.1.0-alpha3
PackageReference
<PackageReference Include="Ditto" Version=0.1.0-alpha3" />
C++ Linux / iOS 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: Ditto::update_transport_config() will have the same behavior as Ditto::set_transport_config() if called after start_sync() (#14320)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.8.1-rc.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.8.1-rc.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.8.1-rc.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.8.0
Released: Thu Aug 22nd 2024, 12:29 pm
Release Notes:
- Changed: the bundled nlohmann/json header included in Ditto.hpp has been updated to the 3.11.3 version (#11820)
- Added: static function
export_to_file()
toLog
, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11967) - Added: Properties
peer_key_string1
andpeer_key_string2
onConnection
replacing the now deprecated propertiespeer1
andpeer2
. (#12799) - Deprecated: Properties
peer1
andpeer2
onConnection
, please usepeer_key_string1
andpeer_key_string2
instead. (#12799) - Changed: Documentation for
start_sync()
anddisable_sync_with_v3()
to include a recommendation for performance improvement. (#13098) - Changed: Documentation for property
peer_metadata
onPeer
to add information about how the property behaves over the lifecycle of thePresenceGraph
. (#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
andchar_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 ofWarning
. (#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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.8.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.8.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.8.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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
andchar_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 ofWarning
. (#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: the bundled nlohmann/json header included in Ditto.hpp has been updated to the 3.11.3 version (#11820)
- Added: static function
export_to_file()
toLog
, which exports collected logs to a compressed and JSON-encoded file on the local file system. (#11967) - Added: Properties
peer_key_string1
andpeer_key_string2
onConnection
replacing the now deprecated propertiespeer1
andpeer2
. (#12799) - Deprecated: Properties
peer1
andpeer2
onConnection
, please usepeer_key_string1
andpeer_key_string2
instead. (#12799) - Changed: Documentation for
start_sync()
anddisable_sync_with_v3()
to include a recommendation for performance improvement. (#13098) - Changed: Documentation for property
peer_metadata
onPeer
to add information about how the property behaves over the lifecycle of thePresenceGraph
. (#13479)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.8.0-rc.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.8.0-rc.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.8.0-rc.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.7.5-rc.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.7.5-rc.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.7.5-rc.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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) - Fixed: A rare scenario that caused Ditto to reconnect peers under high load (#13849)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.7.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.7.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.7.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.7.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.7.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.7.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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)
- 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)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.7.2-rc.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.7.2-rc.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.7.2-rc.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.7.2-rc.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.7.2-rc.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.7.2-rc.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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 with the underlying cause for easier debugging. (#12235)
- Fixed: document paths containing non-alphanumeric (or non-underscore) characters no longer lead to errors. (#12556)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.7.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.7.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.7.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.7.1-beta.2
Released: Fri Apr 5th 2024, 11:29 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.7.1-beta.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.7.1-beta.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.7.1-beta.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.7.1-beta.1
Released: Fri Apr 5th 2024, 6:18 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.7.1-beta.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.7.1-beta.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.7.1-beta.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
WriteStrategy::updateDifferentValues
as a new write strategy. (#10236) - Fixed (Linux): P2P LAN failed to advertise on a newly added interface, e.g., enabling WiFi at runtime (#10265)
- Added:
.peer_metadata
and.identity_service_metadata
toPeer
. (#11611) - Added:
.set_connection_request_handler()
toditto.get_presence()
, including related types, allowing to filter incoming connections from other peers. (#11611) - Added:
.peer_key_string
toPeer
as replacement for the now deprecated.peer_key
. (#11611) - Added:
.peer_metadata_json_string()
and.set_peer_metadata_json_string()
toditto.get_presence()
. (#11611) - Added:
.peer_metadata()
and.set_peer_metadata()
toditto.get_presence()
. (#11611) - Deprecated:
.peer_key
onPeer
, please use the newly added.peer_key_string
instead. (#11611)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.7.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.7.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.7.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.7.0-alpha.1
Released: Fri Mar 1st 2024, 11:46 pm
Release Notes:
- Changed: (Android) This release is built with Android SDK 34. (#8991)
- Changed: (Android) Java compatibility has been increased to 17. (#8991)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.7.0-alpha.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.7.0-alpha.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.7.0-alpha.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.6.0
Released: Tue Mar 12th 2024, 6:24 pm
Release Notes:
- Added: Preliminary support for runtime configuration using DQL
ALTER SYSTEM
andSHOW
statements (#10401) - Added: a variant of
fetch_attachment()
toStore
that takes an attachment token dictionary representation as given by the value ofQueryResultItem
. (#11574) - Added: method
new_attachment()
onStore
as a replacement for the corresponding and now deprecated method onCollection
. (#11574) - Added: method
fetch_attachment()
onStore
as a replacement for the corresponding and now deprecated methods onCollection
. (#11574) - Added: methods
get_id()
,get_len()
, andget_metadata()
toAttachmentToken
. (#11574) - 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: the default bind IP address of TCP and HTTP transports to be IPv6 "any" ([::]) rather than IPv4 (0.0.0.0) (#11487)
- Deprecated: method
new_attachment()
ofCollection
. Please use the newly introduced equivalent method onStore
instead. (#11574) - Deprecated: method
fetch_attachment()
ofCollection
. Please use the newly introduced equivalent method onStore
instead. (#11574) - 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
andmetadata
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
value()
ofQueryResultItem
. The token is now provided as a map of the form{{"id", "..."}, {"len", 123}, {"metadata", ...}}
wheremetadata
is amap<std::string, std::string>
. (#11574)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.6.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.6.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.6.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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
andSHOW
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)
- Changed: the default bind IP address of TCP and HTTP transports to be IPv6 "any" ([::]) rather than IPv4 (0.0.0.0) (#11487)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.6.0-alpha.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.6.0-alpha.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.6.0-alpha.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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
andSHOW
statements (#10401) - 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)
- Changed: the default bind IP address of TCP and HTTP transports to be IPv6 "any" ([::]) rather than IPv4 (0.0.0.0) (#11487)
- 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)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.6.0-alpha.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.6.0-alpha.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.6.0-alpha.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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
andSHOW
statements (#10401) - Changed: Peers use latest supported protocol version, even if the application is using backwards-compatible CRDT formats. (#10875)
- Changed: the default bind IP address of TCP and HTTP transports to be IPv6 "any" ([::]) rather than IPv4 (0.0.0.0) (#11487)
- 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)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.6.0-alpha.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.6.0-alpha.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.6.0-alpha.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.5.5-alpha.2
Released: Tue May 21st 2024, 9:10 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.5.5-alpha.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.5.5-alpha.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.5.5-alpha.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.5.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.5.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.5.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.5.4-transports-behind-core/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.5.4-transports-behind-core/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.5.4-transports-behind-core/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.5.4-alpha.1-transports-behind-core/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.5.4-alpha.1-transports-behind-core/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.5.4-alpha.1-transports-behind-core/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.5.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.5.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.5.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.5.2
Released: Thu Jan 25th 2024, 4:23 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.5.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.5.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.5.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.5.2-rc.3
Released: Wed Jan 17th 2024, 10:00 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.5.2-rc.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.5.2-rc.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.5.2-rc.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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 au64
ori64
during collation. (#10940)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.5.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.5.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.5.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.5.0
Released: Thu Dec 7th 2023, 5:59 pm
Release Notes:
- Added: New C++ SDK for Android. (#10218)
- Added:
Store::execute
method to execute DQL queries. (#10421) - Added: The
StoreObserver
class to theexecute
function when the documents that match a query are changed. (#10421) - Added:
Store::register_observer
to create a newStoreObserver
. (#10421) - Added: The
register_subscription
method to theSync
class. (#10485) - Added:
SyncSubscription
class that allows you to receive updates on documents. (#10485) - Added: The
Sync
class to manage subscriptions. (#10702) - Added:
SmallPeerInfo
property to Ditto allowing access to, and configuration of, Small Peer Info. (#10838) - 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)
- Changed: Ditto C++ for iOS SDK is built and tested with Xcode 14.3.1. (#10177)
- Deprecated:
LanConfig.multicast_enabled
property. (#10126) - Fixed: Bluetooth and LAN transports fail to stop on Windows and Linux. (#8809)
- 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.5.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.5.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.5.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
LanConfig.multicast_enabled
property. (#10126) - Changed: Ditto C++ for iOS SDK is built and tested with Xcode 14.3.1. (#10177)
- Added
Store::execute
method to execute DQL queries. (#10421) - Added
ChangeObserver
class to execute function when the documents that matches a query are changed. (#10421) - Added
Store::register_change_observer
. (#10421) - Added
register_replication_subscription
method toStore
class. (#10485) - Added:
ReplicationSubscription
class that allows you to receive updates on documents. (#10485) - fixed: Bluetooth and LAN transports fail to stop on Windows and Linux (#8809)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.5.0-alpha3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.5.0-alpha3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.5.0-alpha3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.5.0-alpha1
Released: Tue Nov 21st 2023, 7:23 am
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.5.0-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.5.0-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.5.0-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.5.0-alpha.4
Released: Thu Nov 23rd 2023, 12:25 am
Release Notes:
- Fixed a bug 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)
- performance: implement bipartite distance-aware mesh topology (#10632)
- Fixed: mesh could choose random connections (#10711)
- Improve memory usage and performance of Documents (#10736)
- Reduced metadata accumulation after eviction by clearing remote summaries (#7065)
- Changed: Improved serialization performance (#9112)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.5.0-alpha.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.5.0-alpha.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.5.0-alpha.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.4.5
Released: Fri Nov 17th 2023, 1:53 am
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.4.5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.4.5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.4.5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.4.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.4.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.4.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.4.3
Released: Tue Oct 24th 2023, 9:01 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.4.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.4.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.4.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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 tobigPeerOnly
. (#10203, #10204)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.4.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.4.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.4.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.4.1
Released: Tue Sep 26th 2023, 11:39 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.4.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.4.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.4.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.4.0
Released: Thu Aug 31st 2023, 10:43 pm
Release Notes:
- 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 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.4.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.4.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.4.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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)
- Fixed: an issue on Linux that caused excessive multicast traffic over LAN transport. (#9398)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.3.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.3.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.3.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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: 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.3.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.3.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.3.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.2.3
Released: Wed Jul 5th 2023, 10:32 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.2.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.2.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.2.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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: potential deserialization issue with
Ditto::get_presence
. (#9049)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.2.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.2.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.2.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.2.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.2.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.2.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.2.0
Released: Tue Jun 13th 2023, 8:53 am
Release Notes:
- Changed: Improved replication uses compressed message stream to decrease bandwidth consumption. (#8807)
- Changed: Reduce verbosity in replication logs (#8370)
- Fixed: Potential crash on Linux when handling Bluetooth advertisement during Ditto startup (#8538)
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.2.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.2.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.2.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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.
- Fixed: Potential crash on Linux when handling Bluetooth advertisement during Ditto startup.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.1.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.1.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.1.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
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: improved Bluetooth LE connection reliability on Linux
- 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.1.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.1.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.1.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.3-alpha.linux-ble-fixes-2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.3-alpha.linux-ble-fixes-2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.3-alpha.linux-ble-fixes-2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.3-alpha.linux-ble-fixes/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.3-alpha.linux-ble-fixes/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.3-alpha.linux-ble-fixes/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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 theDitto
object or the a peer has synced with another peer that has calleddisableSyncWithV3
, or they have synced with another peer that has calleddisableSyncWithV3
, 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.
- Removed: unused
ReplacedText
value fromUpdateResultType
enum. - Removed: unused
UpdateResultReplacedWithCounter
type.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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: AddWins removes will now be used if
disableSyncWithV3
has been called on theDitto
object or the a peer has synced with another peer that has calleddisableSyncWithV3
, or they have synced with another peer that has calleddisableSyncWithV3
, etc.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.0-beta1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.0-beta1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.0-beta1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 4.0.0-alpha2
Released: Mon Jan 16th 2023, 10:16 pm
Release Notes:
- Added:
disable_sync_with_v3
functionality toDitto
. 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 callingremove()
. Any other device running v4 of the SDK that syncs with a device that has calleddisable_sync_with_v3
(or has themselves synced with another device that has calleddisable_sync_with_v3
, etc - if any chain of syncing exists that involves a device that has calleddisable_sync_with_v3
) will also no longer be able to sync with v3 peers and will perform AddWins removes when callingremove()
.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.0-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.0-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.0-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.11/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/3.0.11/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.11/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.10/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/3.0.10/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.10/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 3.0.9
Released: Wed Jun 14th 2023, 3:23 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.9/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/3.0.9/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.9/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 3.0.9-alpha1
Released: Mon May 22nd 2023, 11:34 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.9-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/3.0.9-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.9-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 3.0.8
Released: Fri May 19th 2023, 6:33 am
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.8/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/3.0.8/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.8/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.7/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/3.0.7/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.7/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 3.0.6
Released: Thu Mar 16th 2023, 1:00 am
Release Notes:
- 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.6/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/3.0.6/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.6/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/3.0.5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 3.0.4
Released: Sat Jan 28th 2023, 12:10 am
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/3.0.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/3.0.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.3-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/3.0.3-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.3-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 3.0.2
Released: Fri Jan 20th 2023, 9:20 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/3.0.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 3.0.1
Released: Sat Jan 14th 2023, 2:57 am
Release Notes:
- Added:
routing_hint
property toGlobal
class. - Added:
NO_PREFERRED_ROUTE_HINT
constant, used internally byTransportConfig
if no routing hint is specified. - Changed: better readability of data sizes and durations in logs.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/3.0.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 3.0.0
Released: Fri Dec 16th 2022, 1:38 pm
Release Notes:
- Removed: the
Rga
constructor. You cannot create new RGAs. - Removed: the deprecated
Rga
type. You cannot mutate existing RGAs. - Removed: the
persistence_dir
argument from allIdentity
class methods. - Added:
get_application_id
method toDitto
class. - Added:
get_persistence_directory
method toDitto
class. - Added:
get_presence
toDitto
. - Added:
Presence
type withobserve
andexec
methods. - Added:
PresenceGraph
type, which represents local and remote peers in the Ditto network. - Removed:
observe
andobserve_with_next_signal
methods ofPendingCollectionsOperation
,PendingCursorOperation
, andPendingIDSpecificOperation
. Please use the correspondingobserve_local
orobserve_local_with_next_signal
along with a separate call tosubscribe
instead. See https://docs.ditto.live/cpp/common/concepts/syncing-data#subscribe - Changed:
subscribe()
calls now return ashared_ptr<Subscription>
instead of aSubscription
. - Changed: performance improvements.
- Added:
disable_sync_with_v2
method toDitto
. 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.
- Improved: log increased detail to help debug blocked write transactions.
- Added:
close
method toDitto
class to stop an existing instance. - Added:
DiskUsage
class to monitor disk usage. - Added:
get_disk_usage
method toDitto
class. - Added:
get_disk_u