Changelog
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.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.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.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.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.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_usage
method toStore
class.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.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/3.0.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 3.0.0-alpha3
Released: Mon Dec 12th 2022, 1:19 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.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/3.0.0-alpha3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.0-alpha3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.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/3.0.0-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.0-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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
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.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/3.0.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/3.0.0-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/3.0.0-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 2.1.0
Released: Wed Nov 2nd 2022, 11:51 pm
Release Notes:
- Deprecated:
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
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/2.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/2.1.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/2.1.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 2.0.8
Released: Fri Oct 28th 2022, 12:14 am
Release Notes:
- Deprecated:
observe
method. Useobserve_local
andsubscribe
instead.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/2.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/2.0.8/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/2.0.8/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/2.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/2.0.7/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/2.0.7/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/2.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/2.0.6/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/2.0.6/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 2.0.5
Released: Thu Sep 8th 2022, 10:20 pm
Release Notes:
- Fixed: a very rare deadlock when running on macOS and starting sync immediately after creating the Ditto instance.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/2.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/2.0.5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/2.0.5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 2.0.4
Released: Thu Sep 1st 2022, 6:31 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/2.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/2.0.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/2.0.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/2.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/2.0.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/2.0.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/2.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/2.0.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/2.0.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 2.0.1
Released: Sun Aug 14th 2022, 4:57 am
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/2.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/2.0.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/2.0.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
Register
andMutableRegister
, and newget_register
value accessors added toDocumentPath
andMutableDocumentPath
. - Added:
Counter
andMutableCounter
types resembling the CRDT type underneath, which replace the old counter mechanics. A newget_counter
value 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 newget_rga
value accessors added toDocumentPath
andMutableDocumentPath
. 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
DevelopmentIdentity
, useOfflinePlayground
instead. - Removed: deprecated
OnlineIdentity
, useOnlineWithAuthenticationIdentity
instead. - Removed:
OnlinePlaygroundV2Identity
. UseOnlinePlaygroundIdentity
instead. - Removed: deprecated
insert
andinsert_with_strategy
. Useupsert
instead. - Changed:
observe
,observe_local
,observe_with_next_signal
, andobserve_local_with_next_signal
methods previously usedCollectionsEventHandler
parameters. They now useCollectionsEventCallback
parameters instead. - Removed:
try_start_sync
. Usestart_sync
instead. - Removed: deprecated
set_license_token
andset_access_token
. Useset_offline_only_license_token
instead. - Removed: deprecated
user_id
andis_authenticated
properties fromAuthenticator
. Useget_status().get_user_id()
andget_status().is_authenticated()
instead. - Removed: deprecated
DocumentId
methodto_native
, please usevalue
instead. - Removed:
WriteStrategy::overwrite
write strategy.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/2.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/2.0.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/2.0.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/2.0.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/2.0.0-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/2.0.0-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.1.11
Released: Fri Sep 9th 2022, 11:11 pm
Release Notes:
- Fixed: a very rare deadlock when running on macOS and starting sync immediately after creating the Ditto instance.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.1.11/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.1.11/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.1.11/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.1.10
Released: Thu Jul 7th 2022, 7:53 pm
Release Notes:
- Changed: reduced total memory overhead during sync.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.1.10/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.1.10/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.1.10/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.1.9/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.1.9/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.1.9/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.1.9-alpha1
Released: Thu Jun 9th 2022, 3:12 am
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.1.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/1.1.9-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.1.9-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.1.8/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.1.8/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.1.8/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.1.7
Released: Fri May 13th 2022, 2:18 pm
Release Notes:
Synchronized version bump release.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.1.7/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.1.7/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.1.7/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.1.6/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.1.6/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.1.6/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.1.5
Released: Fri Apr 8th 2022, 8:00 am
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.1.5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.1.5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.1.5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.1.4
Released: Fri Apr 8th 2022, 6:25 am
Release Notes:
- Changed: improved replication performance in some scenarios.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.1.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.1.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.1.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.1.3
Released: Tue Mar 22nd 2022, 10:13 am
Release Notes:
-
Added:
ONLINE_PLAYGROUND_V2
identity type and correspondingOnlinePlaygroundV2Identity
allowing for basic authentication for playgrounds -
Deprecated:
ONLINE_PLAYGROUND
identity type and correspondingOnlinePlaygroundIdentity
, use newly addedONLINE_PLAYGROUND_V2
andOnlinePlaygroundV2Identity
instead -
Changed: improved const correctness for a lot of the C++ API
-
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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.1.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.1.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.1.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.1.2
Released: Mon Feb 28th 2022, 2:36 pm
Release Notes:
- Added: method
set_offline_only_license_token()
to classDitto
as replacement for now deprecatedset_license_token()
. - Deprecated: method
set_license_token()
of classDitto
, please use newly addedset_offline_only_license_token()
instead.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.1.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.1.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.1.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.1.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.1.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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: accessor
get_is_sync_active()
to classDitto
. - Added: method
logout()
to classAuthenticator
. - Added: set of APIs to observe authentication status (see API reference for
Authenticator
andAuthenticationCallback
). - Added: method
upsert()
to classesCollection
andScopedWriteTransaction
(as a replacement forinsert()
& friends) which by default merges the newly inserted document if one with the same ID already exists. - Added: (missing) accessor
get_auth()
to classDitto
. - Deprecated: accessors
is_authenticated()
anduser_id()
of classAuthenticator
in favor of newly introduced accessorget_status()
. - Deprecated: methods
insert()
& frinds of classesCollection
andScopedWriteTransaction
in favor of newly introducedupsert()
.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.1.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.1.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.19/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.19/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.19/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.18/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.18/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.18/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.0.18-alpha2
Released: Tue Dec 14th 2021, 4:32 pm
Release Notes:
- Improve attachment sync performance.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.18-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.18-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.18-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.18-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.18-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.18-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.17/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.17/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.17/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.16/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.16/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.16/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.15/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.15/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.15/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.0.15-alpha1
Released: Wed Oct 27th 2021, 10:33 am
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.15-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.15-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.15-alpha1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.14/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.14/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.14/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.0.13
Released: Mon Oct 18th 2021, 5:02 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.13/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.13/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.13/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.12/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.12/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.12/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.0.11
Released: Fri Oct 8th 2021, 5:09 am
Release Notes:
- Added
WriteStrategy
enum. - Added method
insert_with_strategy()
toCollection
, allowing to specify the behavior when inserting a document with an ID that matches the ID of a document already in the store. - Added
is_authenticated()
anduser_id()
methods toAuthenticator
.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.0.11/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.11/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.0.10/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.10/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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
andONLINE_PLAYGROUND.
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. AnONLINE_PLAYGROUND
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
AuthenticationDelegate
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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.0.9/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.9/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.0.8
Released: Mon Aug 2nd 2021, 4:19 pm
Release Notes:
- Added a Linux x86_64 version of the C++ to the group of published C++ SDKs.
- Improved debug logging.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.0.8/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.8/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.0.7
Released: Thu Jul 22nd 2021, 11:38 pm
Release Notes:
- Improve SDK API documentation extensively
- Fix crash that can occur if a Ditto
Identity
is passed by value - Fix bug where sync may fail if an unusually long
deviceName
is configured
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.0.7/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.7/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.0.6
Released: Thu Jul 8th 2021, 6:22 pm
Release Notes:
- Add
value
accessor onDocumentPath
,MutableDocumentPath
, andDocumentIdPath
types to allow accessing a nested value in a document/ID as anlohmann::json
.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.0.6/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.6/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
auto live_query = collection.find_all().observe(LiveQueryEventHandler{ [&](std::vector<Document> docs, LiveQueryEvent event) { event.hash(docs); // e.g. `1950015808188223905` event.hash_mnemonic(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
set_access_license
and added a new function,set_license_token
, which will throw an appropriate exception if your provided license token is expired or invalid somehow. -
Deprecated
start_sync
and added a new function,try_start_sync
, which will throw an exception if yourDitto
instance hasn't yet been activated via a successful call toset_license_token
.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.0.5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.0.4
Released: Fri Jun 11th 2021, 10:36 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.0.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.4/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.0.3
Released: Thu Jun 10th 2021, 4:34 pm
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.0.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.0.2
Released: Thu May 20th 2021, 9:39 pm
Release Notes:
- Add support for subscripting
DocumentId
s in order to get nested values when a document ID is based on an array or a map. - Deprecated
.to_native()
onDocumentId
. You should use.value()
instead.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.0.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.0.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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
find_by_id
orinsert
calls you now need to provide aDocumentId
object rather than a string. Similarly, when you access a document's ID it will now return aDocumentId
object instead of a string. - The
start()
andstop()
functions on theDitto
object have been renamed tostart_sync()
andstop_sync()
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 theset_transport_config
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 tostart_sync()
.
- 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.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/1.0.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.0-alpha9/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.0-alpha9/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.0-alpha9/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.0-alpha8/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.0-alpha8/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.0-alpha8/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.0.0-alpha7
Released: Mon Jan 4th 2021, 11:12 am
Release Notes:
- Synchronized version bump release
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.0-alpha7/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.0-alpha7/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.0-alpha7/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS 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.
- Fixed a bug where documents containing attachments syncing to an instance of the C++ SDK could lead to a crash.
- Upgrade nlohmann json header from 3.7.0 to 3.9.1.
- Added
set_custom_log_cb
andset_log_file
method calls toLog
class to allow provision of a custom logging callback function, and a file path that logs should be directed to.
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.0-alpha6/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.0-alpha6/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.0-alpha6/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 1.0.0-alpha5
Released: Mon Nov 23rd 2020, 9:22 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:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/1.0.0-alpha5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux x86_64
curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/1.0.0-alpha5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/1.0.0-alpha5/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
C++ Linux / iOS Version 0.1.0
Released: Thu Dec 5th 2019, 4:36 pm
Release Notes:
- Initial release of the SDK
Installation:
iOS
curl -O https://software.ditto.live/cpp-ios/Ditto/0.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/0.1.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Linux aarch64
curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/0.1.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz
Rust 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 Rust SDK for macOS is built and tested with Xcode 14.3.1. (#10177)
- Added
StringPrimitiveFormat
to the prelude so it can be used in calls toDocumentId::to_query_compatible()
. (#10388) - Added
Store::execute
to run DQL queries. (#10410) - Add
ReplicationSubscribe
struct. (#10435) - Add
add_replication_subscription
to the structStore
. (#10435) - Add
Store::register_change_observer
to create aChangeObserver
. (#10568) - Added
ChangeObserver
to monitor changes on selected Documents. (#10568) - Fixed: debug-mode crash when using
register_replication_subscription
(#10679) - fixed: Bluetooth and LAN transports fail to stop on Windows and Linux (#8809)
- Added: the ability to set app-specific signed peer information that is shared in the presence collection among all peers in the mesh. (#9793)
- Add enum
PresenceOs
to the public API. (#9876) - Add new example
carsapp_tui
. (#9876) - Added
Ditto::set_on_connecting_callback
function that allows you to reject peer connections based on a function of your choosing using known information about connecting peers. (#9898)
Installation:
[dependencies.dittolive-ditto]
version = 4.5.0-alpha3
Rust Version 4.5.0-alpha1
Released: Tue Nov 21st 2023, 7:23 am
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 4.5.0-alpha1
Rust 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:
[dependencies.dittolive-ditto]
version = 4.5.0-alpha.4
Rust Version 4.4.5
Released: Fri Nov 17th 2023, 1:53 am
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 4.4.5
Rust 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)
- Fixed: broken docs due to regression in upstream Rust nightly: https://github.com/rust-lang/rust/pull/115416 (#10445)
Installation:
[dependencies.dittolive-ditto]
version = 4.4.4
Rust Version 4.4.3
Released: Tue Oct 24th 2023, 9:01 pm
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 4.4.3
Rust 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:
[dependencies.dittolive-ditto]
version = 4.4.2
Rust Version 4.4.1
Released: Tue Sep 26th 2023, 11:39 pm
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 4.4.1
Rust Version 4.4.0
Released: Thu Aug 31st 2023, 10:43 pm
Release Notes:
- Added: Support for
aarch64-unknown-linux-gnu
llvm target CPU architecture. (#9162) - 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: Publish
libdittoffi
at the correct URL for arm64 Linux (#9694) - 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)
- Fixed: Attachment token encoding for cross-SDK attachment compatibility. This breaks backwards compatibility for attachment sync with peers using a version of the Rust SDK prior to 4.0.0 or 3.0.8. (#7762)
- Fixed: Fixed the publish URL for
libdittoffi
for arm64 Linux. (#9694)
Installation:
[dependencies.dittolive-ditto]
version = 4.4.0
Rust 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 on Linux that caused excessive multicast traffic over LAN transport. (#9398)
Installation:
[dependencies.dittolive-ditto]
version = 4.3.1
Rust 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:
[dependencies.dittolive-ditto]
version = 4.3.0
Rust Version 4.2.3
Released: Wed Jul 5th 2023, 10:32 pm
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 4.2.3
Rust 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:
[dependencies.dittolive-ditto]
version = 4.2.2
Rust 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:
[dependencies.dittolive-ditto]
version = 4.2.1
Rust 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:
[dependencies.dittolive-ditto]
version = 4.2.0
Rust 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:
[dependencies.dittolive-ditto]
version = 4.1.1
Rust 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:
[dependencies.dittolive-ditto]
version = 4.1.0
Rust 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:
[dependencies.dittolive-ditto]
version = 4.0.3-alpha.linux-ble-fixes-2
Rust 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:
[dependencies.dittolive-ditto]
version = 4.0.3-alpha.linux-ble-fixes
Rust 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:
[dependencies.dittolive-ditto]
version = 4.0.2
Rust 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:
[dependencies.dittolive-ditto]
version = 4.0.1
Rust 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: some cases of linkage error when linking statically (the default, or through
LIBDITTO_STATIC=1
) using a non-1.66.1 toolchain. For the remaining cases,LIBDITTO_STATIC=0
is to be used. If linking statically is paramount, then the experimentalLIBDITTO_STATIC_AMEND_WITH=objcopy
env var can be used to let dittolive-ditto-sys attempt an automatic fix of the issue.
Installation:
[dependencies.dittolive-ditto]
version = 4.0.0
Rust 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: issue that could cause potential segfault with respect to a problematic binary layout assumption of the tokio runtime.
- 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:
[dependencies.dittolive-ditto]
version = 4.0.0-beta1
Rust Version 4.0.0-alpha2
Released: Mon Jan 16th 2023, 10:16 pm
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 4.0.0-alpha2
Rust 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:
[dependencies.dittolive-ditto]
version = 3.0.11
Rust 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:
[dependencies.dittolive-ditto]
version = 3.0.10
Rust Version 3.0.9
Released: Wed Jun 14th 2023, 3:23 pm
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 3.0.9
Rust Version 3.0.9-alpha1
Released: Mon May 22nd 2023, 11:34 pm
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 3.0.9-alpha1
Rust Version 3.0.8
Released: Fri May 19th 2023, 6:33 am
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 3.0.8
Rust 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:
[dependencies.dittolive-ditto]
version = 3.0.7
Rust Version 3.0.6
Released: Thu Mar 16th 2023, 1:00 am
Release Notes:
- Fixed: Rust peers could be unable to properly decode attachment tokens from peers using other SDKs.
- 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:
[dependencies.dittolive-ditto]
version = 3.0.6
Rust 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:
[dependencies.dittolive-ditto]
version = 3.0.5
Rust Version 3.0.4
Released: Sat Jan 28th 2023, 12:10 am
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 3.0.4
Rust 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.
- Fixed: issue that could cause potential segfault with respect to a problematic binary layout assumption of the tokio runtime.
Installation:
[dependencies.dittolive-ditto]
version = 3.0.3
Rust 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:
[dependencies.dittolive-ditto]
version = 3.0.3-alpha2
Rust Version 3.0.2
Released: Fri Jan 20th 2023, 9:20 pm
Release Notes:
- Fix regression in presence v3 where disconnected peer on end of chain isn't pruned
Installation:
[dependencies.dittolive-ditto]
version = 3.0.2
Rust Version 3.0.1
Released: Sat Jan 14th 2023, 2:57 am
Release Notes:
- Deprecated:
Ditto::root_dir
andDitto::data_dir
. UseDitto::persistence_directory
instead. - Deprecated:
DittoRoot::data_dir
methods. UseDittoRoot::root_dir
methods instead. - Changed: better readability of data sizes and durations in logs.
Installation:
[dependencies.dittolive-ditto]
version = 3.0.1
Rust 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: method
Ditto::observe_peers_v2
. - Added:
Presence
type withobserve
andexec
methods. - Added:
PresenceGraph
type, which represents local and remote peers in the Ditto network. - Added:
presence
method to Ditto class to get aPresence
instance. - Removed:
observe
method ofPendingCollectionsOperation
,PendingCursorOperation
, andPendingIdSpecificOperation
. Please use the correspondingobserve_local
along with a separate call tosubscribe
instead. See https://docs.ditto.live/rust/common/concepts/syncing-data#subscribe - Changed: performance improvements.
- Added:
disk_usage_observe
anddisk_usage_exec
methods toDitto
,Store
andDittoAuthenticator
. - 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.
- Fixed: a potential crash with the .observe… family of functions due to a race condition during shutdown.
- Improved: log increased detail to help debug blocked write transactions.
- Added:
close
method to Ditto.
Installation:
[dependencies.dittolive-ditto]
version = 3.0.0
Rust Version 3.0.0-alpha3
Released: Mon Dec 12th 2022, 1:19 pm
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 3.0.0-alpha3
Rust Version 3.0.0-alpha2
Released: Tue Dec 6th 2022, 4:01 pm
Release Notes:
- Fixed: a potential crash with the
.observe…
family of functions due to a race condition during shutdown. - Improved: reliability if app crashes occur while persisting authentication data.
Installation:
[dependencies.dittolive-ditto]
version = 3.0.0-alpha2
Rust 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: method
Ditto::observe_peers_v2
. - Added:
Presence
type withobserve
andexec
methods. - Added:
PresenceGraph
type, which represents local and remote peers in the Ditto network. - Added:
presence
method to Ditto class to get aPresence
instance. - Removed:
observe
method ofPendingCollectionsOperation
,PendingCursorOperation
, andPendingIdSpecificOperation
. Please use the correspondingobserve_local
along with a separate call tosubscribe
instead. See https://docs.ditto.live/rust/common/concepts/syncing-data#subscribe - Changed: performance improvements.
- Added:
disk_usage_observe
anddisk_usage_exec
methods toDitto
,Store
andDittoAuthenticator
. - 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.
Installation:
[dependencies.dittolive-ditto]
version = 3.0.0-alpha1
Rust Version 2.1.0
Released: Wed Nov 2nd 2022, 11:51 pm
Release Notes:
- Added: mDNS capability for Windows
- Deprecated:
observe
method ofPendingCursorOperation
,PendingIdSpecificOperation
andPendingCollectionsOperation
. Please use the correspondingobserve_local
along with a separate call tosubscribe
instead. See https://docs.ditto.live/rust/common/concepts/syncing-data#subscribe - Fixed: an issue where duplicate WebSocket connections could be created to the same URL
Installation:
[dependencies.dittolive-ditto]
version = 2.1.0
Rust Version 2.0.8
Released: Fri Oct 28th 2022, 12:14 am
Release Notes:
- Added:
persistence_directory
method toditto
class - Added:
application_id
method toditto
class - Fixed: Windows BLE connections are more stable and recover better
Installation:
[dependencies.dittolive-ditto]
version = 2.0.8
Rust 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:
[dependencies.dittolive-ditto]
version = 2.0.7
Rust 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:
[dependencies.dittolive-ditto]
version = 2.0.6
Rust Version 2.0.5
Released: Thu Sep 8th 2022, 10:20 pm
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 2.0.5
Rust Version 2.0.4
Released: Thu Sep 1st 2022, 6:31 pm
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 2.0.4
Rust 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:
[dependencies.dittolive-ditto]
version = 2.0.3
Rust Version 2.0.2
Released: Sat Aug 27th 2022, 1:58 am
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 2.0.2
Rust Version 2.0.1
Released: Sun Aug 14th 2022, 4:57 am
Release Notes:
- Changed:
DittoCounter
,DittoRegister
, andDittoRga
are now exported in the prelude.
Installation:
[dependencies.dittolive-ditto]
version = 2.0.1
Rust 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 new value accessors added toDittoDocumentPath
andDittoMutableDocumentPath
. - Added:
DittoCounter
andDittoMutableCounter
types resembling the CRDT type underneath, which replace the old counter mechanics. A new 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 new 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 identity class
Online
; useOnlineWithAuthentication
instead. - Removed: deprecated identity class
Development
; useOfflinePlayground
instead. - Changed: deprecated class
OnlinePlaygroundV2
; useOnlinePlayground
instead. - Removed:
DittoAuthenticator
methodlogin_with_token
; uselogin_with_token_and_feedback
instead. - Removed : DittoAuthenticator
method
login_with_credentials; use
login_with_token_and_feedback` instead. - Removed:
Ditto
methodset_license_token
; useset_offline_only_license_token
instead. - Removed:
Ditto
methodset_access_license
; useset_offline_only_license_token
instead. - Changed: deprecated
Ditto
methodobserve_peers_v2
; useobserve_peers
instead. - Removed: all deprecated variants of
Collection
methodinsert:...
; use the correspondingupsert:...
. variants instead. - Changed: deprecated all
PendingIdSpecificOperation
methodobserve_v2
variants. Use the correspondingobserve
variant instead. - Removed:
WriteStrategy::Overwrite
write strategy.
Installation:
[dependencies.dittolive-ditto]
version = 2.0.0
Rust 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:
[dependencies.dittolive-ditto]
version = 2.0.0-alpha1
Rust Version 1.1.11
Released: Fri Sep 9th 2022, 11:11 pm
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 1.1.11
Rust Version 1.1.10
Released: Thu Jul 7th 2022, 7:53 pm
Release Notes:
- Changed: reduced total memory overhead during sync.
Installation:
[dependencies.dittolive-ditto]
version = 1.1.10
Rust 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:
[dependencies.dittolive-ditto]
version = 1.1.9
Rust Version 1.1.9-alpha1
Released: Thu Jun 9th 2022, 3:12 am
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 1.1.9-alpha1
Rust 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.
Installation:
[dependencies.dittolive-ditto]
version = 1.1.8
Rust Version 1.1.7
Released: Fri May 13th 2022, 2:18 pm
Release Notes:
Synchronized version bump release.
Installation:
[dependencies.dittolive-ditto]
version = 1.1.7
Rust 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: issues with serialization and deserialization of
DocumentId
s. - Added: a new typealias named
LogLevel
forCLogLevel
. - Added:
upsert()
andupsert_with_strategy()
toCollection
. If you want to provide an explicitDocumentId
for your document you should specify it under the"_id"
key at the root of your document. - Added:
observe_v2()
andobserve_local_v2()
toPendingIdSpecificOperation
. - Added:
SingleDocumentEventHandler
andSingleDocumentLiveQueryEvent
as counterparts toEventHandler
andLiveQueryEvent
. - Deprecated:
insert()
andinsert_with_strategy()
. Please use the newly introducedupsert()
andupsert_with_strategy()
instead. - Deprecated:
observe()
andobserve_local()
. Please use the newly introducedobserve_v2()
andobserve_local_v2()
instead. - Changed: improved compatibility with the 1.60.0 Rust toolchain, which is now the recommended toolchain.
- Changed: improvements to Ditto mesh performance via fastest-available-transport prioritization.
Installation:
[dependencies.dittolive-ditto]
version = 1.1.6
Rust Version 1.1.5
Released: Fri Apr 8th 2022, 8:00 am
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 1.1.5
Rust Version 1.1.4
Released: Fri Apr 8th 2022, 6:25 am
Release Notes:
- Changed: improved replication performance in some scenarios.
Installation:
[dependencies.dittolive-ditto]
version = 1.1.4
Rust 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:
[dependencies.dittolive-ditto]
version = 1.1.3
Rust Version 1.1.2
Released: Mon Feb 28th 2022, 2:36 pm
Release Notes:
- Added: method
set_offline_only_license_token()
to typeDitto
as replacement for now deprecatedset_license_token()
. - Deprecated: method
set_license_token()
of typeDitto
, please use newly addedset_offline_only_license_token()
instead.
Installation:
[dependencies.dittolive-ditto]
version = 1.1.2
Rust 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:
set_mesh_role()
method toPeer
class - Added:
set_priority_for_mesh_role()
toPeer
class
- Added:
- Fixed: An incorrect error from
find_by_id("some_id").exec()
when a document wasn't found.
Installation:
[dependencies.dittolive-ditto]
version = 1.1.1
Rust 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.
Installation:
[dependencies.dittolive-ditto]
version = 1.1.0
Rust 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:
[dependencies.dittolive-ditto]
version = 1.0.19
Rust 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:
[dependencies.dittolive-ditto]
version = 1.0.18
Rust Version 1.0.18-alpha2
Released: Tue Dec 14th 2021, 4:32 pm
Release Notes:
- Improve attachment sync performance.
Installation:
[dependencies.dittolive-ditto]
version = 1.0.18-alpha2
Rust 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:
[dependencies.dittolive-ditto]
version = 1.0.18-alpha1
Rust 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:
[dependencies.dittolive-ditto]
version = 1.0.17
Rust 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:
[dependencies.dittolive-ditto]
version = 1.0.16
Rust 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:
[dependencies.dittolive-ditto]
version = 1.0.15
Rust Version 1.0.15-alpha1
Released: Wed Oct 27th 2021, 10:33 am
Release Notes:
- Synchronized version bump release
Installation:
[dependencies.dittolive-ditto]
version = 1.0.15-alpha1
Rust 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. - Permit
FnMut
event handlers for live queries. - Add support for the Presence V2 API via
Ditto::observe_peers_v2
.
Installation:
[dependencies.dittolive-ditto]
version = 1.0.14
Big Peer Version 1.11.0
Released: Thu Jul 20th 2023, 12:27 am
Release Notes:
- Various fixes and improvements for better reliability, security, and performance
Big Peer Version 1.10.0
Released: Thu Jul 13th 2023, 3:27 pm
Release Notes:
- Minor bug fixes and performance improvements.
- Changed: new serialization format improves efficiency of replication, particularly in the Big Peer
Big Peer Version 1.9.1
Released: Fri Jul 7th 2023, 12:06 pm
Release Notes:
- Fix detection of broken stream when there are multiple apps in the transaction log
Big Peer Version 1.9.0
Released: Tue Jun 27th 2023, 8:53 pm
Release Notes:
- Initial release of the lazy deserialization optimization for the Big Peer.
- Tighten network policies for increased security and stability
Big Peer Version 0.30.0
Released: Tue Aug 23rd 2022, 8:27 pm
Release Notes:
Fix bug where Big Peer would sometimes panic if an SDK peer managed to create multiple Ditto instances with the same persistence directory. We are seeing this error more than we originally hoped. This change makes any occurrence non-fatal until we fix the root cause. There will be another followup change that will re-enable alerting for this event.
Big Peer Version 0.29.0
Released: Thu Aug 18th 2022, 8:27 pm
Release Notes:
- Fix bug where HTTP API upserts would not always be reflected in subsequent find requests.
- Properly consider limit+offset+order_by for active queries
Big Peer Version 0.28.0
Released: Sun Aug 14th 2022, 8:08 am
Release Notes:
- Minor bug fixes and performance improvements
Big Peer Version 0.27.0
Released: Wed Aug 3rd 2022, 8:08 am
Release Notes:
- Supports Ditto SDK through version 2.0.x. See the v2 Migration Guide for details.
Big Peer Version 0.26.0
Released: Mon Aug 1st 2022, 8:08 am
Release Notes:
- Minor bug fixes and performance improvements
Big Peer Version 0.25.0
Released: Sat Jul 23rd 2022, 8:08 am
Release Notes:
- Minor bug fixes and performance improvements.
- Add collection and document id to RequeryRequired requests as part of the live query webhook and CDC.
Big Peer Version 0.24.0
Released: Tue Jul 12th 2022, 8:08 am
Release Notes:
- Minor bug fixes and performance improvements
Big Peer Version 0.23.0
Released: Fri Jun 24th 2022, 8:08 am
Release Notes:
- Minor bug fixes and performance improvements
Big Peer Version 0.22.0
Released: Mon Jun 6th 2022, 8:08 am
Release Notes:
- Minor bug fixes and performance improvements
Big Peer Version 0.21.0
Released: Thu May 26th 2022, 8:08 am
Release Notes:
- Minor bug fixes and performance improvements
Big Peer Version 0.20.0
Released: Thu May 12th 2022, 8:08 am
Release Notes:
- Supports Ditto SDK through version 1.1.6
- Parity between document and timeseries HTTP APIs
- HTTP API calls that were GET with a body now also accept POST. They will accept both methods and will behave same no mater which method is used.
Big Peer Version 0.17.0
Released: Fri May 6th 2022, 8:08 am
Release Notes:
-
Supports Ditto SDK through version 1.1.5, including improvements to replication efficency.
-
Adds HTTP API RPC
Remove
andUpdate
commands.
With remove
, users may provide a query and delete all matching records. The
update
command mimics Ditto SDK update behavior and applies a series of
updates to all matching documents. This includes: set
, increment
, and
replaceWithCounter
.
All HTTP API Headers used by Ditto will be prefixed with X-DITTO-
X-HYDRA-ENSURE-DELETE
is nowX-DITTO-ENSURE-DELETE
X-HYDRA-CLIENT-ID
is nowX-DITTO-CLIENT-ID
X-HYDRA-ENSURE-INSERT
is nowX-DITTO-ENSURE-INSERT
X-ENSURE-INSERT
is nowX-DITTO-ENSURE-INSERT
The old header names are now deprecated.
HTTP API delete document method now checks for conflicting changes from the
same CLIENT-ID. These conflicts would sometimes cause a deletion to be ignored.
The HTTP API now will check if the X-DITTO-ENSURE-DELETE
is present and
performs the deletion even when a conflicting add occurrs. Use the
X-DITTO-ENSURE-DELETE
header to ensure deletions are commited before the HTTP
response is returned.
API users should continue to ensure different instances of the HTTP API Client
do not share the same value for X-DITTO-CLIENT-ID
header. Further, batch
HTTP API requests are preferred to having multiple in-flight Insert, Delete, and
Update API requests are the same time.
HTTP API Requests have a default timeout of 5 seconds.
Improved the error message for HTTP API Requests targeting unavailable transactions.