The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of QSChatView, reference main (9b1546), with Swift 6.0 for macOS (SPM) on 14 Sep 2024 22:53:23 UTC.

Swift 6 data race errors: 4

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.0.0-Release.Candidate.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete

Build Log

========================================
RunAll
========================================
Builder version: 4.53.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/FiveSheepCo/QSChatView.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/FiveSheepCo/QSChatView
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 9b15461 Add message deletion and `ChatConfigBuilder`
Cloned https://github.com/FiveSheepCo/QSChatView.git
Revision (git rev-parse @):
9b1546132d09f1b34d2e6051eaaf5b413334482f
SUCCESS checkout https://github.com/FiveSheepCo/QSChatView.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/FiveSheepCo/QSChatView.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.0.0-Release.Candidate.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-117DEE11B69C53C9.txt
[3/25] Emitting module QSChatView
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:19:23: warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
17 |
18 |     /// A chat participant representing the current user.
19 |     public static let me = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'me' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/PreferenceKeys/ContentHeightPreferenceKey.swift:13:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
11 | struct ContentHeightPreferenceKey: PreferenceKey {
12 |     typealias Value = CGFloat
13 |     static var defaultValue: CGFloat = 0
   |                |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'defaultValue' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 |     static func reduce(value: inout Value, nextValue: () -> Value) {
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/PreferenceKeys/ScrollOffsetPreferenceKey.swift:13:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
11 | struct ScrollOffsetPreferenceKey: PreferenceKey {
12 |     typealias Value = CGFloat
13 |     static var defaultValue: CGFloat = 0
   |                |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'defaultValue' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 |     static func reduce(value: inout Value, nextValue: () -> Value) {
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:16:23: warning: static property 'defaultChatter' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'defaultChatter' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'defaultChatter' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     /// A chat participant representing the current user.
[4/27] Compiling QSChatView ChatParticipantRole.swift
[5/27] Compiling QSChatView ChatConfig.swift
[6/27] Compiling QSChatView ChatScrollBehavior.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:19:23: warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
17 |
18 |     /// A chat participant representing the current user.
19 |     public static let me = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'me' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:185:53: warning: capture of 'chattee' with non-sendable type 'ChatParticipant' in a `@Sendable` closure; this is an error in the Swift 6 language mode
183 |             }
184 |             DispatchQueue.main.async {
185 |                 let participant = offset % 2 == 0 ? chattee : chatter
    |                                                     `- warning: capture of 'chattee' with non-sendable type 'ChatParticipant' in a `@Sendable` closure; this is an error in the Swift 6 language mode
186 |                 let promise = controller.sendPromise(from: participant)
187 |                 let content = ChatMessageContent.text(dummyConversation[offset])
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:14:14: note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:185:63: warning: capture of 'chatter' with non-sendable type 'ChatParticipant' in a `@Sendable` closure; this is an error in the Swift 6 language mode
183 |             }
184 |             DispatchQueue.main.async {
185 |                 let participant = offset % 2 == 0 ? chattee : chatter
    |                                                               `- warning: capture of 'chatter' with non-sendable type 'ChatParticipant' in a `@Sendable` closure; this is an error in the Swift 6 language mode
186 |                 let promise = controller.sendPromise(from: participant)
187 |                 let content = ChatMessageContent.text(dummyConversation[offset])
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:14:14: note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:186:31: warning: capture of 'controller' with non-sendable type 'ChatController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
184 |             DispatchQueue.main.async {
185 |                 let participant = offset % 2 == 0 ? chattee : chatter
186 |                 let promise = controller.sendPromise(from: participant)
    |                               `- warning: capture of 'controller' with non-sendable type 'ChatController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
187 |                 let content = ChatMessageContent.text(dummyConversation[offset])
188 |                 Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { _ in
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatController.swift:12:14: note: class 'ChatController' does not conform to the 'Sendable' protocol
10 |
11 | /// The chat controller used by ``QSChatView``.
12 | public class ChatController: ObservableObject {
   |              `- note: class 'ChatController' does not conform to the 'Sendable' protocol
13 |     @Published var textInputContent: String = ""
14 |     @Published var messages: [ChatMessage] = []
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:180:16: warning: reference to captured var 'offset' in concurrently-executing code; this is an error in the Swift 6 language mode
178 |         timer?.invalidate()
179 |         timer = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) { timer in
180 |             if offset == dummyConversation.count {
    |                `- warning: reference to captured var 'offset' in concurrently-executing code; this is an error in the Swift 6 language mode
181 |                 timer.invalidate()
182 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:180:26: warning: main actor-isolated static property 'dummyConversation' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
141 |     static var timer: Timer? = nil
142 |
143 |     static var dummyConversation: [String] {
    |                `- note: static property declared here
144 |         [
145 |             "Hey! How's your day going?",
    :
178 |         timer?.invalidate()
179 |         timer = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) { timer in
180 |             if offset == dummyConversation.count {
    |                          `- warning: main actor-isolated static property 'dummyConversation' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
181 |                 timer.invalidate()
182 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:190:25: warning: capture of 'controller' with non-sendable type 'ChatController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
188 |                 Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { _ in
189 |                     DispatchQueue.main.async {
190 |                         controller.fulfill(promise, withContent: content, timestamp: Date(timeIntervalSince1970: startTimestamp))
    |                         `- warning: capture of 'controller' with non-sendable type 'ChatController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
191 |                         startTimestamp += 60 * 2
192 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatController.swift:12:14: note: class 'ChatController' does not conform to the 'Sendable' protocol
10 |
11 | /// The chat controller used by ``QSChatView``.
12 | public class ChatController: ObservableObject {
   |              `- note: class 'ChatController' does not conform to the 'Sendable' protocol
13 |     @Published var textInputContent: String = ""
14 |     @Published var messages: [ChatMessage] = []
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:190:44: warning: capture of 'promise' with non-sendable type 'ChatMessagePromise' in a `@Sendable` closure; this is an error in the Swift 6 language mode
188 |                 Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { _ in
189 |                     DispatchQueue.main.async {
190 |                         controller.fulfill(promise, withContent: content, timestamp: Date(timeIntervalSince1970: startTimestamp))
    |                                            `- warning: capture of 'promise' with non-sendable type 'ChatMessagePromise' in a `@Sendable` closure; this is an error in the Swift 6 language mode
191 |                         startTimestamp += 60 * 2
192 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatMessagePromise.swift:13:15: note: consider making struct 'ChatMessagePromise' conform to the 'Sendable' protocol
11 | ///
12 | /// Use via ``ChatController/sendPromise(from:)``
13 | public struct ChatMessagePromise {
   |               `- note: consider making struct 'ChatMessagePromise' conform to the 'Sendable' protocol
14 |     let controller: ChatController
15 |     let messageId: UUID
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:190:66: warning: capture of 'content' with non-sendable type 'ChatMessageContent' in a `@Sendable` closure; this is an error in the Swift 6 language mode
188 |                 Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { _ in
189 |                     DispatchQueue.main.async {
190 |                         controller.fulfill(promise, withContent: content, timestamp: Date(timeIntervalSince1970: startTimestamp))
    |                                                                  `- warning: capture of 'content' with non-sendable type 'ChatMessageContent' in a `@Sendable` closure; this is an error in the Swift 6 language mode
191 |                         startTimestamp += 60 * 2
192 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatMessageContent.swift:12:13: note: consider making enum 'ChatMessageContent' conform to the 'Sendable' protocol
10 |
11 | /// The content of a chat message.
12 | public enum ChatMessageContent: Equatable {
   |             `- note: consider making enum 'ChatMessageContent' conform to the 'Sendable' protocol
13 |
14 |     /// A typing indicator.
[7/27] Compiling QSChatView QSChatView.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:19:23: warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
17 |
18 |     /// A chat participant representing the current user.
19 |     public static let me = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'me' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:185:53: warning: capture of 'chattee' with non-sendable type 'ChatParticipant' in a `@Sendable` closure; this is an error in the Swift 6 language mode
183 |             }
184 |             DispatchQueue.main.async {
185 |                 let participant = offset % 2 == 0 ? chattee : chatter
    |                                                     `- warning: capture of 'chattee' with non-sendable type 'ChatParticipant' in a `@Sendable` closure; this is an error in the Swift 6 language mode
186 |                 let promise = controller.sendPromise(from: participant)
187 |                 let content = ChatMessageContent.text(dummyConversation[offset])
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:14:14: note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:185:63: warning: capture of 'chatter' with non-sendable type 'ChatParticipant' in a `@Sendable` closure; this is an error in the Swift 6 language mode
183 |             }
184 |             DispatchQueue.main.async {
185 |                 let participant = offset % 2 == 0 ? chattee : chatter
    |                                                               `- warning: capture of 'chatter' with non-sendable type 'ChatParticipant' in a `@Sendable` closure; this is an error in the Swift 6 language mode
186 |                 let promise = controller.sendPromise(from: participant)
187 |                 let content = ChatMessageContent.text(dummyConversation[offset])
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:14:14: note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:186:31: warning: capture of 'controller' with non-sendable type 'ChatController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
184 |             DispatchQueue.main.async {
185 |                 let participant = offset % 2 == 0 ? chattee : chatter
186 |                 let promise = controller.sendPromise(from: participant)
    |                               `- warning: capture of 'controller' with non-sendable type 'ChatController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
187 |                 let content = ChatMessageContent.text(dummyConversation[offset])
188 |                 Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { _ in
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatController.swift:12:14: note: class 'ChatController' does not conform to the 'Sendable' protocol
10 |
11 | /// The chat controller used by ``QSChatView``.
12 | public class ChatController: ObservableObject {
   |              `- note: class 'ChatController' does not conform to the 'Sendable' protocol
13 |     @Published var textInputContent: String = ""
14 |     @Published var messages: [ChatMessage] = []
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:180:16: warning: reference to captured var 'offset' in concurrently-executing code; this is an error in the Swift 6 language mode
178 |         timer?.invalidate()
179 |         timer = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) { timer in
180 |             if offset == dummyConversation.count {
    |                `- warning: reference to captured var 'offset' in concurrently-executing code; this is an error in the Swift 6 language mode
181 |                 timer.invalidate()
182 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:180:26: warning: main actor-isolated static property 'dummyConversation' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
141 |     static var timer: Timer? = nil
142 |
143 |     static var dummyConversation: [String] {
    |                `- note: static property declared here
144 |         [
145 |             "Hey! How's your day going?",
    :
178 |         timer?.invalidate()
179 |         timer = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) { timer in
180 |             if offset == dummyConversation.count {
    |                          `- warning: main actor-isolated static property 'dummyConversation' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
181 |                 timer.invalidate()
182 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:190:25: warning: capture of 'controller' with non-sendable type 'ChatController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
188 |                 Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { _ in
189 |                     DispatchQueue.main.async {
190 |                         controller.fulfill(promise, withContent: content, timestamp: Date(timeIntervalSince1970: startTimestamp))
    |                         `- warning: capture of 'controller' with non-sendable type 'ChatController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
191 |                         startTimestamp += 60 * 2
192 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatController.swift:12:14: note: class 'ChatController' does not conform to the 'Sendable' protocol
10 |
11 | /// The chat controller used by ``QSChatView``.
12 | public class ChatController: ObservableObject {
   |              `- note: class 'ChatController' does not conform to the 'Sendable' protocol
13 |     @Published var textInputContent: String = ""
14 |     @Published var messages: [ChatMessage] = []
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:190:44: warning: capture of 'promise' with non-sendable type 'ChatMessagePromise' in a `@Sendable` closure; this is an error in the Swift 6 language mode
188 |                 Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { _ in
189 |                     DispatchQueue.main.async {
190 |                         controller.fulfill(promise, withContent: content, timestamp: Date(timeIntervalSince1970: startTimestamp))
    |                                            `- warning: capture of 'promise' with non-sendable type 'ChatMessagePromise' in a `@Sendable` closure; this is an error in the Swift 6 language mode
191 |                         startTimestamp += 60 * 2
192 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatMessagePromise.swift:13:15: note: consider making struct 'ChatMessagePromise' conform to the 'Sendable' protocol
11 | ///
12 | /// Use via ``ChatController/sendPromise(from:)``
13 | public struct ChatMessagePromise {
   |               `- note: consider making struct 'ChatMessagePromise' conform to the 'Sendable' protocol
14 |     let controller: ChatController
15 |     let messageId: UUID
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/QSChatView.swift:190:66: warning: capture of 'content' with non-sendable type 'ChatMessageContent' in a `@Sendable` closure; this is an error in the Swift 6 language mode
188 |                 Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { _ in
189 |                     DispatchQueue.main.async {
190 |                         controller.fulfill(promise, withContent: content, timestamp: Date(timeIntervalSince1970: startTimestamp))
    |                                                                  `- warning: capture of 'content' with non-sendable type 'ChatMessageContent' in a `@Sendable` closure; this is an error in the Swift 6 language mode
191 |                         startTimestamp += 60 * 2
192 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatMessageContent.swift:12:13: note: consider making enum 'ChatMessageContent' conform to the 'Sendable' protocol
10 |
11 | /// The content of a chat message.
12 | public enum ChatMessageContent: Equatable {
   |             `- note: consider making enum 'ChatMessageContent' conform to the 'Sendable' protocol
13 |
14 |     /// A typing indicator.
[8/27] Compiling QSChatView ScrollOffsetPreferenceKey.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/PreferenceKeys/ScrollOffsetPreferenceKey.swift:13:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
11 | struct ScrollOffsetPreferenceKey: PreferenceKey {
12 |     typealias Value = CGFloat
13 |     static var defaultValue: CGFloat = 0
   |                |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'defaultValue' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 |     static func reduce(value: inout Value, nextValue: () -> Value) {
[9/27] Compiling QSChatView ChatTextFieldStyle.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/PreferenceKeys/ScrollOffsetPreferenceKey.swift:13:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
11 | struct ScrollOffsetPreferenceKey: PreferenceKey {
12 |     typealias Value = CGFloat
13 |     static var defaultValue: CGFloat = 0
   |                |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'defaultValue' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 |     static func reduce(value: inout Value, nextValue: () -> Value) {
[10/27] Compiling QSChatView ChatAvatar.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/PreferenceKeys/ScrollOffsetPreferenceKey.swift:13:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
11 | struct ScrollOffsetPreferenceKey: PreferenceKey {
12 |     typealias Value = CGFloat
13 |     static var defaultValue: CGFloat = 0
   |                |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'defaultValue' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 |     static func reduce(value: inout Value, nextValue: () -> Value) {
[11/27] Compiling QSChatView ChatController.swift
[12/27] Compiling QSChatView ChatMessage.swift
[13/27] Compiling QSChatView ChatConfigBuilder.swift
[14/27] Compiling QSChatView ChatContextMenuItem.swift
[15/27] Compiling QSChatView TypingIndicator.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Components/TypingIndicator.swift:39:21: warning: main actor-isolated property 'offset' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
18 |     let innerSpacing: Double = 7.5
19 |
20 |     @State private var offset: Double = 0
   |                        `- note: mutation of this property is only permitted within the actor
21 |     @State private var timer: Timer?
22 |
   :
37 |             ) { _ in
38 |                 withAnimation(.linear(duration: timeInterval)) {
39 |                     offset += offsetChangePerTimeStep
   |                     `- warning: main actor-isolated property 'offset' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
40 |                 }
41 |             }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:19:23: warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
17 |
18 |     /// A chat participant representing the current user.
19 |     public static let me = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'me' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Data/ScrollViewData.swift:26:56: warning: main actor-isolated property 'frame' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
24 |         return UIScreen.main.bounds.height
25 |         #elseif os(macOS)
26 |         return Double(NSApplication.shared.mainWindow?.frame.height ?? 0)
   |                                                        `- warning: main actor-isolated property 'frame' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
27 |         #endif
28 |     }
AppKit.NSWindow:78:25: note: property declared here
  76 |     @available(macOS 15.0, *)
  77 |     open var cascadingReferenceFrame: NSRect { get }
  78 |     @MainActor open var frame: NSRect { get }
     |                         `- note: property declared here
  79 |     open func animationResizeTime(_ newFrame: NSRect) -> TimeInterval
  80 |     open func setFrame(_ frameRect: NSRect, display displayFlag: Bool, animate animateFlag: Bool)
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Data/ScrollViewData.swift:26:44: warning: main actor-isolated property 'mainWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
24 |         return UIScreen.main.bounds.height
25 |         #elseif os(macOS)
26 |         return Double(NSApplication.shared.mainWindow?.frame.height ?? 0)
   |                                            `- warning: main actor-isolated property 'mainWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
27 |         #endif
28 |     }
AppKit.NSApplication:12:30: note: property declared here
 10 |     @available(swift, obsoleted: 3, renamed: "window(withWindowNumber:)")
 11 |     open func windowWithWindowNumber(_ windowNum: Int) -> NSWindow?
 12 |     @MainActor weak open var mainWindow: NSWindow? { get }
    |                              `- note: property declared here
 13 |     weak open var keyWindow: NSWindow? { get }
 14 |     open var isActive: Bool { get }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Data/ScrollViewData.swift:26:37: warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
24 |         return UIScreen.main.bounds.height
25 |         #elseif os(macOS)
26 |         return Double(NSApplication.shared.mainWindow?.frame.height ?? 0)
   |                                     `- warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
27 |         #endif
28 |     }
AppKit.NSApplication:2:20: note: class property declared here
  1 | @MainActor open class NSApplication : NSResponder, NSUserInterfaceValidations, NSMenuItemValidation, NSAccessibilityElementProtocol, NSAccessibilityProtocol {
  2 |     open class var shared: NSApplication { get }
    |                    `- note: class property declared here
  3 |     @available(swift, obsoleted: 3, renamed: "shared")
  4 |     open class var sharedApplication: NSApplication { get }
[16/27] Compiling QSChatView WrappedChatBubble.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Components/TypingIndicator.swift:39:21: warning: main actor-isolated property 'offset' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
18 |     let innerSpacing: Double = 7.5
19 |
20 |     @State private var offset: Double = 0
   |                        `- note: mutation of this property is only permitted within the actor
21 |     @State private var timer: Timer?
22 |
   :
37 |             ) { _ in
38 |                 withAnimation(.linear(duration: timeInterval)) {
39 |                     offset += offsetChangePerTimeStep
   |                     `- warning: main actor-isolated property 'offset' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
40 |                 }
41 |             }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:19:23: warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
17 |
18 |     /// A chat participant representing the current user.
19 |     public static let me = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'me' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Data/ScrollViewData.swift:26:56: warning: main actor-isolated property 'frame' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
24 |         return UIScreen.main.bounds.height
25 |         #elseif os(macOS)
26 |         return Double(NSApplication.shared.mainWindow?.frame.height ?? 0)
   |                                                        `- warning: main actor-isolated property 'frame' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
27 |         #endif
28 |     }
AppKit.NSWindow:78:25: note: property declared here
  76 |     @available(macOS 15.0, *)
  77 |     open var cascadingReferenceFrame: NSRect { get }
  78 |     @MainActor open var frame: NSRect { get }
     |                         `- note: property declared here
  79 |     open func animationResizeTime(_ newFrame: NSRect) -> TimeInterval
  80 |     open func setFrame(_ frameRect: NSRect, display displayFlag: Bool, animate animateFlag: Bool)
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Data/ScrollViewData.swift:26:44: warning: main actor-isolated property 'mainWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
24 |         return UIScreen.main.bounds.height
25 |         #elseif os(macOS)
26 |         return Double(NSApplication.shared.mainWindow?.frame.height ?? 0)
   |                                            `- warning: main actor-isolated property 'mainWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
27 |         #endif
28 |     }
AppKit.NSApplication:12:30: note: property declared here
 10 |     @available(swift, obsoleted: 3, renamed: "window(withWindowNumber:)")
 11 |     open func windowWithWindowNumber(_ windowNum: Int) -> NSWindow?
 12 |     @MainActor weak open var mainWindow: NSWindow? { get }
    |                              `- note: property declared here
 13 |     weak open var keyWindow: NSWindow? { get }
 14 |     open var isActive: Bool { get }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Data/ScrollViewData.swift:26:37: warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
24 |         return UIScreen.main.bounds.height
25 |         #elseif os(macOS)
26 |         return Double(NSApplication.shared.mainWindow?.frame.height ?? 0)
   |                                     `- warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
27 |         #endif
28 |     }
AppKit.NSApplication:2:20: note: class property declared here
  1 | @MainActor open class NSApplication : NSResponder, NSUserInterfaceValidations, NSMenuItemValidation, NSAccessibilityElementProtocol, NSAccessibilityProtocol {
  2 |     open class var shared: NSApplication { get }
    |                    `- note: class property declared here
  3 |     @available(swift, obsoleted: 3, renamed: "shared")
  4 |     open class var sharedApplication: NSApplication { get }
[17/27] Compiling QSChatView ScrollViewData.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Components/TypingIndicator.swift:39:21: warning: main actor-isolated property 'offset' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
18 |     let innerSpacing: Double = 7.5
19 |
20 |     @State private var offset: Double = 0
   |                        `- note: mutation of this property is only permitted within the actor
21 |     @State private var timer: Timer?
22 |
   :
37 |             ) { _ in
38 |                 withAnimation(.linear(duration: timeInterval)) {
39 |                     offset += offsetChangePerTimeStep
   |                     `- warning: main actor-isolated property 'offset' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
40 |                 }
41 |             }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:19:23: warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
17 |
18 |     /// A chat participant representing the current user.
19 |     public static let me = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'me' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Data/ScrollViewData.swift:26:56: warning: main actor-isolated property 'frame' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
24 |         return UIScreen.main.bounds.height
25 |         #elseif os(macOS)
26 |         return Double(NSApplication.shared.mainWindow?.frame.height ?? 0)
   |                                                        `- warning: main actor-isolated property 'frame' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
27 |         #endif
28 |     }
AppKit.NSWindow:78:25: note: property declared here
  76 |     @available(macOS 15.0, *)
  77 |     open var cascadingReferenceFrame: NSRect { get }
  78 |     @MainActor open var frame: NSRect { get }
     |                         `- note: property declared here
  79 |     open func animationResizeTime(_ newFrame: NSRect) -> TimeInterval
  80 |     open func setFrame(_ frameRect: NSRect, display displayFlag: Bool, animate animateFlag: Bool)
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Data/ScrollViewData.swift:26:44: warning: main actor-isolated property 'mainWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
24 |         return UIScreen.main.bounds.height
25 |         #elseif os(macOS)
26 |         return Double(NSApplication.shared.mainWindow?.frame.height ?? 0)
   |                                            `- warning: main actor-isolated property 'mainWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
27 |         #endif
28 |     }
AppKit.NSApplication:12:30: note: property declared here
 10 |     @available(swift, obsoleted: 3, renamed: "window(withWindowNumber:)")
 11 |     open func windowWithWindowNumber(_ windowNum: Int) -> NSWindow?
 12 |     @MainActor weak open var mainWindow: NSWindow? { get }
    |                              `- note: property declared here
 13 |     weak open var keyWindow: NSWindow? { get }
 14 |     open var isActive: Bool { get }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Data/ScrollViewData.swift:26:37: warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
24 |         return UIScreen.main.bounds.height
25 |         #elseif os(macOS)
26 |         return Double(NSApplication.shared.mainWindow?.frame.height ?? 0)
   |                                     `- warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
27 |         #endif
28 |     }
AppKit.NSApplication:2:20: note: class property declared here
  1 | @MainActor open class NSApplication : NSResponder, NSUserInterfaceValidations, NSMenuItemValidation, NSAccessibilityElementProtocol, NSAccessibilityProtocol {
  2 |     open class var shared: NSApplication { get }
    |                    `- note: class property declared here
  3 |     @available(swift, obsoleted: 3, renamed: "shared")
  4 |     open class var sharedApplication: NSApplication { get }
[18/27] Compiling QSChatView BetterScrollView.swift
<unknown>:0: warning: cannot form key path that captures non-sendable type 'KeyPath<AttributeScopes.AppKitAttributes, AttributeScopes.AppKitAttributes.ForegroundColorAttribute>'; this is an error in the Swift 6 language mode
<unknown>:0: warning: cannot form key path that captures non-sendable type 'KeyPath<AttributeScopes.AppKitAttributes, AttributeScopes.AppKitAttributes.ParagraphStyleAttribute>'; this is an error in the Swift 6 language mode
<unknown>:0: warning: cannot form key path that captures non-sendable type 'KeyPath<AttributeScopes.SwiftUIAttributes, AttributeScopes.SwiftUIAttributes.FontAttribute>'; this is an error in the Swift 6 language mode
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Components/ChatBubble.swift:38:9: warning: conformance of 'NSParagraphStyle' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 36 |         var str = AttributedString(stringLiteral: message.displayTimeStamp)
 37 |         str.foregroundColor = timestampColor
 38 |         str.paragraphStyle = paragraphStyle
    |         `- warning: conformance of 'NSParagraphStyle' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 39 |         str.font = .footnote
 40 |         return str
AppKit.NSParagraphStyle:2:11: note: conformance of 'NSParagraphStyle' to 'Sendable' has been explicitly marked unavailable here
1 | @available(*, unavailable)
2 | extension NSParagraphStyle : @unchecked Sendable {
  |           `- note: conformance of 'NSParagraphStyle' to 'Sendable' has been explicitly marked unavailable here
3 | }
Swift.KeyPath:1:14: note: generic class 'KeyPath' does not conform to the 'Sendable' protocol
1 | public class KeyPath<Root, Value> : PartialKeyPath<Root> {
  |              |- note: generic class 'KeyPath' does not conform to the 'Sendable' protocol
  |              |- note: generic class 'KeyPath' does not conform to the 'Sendable' protocol
  |              `- note: generic class 'KeyPath' does not conform to the 'Sendable' protocol
2 |     @objc deinit
3 | }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:19:23: warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
17 |
18 |     /// A chat participant representing the current user.
19 |     public static let me = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'me' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
[19/27] Compiling QSChatView ChatBubble.swift
<unknown>:0: warning: cannot form key path that captures non-sendable type 'KeyPath<AttributeScopes.AppKitAttributes, AttributeScopes.AppKitAttributes.ForegroundColorAttribute>'; this is an error in the Swift 6 language mode
<unknown>:0: warning: cannot form key path that captures non-sendable type 'KeyPath<AttributeScopes.AppKitAttributes, AttributeScopes.AppKitAttributes.ParagraphStyleAttribute>'; this is an error in the Swift 6 language mode
<unknown>:0: warning: cannot form key path that captures non-sendable type 'KeyPath<AttributeScopes.SwiftUIAttributes, AttributeScopes.SwiftUIAttributes.FontAttribute>'; this is an error in the Swift 6 language mode
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Components/ChatBubble.swift:38:9: warning: conformance of 'NSParagraphStyle' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 36 |         var str = AttributedString(stringLiteral: message.displayTimeStamp)
 37 |         str.foregroundColor = timestampColor
 38 |         str.paragraphStyle = paragraphStyle
    |         `- warning: conformance of 'NSParagraphStyle' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 39 |         str.font = .footnote
 40 |         return str
AppKit.NSParagraphStyle:2:11: note: conformance of 'NSParagraphStyle' to 'Sendable' has been explicitly marked unavailable here
1 | @available(*, unavailable)
2 | extension NSParagraphStyle : @unchecked Sendable {
  |           `- note: conformance of 'NSParagraphStyle' to 'Sendable' has been explicitly marked unavailable here
3 | }
Swift.KeyPath:1:14: note: generic class 'KeyPath' does not conform to the 'Sendable' protocol
1 | public class KeyPath<Root, Value> : PartialKeyPath<Root> {
  |              |- note: generic class 'KeyPath' does not conform to the 'Sendable' protocol
  |              |- note: generic class 'KeyPath' does not conform to the 'Sendable' protocol
  |              `- note: generic class 'KeyPath' does not conform to the 'Sendable' protocol
2 |     @objc deinit
3 | }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:19:23: warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
17 |
18 |     /// A chat participant representing the current user.
19 |     public static let me = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'me' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
[20/27] Compiling QSChatView ChatTextField.swift
<unknown>:0: warning: cannot form key path that captures non-sendable type 'KeyPath<AttributeScopes.AppKitAttributes, AttributeScopes.AppKitAttributes.ForegroundColorAttribute>'; this is an error in the Swift 6 language mode
<unknown>:0: warning: cannot form key path that captures non-sendable type 'KeyPath<AttributeScopes.AppKitAttributes, AttributeScopes.AppKitAttributes.ParagraphStyleAttribute>'; this is an error in the Swift 6 language mode
<unknown>:0: warning: cannot form key path that captures non-sendable type 'KeyPath<AttributeScopes.SwiftUIAttributes, AttributeScopes.SwiftUIAttributes.FontAttribute>'; this is an error in the Swift 6 language mode
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Components/ChatBubble.swift:38:9: warning: conformance of 'NSParagraphStyle' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 36 |         var str = AttributedString(stringLiteral: message.displayTimeStamp)
 37 |         str.foregroundColor = timestampColor
 38 |         str.paragraphStyle = paragraphStyle
    |         `- warning: conformance of 'NSParagraphStyle' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 39 |         str.font = .footnote
 40 |         return str
AppKit.NSParagraphStyle:2:11: note: conformance of 'NSParagraphStyle' to 'Sendable' has been explicitly marked unavailable here
1 | @available(*, unavailable)
2 | extension NSParagraphStyle : @unchecked Sendable {
  |           `- note: conformance of 'NSParagraphStyle' to 'Sendable' has been explicitly marked unavailable here
3 | }
Swift.KeyPath:1:14: note: generic class 'KeyPath' does not conform to the 'Sendable' protocol
1 | public class KeyPath<Root, Value> : PartialKeyPath<Root> {
  |              |- note: generic class 'KeyPath' does not conform to the 'Sendable' protocol
  |              |- note: generic class 'KeyPath' does not conform to the 'Sendable' protocol
  |              `- note: generic class 'KeyPath' does not conform to the 'Sendable' protocol
2 |     @objc deinit
3 | }
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:19:23: warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
17 |
18 |     /// A chat participant representing the current user.
19 |     public static let me = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'me' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
[21/27] Compiling QSChatView ContentHeightModifier.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/PreferenceKeys/ContentHeightPreferenceKey.swift:13:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
11 | struct ContentHeightPreferenceKey: PreferenceKey {
12 |     typealias Value = CGFloat
13 |     static var defaultValue: CGFloat = 0
   |                |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'defaultValue' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 |     static func reduce(value: inout Value, nextValue: () -> Value) {
[22/27] Compiling QSChatView ScrollOffsetModifier.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/PreferenceKeys/ContentHeightPreferenceKey.swift:13:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
11 | struct ContentHeightPreferenceKey: PreferenceKey {
12 |     typealias Value = CGFloat
13 |     static var defaultValue: CGFloat = 0
   |                |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'defaultValue' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 |     static func reduce(value: inout Value, nextValue: () -> Value) {
[23/27] Compiling QSChatView ContentHeightPreferenceKey.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/PreferenceKeys/ContentHeightPreferenceKey.swift:13:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
11 | struct ContentHeightPreferenceKey: PreferenceKey {
12 |     typealias Value = CGFloat
13 |     static var defaultValue: CGFloat = 0
   |                |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'defaultValue' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 |     static func reduce(value: inout Value, nextValue: () -> Value) {
[24/27] Compiling QSChatView ChatMessageContent.swift
[25/27] Compiling QSChatView ChatMessagePromise.swift
[26/27] Compiling QSChatView ChatParticipant.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:16:23: warning: static property 'defaultChatter' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'defaultChatter' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'defaultChatter' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     /// A chat participant representing the current user.
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:19:23: warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
17 |
18 |     /// A chat participant representing the current user.
19 |     public static let me = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'me' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
[27/27] Compiling QSChatView ChatParticipantBuilder.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:16:23: warning: static property 'defaultChatter' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'defaultChatter' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'defaultChatter' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     /// A chat participant representing the current user.
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Public/ChatParticipant.swift:19:23: warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
12 | ///
13 | /// You should use ``ChatParticipantBuilder`` to instantiate this.
14 | public class ChatParticipant: Identifiable, Equatable {
   |              `- note: class 'ChatParticipant' does not conform to the 'Sendable' protocol
15 |     @available(*, deprecated, message: "Use ChatParticipant.me instead.")
16 |     public static let defaultChatter = ChatParticipant(role: .chatter)
17 |
18 |     /// A chat participant representing the current user.
19 |     public static let me = ChatParticipant(role: .chatter)
   |                       |- warning: static property 'me' is not concurrency-safe because non-'Sendable' type 'ChatParticipant' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'me' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
Build complete! (29.93s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "QSChatView",
  "name" : "QSChatView",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "15.0"
    },
    {
      "name" : "macos",
      "version" : "12.0"
    },
    {
      "name" : "maccatalyst",
      "version" : "15.0"
    }
  ],
  "products" : [
    {
      "name" : "QSChatView",
      "targets" : [
        "QSChatView"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "QSChatViewTests",
      "module_type" : "SwiftTarget",
      "name" : "QSChatViewTests",
      "path" : "Tests/QSChatViewTests",
      "sources" : [
        "ChatControllerTests.swift",
        "QSChatViewTests.swift"
      ],
      "target_dependencies" : [
        "QSChatView"
      ],
      "type" : "test"
    },
    {
      "c99name" : "QSChatView",
      "module_type" : "SwiftTarget",
      "name" : "QSChatView",
      "path" : "Sources/QSChatView",
      "product_memberships" : [
        "QSChatView"
      ],
      "sources" : [
        "Internal/Components/BetterScrollView.swift",
        "Internal/Components/ChatBubble.swift",
        "Internal/Components/ChatTextField.swift",
        "Internal/Components/TypingIndicator.swift",
        "Internal/Components/WrappedChatBubble.swift",
        "Internal/Data/ScrollViewData.swift",
        "Internal/Modifiers/ContentHeightModifier.swift",
        "Internal/Modifiers/ScrollOffsetModifier.swift",
        "Internal/PreferenceKeys/ContentHeightPreferenceKey.swift",
        "Internal/PreferenceKeys/ScrollOffsetPreferenceKey.swift",
        "Internal/Styles/ChatTextFieldStyle.swift",
        "Public/ChatAvatar.swift",
        "Public/ChatController.swift",
        "Public/ChatMessage.swift",
        "Public/ChatMessageContent.swift",
        "Public/ChatMessagePromise.swift",
        "Public/ChatParticipant.swift",
        "Public/ChatParticipantBuilder.swift",
        "Public/ChatParticipantRole.swift",
        "Public/Config/ChatConfig.swift",
        "Public/Config/ChatConfigBuilder.swift",
        "Public/Config/ChatContextMenuItem.swift",
        "Public/Config/ChatScrollBehavior.swift",
        "QSChatView.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.7"
}
Done.