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 StreamDeck, reference 0.5.1 (f6d1a5), with Swift 6.0 for macOS (SPM) on 2 Dec 2024 04:20:41 UTC.

Swift 6 data race errors: 173

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.1.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

 39 | 													   context: context,
 40 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:59:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 57 | 	///   - settings: A json object which is persistently saved globally.
 58 | 	func setGlobalSettings(_ settings: [String: Any]) {
 59 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 60 | 			await PluginCommunication.shared.sendEvent(.setGlobalSettings,
 61 | 													   context: PluginCommunication.shared.uuid,
 62 | 													   payload: settings)
    |                          `- note: closure captures 'settings' which is accessible to code in the current task
 63 | 		}
 64 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:60:37: warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
 58 | 	func setGlobalSettings(_ settings: [String: Any]) {
 59 | 		Task {
 60 | 			await PluginCommunication.shared.sendEvent(.setGlobalSettings,
    |                                     |- warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'settings.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 61 | 													   context: PluginCommunication.shared.uuid,
 62 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:114:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
112 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the title is set to all states.
113 | 	func setTitle(in context: String, to title: String?, target: Target? = nil, state: Int? = nil) {
114 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
115 | 			var payload: [String: Any] = [:]
116 |
117 | 			payload["title"] = title
118 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures 'target' which is accessible to code in the current task
119 | 			payload["state"] = state
120 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:141:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
139 | 		let encodedImage = image?.base64String
140 |
141 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
142 | 			var payload: [String: Any] = [:]
143 |
144 | 			payload["image"] = encodedImage
145 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures 'target' which is accessible to code in the current task
146 | 			payload["state"] = state
147 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:190:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
188 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the title is set to all states.
189 | 	func setImage(in context: String, toSVG svg: String?, target: Target? = nil, state: Int? = nil) {
190 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
191 | 			var payload: [String: Any] = [:]
192 |
    :
195 | 			}
196 |
197 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures 'target' which is accessible to code in the current task
198 | 			payload["state"] = state
199 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:261:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
259 | 	///   - payload: A json object that will be received by the Property Inspector.
260 | 	func sendToPropertyInspector(in context: String, action: String, payload: [String: Any]) {
261 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
262 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
263 | 													   action: action,
264 | 													   context: context,
265 | 													   payload: payload)
    |                          `- note: closure captures 'payload' which is accessible to code in the current task
266 | 		}
267 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:262:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
260 | 	func sendToPropertyInspector(in context: String, action: String, payload: [String: Any]) {
261 | 		Task {
262 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
263 | 													   action: action,
264 | 													   context: context,
[301/314] Compiling StreamDeck ActionControllerRegistry.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Command Line/PluginCommand.swift:24:20: warning: static property 'plugin' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
22 |
23 | 	/// The plugin to be used.
24 | 	public static var plugin: (any Plugin.Type)?
   |                    |- warning: static property 'plugin' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: convert 'plugin' to a 'let' constant to make 'Sendable' shared state immutable
   |                    |- note: annotate 'plugin' 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
25 |
26 | 	/// The default init
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Command Line/PluginCommand.swift:15:20: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
13 |
14 | 	/// The command's configuration.
15 | 	public static var configuration = CommandConfiguration(
   |                    |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
   |                    |- note: annotate 'configuration' 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
16 | 		subcommands: [
17 | 			StreamDeckCommand.self,
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:68:20: warning: static property 'v11' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
66 | 	}
67 |
68 | 	public static let v11: PlatformMinimumVersion = "10.11"
   |                    |- warning: static property 'v11' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v11' 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
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/ActionControllerRegistry.swift:12:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ActionControllerRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
 8 | import Foundation
 9 |
10 | class ActionControllerRegistry {
   |       `- note: class 'ActionControllerRegistry' does not conform to the 'Sendable' protocol
11 |
12 | 	static let shared = ActionControllerRegistry()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ActionControllerRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
13 |
14 | 	var actions: [String: ControllerType] = [:]
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:25:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 23 | 	@available(*, deprecated, message: "Use the Settings API.")
 24 | 	func setSettings(in context: String, to settings: [String: Any]) {
 25 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 26 | 			await PluginCommunication.shared.sendEvent(.setSettings,
 27 | 													   context: context,
 28 | 													   payload: settings)
    |                          `- note: closure captures 'settings' which is accessible to code in the current task
 29 | 		}
 30 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:26:37: warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
 24 | 	func setSettings(in context: String, to settings: [String: Any]) {
 25 | 		Task {
 26 | 			await PluginCommunication.shared.sendEvent(.setSettings,
    |                                     |- warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'settings.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 27 | 													   context: context,
 28 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:37:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 35 | 	///   - settings: A json object which is persistently saved for the action's instance.
 36 | 	func setSettings<P: Encodable>(in context: String, to settings: P) {
 37 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 38 | 			await PluginCommunication.shared.sendEvent(.setSettings,
 39 | 													   context: context,
 40 | 													   payload: settings)
    |                          `- note: closure captures 'settings' which is accessible to code in the current task
 41 | 		}
 42 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:38:37: warning: sending task-isolated value of type 'P' with later accesses to actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
 36 | 	func setSettings<P: Encodable>(in context: String, to settings: P) {
 37 | 		Task {
 38 | 			await PluginCommunication.shared.sendEvent(.setSettings,
    |                                     `- warning: sending task-isolated value of type 'P' with later accesses to actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
 39 | 													   context: context,
 40 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:59:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 57 | 	///   - settings: A json object which is persistently saved globally.
 58 | 	func setGlobalSettings(_ settings: [String: Any]) {
 59 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 60 | 			await PluginCommunication.shared.sendEvent(.setGlobalSettings,
 61 | 													   context: PluginCommunication.shared.uuid,
 62 | 													   payload: settings)
    |                          `- note: closure captures 'settings' which is accessible to code in the current task
 63 | 		}
 64 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:60:37: warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
 58 | 	func setGlobalSettings(_ settings: [String: Any]) {
 59 | 		Task {
 60 | 			await PluginCommunication.shared.sendEvent(.setGlobalSettings,
    |                                     |- warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'settings.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 61 | 													   context: PluginCommunication.shared.uuid,
 62 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:114:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
112 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the title is set to all states.
113 | 	func setTitle(in context: String, to title: String?, target: Target? = nil, state: Int? = nil) {
114 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
115 | 			var payload: [String: Any] = [:]
116 |
117 | 			payload["title"] = title
118 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures 'target' which is accessible to code in the current task
119 | 			payload["state"] = state
120 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:141:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
139 | 		let encodedImage = image?.base64String
140 |
141 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
142 | 			var payload: [String: Any] = [:]
143 |
144 | 			payload["image"] = encodedImage
145 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures 'target' which is accessible to code in the current task
146 | 			payload["state"] = state
147 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:190:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
188 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the title is set to all states.
189 | 	func setImage(in context: String, toSVG svg: String?, target: Target? = nil, state: Int? = nil) {
190 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
191 | 			var payload: [String: Any] = [:]
192 |
    :
195 | 			}
196 |
197 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures 'target' which is accessible to code in the current task
198 | 			payload["state"] = state
199 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:261:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
259 | 	///   - payload: A json object that will be received by the Property Inspector.
260 | 	func sendToPropertyInspector(in context: String, action: String, payload: [String: Any]) {
261 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
262 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
263 | 													   action: action,
264 | 													   context: context,
265 | 													   payload: payload)
    |                          `- note: closure captures 'payload' which is accessible to code in the current task
266 | 		}
267 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift:262:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
260 | 	func sendToPropertyInspector(in context: String, action: String, payload: [String: Any]) {
261 | 		Task {
262 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
263 | 													   action: action,
264 | 													   context: context,
[302/314] Compiling StreamDeck PluginActionState.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:68:20: warning: static property 'v11' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
66 | 	}
67 |
68 | 	public static let v11: PlatformMinimumVersion = "10.11"
   |                    |- warning: static property 'v11' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v11' 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
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:69:20: warning: static property 'v12' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
67 |
68 | 	public static let v11: PlatformMinimumVersion = "10.11"
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
   |                    |- warning: static property 'v12' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v12' 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
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
71 | 	public static let v14: PlatformMinimumVersion = "10.14"
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:70:20: warning: static property 'v13' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
68 | 	public static let v11: PlatformMinimumVersion = "10.11"
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
   |                    |- warning: static property 'v13' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v13' 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
71 | 	public static let v14: PlatformMinimumVersion = "10.14"
72 | }
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:71:20: warning: static property 'v14' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
71 | 	public static let v14: PlatformMinimumVersion = "10.14"
   |                    |- warning: static property 'v14' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v14' 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
72 | }
73 |
[303/314] Compiling StreamDeck PluginInfo.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:68:20: warning: static property 'v11' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
66 | 	}
67 |
68 | 	public static let v11: PlatformMinimumVersion = "10.11"
   |                    |- warning: static property 'v11' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v11' 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
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:69:20: warning: static property 'v12' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
67 |
68 | 	public static let v11: PlatformMinimumVersion = "10.11"
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
   |                    |- warning: static property 'v12' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v12' 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
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
71 | 	public static let v14: PlatformMinimumVersion = "10.14"
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:70:20: warning: static property 'v13' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
68 | 	public static let v11: PlatformMinimumVersion = "10.11"
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
   |                    |- warning: static property 'v13' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v13' 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
71 | 	public static let v14: PlatformMinimumVersion = "10.14"
72 | }
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:71:20: warning: static property 'v14' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
71 | 	public static let v14: PlatformMinimumVersion = "10.14"
   |                    |- warning: static property 'v14' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v14' 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
72 | }
73 |
[304/314] Compiling StreamDeck PluginManifest.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:68:20: warning: static property 'v11' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
66 | 	}
67 |
68 | 	public static let v11: PlatformMinimumVersion = "10.11"
   |                    |- warning: static property 'v11' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v11' 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
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:69:20: warning: static property 'v12' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
67 |
68 | 	public static let v11: PlatformMinimumVersion = "10.11"
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
   |                    |- warning: static property 'v12' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v12' 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
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
71 | 	public static let v14: PlatformMinimumVersion = "10.14"
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:70:20: warning: static property 'v13' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
68 | 	public static let v11: PlatformMinimumVersion = "10.11"
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
   |                    |- warning: static property 'v13' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v13' 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
71 | 	public static let v14: PlatformMinimumVersion = "10.14"
72 | }
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:71:20: warning: static property 'v14' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
71 | 	public static let v14: PlatformMinimumVersion = "10.14"
   |                    |- warning: static property 'v14' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v14' 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
72 | }
73 |
[305/314] Compiling StreamDeck PluginOS.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:68:20: warning: static property 'v11' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
66 | 	}
67 |
68 | 	public static let v11: PlatformMinimumVersion = "10.11"
   |                    |- warning: static property 'v11' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v11' 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
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:69:20: warning: static property 'v12' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
67 |
68 | 	public static let v11: PlatformMinimumVersion = "10.11"
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
   |                    |- warning: static property 'v12' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v12' 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
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
71 | 	public static let v14: PlatformMinimumVersion = "10.14"
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:70:20: warning: static property 'v13' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
68 | 	public static let v11: PlatformMinimumVersion = "10.11"
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
   |                    |- warning: static property 'v13' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v13' 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
