The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Successful build of XMTPiOS, reference main (6b990f), with Swift 6.1 for macOS (SPM) on 26 Aug 2025 03:03:37 UTC.

Swift 6 data race errors: 13

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:38:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 36 |
 37 | final class ConversationStreamCallback: FfiConversationCallback {
 38 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 39 | 	let callback: (FfiConversation) -> Void
 40 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:39:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '(FfiConversation) -> Void'; this is an error in the Swift 6 language mode
 37 | final class ConversationStreamCallback: FfiConversationCallback {
 38 | 	let onCloseCallback: () -> Void
 39 | 	let callback: (FfiConversation) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '(FfiConversation) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 40 |
 41 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:13:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 11 | 	}
 12 |
 13 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
 15 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:14:6: warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
 12 |
 13 | 	let onCloseCallback: () -> Void
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 15 |
 16 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/XMTPEnvironment.swift:17:20: warning: static property 'customLocalAddress' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
15 |
16 | 	// Optional override for the local environment
17 | 	public static var customLocalAddress: String?
   |                    |- warning: static property 'customLocalAddress' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: convert 'customLocalAddress' to a 'let' constant to make 'Sendable' shared state immutable
   |                    |- note: add '@MainActor' to make static property 'customLocalAddress' part of global actor 'MainActor'
   |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
18 |
19 | 	var address: String {
[318/363] Compiling XMTPiOS URL.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:13:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 11 | 	}
 12 |
 13 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
 15 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:14:6: warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
 12 |
 13 | 	let onCloseCallback: () -> Void
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 15 |
 16 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:421:6: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
419 |
420 | 				continuation.onTermination = { @Sendable reason in
421 | 					self.streamHolder.stream?.end()
    |      `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
422 | 				}
423 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:427:5: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
425 | 			continuation.onTermination = { @Sendable reason in
426 | 				task.cancel()
427 | 				self.streamHolder.stream?.end()
    |     `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
428 | 			}
429 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:562:14: warning: no 'async' operations occur within 'await' expression
560 | 		options.direction = direction
561 |
562 | 		return try await ffiGroup.findMessagesWithReactions(opts: options)
    |              `- warning: no 'async' operations occur within 'await' expression
563 | 			.compactMap {
564 | 				ffiMessageWithReactions in
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/KeyUtil.swift:121:22: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
119 | 			outputWithRecidPtr.deallocate()
120 | 		}
121 | 		outputWithRecidPtr.assign(from: outputPtr, count: 64)
    |                      |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
    |                      `- note: use 'update(from:count:)' instead
122 | 		outputWithRecidPtr.advanced(by: 64).pointee = UInt8(recid)
123 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:401:29: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
399 | 	{
400 | 		AsyncThrowingStream { continuation in
401 | 			let task = Task.detached {
    |                             `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
402 | 				self.streamHolder.stream = await self.ffiGroup.stream(
403 | 					messageCallback: MessageCallback {
    :
413 | 						}
414 | 					} onClose: {
415 | 						onClose?()
    |       `- note: closure captures 'onClose' which is accessible to code in the current task
416 | 						continuation.finish()
417 | 					}
[319/363] Compiling XMTPiOS Group.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:13:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 11 | 	}
 12 |
 13 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
 15 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:14:6: warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
 12 |
 13 | 	let onCloseCallback: () -> Void
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 15 |
 16 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:421:6: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
419 |
420 | 				continuation.onTermination = { @Sendable reason in
421 | 					self.streamHolder.stream?.end()
    |      `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
422 | 				}
423 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:427:5: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
425 | 			continuation.onTermination = { @Sendable reason in
426 | 				task.cancel()
427 | 				self.streamHolder.stream?.end()
    |     `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
428 | 			}
429 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:562:14: warning: no 'async' operations occur within 'await' expression
560 | 		options.direction = direction
561 |
562 | 		return try await ffiGroup.findMessagesWithReactions(opts: options)
    |              `- warning: no 'async' operations occur within 'await' expression
563 | 			.compactMap {
564 | 				ffiMessageWithReactions in
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/KeyUtil.swift:121:22: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
119 | 			outputWithRecidPtr.deallocate()
120 | 		}
121 | 		outputWithRecidPtr.assign(from: outputPtr, count: 64)
    |                      |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
    |                      `- note: use 'update(from:count:)' instead
122 | 		outputWithRecidPtr.advanced(by: 64).pointee = UInt8(recid)
123 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:401:29: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
399 | 	{
400 | 		AsyncThrowingStream { continuation in
401 | 			let task = Task.detached {
    |                             `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
402 | 				self.streamHolder.stream = await self.ffiGroup.stream(
403 | 					messageCallback: MessageCallback {
    :
413 | 						}
414 | 					} onClose: {
415 | 						onClose?()
    |       `- note: closure captures 'onClose' which is accessible to code in the current task
416 | 						continuation.finish()
417 | 					}
[320/363] Compiling XMTPiOS KeyUtil.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:13:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 11 | 	}
 12 |
 13 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
 15 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:14:6: warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
 12 |
 13 | 	let onCloseCallback: () -> Void
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 15 |
 16 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:421:6: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
419 |
420 | 				continuation.onTermination = { @Sendable reason in
421 | 					self.streamHolder.stream?.end()
    |      `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
422 | 				}
423 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:427:5: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
425 | 			continuation.onTermination = { @Sendable reason in
426 | 				task.cancel()
427 | 				self.streamHolder.stream?.end()
    |     `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
428 | 			}
429 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:562:14: warning: no 'async' operations occur within 'await' expression
560 | 		options.direction = direction
561 |
562 | 		return try await ffiGroup.findMessagesWithReactions(opts: options)
    |              `- warning: no 'async' operations occur within 'await' expression
563 | 			.compactMap {
564 | 				ffiMessageWithReactions in
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/KeyUtil.swift:121:22: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
119 | 			outputWithRecidPtr.deallocate()
120 | 		}
121 | 		outputWithRecidPtr.assign(from: outputPtr, count: 64)
    |                      |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
    |                      `- note: use 'update(from:count:)' instead
122 | 		outputWithRecidPtr.advanced(by: 64).pointee = UInt8(recid)
123 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:401:29: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
399 | 	{
400 | 		AsyncThrowingStream { continuation in
401 | 			let task = Task.detached {
    |                             `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
402 | 				self.streamHolder.stream = await self.ffiGroup.stream(
403 | 					messageCallback: MessageCallback {
    :
413 | 						}
414 | 					} onClose: {
415 | 						onClose?()
    |       `- note: closure captures 'onClose' which is accessible to code in the current task
416 | 						continuation.finish()
417 | 					}
[321/363] Compiling XMTPiOS ArchiveOptions.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:13:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 11 | 	}
 12 |
 13 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
 15 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:14:6: warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
 12 |
 13 | 	let onCloseCallback: () -> Void
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 15 |
 16 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:421:6: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
419 |
420 | 				continuation.onTermination = { @Sendable reason in
421 | 					self.streamHolder.stream?.end()
    |      `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
422 | 				}
423 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:427:5: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
425 | 			continuation.onTermination = { @Sendable reason in
426 | 				task.cancel()
427 | 				self.streamHolder.stream?.end()
    |     `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
428 | 			}
429 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:562:14: warning: no 'async' operations occur within 'await' expression
560 | 		options.direction = direction
561 |
562 | 		return try await ffiGroup.findMessagesWithReactions(opts: options)
    |              `- warning: no 'async' operations occur within 'await' expression
563 | 			.compactMap {
564 | 				ffiMessageWithReactions in
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/KeyUtil.swift:121:22: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
119 | 			outputWithRecidPtr.deallocate()
120 | 		}
121 | 		outputWithRecidPtr.assign(from: outputPtr, count: 64)
    |                      |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
    |                      `- note: use 'update(from:count:)' instead
122 | 		outputWithRecidPtr.advanced(by: 64).pointee = UInt8(recid)
123 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:401:29: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
399 | 	{
400 | 		AsyncThrowingStream { continuation in
401 | 			let task = Task.detached {
    |                             `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
402 | 				self.streamHolder.stream = await self.ffiGroup.stream(
403 | 					messageCallback: MessageCallback {
    :
413 | 						}
414 | 					} onClose: {
415 | 						onClose?()
    |       `- note: closure captures 'onClose' which is accessible to code in the current task
416 | 						continuation.finish()
417 | 					}
[322/363] Compiling XMTPiOS ConversationDebugInfo.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:13:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 11 | 	}
 12 |
 13 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
 15 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:14:6: warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
 12 |
 13 | 	let onCloseCallback: () -> Void
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 15 |
 16 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:421:6: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
419 |
420 | 				continuation.onTermination = { @Sendable reason in
421 | 					self.streamHolder.stream?.end()
    |      `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
422 | 				}
423 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:427:5: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
425 | 			continuation.onTermination = { @Sendable reason in
426 | 				task.cancel()
427 | 				self.streamHolder.stream?.end()
    |     `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
428 | 			}
429 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:562:14: warning: no 'async' operations occur within 'await' expression
560 | 		options.direction = direction
561 |
562 | 		return try await ffiGroup.findMessagesWithReactions(opts: options)
    |              `- warning: no 'async' operations occur within 'await' expression
563 | 			.compactMap {
564 | 				ffiMessageWithReactions in
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/KeyUtil.swift:121:22: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
119 | 			outputWithRecidPtr.deallocate()
120 | 		}
121 | 		outputWithRecidPtr.assign(from: outputPtr, count: 64)
    |                      |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
    |                      `- note: use 'update(from:count:)' instead
122 | 		outputWithRecidPtr.advanced(by: 64).pointee = UInt8(recid)
123 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:401:29: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
399 | 	{
400 | 		AsyncThrowingStream { continuation in
401 | 			let task = Task.detached {
    |                             `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
402 | 				self.streamHolder.stream = await self.ffiGroup.stream(
403 | 					messageCallback: MessageCallback {
    :
413 | 						}
414 | 					} onClose: {
415 | 						onClose?()
    |       `- note: closure captures 'onClose' which is accessible to code in the current task
416 | 						continuation.finish()
417 | 					}
[323/363] Compiling XMTPiOS DecodedMessage.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:13:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 11 | 	}
 12 |
 13 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
 15 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:14:6: warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
 12 |
 13 | 	let onCloseCallback: () -> Void
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 15 |
 16 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:421:6: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
419 |
420 | 				continuation.onTermination = { @Sendable reason in
421 | 					self.streamHolder.stream?.end()
    |      `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
422 | 				}
423 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:427:5: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
425 | 			continuation.onTermination = { @Sendable reason in
426 | 				task.cancel()
427 | 				self.streamHolder.stream?.end()
    |     `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
428 | 			}
429 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:562:14: warning: no 'async' operations occur within 'await' expression
560 | 		options.direction = direction
561 |
562 | 		return try await ffiGroup.findMessagesWithReactions(opts: options)
    |              `- warning: no 'async' operations occur within 'await' expression
563 | 			.compactMap {
564 | 				ffiMessageWithReactions in
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/KeyUtil.swift:121:22: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
119 | 			outputWithRecidPtr.deallocate()
120 | 		}
121 | 		outputWithRecidPtr.assign(from: outputPtr, count: 64)
    |                      |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
    |                      `- note: use 'update(from:count:)' instead
122 | 		outputWithRecidPtr.advanced(by: 64).pointee = UInt8(recid)
123 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:401:29: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
399 | 	{
400 | 		AsyncThrowingStream { continuation in
401 | 			let task = Task.detached {
    |                             `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
402 | 				self.streamHolder.stream = await self.ffiGroup.stream(
403 | 					messageCallback: MessageCallback {
    :
413 | 						}
414 | 					} onClose: {
415 | 						onClose?()
    |       `- note: closure captures 'onClose' which is accessible to code in the current task
416 | 						continuation.finish()
417 | 					}
[324/363] Compiling XMTPiOS DisappearingMessageSettings.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:13:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 11 | 	}
 12 |
 13 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
 15 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:14:6: warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
 12 |
 13 | 	let onCloseCallback: () -> Void
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 15 |
 16 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:421:6: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
419 |
420 | 				continuation.onTermination = { @Sendable reason in
421 | 					self.streamHolder.stream?.end()
    |      `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
422 | 				}
423 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:427:5: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
425 | 			continuation.onTermination = { @Sendable reason in
426 | 				task.cancel()
427 | 				self.streamHolder.stream?.end()
    |     `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
428 | 			}
429 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:562:14: warning: no 'async' operations occur within 'await' expression
560 | 		options.direction = direction
561 |
562 | 		return try await ffiGroup.findMessagesWithReactions(opts: options)
    |              `- warning: no 'async' operations occur within 'await' expression
563 | 			.compactMap {
564 | 				ffiMessageWithReactions in
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/KeyUtil.swift:121:22: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
119 | 			outputWithRecidPtr.deallocate()
120 | 		}
121 | 		outputWithRecidPtr.assign(from: outputPtr, count: 64)
    |                      |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
    |                      `- note: use 'update(from:count:)' instead
122 | 		outputWithRecidPtr.advanced(by: 64).pointee = UInt8(recid)
123 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:401:29: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
399 | 	{
400 | 		AsyncThrowingStream { continuation in
401 | 			let task = Task.detached {
    |                             `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
402 | 				self.streamHolder.stream = await self.ffiGroup.stream(
403 | 					messageCallback: MessageCallback {
    :
413 | 						}
414 | 					} onClose: {
415 | 						onClose?()
    |       `- note: closure captures 'onClose' which is accessible to code in the current task
416 | 						continuation.finish()
417 | 					}
[325/363] Compiling XMTPiOS GroupMembershipResult.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:13:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 11 | 	}
 12 |
 13 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
 15 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:14:6: warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
 12 |
 13 | 	let onCloseCallback: () -> Void
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 15 |
 16 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:421:6: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
419 |
420 | 				continuation.onTermination = { @Sendable reason in
421 | 					self.streamHolder.stream?.end()
    |      `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
422 | 				}
423 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:427:5: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 31 | }
 32 |
 33 | public struct Group: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Group' conform to the 'Sendable' protocol
 34 | 	var ffiGroup: FfiConversation
 35 | 	var ffiLastMessage: FfiMessage? = nil
    :
425 | 			continuation.onTermination = { @Sendable reason in
426 | 				task.cancel()
427 | 				self.streamHolder.stream?.end()
    |     `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure; this is an error in the Swift 6 language mode
428 | 			}
429 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:562:14: warning: no 'async' operations occur within 'await' expression
560 | 		options.direction = direction
561 |
562 | 		return try await ffiGroup.findMessagesWithReactions(opts: options)
    |              `- warning: no 'async' operations occur within 'await' expression
563 | 			.compactMap {
564 | 				ffiMessageWithReactions in
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/KeyUtil.swift:121:22: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
119 | 			outputWithRecidPtr.deallocate()
120 | 		}
121 | 		outputWithRecidPtr.assign(from: outputPtr, count: 64)
    |                      |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
    |                      `- note: use 'update(from:count:)' instead
122 | 		outputWithRecidPtr.advanced(by: 64).pointee = UInt8(recid)
123 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:401:29: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
399 | 	{
400 | 		AsyncThrowingStream { continuation in
401 | 			let task = Task.detached {
    |                             `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
402 | 				self.streamHolder.stream = await self.ffiGroup.stream(
403 | 					messageCallback: MessageCallback {
    :
413 | 						}
414 | 					} onClose: {
415 | 						onClose?()
    |       `- note: closure captures 'onClose' which is accessible to code in the current task
416 | 						continuation.finish()
417 | 					}
[326/363] Compiling XMTPiOS signature.pb.swift
[327/363] Compiling XMTPiOS signed_payload.pb.swift
[328/363] Compiling XMTPiOS mls.pb.swift
[329/363] Compiling XMTPiOS intents.pb.swift
[330/363] Compiling XMTPiOS association.pb.swift
[331/363] Compiling XMTPiOS credential.pb.swift
[332/363] Compiling XMTPiOS group_membership.pb.swift
[333/363] Compiling XMTPiOS Client.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[334/363] Compiling XMTPiOS CodecRegistry.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[335/363] Compiling XMTPiOS AttachmentCodec.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[336/363] Compiling XMTPiOS ContentCodec.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[337/363] Compiling XMTPiOS ContentTypeID.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[338/363] Compiling XMTPiOS EncryptedEncodedContent.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[339/363] Compiling XMTPiOS GroupUpdatedCodec.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[340/363] Compiling XMTPiOS MultiRemoteAttachmentCodec.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[341/363] Compiling XMTPiOS conversation_reference.pb.swift
[342/363] Compiling XMTPiOS ecies.pb.swift
[343/363] Compiling XMTPiOS frames.pb.swift
[344/363] Compiling XMTPiOS invitation.pb.swift
[345/363] Compiling XMTPiOS message.pb.swift
[346/363] Compiling XMTPiOS private_key.pb.swift
[347/363] Compiling XMTPiOS private_preferences.pb.swift
[348/363] Compiling XMTPiOS public_key.pb.swift
[349/363] Compiling XMTPiOS group_metadata.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[350/363] Compiling XMTPiOS group_mutable_metadata.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[351/363] Compiling XMTPiOS group_permissions.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[352/363] Compiling XMTPiOS transcript_messages.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[353/363] Compiling XMTPiOS XMTPPush.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[354/363] Compiling XMTPiOS service.connect.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[355/363] Compiling XMTPiOS service.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[356/363] Compiling XMTPiOS PrivatePreferences.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[357/363] Compiling XMTPiOS keystore.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[358/363] Compiling XMTPiOS authn.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[359/363] Compiling XMTPiOS message_api.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[360/363] Compiling XMTPiOS ciphertext.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[361/363] Compiling XMTPiOS composite.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[362/363] Compiling XMTPiOS contact.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[363/363] Compiling XMTPiOS content.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[364/365] Compiling XMTPTestHelpers TestHelpers.swift
[365/365] Emitting module XMTPTestHelpers
Build complete! (35.76s)
warning: 'libxmtp-swift': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/admin/builder/spi-builder-workspace/.build/checkouts/libxmtp-swift/Sources/LibXMTP/libxmtp-version.txt
Build complete.
{
  "dependencies" : [
    {
      "identity" : "csecp256k1.swift",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.2.0",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/tesseract-one/CSecp256k1.swift.git"
    },
    {
      "identity" : "connect-swift",
      "requirement" : {
        "exact" : [
          "1.0.0"
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/bufbuild/connect-swift"
    },
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.4.3",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-docc-plugin.git"
    },
    {
      "identity" : "cryptoswift",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.8.4",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/krzyzanowskim/CryptoSwift.git"
    },
    {
      "identity" : "libxmtp-swift",
      "requirement" : {
        "exact" : [
          "4.4.0"
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/xmtp/libxmtp-swift.git"
    }
  ],
  "manifest_display_name" : "XMTPiOS",
  "name" : "XMTPiOS",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "14.0"
    },
    {
      "name" : "macos",
      "version" : "11.0"
    }
  ],
  "products" : [
    {
      "name" : "XMTPiOS",
      "targets" : [
        "XMTPiOS"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "XMTPTestHelpers",
      "targets" : [
        "XMTPTestHelpers"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "XMTPiOS",
      "module_type" : "SwiftTarget",
      "name" : "XMTPiOS",
      "path" : "Sources/XMTPiOS",
      "product_dependencies" : [
        "CSecp256k1",
        "Connect",
        "LibXMTP",
        "CryptoSwift"
      ],
      "product_memberships" : [
        "XMTPiOS",
        "XMTPTestHelpers"
      ],
      "sources" : [
        "Client.swift",
        "CodecRegistry.swift",
        "Codecs/AttachmentCodec.swift",
        "Codecs/ContentCodec.swift",
        "Codecs/ContentTypeID.swift",
        "Codecs/EncryptedEncodedContent.swift",
        "Codecs/GroupUpdatedCodec.swift",
        "Codecs/MultiRemoteAttachmentCodec.swift",
        "Codecs/ReactionCodec.swift",
        "Codecs/ReactionV2Codec.swift",
        "Codecs/ReadReceiptCodec.swift",
        "Codecs/RemoteAttachmentCodec.swift",
        "Codecs/ReplyCodec.swift",
        "Codecs/TextCodec.swift",
        "Codecs/TransactionReferenceCodec.swift",
        "Conversation.swift",
        "Conversations.swift",
        "Crypto.swift",
        "Dm.swift",
        "EncodedContentCompression.swift",
        "Extensions/Data.swift",
        "Extensions/Date.swift",
        "Extensions/Ffi.swift",
        "Extensions/String.swift",
        "Extensions/URL.swift",
        "Group.swift",
        "KeyUtil.swift",
        "Libxmtp/ArchiveOptions.swift",
        "Libxmtp/ConversationDebugInfo.swift",
        "Libxmtp/DecodedMessage.swift",
        "Libxmtp/DisappearingMessageSettings.swift",
        "Libxmtp/GroupMembershipResult.swift",
        "Libxmtp/InboxState.swift",
        "Libxmtp/Installation.swift",
        "Libxmtp/Member.swift",
        "Libxmtp/PermissionPolicySet.swift",
        "Libxmtp/PublicIdentity.swift",
        "Libxmtp/SignatureRequest.swift",
        "Libxmtp/XMTPDebugInformation.swift",
        "Messages/PrivateKey.swift",
        "PrivatePreferences.swift",
        "Proto/keystore_api/v1/keystore.pb.swift",
        "Proto/message_api/v1/authn.pb.swift",
        "Proto/message_api/v1/message_api.pb.swift",
        "Proto/message_contents/ciphertext.pb.swift",
        "Proto/message_contents/composite.pb.swift",
        "Proto/message_contents/contact.pb.swift",
        "Proto/message_contents/content.pb.swift",
        "Proto/message_contents/conversation_reference.pb.swift",
        "Proto/message_contents/ecies.pb.swift",
        "Proto/message_contents/frames.pb.swift",
        "Proto/message_contents/invitation.pb.swift",
        "Proto/message_contents/message.pb.swift",
        "Proto/message_contents/private_key.pb.swift",
        "Proto/message_contents/private_preferences.pb.swift",
        "Proto/message_contents/public_key.pb.swift",
        "Proto/message_contents/signature.pb.swift",
        "Proto/message_contents/signed_payload.pb.swift",
        "Proto/mls/api/v1/mls.pb.swift",
        "Proto/mls/database/intents.pb.swift",
        "Proto/mls/message_contents/association.pb.swift",
        "Proto/mls/message_contents/credential.pb.swift",
        "Proto/mls/message_contents/group_membership.pb.swift",
        "Proto/mls/message_contents/group_metadata.pb.swift",
        "Proto/mls/message_contents/group_mutable_metadata.pb.swift",
        "Proto/mls/message_contents/group_permissions.pb.swift",
        "Proto/mls/message_contents/transcript_messages.pb.swift",
        "Push/XMTPPush.swift",
        "Push/service.connect.swift",
        "Push/service.pb.swift",
        "SendOptions.swift",
        "SignedData.swift",
        "SigningKey.swift",
        "Topic.swift",
        "Util.swift",
        "XMTPEnvironment.swift",
        "XMTPLogger.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "XMTPTests",
      "module_type" : "SwiftTarget",
      "name" : "XMTPTests",
      "path" : "Tests/XMTPTests",
      "sources" : [
        "ArchiveTests.swift",
        "AttachmentTests.swift",
        "ClientTests.swift",
        "CodecTests.swift",
        "ConversationTests.swift",
        "CryptoTests.swift",
        "DmTests.swift",
        "GroupPermissionsTests.swift",
        "GroupTests.swift",
        "HistorySyncTests.swift",
        "MultiRemoteAttachmentTest.swift",
        "PerformanceTests.swift",
        "ReactionTests.swift",
        "ReadReceiptTests.swift",
        "RemoteAttachmentTest.swift",
        "ReplyTests.swift",
        "TransactionReferencesTests.swift"
      ],
      "target_dependencies" : [
        "XMTPiOS",
        "XMTPTestHelpers"
      ],
      "type" : "test"
    },
    {
      "c99name" : "XMTPTestHelpers",
      "module_type" : "SwiftTarget",
      "name" : "XMTPTestHelpers",
      "path" : "Sources/XMTPTestHelpers",
      "product_memberships" : [
        "XMTPTestHelpers"
      ],
      "sources" : [
        "TestHelpers.swift"
      ],
      "target_dependencies" : [
        "XMTPiOS"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.6"
}
Done.