From 70c65c5bb8c0d13b98b812c2154259166c675223 Mon Sep 17 00:00:00 2001 From: Richard Smedley Date: Tue, 3 Jun 2025 17:09:29 +0100 Subject: [PATCH 01/11] 3.3 --- antora.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/antora.yml b/antora.yml index ac607ab52..5588676e2 100644 --- a/antora.yml +++ b/antora.yml @@ -1,5 +1,5 @@ name: couchbase-lite -version: '3.2' +version: '3.3' prerelease: title: Couchbase Lite start_page: ROOT:index.adoc @@ -16,10 +16,10 @@ asciidoc: attributes: prerelease: previous-release: - release: '3.2' + release: '3.3' # releasetag: major: 3 - minor: 2 + minor: 3 maintenance-ios: 3 maintenance-swift: 3 maintenance-c: 3 From 253a4f0d8e15923125dfef7be10d266150f3cc7c Mon Sep 17 00:00:00 2001 From: Richard Smedley Date: Tue, 3 Jun 2025 17:10:46 +0100 Subject: [PATCH 02/11] sed fugit interea, fugit irreparabile tempus! --- README.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.adoc b/README.adoc index 2efbcfd6f..773f55b62 100644 --- a/README.adoc +++ b/README.adoc @@ -144,6 +144,6 @@ This common header file, then invokes: == License -Couchbase Lite Documentation © 2024 by Couchbase Inc. is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International. +Couchbase Lite Documentation © 2025 by Couchbase Inc. is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International. See the LICENSE file or the {url-license}[Creative Commons CC BY-NC-SA 4.0 license page] for details. From 050fbc6e70a3d30196f84feec509768444c20ccd Mon Sep 17 00:00:00 2001 From: Richard Smedley Date: Tue, 3 Jun 2025 17:11:18 +0100 Subject: [PATCH 03/11] sed fugit interea, fugit irreparabile tempus! --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 13f71af02..e3522d991 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Couchbase Lite Documentation © 2024 by Couchbase Inc. is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). +Couchbase Lite Documentation © 2025 by Couchbase Inc. is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). See https://creativecommons.org/licenses/by-nc-sa/4.0/ for details. From a41966f1d44a5dce458a0ab50e65886d5d3a1bb8 Mon Sep 17 00:00:00 2001 From: Richard Smedley Date: Tue, 3 Jun 2025 17:12:18 +0100 Subject: [PATCH 04/11] 3.3.0 --- Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 160f79190..f750fb6f9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -9,22 +9,22 @@ pipeline { stage("Validate C#") { agent { label 's61113u16 (litecore)' } steps { - sh 'jenkins/dotnet_build.sh 3.2.3 1.0.0' + sh 'jenkins/dotnet_build.sh 3.3.0 1.0.0' } } stage("Validate C") { agent { label 's61113u16 (litecore)' } steps { - sh 'jenkins/c_build.sh 3.2.3' + sh 'jenkins/c_build.sh 3.3.0' } } stage("Validate iOS") { agent { label 'mobile-builder-ios-pull-request' } steps { - sh 'jenkins/ios.sh 3.2.3 1.0.0' + sh 'jenkins/ios.sh 3.3.0 1.0.0' } } } } } -} \ No newline at end of file +} From e6c0697dd51f784e114ab2a9d5a24e24d195ae2c Mon Sep 17 00:00:00 2001 From: Richard Smedley Date: Tue, 3 Jun 2025 17:13:54 +0100 Subject: [PATCH 05/11] 3.3 --- preview/HEAD.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/preview/HEAD.yml b/preview/HEAD.yml index ce1d950ac..0b1366df6 100644 --- a/preview/HEAD.yml +++ b/preview/HEAD.yml @@ -1,3 +1,3 @@ sources: docs-sync-gateway: - branches: release/3.2 + branches: release/3.3 From 47ed7a94f33ce76ce9c6e9185ba0c7f22fe60518 Mon Sep 17 00:00:00 2001 From: Richard Smedley Date: Wed, 4 Jun 2025 13:48:02 +0100 Subject: [PATCH 06/11] Multipeer, initial notes --- modules/android/nav-android.adoc | 3 +- modules/android/pages/gs-prereqs.adoc | 24 ++++-- modules/android/pages/p2psync-multipeer.adoc | 87 ++++++++++++++++++++ 3 files changed, 108 insertions(+), 6 deletions(-) create mode 100644 modules/android/pages/p2psync-multipeer.adoc diff --git a/modules/android/nav-android.adoc b/modules/android/nav-android.adoc index 7b913500f..e398f9563 100644 --- a/modules/android/nav-android.adoc +++ b/modules/android/nav-android.adoc @@ -38,7 +38,8 @@ include::partial$_set_page_context_for_android.adoc[] * Data Sync ** xref:android:dbreplica.adoc[Intra-device Sync] ** xref:android:replication.adoc[Remote Sync Gateway] - ** xref:android:p2psync-websocket.adoc[Peer-to-Peer] + ** xref:android:p2psync-multipeer.adoc[Multipeer Replicator] + ** xref:android:p2psync-websocket.adoc[Active-Passive Peer-to-Peer] *** xref:android:p2psync-websocket-using-passive.adoc[Passive Peer] *** xref:android:p2psync-websocket-using-active.adoc[Active Peer] *** xref:android:p2psync-custom.adoc[Integrate Custom Listener] diff --git a/modules/android/pages/gs-prereqs.adoc b/modules/android/pages/gs-prereqs.adoc index a2f107494..3532fe4bc 100644 --- a/modules/android/pages/gs-prereqs.adoc +++ b/modules/android/pages/gs-prereqs.adoc @@ -1,14 +1,11 @@ - = Preparing for Couchbase Lite on Android :page-aliases: start/java-android-gs-prereqs.adoc :page-role: :description: Prerequisites for the installation of Couchbase Lite :keywords: edge nosql api android java - :source-language: Java - :source-language: Kotlin @@ -48,8 +45,8 @@ We do not test against, nor guarantee support for, uncertified Android versions |22 |=== -[#supported-versions-for-vector-search-3-2-0] -== Supported Versions for Vector Search 3.2.0 +[#supported-versions-for-vector-search-3-3-0] +== Supported Versions for Vector Search 3.3.0 [IMPORTANT] -- @@ -73,6 +70,23 @@ To verify whether your device supports the AVX2 instructions set, https://www.in |=== +== Supported Versions for Multipeer Replicator + + +[%autowidth.stretch] +|=== +|Platform |Runtime architectures |Minimum API Level + +|Android +|arm64-v8a +|35 + +|Android +|x86_64 +|35 +|=== + + [#related-content] == Related Content ++++ diff --git a/modules/android/pages/p2psync-multipeer.adoc b/modules/android/pages/p2psync-multipeer.adoc new file mode 100644 index 000000000..e94753a21 --- /dev/null +++ b/modules/android/pages/p2psync-multipeer.adoc @@ -0,0 +1,87 @@ += Multipeer Replicator +ifdef::show_edition[:page-edition: Enterprise Edition] +:description: MultipeerReplicator is a peer-to-peer replicator that can advertise its presence, discover other peers, establish connections, and replicate data with those peers. + +:source-language: Java + +:source-language: Kotlin + +[abstract] +{description} + + +TIP: Multipeer Replication is currently available for use over IP networks. +If you are working with a bluetooth network, you will need to use Couchbase Lite's xref::p2psync-websocket.adoc[Active-Passive peer-to-peer]. + +[#introduction] +== Introduction +// tag::introduction-full[] +// tag::introduction[] +Couchbase Lite's Peer-to-Peer synchronization solution offers secure storage and bidirectional data synchronization between edge devices without needing a centralized cloud-based control point. +Multipeer Replicator +// end::introduction[] + + + +== Prerequisites + +=== Transport and Peer Discovery Protocol + +MultipeerReplicator supports Wi-Fi transport, using DNS-SD (also known as Bonjour) for peer discovery. + Peers must be connected to the same Wi-Fi network to discover and establish connections with one another. + +=== Supported Platforms + +For Android, the minimum API level is API 35, based on the availability of required DNS-SD features for peer discovery and mesh network construction—such as support for subtypes, and the ability to publish and subscribe to service information. + + +== Overview + +The MultipeerReplicator automatically advertises its presence, discovers other peers, +and establishes connections for data replication with peers that share the same group identifier defined by the application. + +To maintain optimal connectivity, efficient data transport, and balanced workloads, the MultipeerReplicator forms a dynamic mesh network among peers in the same group. +It avoids redundant direct connections, evenly distributes connections across peers, and optimizes communication paths. +The mesh network continuously adapts as peers join or leave. + + + + +== Configuration + +.Configuration for creating a MultipeerReplicator +[source,java] +---- +public struct MultipeerReplicatorConfiguration { + /// Identifier for discovering and connecting peers. + public let peerGroupID: String + + /// Peer identity. + /// @Note The identity’s certificate must be both server and client certificate. + public let identity: TLSIdentity + + + /// Peer authenticator. + public let authenticator: MultipeerAuthenticator + + + /// Collections to replicate. + public let collections: [MultipeerCollectionConfiguration] + + + /// Initialize the configuration with a peer group identifier, identity, + /// authenticator and collections. + public init(peerGroupID: String, + identity: TLSIdentity, + authenticator: MultipeerCertificateAuthenticator, + collections: [MultipeerCollectionConfiguration]) +} +---- + + + + + +TIP: In version 3.3.0, the recommended maximum number of peers in a mesh network is approximately 15. + + From 05da0ad735b6ae4ec822ba59d798195b11355257 Mon Sep 17 00:00:00 2001 From: Richard Smedley Date: Wed, 18 Jun 2025 11:46:46 +0100 Subject: [PATCH 07/11] port forward of https://github.com/couchbase/docs-couchbase-lite/pull/980 --- modules/c/pages/gs-install.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/c/pages/gs-install.adoc b/modules/c/pages/gs-install.adoc index 21633fe4e..5bce95564 100644 --- a/modules/c/pages/gs-install.adoc +++ b/modules/c/pages/gs-install.adoc @@ -101,7 +101,7 @@ xref:c:gs-install.adoc#lbl-android[Install for Android] [#lbl-apt] === Using APT -:url-apt-pkg-file: couchbase-1.0-noarch.deb +:url-apt-pkg-file: couchbase-release-1.0-noarch.deb :url-apt-pkg: pass:q,a[https://packages.couchbase.com/releases/couchbase-release/{url-apt-pkg-file}] Using the Advanced Package Tool (apt) is the easiest way to install pass:q,a[Couchbase{nbsp}Lite] on Ubuntu and Debian platforms. From 1aca820e310b54784a958ae9b79ae9a2393a8794 Mon Sep 17 00:00:00 2001 From: Richard Smedley Date: Wed, 18 Jun 2025 14:04:06 +0100 Subject: [PATCH 08/11] work-in-progress --- modules/android/pages/p2psync-multipeer.adoc | 175 ++++++++++++++++++- modules/android/pages/p2psync-websocket.adoc | 5 +- 2 files changed, 174 insertions(+), 6 deletions(-) diff --git a/modules/android/pages/p2psync-multipeer.adoc b/modules/android/pages/p2psync-multipeer.adoc index e94753a21..f823206e8 100644 --- a/modules/android/pages/p2psync-multipeer.adoc +++ b/modules/android/pages/p2psync-multipeer.adoc @@ -18,8 +18,24 @@ If you are working with a bluetooth network, you will need to use Couchbase Lite // tag::introduction-full[] // tag::introduction[] Couchbase Lite's Peer-to-Peer synchronization solution offers secure storage and bidirectional data synchronization between edge devices without needing a centralized cloud-based control point. -Multipeer Replicator + + +// *** advantages *** + +Multipeer Replicator for small mesh topologies offers autodiscovery for wifi-based networks. +Multipeer Sync thus requires less management and less code than using active-passive peer-to-peer sync, and also manages peer discovery for you. + +// Bluetooth - not yet + +[TIP] +.Bluetooth networking +==== +If you are working over a bluetooth network, then take a look at Couchbase Lite's Active-Passive Peer-to-Peer synchronization. +==== + + // end::introduction[] +// end::introduction-full[] @@ -28,7 +44,7 @@ Multipeer Replicator === Transport and Peer Discovery Protocol MultipeerReplicator supports Wi-Fi transport, using DNS-SD (also known as Bonjour) for peer discovery. - Peers must be connected to the same Wi-Fi network to discover and establish connections with one another. +Peers must be connected to the same Wi-Fi network to discover and establish connections with one another. === Supported Platforms @@ -44,7 +60,9 @@ To maintain optimal connectivity, efficient data transport, and balanced workloa It avoids redundant direct connections, evenly distributes connections across peers, and optimizes communication paths. The mesh network continuously adapts as peers join or leave. - +==== +*TODO* Mesh Diagram +==== == Configuration @@ -84,4 +102,155 @@ public struct MultipeerReplicatorConfiguration { TIP: In version 3.3.0, the recommended maximum number of peers in a mesh network is approximately 15. +=== Life Cycle + +Starting and stopping a peer-to-peer connection... + + +=== Listening for Changes + +Event types... + + +`PeerDocumentReplication` + + +== Example Use + +Here we will show how to instansiate a `MultipeerReplicatorConfiguration` configuration with self-signed certificates, and connect it to an example collection. + +[source,kotlin] +---- +// Code sample +---- + + + +=== MultipeerCollectionConfiguration + +`MultipeerCollectionConfiguration` specifies a collection and its associated settings. +This includes a conflict resolver and replication filters. +A list of these configurations is required to define which collections will be replicated within the peer group network. + + +[source,kotlin] +---- +/// Type Alias for Multipeer Replication Filter Function. +public typealias MultipeerReplicationFilter = + (PeerID, Document, DocumentFlags) -> Bool + + +/// Multipeer Conflict Resolver Protocol. +public protocol MultipeerConflictResolver { + func resolve(peerID: PeerID, conflict: Conflict) -> Document? +} + +/// Defines collection for replication including optional filters and +/// custom conflict resolver. +public struct MultipeerCollectionConfiguration { + /// The collection. + public let collection: Collection + + /// Document IDs filter. + public var documentIDs: Array? + + /// Push filter. + public var pushFilter: MultipeerReplicationFilter? + + /// Pull filter. + public var pullFilter: MultipeerReplicationFilter? + + + /// Custom conflict resolver. + public var conflictResolver: MultipeerConflictResolver? + + + /// Initialize with a collection. + public init(collection: Collection) +} +---- + + +=== Authenticator + +`MultipeerCertificateAuthenticator` *TODO* + + +=== Peer Info + +`PeerInfo` provides information about the peer, including a peer unique identifier, the peer certificate, online status, replicator status, and its current `neighborPeers`. + + +[source,kotlin] +---- +// +---- + + +=== Self-signed Certs + +.Creating a self-signed certificate that can be used as both client and server cert +[source,kotlin] +---- +/// Extended Key Usage for which the certified public key may be used. +public struct KeyUsages: OptionSet { + /// For Server Authentication + public static let serverAuth = 0x40 + + /// For Client Authentication + public static let clientAuth = 0x80 +} + +/// TLS Identity +public class TLSIdentity { + /// Create a TLS identity from private key and certificate data. + /// + /// The private key and certificate data must be either in PEM or DER format. + /// This method can be used to create an issuer identity for signing + /// a certificate when generating a new TLS identity. + public static func createIdentity(privateKey: Data, + certificate: Data) throws -> TLSIdentity + + + /// Generate a TLS identity, either self-signed or signed by an issuer identity. + /// + /// The `attributes` must include a common name (CN); otherwise an error + /// will be thrown. + /// + /// If no the expiration date is specified, the default validity of one year + /// will be applied. + /// + /// The optional issuer identity may be specified to sign the certificate. + /// The issuer identity can be created using + /// `createIdentity(privateKeyData:certificateData:)`. If no issuer is specified, + /// the certificate will be self-signed. + /// + /// If a `label` is provided, the identity will be stored in the + /// platform’s secure key storage under that label. + public static func createIdentity(keyUsages: KeyUsages, + attributes: [String: String], + expiration: Date?, + issuer: TLSIdentity?, + label: String?) throws -> TLSIdentity + + + + + @Deprecated, “Use createIdentity(keyUsages:attributes:expiration:issuer:label)” + public static func createIdentity(server: Bool, + attributes: [String: String], + expiration: Date?, + label: String) throws -> TLSIdentity +} +---- + + + +=== Logging + +`LogDomain` + + +== API Reference +*URL* diff --git a/modules/android/pages/p2psync-websocket.adoc b/modules/android/pages/p2psync-websocket.adoc index 134df7a3f..9bad07950 100644 --- a/modules/android/pages/p2psync-websocket.adoc +++ b/modules/android/pages/p2psync-websocket.adoc @@ -1,9 +1,8 @@ - -= Data Sync Peer-to-Peer += Active-Passive Peer-to-Peer Sync :page-aliases: learn/java-android-p2psync-websocket.adoc ifdef::show_edition[:page-edition: Enterprise Edition] :page-role: -:description: Couchbase Lite's Peer-to-Peer Synchronization enables edge devices to synchronize securely without consuming centralized cloud-server resources +:description: Where MultiPeer Sync is not available, Couchbase Lite's Active-Passive Peer-to-Peer Synchronization enables edge devices to synchronize securely without consuming centralized cloud-server resources :source-language: Java From 73ac434049c67483da69a18d25b863b3c32e7d8a Mon Sep 17 00:00:00 2001 From: Richard Smedley Date: Wed, 18 Jun 2025 15:04:55 +0100 Subject: [PATCH 09/11] Clearing the page for PR [in order for comments to be added] --- modules/android/pages/p2psync-multipeer.adoc | 246 ------------------- 1 file changed, 246 deletions(-) diff --git a/modules/android/pages/p2psync-multipeer.adoc b/modules/android/pages/p2psync-multipeer.adoc index f823206e8..3df31e1c1 100644 --- a/modules/android/pages/p2psync-multipeer.adoc +++ b/modules/android/pages/p2psync-multipeer.adoc @@ -8,249 +8,3 @@ ifdef::show_edition[:page-edition: Enterprise Edition] [abstract] {description} - - -TIP: Multipeer Replication is currently available for use over IP networks. -If you are working with a bluetooth network, you will need to use Couchbase Lite's xref::p2psync-websocket.adoc[Active-Passive peer-to-peer]. - -[#introduction] -== Introduction -// tag::introduction-full[] -// tag::introduction[] -Couchbase Lite's Peer-to-Peer synchronization solution offers secure storage and bidirectional data synchronization between edge devices without needing a centralized cloud-based control point. - - -// *** advantages *** - -Multipeer Replicator for small mesh topologies offers autodiscovery for wifi-based networks. -Multipeer Sync thus requires less management and less code than using active-passive peer-to-peer sync, and also manages peer discovery for you. - -// Bluetooth - not yet - -[TIP] -.Bluetooth networking -==== -If you are working over a bluetooth network, then take a look at Couchbase Lite's Active-Passive Peer-to-Peer synchronization. -==== - - -// end::introduction[] -// end::introduction-full[] - - - -== Prerequisites - -=== Transport and Peer Discovery Protocol - -MultipeerReplicator supports Wi-Fi transport, using DNS-SD (also known as Bonjour) for peer discovery. -Peers must be connected to the same Wi-Fi network to discover and establish connections with one another. - -=== Supported Platforms - -For Android, the minimum API level is API 35, based on the availability of required DNS-SD features for peer discovery and mesh network construction—such as support for subtypes, and the ability to publish and subscribe to service information. - - -== Overview - -The MultipeerReplicator automatically advertises its presence, discovers other peers, -and establishes connections for data replication with peers that share the same group identifier defined by the application. - -To maintain optimal connectivity, efficient data transport, and balanced workloads, the MultipeerReplicator forms a dynamic mesh network among peers in the same group. -It avoids redundant direct connections, evenly distributes connections across peers, and optimizes communication paths. -The mesh network continuously adapts as peers join or leave. - -==== -*TODO* Mesh Diagram -==== - - -== Configuration - -.Configuration for creating a MultipeerReplicator -[source,java] ----- -public struct MultipeerReplicatorConfiguration { - /// Identifier for discovering and connecting peers. - public let peerGroupID: String - - /// Peer identity. - /// @Note The identity’s certificate must be both server and client certificate. - public let identity: TLSIdentity - - - /// Peer authenticator. - public let authenticator: MultipeerAuthenticator - - - /// Collections to replicate. - public let collections: [MultipeerCollectionConfiguration] - - - /// Initialize the configuration with a peer group identifier, identity, - /// authenticator and collections. - public init(peerGroupID: String, - identity: TLSIdentity, - authenticator: MultipeerCertificateAuthenticator, - collections: [MultipeerCollectionConfiguration]) -} ----- - - - - - -TIP: In version 3.3.0, the recommended maximum number of peers in a mesh network is approximately 15. - -=== Life Cycle - -Starting and stopping a peer-to-peer connection... - - -=== Listening for Changes - -Event types... - - -`PeerDocumentReplication` - - -== Example Use - -Here we will show how to instansiate a `MultipeerReplicatorConfiguration` configuration with self-signed certificates, and connect it to an example collection. - -[source,kotlin] ----- -// Code sample ----- - - - -=== MultipeerCollectionConfiguration - -`MultipeerCollectionConfiguration` specifies a collection and its associated settings. -This includes a conflict resolver and replication filters. -A list of these configurations is required to define which collections will be replicated within the peer group network. - - -[source,kotlin] ----- -/// Type Alias for Multipeer Replication Filter Function. -public typealias MultipeerReplicationFilter = - (PeerID, Document, DocumentFlags) -> Bool - - -/// Multipeer Conflict Resolver Protocol. -public protocol MultipeerConflictResolver { - func resolve(peerID: PeerID, conflict: Conflict) -> Document? -} - -/// Defines collection for replication including optional filters and -/// custom conflict resolver. -public struct MultipeerCollectionConfiguration { - /// The collection. - public let collection: Collection - - /// Document IDs filter. - public var documentIDs: Array? - - /// Push filter. - public var pushFilter: MultipeerReplicationFilter? - - /// Pull filter. - public var pullFilter: MultipeerReplicationFilter? - - - /// Custom conflict resolver. - public var conflictResolver: MultipeerConflictResolver? - - - /// Initialize with a collection. - public init(collection: Collection) -} ----- - - -=== Authenticator - -`MultipeerCertificateAuthenticator` *TODO* - - -=== Peer Info - -`PeerInfo` provides information about the peer, including a peer unique identifier, the peer certificate, online status, replicator status, and its current `neighborPeers`. - - -[source,kotlin] ----- -// ----- - - -=== Self-signed Certs - -.Creating a self-signed certificate that can be used as both client and server cert -[source,kotlin] ----- -/// Extended Key Usage for which the certified public key may be used. -public struct KeyUsages: OptionSet { - /// For Server Authentication - public static let serverAuth = 0x40 - - /// For Client Authentication - public static let clientAuth = 0x80 -} - -/// TLS Identity -public class TLSIdentity { - /// Create a TLS identity from private key and certificate data. - /// - /// The private key and certificate data must be either in PEM or DER format. - /// This method can be used to create an issuer identity for signing - /// a certificate when generating a new TLS identity. - public static func createIdentity(privateKey: Data, - certificate: Data) throws -> TLSIdentity - - - /// Generate a TLS identity, either self-signed or signed by an issuer identity. - /// - /// The `attributes` must include a common name (CN); otherwise an error - /// will be thrown. - /// - /// If no the expiration date is specified, the default validity of one year - /// will be applied. - /// - /// The optional issuer identity may be specified to sign the certificate. - /// The issuer identity can be created using - /// `createIdentity(privateKeyData:certificateData:)`. If no issuer is specified, - /// the certificate will be self-signed. - /// - /// If a `label` is provided, the identity will be stored in the - /// platform’s secure key storage under that label. - public static func createIdentity(keyUsages: KeyUsages, - attributes: [String: String], - expiration: Date?, - issuer: TLSIdentity?, - label: String?) throws -> TLSIdentity - - - - - @Deprecated, “Use createIdentity(keyUsages:attributes:expiration:issuer:label)” - public static func createIdentity(server: Bool, - attributes: [String: String], - expiration: Date?, - label: String) throws -> TLSIdentity -} ----- - - - -=== Logging - -`LogDomain` - - -== API Reference - -*URL* From 50ec9ca3ca756936351eb9eba4c581a45cceab3e Mon Sep 17 00:00:00 2001 From: Richard Smedley Date: Wed, 18 Jun 2025 16:26:53 +0100 Subject: [PATCH 10/11] API 35 multipeer is only bt-relevant --- modules/android/pages/gs-prereqs.adoc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/android/pages/gs-prereqs.adoc b/modules/android/pages/gs-prereqs.adoc index 3532fe4bc..f28d4debc 100644 --- a/modules/android/pages/gs-prereqs.adoc +++ b/modules/android/pages/gs-prereqs.adoc @@ -69,7 +69,8 @@ To verify whether your device supports the AVX2 instructions set, https://www.in |23 |=== - +// more applicable for bluetooth implementations - commenting out for now +//// == Supported Versions for Multipeer Replicator @@ -85,7 +86,7 @@ To verify whether your device supports the AVX2 instructions set, https://www.in |x86_64 |35 |=== - +//// [#related-content] == Related Content From f0b8651683d0d35374cb19a068402c770496ccb9 Mon Sep 17 00:00:00 2001 From: Ben Brooks Date: Tue, 22 Jul 2025 14:54:21 +0100 Subject: [PATCH 11/11] Fix typo or copy/paste error in Prebuilt Database pages --- modules/android/pages/prebuilt-database.adoc | 2 +- modules/csharp/pages/prebuilt-database.adoc | 2 +- modules/java/pages/prebuilt-database.adoc | 2 +- modules/objc/pages/prebuilt-database.adoc | 2 +- modules/swift/pages/prebuilt-database.adoc | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/android/pages/prebuilt-database.adoc b/modules/android/pages/prebuilt-database.adoc index 8e13efba2..2623a5469 100644 --- a/modules/android/pages/prebuilt-database.adoc +++ b/modules/android/pages/prebuilt-database.adoc @@ -22,7 +22,7 @@ _Abstract -- This content explains how to include a snapshot of a pre-built data == Overview -_Couchbase{nbsp}Lite_ supports pre-built databases. You can pre-load your app with data instead of syncing it from pass:q,a[_pass:q,a[Sync{nbsp}Gateway]_] during startup to minimize consumer wait time (arising from data setup) on initial install and launch of the application. +_Couchbase{nbsp}Lite_ supports pre-built databases. You can pre-load your app with data instead of syncing it from _Sync{nbsp}Gateway_ during startup to minimize consumer wait time (arising from data setup) on initial install and launch of the application. Avoiding an initial bulk sync reduces startup time and network transfer costs. diff --git a/modules/csharp/pages/prebuilt-database.adoc b/modules/csharp/pages/prebuilt-database.adoc index 8b069fa93..04547628f 100644 --- a/modules/csharp/pages/prebuilt-database.adoc +++ b/modules/csharp/pages/prebuilt-database.adoc @@ -19,7 +19,7 @@ _Abstract -- This content explains how to include a snapshot of a pre-built data == Overview -_Couchbase{nbsp}Lite_ supports pre-built databases. You can pre-load your app with data instead of syncing it from pass:q,a[_pass:q,a[Sync{nbsp}Gateway]_] during startup to minimize consumer wait time (arising from data setup) on initial install and launch of the application. +_Couchbase{nbsp}Lite_ supports pre-built databases. You can pre-load your app with data instead of syncing it from _Sync{nbsp}Gateway_ during startup to minimize consumer wait time (arising from data setup) on initial install and launch of the application. Avoiding an initial bulk sync reduces startup time and network transfer costs. diff --git a/modules/java/pages/prebuilt-database.adoc b/modules/java/pages/prebuilt-database.adoc index 492c8fc53..041c7a898 100644 --- a/modules/java/pages/prebuilt-database.adoc +++ b/modules/java/pages/prebuilt-database.adoc @@ -19,7 +19,7 @@ _Abstract -- This content explains how to include a snapshot of a pre-built data == Overview -_Couchbase{nbsp}Lite_ supports pre-built databases. You can pre-load your app with data instead of syncing it from pass:q,a[_pass:q,a[Sync{nbsp}Gateway]_] during startup to minimize consumer wait time (arising from data setup) on initial install and launch of the application. +_Couchbase{nbsp}Lite_ supports pre-built databases. You can pre-load your app with data instead of syncing it from _Sync{nbsp}Gateway_ during startup to minimize consumer wait time (arising from data setup) on initial install and launch of the application. Avoiding an initial bulk sync reduces startup time and network transfer costs. diff --git a/modules/objc/pages/prebuilt-database.adoc b/modules/objc/pages/prebuilt-database.adoc index 6396531d5..7bc1f330e 100644 --- a/modules/objc/pages/prebuilt-database.adoc +++ b/modules/objc/pages/prebuilt-database.adoc @@ -21,7 +21,7 @@ _Abstract -- This content explains how to include a snapshot of a pre-built data == Overview -_Couchbase{nbsp}Lite_ supports pre-built databases. You can pre-load your app with data instead of syncing it from pass:q,a[_pass:q,a[Sync{nbsp}Gateway]_] during startup to minimize consumer wait time (arising from data setup) on initial install and launch of the application. +_Couchbase{nbsp}Lite_ supports pre-built databases. You can pre-load your app with data instead of syncing it from _Sync{nbsp}Gateway_ during startup to minimize consumer wait time (arising from data setup) on initial install and launch of the application. Avoiding an initial bulk sync reduces startup time and network transfer costs. diff --git a/modules/swift/pages/prebuilt-database.adoc b/modules/swift/pages/prebuilt-database.adoc index 49e1c9598..16727f96e 100644 --- a/modules/swift/pages/prebuilt-database.adoc +++ b/modules/swift/pages/prebuilt-database.adoc @@ -21,7 +21,7 @@ _Abstract -- This content explains how to include a snapshot of a pre-built data == Overview -_Couchbase{nbsp}Lite_ supports pre-built databases. You can pre-load your app with data instead of syncing it from pass:q,a[_pass:q,a[Sync{nbsp}Gateway]_] during startup to minimize consumer wait time (arising from data setup) on initial install and launch of the application. +_Couchbase{nbsp}Lite_ supports pre-built databases. You can pre-load your app with data instead of syncing it from _Sync{nbsp}Gateway_ during startup to minimize consumer wait time (arising from data setup) on initial install and launch of the application. Avoiding an initial bulk sync reduces startup time and network transfer costs.