71 | 	public static let v14: PlatformMinimumVersion = "10.14"
72 | }
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/PluginManifest/PluginOS.swift:71:20: warning: static property 'v14' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
54 | }
55 |
56 | public struct PlatformMinimumVersion: ExpressibleByStringLiteral, Codable {
   |               `- note: consider making struct 'PlatformMinimumVersion' conform to the 'Sendable' protocol
57 | 	let version: String
58 |
   :
69 | 	public static let v12: PlatformMinimumVersion = "10.12"
70 | 	public static let v13: PlatformMinimumVersion = "10.13"
71 | 	public static let v14: PlatformMinimumVersion = "10.14"
   |                    |- warning: static property 'v14' is not concurrency-safe because non-'Sendable' type 'PlatformMinimumVersion' may have shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: annotate 'v14' 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
72 | }
73 |
[306/314] Compiling StreamDeck SettingsMacros.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:17:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
17 | 	static let shared = TimerKeeper()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
18 |
19 | 	/// Times that have been set for a specific action instance.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:25:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 23 | 	@available(*, deprecated, message: "Use the Settings API.")
 24 | 	func setSettings(to settings: [String: Any]) {
 25 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 26 | 			await PluginCommunication.shared.sendEvent(.setSettings,
 27 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
 28 | 													   payload: settings)
    |                          `- note: closure captures non-Sendable 'settings'
 29 | 		}
 30 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:26:37: warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
 24 | 	func setSettings(to settings: [String: Any]) {
 25 | 		Task {
 26 | 			await PluginCommunication.shared.sendEvent(.setSettings,
    |                                     |- warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'settings.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 27 | 													   context: context,
 28 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:37:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 35 | 	///   - settings: A json object which is persistently saved for the action's instance.
 36 | 	func setSettings(to settings: Settings) {
 37 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 38 | 			await PluginCommunication.shared.sendEvent(.setSettings,
 39 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
 40 | 													   payload: settings)
    |                          `- note: closure captures non-Sendable 'settings'
 41 | 		}
 42 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:38:37: warning: sending task-isolated value of type 'Self.Settings' with later accesses to actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
 36 | 	func setSettings(to settings: Settings) {
 37 | 		Task {
 38 | 			await PluginCommunication.shared.sendEvent(.setSettings,
    |                                     `- warning: sending task-isolated value of type 'Self.Settings' with later accesses to actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
 39 | 													   context: context,
 40 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:47:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 45 | 	///   - context: An opaque value identifying the instance's action or Property Inspector.
 46 | 	func getSettings() {
 47 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 48 | 			await PluginCommunication.shared.sendEvent(.getSettings,
 49 | 													   context: context,
    |                          `- note: closure captures 'self' which is accessible to code in the current task
 50 | 													   payload: nil)
 51 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:92:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 90 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the title is set to all states.
 91 | 	func setTitle(to title: String?, target: Target? = nil, state: Int? = nil) {
 92 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 93 | 			var payload: [String: Any] = [:]
 94 |
 95 | 			payload["title"] = title
 96 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
 97 | 			payload["state"] = state
 98 |
 99 | 			await PluginCommunication.shared.sendEvent(.setTitle,
100 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
101 | 													   payload: payload)
102 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:115:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
113 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the image is set to all states.
114 | 	func setImage(to image: NSImage?, target: Target? = nil, state: Int? = nil) {
115 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
116 | 			var payload: [String: Any] = [:]
117 |
118 | 			payload["image"] = image?.base64String
    |                       `- note: closure captures non-Sendable 'image'
119 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
120 | 			payload["state"] = state
121 |
122 |
123 | 			await PluginCommunication.shared.sendEvent(.setImage,
124 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
125 | 													   payload: payload)
126 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:165:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
163 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the image is set to all states.
164 | 	func setImage(toSVG svg: String?, target: Target? = nil, state: Int? = nil) {
165 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
166 | 			var payload: [String: Any] = [:]
167 |
    :
170 | 			}
171 |
172 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
173 | 			payload["state"] = state
174 |
175 |
176 | 			await PluginCommunication.shared.sendEvent(.setImage,
177 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
178 | 													   payload: payload)
179 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:185:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
183 | 	/// - Parameter context: An opaque value identifying the instance's action or Property Inspector.
184 | 	func showAlert() {
185 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
186 | 			await PluginCommunication.shared.sendEvent(.showAlert, context: context, payload: nil)
    |                                                                    `- note: closure captures 'self' which is accessible to code in the current task
187 | 		}
188 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:193:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
191 | 	/// - Parameter context: An opaque value identifying the instance's action or Property Inspector.
192 | 	func showOk() {
193 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
194 | 			await PluginCommunication.shared.sendEvent(.showOK, context: context, payload: nil)
    |                                                                 `- note: closure captures 'self' which is accessible to code in the current task
195 | 		}
196 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:205:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
203 | 		let payload: [String: Any] = ["state": state]
204 |
205 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
206 | 			await PluginCommunication.shared.sendEvent(.setState,
207 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
208 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
209 | 		}
210 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:206:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
204 |
205 | 		Task {
206 | 			await PluginCommunication.shared.sendEvent(.setState,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
207 | 													   context: context,
208 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:218:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
216 | 	///   - payload: A json object that will be received by the Property Inspector.
217 | 	func sendToPropertyInspector(payload: [String: Any]) {
218 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
219 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
220 | 													   action: uuid,
    |                         `- note: closure captures non-Sendable 'self'
221 | 													   context: context,
222 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
223 | 		}
224 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:219:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
217 | 	func sendToPropertyInspector(payload: [String: Any]) {
218 | 		Task {
219 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
220 | 													   action: uuid,
221 | 													   context: context,
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:229:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
227 | 	/// The plugin can send a `setFeedback` event to the Stream Deck application to dynamically change properties of items on the Stream Deck + touch display layout.
228 | 	func setFeedback(_ payload: [String: Any]) {
229 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
230 | 			await PluginCommunication.shared.sendEvent(.setFeedback,
231 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
232 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
233 | 		}
234 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:230:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
228 | 	func setFeedback(_ payload: [String: Any]) {
229 | 		Task {
230 | 			await PluginCommunication.shared.sendEvent(.setFeedback,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
231 | 													   context: context,
232 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:243:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
241 | 		let payload: [String: Any] = ["layout": layout.id]
242 |
243 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
244 | 			await PluginCommunication.shared.sendEvent(.setFeedbackLayout,
245 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
246 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
247 | 		}
248 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:244:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
242 |
243 | 		Task {
244 | 			await PluginCommunication.shared.sendEvent(.setFeedbackLayout,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
245 | 													   context: context,
246 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:258:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
256 | 	/// - Parameter triggerDescription: The new `TriggerDescription` or `nil` to reset.
257 | 	func setTriggerDescription(_ triggerDescription: TriggerDescription?) {
258 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
259 | 			await PluginCommunication.shared.sendEvent(.setTriggerDescription,
260 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
261 | 													   payload: triggerDescription)
    |                          `- note: closure captures non-Sendable 'triggerDescription'
262 | 		}
263 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:259:37: warning: sending 'triggerDescription' risks causing data races; this is an error in the Swift 6 language mode
257 | 	func setTriggerDescription(_ triggerDescription: TriggerDescription?) {
258 | 		Task {
259 | 			await PluginCommunication.shared.sendEvent(.setTriggerDescription,
    |                                     |- warning: sending 'triggerDescription' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'triggerDescription' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
260 | 													   context: context,
261 | 													   payload: triggerDescription)
[307/314] Compiling StreamDeck Action+Received.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:17:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
17 | 	static let shared = TimerKeeper()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
18 |
19 | 	/// Times that have been set for a specific action instance.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:25:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 23 | 	@available(*, deprecated, message: "Use the Settings API.")
 24 | 	func setSettings(to settings: [String: Any]) {
 25 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 26 | 			await PluginCommunication.shared.sendEvent(.setSettings,
 27 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
 28 | 													   payload: settings)
    |                          `- note: closure captures non-Sendable 'settings'
 29 | 		}
 30 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:26:37: warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
 24 | 	func setSettings(to settings: [String: Any]) {
 25 | 		Task {
 26 | 			await PluginCommunication.shared.sendEvent(.setSettings,
    |                                     |- warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'settings.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 27 | 													   context: context,
 28 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:37:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 35 | 	///   - settings: A json object which is persistently saved for the action's instance.
 36 | 	func setSettings(to settings: Settings) {
 37 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 38 | 			await PluginCommunication.shared.sendEvent(.setSettings,
 39 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
 40 | 													   payload: settings)
    |                          `- note: closure captures non-Sendable 'settings'
 41 | 		}
 42 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:38:37: warning: sending task-isolated value of type 'Self.Settings' with later accesses to actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
 36 | 	func setSettings(to settings: Settings) {
 37 | 		Task {
 38 | 			await PluginCommunication.shared.sendEvent(.setSettings,
    |                                     `- warning: sending task-isolated value of type 'Self.Settings' with later accesses to actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
 39 | 													   context: context,
 40 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:47:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 45 | 	///   - context: An opaque value identifying the instance's action or Property Inspector.
 46 | 	func getSettings() {
 47 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 48 | 			await PluginCommunication.shared.sendEvent(.getSettings,
 49 | 													   context: context,
    |                          `- note: closure captures 'self' which is accessible to code in the current task
 50 | 													   payload: nil)
 51 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:92:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 90 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the title is set to all states.
 91 | 	func setTitle(to title: String?, target: Target? = nil, state: Int? = nil) {
 92 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 93 | 			var payload: [String: Any] = [:]
 94 |
 95 | 			payload["title"] = title
 96 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
 97 | 			payload["state"] = state
 98 |
 99 | 			await PluginCommunication.shared.sendEvent(.setTitle,
100 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
101 | 													   payload: payload)
102 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:115:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
113 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the image is set to all states.
114 | 	func setImage(to image: NSImage?, target: Target? = nil, state: Int? = nil) {
115 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
116 | 			var payload: [String: Any] = [:]
117 |
118 | 			payload["image"] = image?.base64String
    |                       `- note: closure captures non-Sendable 'image'
119 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
120 | 			payload["state"] = state
121 |
122 |
123 | 			await PluginCommunication.shared.sendEvent(.setImage,
124 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
125 | 													   payload: payload)
126 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:165:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
163 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the image is set to all states.
164 | 	func setImage(toSVG svg: String?, target: Target? = nil, state: Int? = nil) {
165 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
166 | 			var payload: [String: Any] = [:]
167 |
    :
170 | 			}
171 |
172 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
173 | 			payload["state"] = state
174 |
175 |
176 | 			await PluginCommunication.shared.sendEvent(.setImage,
177 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
178 | 													   payload: payload)
179 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:185:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
183 | 	/// - Parameter context: An opaque value identifying the instance's action or Property Inspector.
184 | 	func showAlert() {
185 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
186 | 			await PluginCommunication.shared.sendEvent(.showAlert, context: context, payload: nil)
    |                                                                    `- note: closure captures 'self' which is accessible to code in the current task
187 | 		}
188 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:193:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
191 | 	/// - Parameter context: An opaque value identifying the instance's action or Property Inspector.
192 | 	func showOk() {
193 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
194 | 			await PluginCommunication.shared.sendEvent(.showOK, context: context, payload: nil)
    |                                                                 `- note: closure captures 'self' which is accessible to code in the current task
195 | 		}
196 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:205:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
203 | 		let payload: [String: Any] = ["state": state]
204 |
205 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
206 | 			await PluginCommunication.shared.sendEvent(.setState,
207 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
208 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
209 | 		}
210 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:206:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
204 |
205 | 		Task {
206 | 			await PluginCommunication.shared.sendEvent(.setState,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
207 | 													   context: context,
208 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:218:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
216 | 	///   - payload: A json object that will be received by the Property Inspector.
217 | 	func sendToPropertyInspector(payload: [String: Any]) {
218 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
219 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
220 | 													   action: uuid,
    |                         `- note: closure captures non-Sendable 'self'
221 | 													   context: context,
222 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
223 | 		}
224 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:219:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
217 | 	func sendToPropertyInspector(payload: [String: Any]) {
218 | 		Task {
219 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
220 | 													   action: uuid,
221 | 													   context: context,
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:229:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
227 | 	/// The plugin can send a `setFeedback` event to the Stream Deck application to dynamically change properties of items on the Stream Deck + touch display layout.
228 | 	func setFeedback(_ payload: [String: Any]) {
229 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
230 | 			await PluginCommunication.shared.sendEvent(.setFeedback,
231 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
232 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
233 | 		}
234 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:230:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
228 | 	func setFeedback(_ payload: [String: Any]) {
229 | 		Task {
230 | 			await PluginCommunication.shared.sendEvent(.setFeedback,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
231 | 													   context: context,
232 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:243:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
241 | 		let payload: [String: Any] = ["layout": layout.id]
242 |
243 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
244 | 			await PluginCommunication.shared.sendEvent(.setFeedbackLayout,
245 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
246 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
247 | 		}
248 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:244:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
242 |
243 | 		Task {
244 | 			await PluginCommunication.shared.sendEvent(.setFeedbackLayout,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
245 | 													   context: context,
246 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:258:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
256 | 	/// - Parameter triggerDescription: The new `TriggerDescription` or `nil` to reset.
257 | 	func setTriggerDescription(_ triggerDescription: TriggerDescription?) {
258 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
259 | 			await PluginCommunication.shared.sendEvent(.setTriggerDescription,
260 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
261 | 													   payload: triggerDescription)
    |                          `- note: closure captures non-Sendable 'triggerDescription'
262 | 		}
263 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:259:37: warning: sending 'triggerDescription' risks causing data races; this is an error in the Swift 6 language mode
257 | 	func setTriggerDescription(_ triggerDescription: TriggerDescription?) {
258 | 		Task {
259 | 			await PluginCommunication.shared.sendEvent(.setTriggerDescription,
    |                                     |- warning: sending 'triggerDescription' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'triggerDescription' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
260 | 													   context: context,
261 | 													   payload: triggerDescription)
[308/314] Compiling StreamDeck Action+Sent.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:17:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
17 | 	static let shared = TimerKeeper()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
18 |
19 | 	/// Times that have been set for a specific action instance.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:25:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 23 | 	@available(*, deprecated, message: "Use the Settings API.")
 24 | 	func setSettings(to settings: [String: Any]) {
 25 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 26 | 			await PluginCommunication.shared.sendEvent(.setSettings,
 27 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
 28 | 													   payload: settings)
    |                          `- note: closure captures non-Sendable 'settings'
 29 | 		}
 30 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:26:37: warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
 24 | 	func setSettings(to settings: [String: Any]) {
 25 | 		Task {
 26 | 			await PluginCommunication.shared.sendEvent(.setSettings,
    |                                     |- warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'settings.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 27 | 													   context: context,
 28 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:37:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 35 | 	///   - settings: A json object which is persistently saved for the action's instance.
 36 | 	func setSettings(to settings: Settings) {
 37 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 38 | 			await PluginCommunication.shared.sendEvent(.setSettings,
 39 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
 40 | 													   payload: settings)
    |                          `- note: closure captures non-Sendable 'settings'
 41 | 		}
 42 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:38:37: warning: sending task-isolated value of type 'Self.Settings' with later accesses to actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
 36 | 	func setSettings(to settings: Settings) {
 37 | 		Task {
 38 | 			await PluginCommunication.shared.sendEvent(.setSettings,
    |                                     `- warning: sending task-isolated value of type 'Self.Settings' with later accesses to actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
 39 | 													   context: context,
 40 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:47:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 45 | 	///   - context: An opaque value identifying the instance's action or Property Inspector.
 46 | 	func getSettings() {
 47 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 48 | 			await PluginCommunication.shared.sendEvent(.getSettings,
 49 | 													   context: context,
    |                          `- note: closure captures 'self' which is accessible to code in the current task
 50 | 													   payload: nil)
 51 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:92:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 90 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the title is set to all states.
 91 | 	func setTitle(to title: String?, target: Target? = nil, state: Int? = nil) {
 92 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 93 | 			var payload: [String: Any] = [:]
 94 |
 95 | 			payload["title"] = title
 96 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
 97 | 			payload["state"] = state
 98 |
 99 | 			await PluginCommunication.shared.sendEvent(.setTitle,
100 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
101 | 													   payload: payload)
102 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:115:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
113 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the image is set to all states.
114 | 	func setImage(to image: NSImage?, target: Target? = nil, state: Int? = nil) {
115 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
116 | 			var payload: [String: Any] = [:]
117 |
118 | 			payload["image"] = image?.base64String
    |                       `- note: closure captures non-Sendable 'image'
119 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
120 | 			payload["state"] = state
121 |
122 |
123 | 			await PluginCommunication.shared.sendEvent(.setImage,
124 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
125 | 													   payload: payload)
126 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:165:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
163 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the image is set to all states.
164 | 	func setImage(toSVG svg: String?, target: Target? = nil, state: Int? = nil) {
165 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
166 | 			var payload: [String: Any] = [:]
167 |
    :
170 | 			}
171 |
172 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
173 | 			payload["state"] = state
174 |
175 |
176 | 			await PluginCommunication.shared.sendEvent(.setImage,
177 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
178 | 													   payload: payload)
179 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:185:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
183 | 	/// - Parameter context: An opaque value identifying the instance's action or Property Inspector.
184 | 	func showAlert() {
185 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
186 | 			await PluginCommunication.shared.sendEvent(.showAlert, context: context, payload: nil)
    |                                                                    `- note: closure captures 'self' which is accessible to code in the current task
187 | 		}
188 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:193:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
191 | 	/// - Parameter context: An opaque value identifying the instance's action or Property Inspector.
192 | 	func showOk() {
193 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
194 | 			await PluginCommunication.shared.sendEvent(.showOK, context: context, payload: nil)
    |                                                                 `- note: closure captures 'self' which is accessible to code in the current task
195 | 		}
196 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:205:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
203 | 		let payload: [String: Any] = ["state": state]
204 |
205 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
206 | 			await PluginCommunication.shared.sendEvent(.setState,
207 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
208 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
209 | 		}
210 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:206:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
204 |
205 | 		Task {
206 | 			await PluginCommunication.shared.sendEvent(.setState,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
207 | 													   context: context,
208 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:218:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
216 | 	///   - payload: A json object that will be received by the Property Inspector.
217 | 	func sendToPropertyInspector(payload: [String: Any]) {
218 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
219 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
220 | 													   action: uuid,
    |                         `- note: closure captures non-Sendable 'self'
221 | 													   context: context,
222 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
223 | 		}
224 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:219:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
217 | 	func sendToPropertyInspector(payload: [String: Any]) {
218 | 		Task {
219 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
220 | 													   action: uuid,
221 | 													   context: context,
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:229:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
227 | 	/// The plugin can send a `setFeedback` event to the Stream Deck application to dynamically change properties of items on the Stream Deck + touch display layout.
228 | 	func setFeedback(_ payload: [String: Any]) {
229 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
230 | 			await PluginCommunication.shared.sendEvent(.setFeedback,
231 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
232 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
233 | 		}
234 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:230:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
228 | 	func setFeedback(_ payload: [String: Any]) {
229 | 		Task {
230 | 			await PluginCommunication.shared.sendEvent(.setFeedback,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
231 | 													   context: context,
232 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:243:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
241 | 		let payload: [String: Any] = ["layout": layout.id]
242 |
243 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
244 | 			await PluginCommunication.shared.sendEvent(.setFeedbackLayout,
245 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
246 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
247 | 		}
248 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:244:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
242 |
243 | 		Task {
244 | 			await PluginCommunication.shared.sendEvent(.setFeedbackLayout,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
245 | 													   context: context,
246 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:258:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
256 | 	/// - Parameter triggerDescription: The new `TriggerDescription` or `nil` to reset.
257 | 	func setTriggerDescription(_ triggerDescription: TriggerDescription?) {
258 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
259 | 			await PluginCommunication.shared.sendEvent(.setTriggerDescription,
260 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
261 | 													   payload: triggerDescription)
    |                          `- note: closure captures non-Sendable 'triggerDescription'
262 | 		}
263 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:259:37: warning: sending 'triggerDescription' risks causing data races; this is an error in the Swift 6 language mode
257 | 	func setTriggerDescription(_ triggerDescription: TriggerDescription?) {
258 | 		Task {
259 | 			await PluginCommunication.shared.sendEvent(.setTriggerDescription,
    |                                     |- warning: sending 'triggerDescription' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'triggerDescription' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
260 | 													   context: context,
261 | 													   payload: triggerDescription)
[309/314] Compiling StreamDeck Action+Support.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:17:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
17 | 	static let shared = TimerKeeper()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
18 |
19 | 	/// Times that have been set for a specific action instance.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:25:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 23 | 	@available(*, deprecated, message: "Use the Settings API.")
 24 | 	func setSettings(to settings: [String: Any]) {
 25 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 26 | 			await PluginCommunication.shared.sendEvent(.setSettings,
 27 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
 28 | 													   payload: settings)
    |                          `- note: closure captures non-Sendable 'settings'
 29 | 		}
 30 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:26:37: warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
 24 | 	func setSettings(to settings: [String: Any]) {
 25 | 		Task {
 26 | 			await PluginCommunication.shared.sendEvent(.setSettings,
    |                                     |- warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'settings.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 27 | 													   context: context,
 28 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:37:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 35 | 	///   - settings: A json object which is persistently saved for the action's instance.
 36 | 	func setSettings(to settings: Settings) {
 37 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 38 | 			await PluginCommunication.shared.sendEvent(.setSettings,
 39 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
 40 | 													   payload: settings)
    |                          `- note: closure captures non-Sendable 'settings'
 41 | 		}
 42 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:38:37: warning: sending task-isolated value of type 'Self.Settings' with later accesses to actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
 36 | 	func setSettings(to settings: Settings) {
 37 | 		Task {
 38 | 			await PluginCommunication.shared.sendEvent(.setSettings,
    |                                     `- warning: sending task-isolated value of type 'Self.Settings' with later accesses to actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
 39 | 													   context: context,
 40 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:47:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 45 | 	///   - context: An opaque value identifying the instance's action or Property Inspector.
 46 | 	func getSettings() {
 47 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 48 | 			await PluginCommunication.shared.sendEvent(.getSettings,
 49 | 													   context: context,
    |                          `- note: closure captures 'self' which is accessible to code in the current task
 50 | 													   payload: nil)
 51 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:92:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 90 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the title is set to all states.
 91 | 	func setTitle(to title: String?, target: Target? = nil, state: Int? = nil) {
 92 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 93 | 			var payload: [String: Any] = [:]
 94 |
 95 | 			payload["title"] = title
 96 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
 97 | 			payload["state"] = state
 98 |
 99 | 			await PluginCommunication.shared.sendEvent(.setTitle,
100 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
101 | 													   payload: payload)
102 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:115:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
113 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the image is set to all states.
114 | 	func setImage(to image: NSImage?, target: Target? = nil, state: Int? = nil) {
115 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
116 | 			var payload: [String: Any] = [:]
117 |
118 | 			payload["image"] = image?.base64String
    |                       `- note: closure captures non-Sendable 'image'
119 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
120 | 			payload["state"] = state
121 |
122 |
123 | 			await PluginCommunication.shared.sendEvent(.setImage,
124 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
125 | 													   payload: payload)
126 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:165:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
163 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the image is set to all states.
164 | 	func setImage(toSVG svg: String?, target: Target? = nil, state: Int? = nil) {
165 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
166 | 			var payload: [String: Any] = [:]
167 |
    :
170 | 			}
171 |
172 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
173 | 			payload["state"] = state
174 |
175 |
176 | 			await PluginCommunication.shared.sendEvent(.setImage,
177 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
178 | 													   payload: payload)
179 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:185:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
183 | 	/// - Parameter context: An opaque value identifying the instance's action or Property Inspector.
184 | 	func showAlert() {
185 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
186 | 			await PluginCommunication.shared.sendEvent(.showAlert, context: context, payload: nil)
    |                                                                    `- note: closure captures 'self' which is accessible to code in the current task
187 | 		}
188 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:193:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
191 | 	/// - Parameter context: An opaque value identifying the instance's action or Property Inspector.
192 | 	func showOk() {
193 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
194 | 			await PluginCommunication.shared.sendEvent(.showOK, context: context, payload: nil)
    |                                                                 `- note: closure captures 'self' which is accessible to code in the current task
195 | 		}
196 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:205:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
203 | 		let payload: [String: Any] = ["state": state]
204 |
205 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
206 | 			await PluginCommunication.shared.sendEvent(.setState,
207 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
208 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
209 | 		}
210 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:206:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
204 |
205 | 		Task {
206 | 			await PluginCommunication.shared.sendEvent(.setState,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
207 | 													   context: context,
208 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:218:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
216 | 	///   - payload: A json object that will be received by the Property Inspector.
217 | 	func sendToPropertyInspector(payload: [String: Any]) {
218 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
219 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
220 | 													   action: uuid,
    |                         `- note: closure captures non-Sendable 'self'
221 | 													   context: context,
222 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
223 | 		}
224 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:219:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
217 | 	func sendToPropertyInspector(payload: [String: Any]) {
218 | 		Task {
219 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
220 | 													   action: uuid,
221 | 													   context: context,
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:229:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
227 | 	/// The plugin can send a `setFeedback` event to the Stream Deck application to dynamically change properties of items on the Stream Deck + touch display layout.
228 | 	func setFeedback(_ payload: [String: Any]) {
229 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
230 | 			await PluginCommunication.shared.sendEvent(.setFeedback,
231 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
232 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
233 | 		}
234 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:230:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
228 | 	func setFeedback(_ payload: [String: Any]) {
229 | 		Task {
230 | 			await PluginCommunication.shared.sendEvent(.setFeedback,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
231 | 													   context: context,
232 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:243:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
241 | 		let payload: [String: Any] = ["layout": layout.id]
242 |
243 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
244 | 			await PluginCommunication.shared.sendEvent(.setFeedbackLayout,
245 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
246 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
247 | 		}
248 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:244:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
242 |
243 | 		Task {
244 | 			await PluginCommunication.shared.sendEvent(.setFeedbackLayout,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
245 | 													   context: context,
246 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:258:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
256 | 	/// - Parameter triggerDescription: The new `TriggerDescription` or `nil` to reset.
257 | 	func setTriggerDescription(_ triggerDescription: TriggerDescription?) {
258 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
259 | 			await PluginCommunication.shared.sendEvent(.setTriggerDescription,
260 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
261 | 													   payload: triggerDescription)
    |                          `- note: closure captures non-Sendable 'triggerDescription'
262 | 		}
263 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:259:37: warning: sending 'triggerDescription' risks causing data races; this is an error in the Swift 6 language mode
257 | 	func setTriggerDescription(_ triggerDescription: TriggerDescription?) {
258 | 		Task {
259 | 			await PluginCommunication.shared.sendEvent(.setTriggerDescription,
    |                                     |- warning: sending 'triggerDescription' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'triggerDescription' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
260 | 													   context: context,
261 | 													   payload: triggerDescription)
[310/314] Compiling StreamDeck Action.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:17:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
17 | 	static let shared = TimerKeeper()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
18 |
19 | 	/// Times that have been set for a specific action instance.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:25:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 23 | 	@available(*, deprecated, message: "Use the Settings API.")
 24 | 	func setSettings(to settings: [String: Any]) {
 25 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 26 | 			await PluginCommunication.shared.sendEvent(.setSettings,
 27 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
 28 | 													   payload: settings)
    |                          `- note: closure captures non-Sendable 'settings'
 29 | 		}
 30 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:26:37: warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
 24 | 	func setSettings(to settings: [String: Any]) {
 25 | 		Task {
 26 | 			await PluginCommunication.shared.sendEvent(.setSettings,
    |                                     |- warning: sending 'settings.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'settings.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 27 | 													   context: context,
 28 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:37:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 35 | 	///   - settings: A json object which is persistently saved for the action's instance.
 36 | 	func setSettings(to settings: Settings) {
 37 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 38 | 			await PluginCommunication.shared.sendEvent(.setSettings,
 39 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
 40 | 													   payload: settings)
    |                          `- note: closure captures non-Sendable 'settings'
 41 | 		}
 42 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:38:37: warning: sending task-isolated value of type 'Self.Settings' with later accesses to actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
 36 | 	func setSettings(to settings: Settings) {
 37 | 		Task {
 38 | 			await PluginCommunication.shared.sendEvent(.setSettings,
    |                                     `- warning: sending task-isolated value of type 'Self.Settings' with later accesses to actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
 39 | 													   context: context,
 40 | 													   payload: settings)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:47:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 45 | 	///   - context: An opaque value identifying the instance's action or Property Inspector.
 46 | 	func getSettings() {
 47 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 48 | 			await PluginCommunication.shared.sendEvent(.getSettings,
 49 | 													   context: context,
    |                          `- note: closure captures 'self' which is accessible to code in the current task
 50 | 													   payload: nil)
 51 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:92:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 90 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the title is set to all states.
 91 | 	func setTitle(to title: String?, target: Target? = nil, state: Int? = nil) {
 92 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 93 | 			var payload: [String: Any] = [:]
 94 |
 95 | 			payload["title"] = title
 96 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
 97 | 			payload["state"] = state
 98 |
 99 | 			await PluginCommunication.shared.sendEvent(.setTitle,
100 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
101 | 													   payload: payload)
102 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:115:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
113 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the image is set to all states.
114 | 	func setImage(to image: NSImage?, target: Target? = nil, state: Int? = nil) {
115 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
116 | 			var payload: [String: Any] = [:]
117 |
118 | 			payload["image"] = image?.base64String
    |                       `- note: closure captures non-Sendable 'image'
119 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
120 | 			payload["state"] = state
121 |
122 |
123 | 			await PluginCommunication.shared.sendEvent(.setImage,
124 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
125 | 													   payload: payload)
126 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:165:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
163 | 	///   - state: A 0-based integer value representing the state of an action with multiple states. This is an optional parameter. If not specified, the image is set to all states.
164 | 	func setImage(toSVG svg: String?, target: Target? = nil, state: Int? = nil) {
165 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
166 | 			var payload: [String: Any] = [:]
167 |
    :
170 | 			}
171 |
172 | 			payload["target"] = target?.rawValue
    |                        `- note: closure captures non-Sendable 'target'
173 | 			payload["state"] = state
174 |
175 |
176 | 			await PluginCommunication.shared.sendEvent(.setImage,
177 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
178 | 													   payload: payload)
179 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:185:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
183 | 	/// - Parameter context: An opaque value identifying the instance's action or Property Inspector.
184 | 	func showAlert() {
185 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
186 | 			await PluginCommunication.shared.sendEvent(.showAlert, context: context, payload: nil)
    |                                                                    `- note: closure captures 'self' which is accessible to code in the current task
187 | 		}
188 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:193:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
191 | 	/// - Parameter context: An opaque value identifying the instance's action or Property Inspector.
192 | 	func showOk() {
193 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
194 | 			await PluginCommunication.shared.sendEvent(.showOK, context: context, payload: nil)
    |                                                                 `- note: closure captures 'self' which is accessible to code in the current task
195 | 		}
196 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:205:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
203 | 		let payload: [String: Any] = ["state": state]
204 |
205 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
206 | 			await PluginCommunication.shared.sendEvent(.setState,
207 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
208 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
209 | 		}
210 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:206:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
204 |
205 | 		Task {
206 | 			await PluginCommunication.shared.sendEvent(.setState,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
207 | 													   context: context,
208 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:218:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
216 | 	///   - payload: A json object that will be received by the Property Inspector.
217 | 	func sendToPropertyInspector(payload: [String: Any]) {
218 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
219 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
220 | 													   action: uuid,
    |                         `- note: closure captures non-Sendable 'self'
221 | 													   context: context,
222 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
223 | 		}
224 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:219:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
217 | 	func sendToPropertyInspector(payload: [String: Any]) {
218 | 		Task {
219 | 			await PluginCommunication.shared.sendEvent(.sendToPropertyInspector,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
220 | 													   action: uuid,
221 | 													   context: context,
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:229:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
227 | 	/// The plugin can send a `setFeedback` event to the Stream Deck application to dynamically change properties of items on the Stream Deck + touch display layout.
228 | 	func setFeedback(_ payload: [String: Any]) {
229 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
230 | 			await PluginCommunication.shared.sendEvent(.setFeedback,
231 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
232 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
233 | 		}
234 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:230:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
228 | 	func setFeedback(_ payload: [String: Any]) {
229 | 		Task {
230 | 			await PluginCommunication.shared.sendEvent(.setFeedback,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
231 | 													   context: context,
232 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:243:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
241 | 		let payload: [String: Any] = ["layout": layout.id]
242 |
243 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
244 | 			await PluginCommunication.shared.sendEvent(.setFeedbackLayout,
245 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
246 | 													   payload: payload)
    |                          `- note: closure captures non-Sendable 'payload'
247 | 		}
248 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:244:37: warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
242 |
243 | 		Task {
244 | 			await PluginCommunication.shared.sendEvent(.setFeedbackLayout,
    |                                     |- warning: sending 'payload.some' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'payload.some' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
245 | 													   context: context,
246 | 													   payload: payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:258:8: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
256 | 	/// - Parameter triggerDescription: The new `TriggerDescription` or `nil` to reset.
257 | 	func setTriggerDescription(_ triggerDescription: TriggerDescription?) {
258 | 		Task {
    |        `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
259 | 			await PluginCommunication.shared.sendEvent(.setTriggerDescription,
260 | 													   context: context,
    |                          `- note: closure captures non-Sendable 'self'
261 | 													   payload: triggerDescription)
    |                          `- note: closure captures non-Sendable 'triggerDescription'
262 | 		}
263 | 	}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/Action+Sent.swift:259:37: warning: sending 'triggerDescription' risks causing data races; this is an error in the Swift 6 language mode
257 | 	func setTriggerDescription(_ triggerDescription: TriggerDescription?) {
258 | 		Task {
259 | 			await PluginCommunication.shared.sendEvent(.setTriggerDescription,
    |                                     |- warning: sending 'triggerDescription' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending task-isolated 'triggerDescription' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
260 | 													   context: context,
261 | 													   payload: triggerDescription)
[311/314] Compiling StreamDeck LongPress.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:17:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
17 | 	static let shared = TimerKeeper()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
18 |
19 | 	/// Times that have been set for a specific action instance.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:52:50: warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
44 | 	///   - action: The `Action`.
45 | 	///   - event: The `KeyEvent` which is passed to handler.
46 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<KeyEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
47 |
48 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
50 | 		// Begin the long-press timer
51 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
   |                                                  `- warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
53 | 			self.lastState[action.context] = true
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:53:4: warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
   :
51 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
53 | 			self.lastState[action.context] = true
   |    `- warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
55 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:54:32: warning: capture of 'event' with non-sendable type 'ActionEvent<KeyEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
53 | 			self.lastState[action.context] = true
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
   |                                `- warning: capture of 'event' with non-sendable type 'ActionEvent<KeyEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
55 | 		}
56 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Events/Events.swift:86:15: note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 84 |
 85 | /// Events sent by the server in response to actions.
 86 | public struct ActionEvent<Payload: Decodable>: Decodable {
    |               `- note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 87 |
 88 | 	/// The action's unique identifier. If your plugin supports multiple actions, you should use this value to see which action was triggered.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:52:50: warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
44 | 	///   - action: The `Action`.
45 | 	///   - event: The `KeyEvent` which is passed to handler.
46 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<KeyEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
47 |
48 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
50 | 		// Begin the long-press timer
51 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
   |                                                  `- warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
53 | 			self.lastState[action.context] = true
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:70:51: warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
62 | 	///   - action: The `Action`.
63 | 	///   - event: The `KeyEvent` which is passed to handler.
64 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<EncoderPressEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
65 |
66 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
68 | 		// Begin the long-press timer
69 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
   |                                                   `- warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
71 | 			self.lastState[action.context] = true
72 | 			action.longDialPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:71:4: warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
   :
69 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
71 | 			self.lastState[action.context] = true
   |    `- warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
72 | 			action.longDialPress(device: event.device, payload: event.payload)
73 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:72:33: warning: capture of 'event' with non-sendable type 'ActionEvent<EncoderPressEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
71 | 			self.lastState[action.context] = true
72 | 			action.longDialPress(device: event.device, payload: event.payload)
   |                                 `- warning: capture of 'event' with non-sendable type 'ActionEvent<EncoderPressEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
73 | 		}
74 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Events/Events.swift:86:15: note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 84 |
 85 | /// Events sent by the server in response to actions.
 86 | public struct ActionEvent<Payload: Decodable>: Decodable {
    |               `- note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 87 |
 88 | 	/// The action's unique identifier. If your plugin supports multiple actions, you should use this value to see which action was triggered.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:70:51: warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
62 | 	///   - action: The `Action`.
63 | 	///   - event: The `KeyEvent` which is passed to handler.
64 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<EncoderPressEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
65 |
66 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
68 | 		// Begin the long-press timer
69 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
   |                                                   `- warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
71 | 			self.lastState[action.context] = true
72 | 			action.longDialPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/ActionControllerRegistry.swift:12:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ActionControllerRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
 8 | import Foundation
 9 |
10 | class ActionControllerRegistry {
   |       `- note: class 'ActionControllerRegistry' does not conform to the 'Sendable' protocol
11 |
12 | 	static let shared = ActionControllerRegistry()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ActionControllerRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
13 |
14 | 	var actions: [String: ControllerType] = [:]
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/Settings/GlobalSettings.swift:21:13: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
19 |
20 | 	/// Shared global instance of global settings.
21 | 	static var shared = GlobalSettings()
   |             |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
   |             |- note: annotate 'shared' 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
22 |
23 | 	// Object to send to SD App
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckError.swift:14:7: warning: associated value 'invalidJSON' of 'Sendable'-conforming enum 'StreamDeckError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
12 |
13 | 	/// The JSON for an event is invalid.
14 | 	case invalidJSON(String, [String: Any])
   |       `- warning: associated value 'invalidJSON' of 'Sendable'-conforming enum 'StreamDeckError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
15 |
16 | 	/// The UUID has been used more than once.
[312/314] Compiling StreamDeck PluginCommunication.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:17:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
17 | 	static let shared = TimerKeeper()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
18 |
19 | 	/// Times that have been set for a specific action instance.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:52:50: warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
44 | 	///   - action: The `Action`.
45 | 	///   - event: The `KeyEvent` which is passed to handler.
46 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<KeyEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
47 |
48 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
50 | 		// Begin the long-press timer
51 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
   |                                                  `- warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
53 | 			self.lastState[action.context] = true
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:53:4: warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
   :
51 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
53 | 			self.lastState[action.context] = true
   |    `- warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
55 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:54:32: warning: capture of 'event' with non-sendable type 'ActionEvent<KeyEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
53 | 			self.lastState[action.context] = true
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
   |                                `- warning: capture of 'event' with non-sendable type 'ActionEvent<KeyEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
55 | 		}
56 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Events/Events.swift:86:15: note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 84 |
 85 | /// Events sent by the server in response to actions.
 86 | public struct ActionEvent<Payload: Decodable>: Decodable {
    |               `- note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 87 |
 88 | 	/// The action's unique identifier. If your plugin supports multiple actions, you should use this value to see which action was triggered.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:52:50: warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
44 | 	///   - action: The `Action`.
45 | 	///   - event: The `KeyEvent` which is passed to handler.
46 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<KeyEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
47 |
48 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
50 | 		// Begin the long-press timer
51 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
   |                                                  `- warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
53 | 			self.lastState[action.context] = true
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:70:51: warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
62 | 	///   - action: The `Action`.
63 | 	///   - event: The `KeyEvent` which is passed to handler.
64 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<EncoderPressEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
65 |
66 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
68 | 		// Begin the long-press timer
69 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
   |                                                   `- warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
71 | 			self.lastState[action.context] = true
72 | 			action.longDialPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:71:4: warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
   :
69 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
71 | 			self.lastState[action.context] = true
   |    `- warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
72 | 			action.longDialPress(device: event.device, payload: event.payload)
73 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:72:33: warning: capture of 'event' with non-sendable type 'ActionEvent<EncoderPressEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
71 | 			self.lastState[action.context] = true
72 | 			action.longDialPress(device: event.device, payload: event.payload)
   |                                 `- warning: capture of 'event' with non-sendable type 'ActionEvent<EncoderPressEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
73 | 		}
74 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Events/Events.swift:86:15: note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 84 |
 85 | /// Events sent by the server in response to actions.
 86 | public struct ActionEvent<Payload: Decodable>: Decodable {
    |               `- note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 87 |
 88 | 	/// The action's unique identifier. If your plugin supports multiple actions, you should use this value to see which action was triggered.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:70:51: warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
62 | 	///   - action: The `Action`.
63 | 	///   - event: The `KeyEvent` which is passed to handler.
64 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<EncoderPressEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
65 |
66 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
68 | 		// Begin the long-press timer
69 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
   |                                                   `- warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
71 | 			self.lastState[action.context] = true
72 | 			action.longDialPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/ActionControllerRegistry.swift:12:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ActionControllerRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
 8 | import Foundation
 9 |
10 | class ActionControllerRegistry {
   |       `- note: class 'ActionControllerRegistry' does not conform to the 'Sendable' protocol
11 |
12 | 	static let shared = ActionControllerRegistry()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ActionControllerRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
13 |
14 | 	var actions: [String: ControllerType] = [:]
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/Settings/GlobalSettings.swift:21:13: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
19 |
20 | 	/// Shared global instance of global settings.
21 | 	static var shared = GlobalSettings()
   |             |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
   |             |- note: annotate 'shared' 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
22 |
23 | 	// Object to send to SD App
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckError.swift:14:7: warning: associated value 'invalidJSON' of 'Sendable'-conforming enum 'StreamDeckError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
12 |
13 | 	/// The JSON for an event is invalid.
14 | 	case invalidJSON(String, [String: Any])
   |       `- warning: associated value 'invalidJSON' of 'Sendable'-conforming enum 'StreamDeckError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
15 |
16 | 	/// The UUID has been used more than once.
[313/314] Compiling StreamDeck StreamDeckError.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:17:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
17 | 	static let shared = TimerKeeper()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
18 |
19 | 	/// Times that have been set for a specific action instance.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:52:50: warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
44 | 	///   - action: The `Action`.
45 | 	///   - event: The `KeyEvent` which is passed to handler.
46 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<KeyEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
47 |
48 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
50 | 		// Begin the long-press timer
51 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
   |                                                  `- warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
53 | 			self.lastState[action.context] = true
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:53:4: warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
   :
51 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
53 | 			self.lastState[action.context] = true
   |    `- warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
55 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:54:32: warning: capture of 'event' with non-sendable type 'ActionEvent<KeyEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
53 | 			self.lastState[action.context] = true
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
   |                                `- warning: capture of 'event' with non-sendable type 'ActionEvent<KeyEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
55 | 		}
56 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Events/Events.swift:86:15: note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 84 |
 85 | /// Events sent by the server in response to actions.
 86 | public struct ActionEvent<Payload: Decodable>: Decodable {
    |               `- note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 87 |
 88 | 	/// The action's unique identifier. If your plugin supports multiple actions, you should use this value to see which action was triggered.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:52:50: warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
44 | 	///   - action: The `Action`.
45 | 	///   - event: The `KeyEvent` which is passed to handler.
46 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<KeyEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
47 |
48 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
50 | 		// Begin the long-press timer
51 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
   |                                                  `- warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
53 | 			self.lastState[action.context] = true
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:70:51: warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
62 | 	///   - action: The `Action`.
63 | 	///   - event: The `KeyEvent` which is passed to handler.
64 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<EncoderPressEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
65 |
66 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
68 | 		// Begin the long-press timer
69 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
   |                                                   `- warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
71 | 			self.lastState[action.context] = true
72 | 			action.longDialPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:71:4: warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
   :
69 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
71 | 			self.lastState[action.context] = true
   |    `- warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
72 | 			action.longDialPress(device: event.device, payload: event.payload)
73 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:72:33: warning: capture of 'event' with non-sendable type 'ActionEvent<EncoderPressEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
71 | 			self.lastState[action.context] = true
72 | 			action.longDialPress(device: event.device, payload: event.payload)
   |                                 `- warning: capture of 'event' with non-sendable type 'ActionEvent<EncoderPressEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
73 | 		}
74 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Events/Events.swift:86:15: note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 84 |
 85 | /// Events sent by the server in response to actions.
 86 | public struct ActionEvent<Payload: Decodable>: Decodable {
    |               `- note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 87 |
 88 | 	/// The action's unique identifier. If your plugin supports multiple actions, you should use this value to see which action was triggered.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:70:51: warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
62 | 	///   - action: The `Action`.
63 | 	///   - event: The `KeyEvent` which is passed to handler.
64 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<EncoderPressEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
65 |
66 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
68 | 		// Begin the long-press timer
69 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
   |                                                   `- warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
71 | 			self.lastState[action.context] = true
72 | 			action.longDialPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/ActionControllerRegistry.swift:12:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ActionControllerRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
 8 | import Foundation
 9 |
10 | class ActionControllerRegistry {
   |       `- note: class 'ActionControllerRegistry' does not conform to the 'Sendable' protocol
11 |
12 | 	static let shared = ActionControllerRegistry()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ActionControllerRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
13 |
14 | 	var actions: [String: ControllerType] = [:]
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/Settings/GlobalSettings.swift:21:13: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
19 |
20 | 	/// Shared global instance of global settings.
21 | 	static var shared = GlobalSettings()
   |             |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
   |             |- note: annotate 'shared' 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
22 |
23 | 	// Object to send to SD App
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckError.swift:14:7: warning: associated value 'invalidJSON' of 'Sendable'-conforming enum 'StreamDeckError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
12 |
13 | 	/// The JSON for an event is invalid.
14 | 	case invalidJSON(String, [String: Any])
   |       `- warning: associated value 'invalidJSON' of 'Sendable'-conforming enum 'StreamDeckError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
15 |
16 | 	/// The UUID has been used more than once.
[314/314] Compiling StreamDeck SDPlugin+Received.swift
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:17:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
17 | 	static let shared = TimerKeeper()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'TimerKeeper' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
18 |
19 | 	/// Times that have been set for a specific action instance.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:52:50: warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
44 | 	///   - action: The `Action`.
45 | 	///   - event: The `KeyEvent` which is passed to handler.
46 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<KeyEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
47 |
48 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
50 | 		// Begin the long-press timer
51 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
   |                                                  `- warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
53 | 			self.lastState[action.context] = true
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:53:4: warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
   :
51 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
53 | 			self.lastState[action.context] = true
   |    `- warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
55 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:54:32: warning: capture of 'event' with non-sendable type 'ActionEvent<KeyEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
53 | 			self.lastState[action.context] = true
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
   |                                `- warning: capture of 'event' with non-sendable type 'ActionEvent<KeyEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
55 | 		}
56 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Events/Events.swift:86:15: note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 84 |
 85 | /// Events sent by the server in response to actions.
 86 | public struct ActionEvent<Payload: Decodable>: Decodable {
    |               `- note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 87 |
 88 | 	/// The action's unique identifier. If your plugin supports multiple actions, you should use this value to see which action was triggered.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:52:50: warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
44 | 	///   - action: The `Action`.
45 | 	///   - event: The `KeyEvent` which is passed to handler.
46 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<KeyEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
47 |
48 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
50 | 		// Begin the long-press timer
51 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
52 | 			log.log("Long key press timer has fired for \(action.context, privacy: .public)")
   |                                                  `- warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
53 | 			self.lastState[action.context] = true
54 | 			action.longKeyPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:70:51: warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
62 | 	///   - action: The `Action`.
63 | 	///   - event: The `KeyEvent` which is passed to handler.
64 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<EncoderPressEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
65 |
66 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
68 | 		// Begin the long-press timer
69 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
   |                                                   `- warning: capture of 'action' with non-sendable type 'A' in a `@Sendable` closure; this is an error in the Swift 6 language mode
71 | 			self.lastState[action.context] = true
72 | 			action.longDialPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:71:4: warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
12 |
13 | /// A class that stores long press timers for actions.
14 | class TimerKeeper {
   |       `- note: class 'TimerKeeper' does not conform to the 'Sendable' protocol
15 |
16 | 	/// The shared `TimerKeeper` instance.
   :
69 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
71 | 			self.lastState[action.context] = true
   |    `- warning: capture of 'self' with non-sendable type 'TimerKeeper' in a `@Sendable` closure; this is an error in the Swift 6 language mode
72 | 			action.longDialPress(device: event.device, payload: event.payload)
73 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:72:33: warning: capture of 'event' with non-sendable type 'ActionEvent<EncoderPressEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
71 | 			self.lastState[action.context] = true
72 | 			action.longDialPress(device: event.device, payload: event.payload)
   |                                 `- warning: capture of 'event' with non-sendable type 'ActionEvent<EncoderPressEvent<A.Settings>>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
73 | 		}
74 |
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Events/Events.swift:86:15: note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 84 |
 85 | /// Events sent by the server in response to actions.
 86 | public struct ActionEvent<Payload: Decodable>: Decodable {
    |               `- note: consider making generic struct 'ActionEvent' conform to the 'Sendable' protocol
 87 |
 88 | 	/// The action's unique identifier. If your plugin supports multiple actions, you should use this value to see which action was triggered.
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/Action/LongPress.swift:70:51: warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
62 | 	///   - action: The `Action`.
63 | 	///   - event: The `KeyEvent` which is passed to handler.
64 | 	func beginTimer<A: Action>(for action: A, event: ActionEvent<EncoderPressEvent<A.Settings>>) {
   |                  `- note: consider making generic parameter 'A' conform to the 'Sendable' protocol
65 |
66 | 		log.log("Beginning long press timer for \(action.context, privacy: .public)")
   :
68 | 		// Begin the long-press timer
69 | 		let timer = Timer(timeInterval: action.longPressDuration, repeats: false) { _ in
70 | 			log.log("Long dial press timer has fired for \(action.context, privacy: .public)")
   |                                                   `- warning: implicit capture of 'action' requires that 'A' conforms to `Sendable`; this is an error in the Swift 6 language mode
71 | 			self.lastState[action.context] = true
72 | 			action.longDialPress(device: event.device, payload: event.payload)
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/ActionControllerRegistry.swift:12:13: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ActionControllerRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
 8 | import Foundation
 9 |
10 | class ActionControllerRegistry {
   |       `- note: class 'ActionControllerRegistry' does not conform to the 'Sendable' protocol
11 |
12 | 	static let shared = ActionControllerRegistry()
   |             |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ActionControllerRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: annotate 'shared' 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
13 |
14 | 	var actions: [String: ControllerType] = [:]
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/Support Models/Settings/GlobalSettings.swift:21:13: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
19 |
20 | 	/// Shared global instance of global settings.
21 | 	static var shared = GlobalSettings()
   |             |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
   |             |- note: annotate 'shared' 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
22 |
23 | 	// Object to send to SD App
/Users/admin/builder/spi-builder-workspace/Sources/StreamDeck/StreamDeck Plugin/StreamDeckError.swift:14:7: warning: associated value 'invalidJSON' of 'Sendable'-conforming enum 'StreamDeckError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
12 |
13 | 	/// The JSON for an event is invalid.
14 | 	case invalidJSON(String, [String: Any])
   |       `- warning: associated value 'invalidJSON' of 'Sendable'-conforming enum 'StreamDeckError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
15 |
16 | 	/// The UUID has been used more than once.
Build complete! (68.37s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-argument-parser",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.5.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-argument-parser.git"
    },
    {
      "identity" : "swift-syntax",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "509.0.0",
            "upper_bound" : "510.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-syntax.git"
    },
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-docc-plugin"
    }
  ],
  "manifest_display_name" : "StreamDeck",
  "name" : "StreamDeck",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "12.0"
    }
  ],
  "products" : [
    {
      "name" : "StreamDeck",
      "targets" : [
        "StreamDeck"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "StreamDeckMacros",
      "targets" : [
        "StreamDeckMacros"
      ],
      "type" : {
        "macro" : null
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "StreamDeckPluginTests",
      "module_type" : "SwiftTarget",
      "name" : "StreamDeckPluginTests",
      "path" : "Tests/StreamDeckPluginTests",
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Tests/StreamDeckPluginTests/Support/Test Events",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "PluginEventTests.swift",
        "PluginManifestTests.swift",
        "PluginRegistrationTests.swift",
        "StreamDeckPluginTests.swift",
        "Support/TestEvents.swift",
        "Support/TestPlugin.swift"
      ],
      "target_dependencies" : [
        "StreamDeck"
      ],
      "type" : "test"
    },
    {
      "c99name" : "StreamDeckMacrosTests",
      "module_type" : "SwiftTarget",
      "name" : "StreamDeckMacrosTests",
      "path" : "Tests/StreamDeckMacrosTests",
      "product_dependencies" : [
        "SwiftSyntaxMacrosTestSupport"
      ],
      "sources" : [
        "SettingsMacroTests.swift"
      ],
      "target_dependencies" : [
        "StreamDeckMacros"
      ],
      "type" : "test"
    },
    {
      "c99name" : "StreamDeckMacros",
      "module_type" : "SwiftTarget",
      "name" : "StreamDeckMacros",
      "path" : "Sources/StreamDeckMacros",
      "product_dependencies" : [
        "SwiftSyntaxMacros",
        "SwiftCompilerPlugin"
      ],
      "product_memberships" : [
        "StreamDeck",
        "StreamDeckMacros"
      ],
      "sources" : [
        "KeyMacros.swift",
        "Plugin.swift",
        "SharedKeyMacro.swift"
      ],
      "type" : "macro"
    },
    {
      "c99name" : "StreamDeck",
      "module_type" : "SwiftTarget",
      "name" : "StreamDeck",
      "path" : "Sources/StreamDeck",
      "product_dependencies" : [
        "ArgumentParser"
      ],
      "product_memberships" : [
        "StreamDeck"
      ],
      "sources" : [
        "Builders/ActionBuilder.swift",
        "Command Line/ExportCommand.swift",
        "Command Line/PluginCommand.swift",
        "Command Line/StreamDeckCommand.swift",
        "Command Line/StreamDeckKey.swift",
        "Events/EventProtocols.swift",
        "Events/Events.swift",
        "Extensions/CharSet+DNS.swift",
        "Extensions/NSImage+Base64.swift",
        "Extensions/URL+Argument.swift",
        "Macros/SettingsMacros.swift",
        "StreamDeck Plugin/Action/Action+Received.swift",
        "StreamDeck Plugin/Action/Action+Sent.swift",
        "StreamDeck Plugin/Action/Action+Support.swift",
        "StreamDeck Plugin/Action/Action.swift",
        "StreamDeck Plugin/Action/LongPress.swift",
        "StreamDeck Plugin/PluginCommunication.swift",
        "StreamDeck Plugin/StreamDeckError.swift",
        "StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Received.swift",
        "StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Sent.swift",
        "StreamDeck Plugin/StreamDeckPlugin/SDPlugin+Support.swift",
        "StreamDeck Plugin/StreamDeckPlugin/StreamDeckPlugin.swift",
        "Support Models/ActionControllerRegistry.swift",
        "Support Models/Environment/EnvironmentKey.swift",
        "Support Models/Environment/EnvironmentValues.swift",
        "Support Models/Environment/EnvironmentWrapper.swift",
        "Support Models/PluginManifest/ApplicationsToMonitor.swift",
        "Support Models/PluginManifest/Coordinates.swift",
        "Support Models/PluginManifest/Fonts.swift",
        "Support Models/PluginManifest/Hardware.swift",
        "Support Models/PluginManifest/PluginAction.swift",
        "Support Models/PluginManifest/PluginActionState.swift",
        "Support Models/PluginManifest/PluginInfo.swift",
        "Support Models/PluginManifest/PluginManifest.swift",
        "Support Models/PluginManifest/PluginOS.swift",
        "Support Models/PluginManifest/PluginProfile.swift",
        "Support Models/PluginManifest/PluginSoftware.swift",
        "Support Models/RotaryEncoder/RotaryEncoder.swift",
        "Support Models/RotaryEncoder/TriggerDescription.swift",
        "Support Models/Settings/GlobalSettings.swift",
        "Support Models/Settings/GlobalSettingsKey.swift",
        "Support Models/Settings/SettingsWrapper.swift",
        "Support Models/State.swift"
      ],
      "target_dependencies" : [
        "StreamDeckMacros",
        "SDPlusLayout"
      ],
      "type" : "library"
    },
    {
      "c99name" : "SDPlusLayoutTests",
      "module_type" : "SwiftTarget",
      "name" : "SDPlusLayoutTests",
      "path" : "Tests/SDPlusLayoutTests",
      "sources" : [
        "LayoutTests.swift"
      ],
      "target_dependencies" : [
        "SDPlusLayout"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SDPlusLayout",
      "module_type" : "SwiftTarget",
      "name" : "SDPlusLayout",
      "path" : "Sources/SDPlusLayout",
      "product_memberships" : [
        "StreamDeck"
      ],
      "sources" : [
        "BarLayoutItem.swift",
        "Color/Color+ExpressibleByStringLiteral.swift",
        "Color/Color+FormatStyle.swift",
        "Color/Color.swift",
        "Color/ColorStyle.swift",
        "Color/Gradient.swift",
        "Elements/Bar.swift",
        "Elements/Image.swift",
        "Elements/Slider.swift",
        "Elements/Text.swift",
        "Extensions/Clamped.swift",
        "Layout.swift",
        "LayoutItem.swift",
        "LayoutName.swift",
        "ModifiedItem.swift",
        "Properties.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Done.