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 v0.3.0 (9b1546), with Swift 6.1 for macOS (SPM) on 28 Apr 2025 01:47:53 UTC.

Swift 6 data race errors: 4

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

========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/FiveSheepCo/QSChatView.git
Reference: v0.3.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/FiveSheepCo/QSChatView
 * tag               v0.3.0     -> FETCH_HEAD
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 v0.3.0
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "dependencies": [
    {
      "identity": "qschatview",
      "name": "QSChatView",
      "url": "https://github.com/FiveSheepCo/QSChatView.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/QSChatView",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/FiveSheepCo/QSChatView.git
[1/233] Fetching qschatview
Fetched https://github.com/FiveSheepCo/QSChatView.git from cache (1.07s)
Creating working copy for https://github.com/FiveSheepCo/QSChatView.git
Working copy of https://github.com/FiveSheepCo/QSChatView.git resolved at v0.3.0 (9b15461)
warning: '.resolve-product-dependencies': dependency 'qschatview' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/FiveSheepCo/QSChatView.git
https://github.com/FiveSheepCo/QSChatView.git
{
  "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"
}
Running build ...
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
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-2F0A5646E1D333AE.txt
[3/25] Emitting module QSChatView
/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: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
   |                `- 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: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
   |                `- 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: add '@MainActor' to make static property 'defaultChatter' part of global actor 'MainActor'
   |                       `- 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: add '@MainActor' to make static property 'me' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
[4/27] Compiling QSChatView BetterScrollView.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Components/ChatBubble.swift:38:9: warning: conformance of 'NSParagraphStyle' to 'Sendable' is unavailable
 36 |         var str = AttributedString(stringLiteral: message.displayTimeStamp)
 37 |         str.foregroundColor = timestampColor
 38 |         str.paragraphStyle = paragraphStyle
    |         `- warning: conformance of 'NSParagraphStyle' to 'Sendable' is unavailable
 39 |         str.font = .footnote
 40 |         return str
:1:1: note: conformance of 'NSParagraphStyle' to 'Sendable' has been explicitly marked unavailable here
1 | @_nonSendable(_assumed)
  | `- note: conformance of 'NSParagraphStyle' to 'Sendable' has been explicitly marked unavailable here
[5/27] Compiling QSChatView ChatBubble.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Components/ChatBubble.swift:38:9: warning: conformance of 'NSParagraphStyle' to 'Sendable' is unavailable
 36 |         var str = AttributedString(stringLiteral: message.displayTimeStamp)
 37 |         str.foregroundColor = timestampColor
 38 |         str.paragraphStyle = paragraphStyle
    |         `- warning: conformance of 'NSParagraphStyle' to 'Sendable' is unavailable
 39 |         str.font = .footnote
 40 |         return str
:1:1: note: conformance of 'NSParagraphStyle' to 'Sendable' has been explicitly marked unavailable here
1 | @_nonSendable(_assumed)
  | `- note: conformance of 'NSParagraphStyle' to 'Sendable' has been explicitly marked unavailable here
[6/27] Compiling QSChatView ChatTextField.swift
/Users/admin/builder/spi-builder-workspace/Sources/QSChatView/Internal/Components/ChatBubble.swift:38:9: warning: conformance of 'NSParagraphStyle' to 'Sendable' is unavailable
 36 |         var str = AttributedString(stringLiteral: message.displayTimeStamp)
 37 |         str.foregroundColor = timestampColor
 38 |         str.paragraphStyle = paragraphStyle
    |         `- warning: conformance of 'NSParagraphStyle' to 'Sendable' is unavailable
 39 |         str.font = .footnote
 40 |         return str
:1:1: note: conformance of 'NSParagraphStyle' to 'Sendable' has been explicitly marked unavailable here
1 | @_nonSendable(_assumed)
  | `- note: conformance of 'NSParagraphStyle' to 'Sendable' has been explicitly marked unavailable here
[7/27] Compiling QSChatView ChatScrollBehavior.swift
/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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 QSChatView.swift
/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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
[9/27] Compiling QSChatView ChatController.swift
[10/27] Compiling QSChatView ChatMessage.swift
[11/27] Compiling QSChatView ChatMessageContent.swift
[12/27] Compiling QSChatView ChatMessagePromise.swift
[13/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/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 |     }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:359:29: note: property declared here
 357 | @property (readonly) NSRect cascadingReferenceFrame API_AVAILABLE(macos(15.0));
 358 |
 359 | @property (readonly) NSRect frame;
     |                             `- note: property declared here
 360 |
 361 | /*! Subclasses can override \c animationResizeTime: to control the total time for the frame change.
/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 |     }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:201:48: note: property declared here
199 | - (nullable NSWindow *)windowWithWindowNumber:(NSInteger)windowNum;
200 |
201 | @property (nullable, readonly, weak) NSWindow *mainWindow;
    |                                                `- note: property declared here
202 | @property (nullable, readonly, weak) NSWindow *keyWindow;
203 | @property (getter=isActive, readonly) BOOL active;
/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 |     }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:193:61: note: class property declared here
191 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
192 |
193 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
    |                                                             `- note: class property declared here
194 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
195 |
[14/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/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 |     }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:359:29: note: property declared here
 357 | @property (readonly) NSRect cascadingReferenceFrame API_AVAILABLE(macos(15.0));
 358 |
 359 | @property (readonly) NSRect frame;
     |                             `- note: property declared here
 360 |
 361 | /*! Subclasses can override \c animationResizeTime: to control the total time for the frame change.
/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 |     }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:201:48: note: property declared here
199 | - (nullable NSWindow *)windowWithWindowNumber:(NSInteger)windowNum;
200 |
201 | @property (nullable, readonly, weak) NSWindow *mainWindow;
    |                                                `- note: property declared here
202 | @property (nullable, readonly, weak) NSWindow *keyWindow;
203 | @property (getter=isActive, readonly) BOOL active;
/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 |     }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:193:61: note: class property declared here
191 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
192 |
193 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
    |                                                             `- note: class property declared here
194 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
195 |
[15/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/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 |     }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:359:29: note: property declared here
 357 | @property (readonly) NSRect cascadingReferenceFrame API_AVAILABLE(macos(15.0));
 358 |
 359 | @property (readonly) NSRect frame;
     |                             `- note: property declared here
 360 |
 361 | /*! Subclasses can override \c animationResizeTime: to control the total time for the frame change.
/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 |     }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:201:48: note: property declared here
199 | - (nullable NSWindow *)windowWithWindowNumber:(NSInteger)windowNum;
200 |
201 | @property (nullable, readonly, weak) NSWindow *mainWindow;
    |                                                `- note: property declared here
202 | @property (nullable, readonly, weak) NSWindow *keyWindow;
203 | @property (getter=isActive, readonly) BOOL active;
/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 |     }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:193:61: note: class property declared here
191 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
192 |
193 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
    |                                                             `- note: class property declared here
194 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
195 |
[16/27] Compiling QSChatView ChatParticipantRole.swift
[17/27] Compiling QSChatView ChatConfig.swift
[18/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: add '@MainActor' to make static property 'defaultChatter' part of global actor 'MainActor'
   |                       `- 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: add '@MainActor' to make static property 'me' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
[19/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: add '@MainActor' to make static property 'defaultChatter' part of global actor 'MainActor'
   |                       `- 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: add '@MainActor' to make static property 'me' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 |     let name: String?
[20/27] Compiling QSChatView ChatConfigBuilder.swift
[21/27] Compiling QSChatView ChatContextMenuItem.swift
[22/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: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
   |                `- 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 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: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
   |                `- 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 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: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 |     static func reduce(value: inout Value, nextValue: () -> Value) {
[25/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: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 |     static func reduce(value: inout Value, nextValue: () -> Value) {
[26/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: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 |     static func reduce(value: inout Value, nextValue: () -> Value) {
[27/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: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 |     static func reduce(value: inout Value, nextValue: () -> Value) {
Build complete! (10.71s)
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.