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 SwiftKeys, reference main (577088), with Swift 6.1 for macOS (SPM) on 27 Apr 2025 17:52:33 UTC.

Swift 6 data race errors: 10

Build Command

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

Build Log

========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/jordanbaird/SwiftKeys.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/jordanbaird/SwiftKeys
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 577088c Update README.md
Cloned https://github.com/jordanbaird/SwiftKeys.git
Revision (git rev-parse @):
577088c3c4a20f2b11cff3a61b2454044feea2cc
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/jordanbaird/SwiftKeys.git at main
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "dependencies": [
    {
      "identity": "swiftkeys",
      "name": "SwiftKeys",
      "url": "https://github.com/jordanbaird/SwiftKeys.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/SwiftKeys",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/jordanbaird/SwiftKeys.git
[1/4522] Fetching swiftkeys
Fetched https://github.com/jordanbaird/SwiftKeys.git from cache (1.03s)
Creating working copy for https://github.com/jordanbaird/SwiftKeys.git
Working copy of https://github.com/jordanbaird/SwiftKeys.git resolved at main (577088c)
warning: '.resolve-product-dependencies': dependency 'swiftkeys' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/jordanbaird/SwiftKeys.git
https://github.com/jordanbaird/SwiftKeys.git
{
  "dependencies" : [
  ],
  "manifest_display_name" : "SwiftKeys",
  "name" : "SwiftKeys",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.13"
    }
  ],
  "products" : [
    {
      "name" : "SwiftKeys",
      "targets" : [
        "SwiftKeys"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SwiftKeysTests",
      "module_type" : "SwiftTarget",
      "name" : "SwiftKeysTests",
      "path" : "Tests/SwiftKeysTests",
      "sources" : [
        "EventTypeTests.swift",
        "KeyCommandProxyTests.swift",
        "KeyCommandTests.swift",
        "KeyRecorderTests.swift",
        "Utilities.swift"
      ],
      "target_dependencies" : [
        "SwiftKeys"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SwiftKeys",
      "module_type" : "SwiftTarget",
      "name" : "SwiftKeys",
      "path" : "Sources/SwiftKeys",
      "product_memberships" : [
        "SwiftKeys"
      ],
      "sources" : [
        "KeyCommand/Key.swift",
        "KeyCommand/KeyCommand.swift",
        "KeyCommand/KeyCommandProxy.swift",
        "KeyCommand/Modifier.swift",
        "KeyCommand/Name.swift",
        "KeyCommand/Observation.swift",
        "KeyRecorder/BezelStyle.swift",
        "KeyRecorder/KeyRecorder.swift",
        "KeyRecorder/KeyRecorderView.swift",
        "Utilities/NSMenuItem+extensions.swift",
        "Utilities/Utilities.swift",
        "Utilities/ViewModifiers.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-2F0A5646E1D333AE.txt
[3/14] Compiling SwiftKeys Key.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/Key.swift:251:24: warning: static property 'customStringMapping' is not concurrency-safe because non-'Sendable' type '[KeyCommand.Key : String]' may have shared mutable state; this is an error in the Swift 6 language mode
  8 | extension KeyCommand {
  9 |     /// Constants that represent the various keys available on a keyboard.
 10 |     public enum Key {
    |                 `- note: consider making enum 'Key' conform to the 'Sendable' protocol
 11 |
 12 |         // MARK: ANSI
    :
249 |     /// Maps custom string representations to keys that can't be
250 |     /// represented by a key equivalent.
251 |     private static let customStringMapping: [KeyCommand.Key: String] = [
    |                        |- warning: static property 'customStringMapping' is not concurrency-safe because non-'Sendable' type '[KeyCommand.Key : String]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'customStringMapping' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
252 |         .space: "Space", // matches macOS representation
253 |         .tab: "⇥",
[4/14] Compiling SwiftKeys KeyCommand.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/Key.swift:251:24: warning: static property 'customStringMapping' is not concurrency-safe because non-'Sendable' type '[KeyCommand.Key : String]' may have shared mutable state; this is an error in the Swift 6 language mode
  8 | extension KeyCommand {
  9 |     /// Constants that represent the various keys available on a keyboard.
 10 |     public enum Key {
    |                 `- note: consider making enum 'Key' conform to the 'Sendable' protocol
 11 |
 12 |         // MARK: ANSI
    :
249 |     /// Maps custom string representations to keys that can't be
250 |     /// represented by a key equivalent.
251 |     private static let customStringMapping: [KeyCommand.Key: String] = [
    |                        |- warning: static property 'customStringMapping' is not concurrency-safe because non-'Sendable' type '[KeyCommand.Key : String]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'customStringMapping' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
252 |         .space: "Space", // matches macOS representation
253 |         .tab: "⇥",
[5/14] Compiling SwiftKeys KeyCommandProxy.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:12:24: warning: static property 'eventHandlerRef' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 10 |     // MARK: Static Properties
 11 |
 12 |     private static var eventHandlerRef: EventHandlerRef?
    |                        |- warning: static property 'eventHandlerRef' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'eventHandlerRef' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'eventHandlerRef' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 13 |
 14 |     private static let eventTypes = [
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:25:24: warning: static property 'proxyCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 23 |     ]
 24 |
 25 |     private static var proxyCount: UInt32 = 0
    |                        |- warning: static property 'proxyCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'proxyCount' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'proxyCount' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 26 |
 27 |     private static let signature: OSType = NSHFSTypeCodeFromFileType("'SWKE'")
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:346:24: warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
344 |
345 | extension ProxyStorage {
346 |     private static var all = Self()
    |                        |- warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'all' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'all' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
347 |
348 |     static func proxy(with identifier: EventHotKeyID) -> KeyCommandProxy? {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/Modifier.swift:99:16: warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
  9 | extension KeyCommand {
 10 |     /// Constants that represent the modifier keys of a key command.
 11 |     public enum Modifier {
    |                 `- note: consider making enum 'Modifier' conform to the 'Sendable' protocol
 12 |         /// The Control key.
 13 |         case control
    :
 97 |     /// The order that macOS represents its modifier keys, according
 98 |     /// to the Apple Style Guide.
 99 |     static let canonicalOrder: Self = {
    |                |- warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'canonicalOrder' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 |         let canonicalOrder: Self = [
101 |             .control,
[6/14] Compiling SwiftKeys Modifier.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:12:24: warning: static property 'eventHandlerRef' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 10 |     // MARK: Static Properties
 11 |
 12 |     private static var eventHandlerRef: EventHandlerRef?
    |                        |- warning: static property 'eventHandlerRef' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'eventHandlerRef' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'eventHandlerRef' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 13 |
 14 |     private static let eventTypes = [
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:25:24: warning: static property 'proxyCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 23 |     ]
 24 |
 25 |     private static var proxyCount: UInt32 = 0
    |                        |- warning: static property 'proxyCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'proxyCount' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'proxyCount' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 26 |
 27 |     private static let signature: OSType = NSHFSTypeCodeFromFileType("'SWKE'")
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:346:24: warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
344 |
345 | extension ProxyStorage {
346 |     private static var all = Self()
    |                        |- warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'all' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'all' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
347 |
348 |     static func proxy(with identifier: EventHotKeyID) -> KeyCommandProxy? {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/Modifier.swift:99:16: warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
  9 | extension KeyCommand {
 10 |     /// Constants that represent the modifier keys of a key command.
 11 |     public enum Modifier {
    |                 `- note: consider making enum 'Modifier' conform to the 'Sendable' protocol
 12 |         /// The Control key.
 13 |         case control
    :
 97 |     /// The order that macOS represents its modifier keys, according
 98 |     /// to the Apple Style Guide.
 99 |     static let canonicalOrder: Self = {
    |                |- warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'canonicalOrder' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 |         let canonicalOrder: Self = [
101 |             .control,
[7/14] Compiling SwiftKeys Name.swift
[8/14] Emitting module SwiftKeys
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/Key.swift:251:24: warning: static property 'customStringMapping' is not concurrency-safe because non-'Sendable' type '[KeyCommand.Key : String]' may have shared mutable state; this is an error in the Swift 6 language mode
  8 | extension KeyCommand {
  9 |     /// Constants that represent the various keys available on a keyboard.
 10 |     public enum Key {
    |                 `- note: consider making enum 'Key' conform to the 'Sendable' protocol
 11 |
 12 |         // MARK: ANSI
    :
249 |     /// Maps custom string representations to keys that can't be
250 |     /// represented by a key equivalent.
251 |     private static let customStringMapping: [KeyCommand.Key: String] = [
    |                        |- warning: static property 'customStringMapping' is not concurrency-safe because non-'Sendable' type '[KeyCommand.Key : String]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'customStringMapping' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
252 |         .space: "Space", // matches macOS representation
253 |         .tab: "⇥",
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:12:24: warning: static property 'eventHandlerRef' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 10 |     // MARK: Static Properties
 11 |
 12 |     private static var eventHandlerRef: EventHandlerRef?
    |                        |- warning: static property 'eventHandlerRef' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'eventHandlerRef' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'eventHandlerRef' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 13 |
 14 |     private static let eventTypes = [
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:25:24: warning: static property 'proxyCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 23 |     ]
 24 |
 25 |     private static var proxyCount: UInt32 = 0
    |                        |- warning: static property 'proxyCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'proxyCount' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'proxyCount' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 26 |
 27 |     private static let signature: OSType = NSHFSTypeCodeFromFileType("'SWKE'")
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:346:24: warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
344 |
345 | extension ProxyStorage {
346 |     private static var all = Self()
    |                        |- warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'all' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'all' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
347 |
348 |     static func proxy(with identifier: EventHotKeyID) -> KeyCommandProxy? {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/Modifier.swift:99:16: warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
  9 | extension KeyCommand {
 10 |     /// Constants that represent the modifier keys of a key command.
 11 |     public enum Modifier {
    |                 `- note: consider making enum 'Modifier' conform to the 'Sendable' protocol
 12 |         /// The Control key.
 13 |         case control
    :
 97 |     /// The order that macOS represents its modifier keys, according
 98 |     /// to the Apple Style Guide.
 99 |     static let canonicalOrder: Self = {
    |                |- warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'canonicalOrder' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 |         let canonicalOrder: Self = [
101 |             .control,
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:35:27: warning: static property 'flatBordered' is not concurrency-safe because non-'Sendable' type 'KeyRecorder.BezelStyle' may have shared mutable state; this is an error in the Swift 6 language mode
11 |     /// A type that represents the visual style used to display a ``KeyRecorder``'s
12 |     /// bezel.
13 |     public enum BezelStyle: CaseIterable, Hashable {
   |                 `- note: consider making enum 'BezelStyle' conform to the 'Sendable' protocol
14 |         /// The key recorder is displayed with a rounded rectangular bezel.
15 |         case rounded
   :
33 |         /// border.
34 |         @available(*, deprecated, renamed: "capsule")
35 |         public static let flatBordered: Self = .capsule
   |                           |- warning: static property 'flatBordered' is not concurrency-safe because non-'Sendable' type 'KeyRecorder.BezelStyle' may have shared mutable state; this is an error in the Swift 6 language mode
   |                           |- note: add '@MainActor' to make static property 'flatBordered' part of global actor 'MainActor'
   |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |     }
37 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:11:24: warning: static property 'keyCommandNameStorage' is not concurrency-safe because non-'Sendable' type 'Storage<KeyCommand.Name>' may have shared mutable state; this is an error in the Swift 6 language mode
  9 |
 10 | extension NSMenuItem {
 11 |     private static let keyCommandNameStorage = Storage<KeyCommand.Name>()
    |                        |- warning: static property 'keyCommandNameStorage' is not concurrency-safe because non-'Sendable' type 'Storage<KeyCommand.Name>' may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'keyCommandNameStorage' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 12 |     private static let keyAndModifierChangeHandlerStorage = Storage<VoidHandler>()
 13 |     private static let observationStorage = Storage<Set<NSKeyValueObservation>>()
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:349:7: note: generic class 'Storage' does not conform to the 'Sendable' protocol
347 |
348 | /// A type that uses object association to store external values.
349 | class Storage<Value> {
    |       `- note: generic class 'Storage' does not conform to the 'Sendable' protocol
350 |     private let policy: AssociationPolicy
351 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:12:24: warning: static property 'keyAndModifierChangeHandlerStorage' is not concurrency-safe because non-'Sendable' type 'Storage<VoidHandler>' (aka 'Storage<Handler<()>>') may have shared mutable state; this is an error in the Swift 6 language mode
 10 | extension NSMenuItem {
 11 |     private static let keyCommandNameStorage = Storage<KeyCommand.Name>()
 12 |     private static let keyAndModifierChangeHandlerStorage = Storage<VoidHandler>()
    |                        |- warning: static property 'keyAndModifierChangeHandlerStorage' is not concurrency-safe because non-'Sendable' type 'Storage<VoidHandler>' (aka 'Storage<Handler<()>>') may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'keyAndModifierChangeHandlerStorage' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 13 |     private static let observationStorage = Storage<Set<NSKeyValueObservation>>()
 14 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:349:7: note: generic class 'Storage' does not conform to the 'Sendable' protocol
347 |
348 | /// A type that uses object association to store external values.
349 | class Storage<Value> {
    |       `- note: generic class 'Storage' does not conform to the 'Sendable' protocol
350 |     private let policy: AssociationPolicy
351 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:13:24: warning: static property 'observationStorage' is not concurrency-safe because non-'Sendable' type 'Storage<Set<NSKeyValueObservation>>' may have shared mutable state; this is an error in the Swift 6 language mode
 11 |     private static let keyCommandNameStorage = Storage<KeyCommand.Name>()
 12 |     private static let keyAndModifierChangeHandlerStorage = Storage<VoidHandler>()
 13 |     private static let observationStorage = Storage<Set<NSKeyValueObservation>>()
    |                        |- warning: static property 'observationStorage' is not concurrency-safe because non-'Sendable' type 'Storage<Set<NSKeyValueObservation>>' may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'observationStorage' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 14 |
 15 |     private var keyAndModifierChangeHandler: VoidHandler? {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:349:7: note: generic class 'Storage' does not conform to the 'Sendable' protocol
347 |
348 | /// A type that uses object association to store external values.
349 | class Storage<Value> {
    |       `- note: generic class 'Storage' does not conform to the 'Sendable' protocol
350 |     private let policy: AssociationPolicy
351 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/ViewModifiers.swift:13:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 11 | @available(macOS 10.15, *)
 12 | struct KeyRecorderBezelStyleKey: EnvironmentKey {
 13 |     static var defaultValue = KeyRecorderView.BezelStyle.rounded
    |                |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
    |                |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 14 | }
 15 |
[9/14] Compiling SwiftKeys BezelStyle.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:35:27: warning: static property 'flatBordered' is not concurrency-safe because non-'Sendable' type 'KeyRecorder.BezelStyle' may have shared mutable state; this is an error in the Swift 6 language mode
11 |     /// A type that represents the visual style used to display a ``KeyRecorder``'s
12 |     /// bezel.
13 |     public enum BezelStyle: CaseIterable, Hashable {
   |                 `- note: consider making enum 'BezelStyle' conform to the 'Sendable' protocol
14 |         /// The key recorder is displayed with a rounded rectangular bezel.
15 |         case rounded
   :
33 |         /// border.
34 |         @available(*, deprecated, renamed: "capsule")
35 |         public static let flatBordered: Self = .capsule
   |                           |- warning: static property 'flatBordered' is not concurrency-safe because non-'Sendable' type 'KeyRecorder.BezelStyle' may have shared mutable state; this is an error in the Swift 6 language mode
   |                           |- note: add '@MainActor' to make static property 'flatBordered' part of global actor 'MainActor'
   |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |     }
37 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:68:17: warning: main actor-isolated property 'segmentStyle' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 |     func apply(to control: KeyRecorderSegmentedControl) {
   |          `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 |         control.segmentStyle = cocoaValue
   |                 `- warning: main actor-isolated property 'segmentStyle' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
69 |         switch self {
70 |         case .flat:
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSegmentedControl.h:91:26: note: mutation of this property is only permitted within the actor
 89 | - (BOOL)showsMenuIndicatorForSegment:(NSInteger)segment API_AVAILABLE(macos(10.13));
 90 |
 91 | @property NSSegmentStyle segmentStyle API_AVAILABLE(macos(10.5));
    |                          `- note: mutation of this property is only permitted within the actor
 92 |
 93 | @property (getter=isSpringLoaded) BOOL springLoaded API_AVAILABLE(macos(10.10.3)); // sends action on deep-press or extended hover while dragging. Defaults to NO.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:71:27: warning: main actor-isolated property 'isBezeled' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 |     func apply(to control: KeyRecorderSegmentedControl) {
   |          `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 |         control.segmentStyle = cocoaValue
69 |         switch self {
70 |         case .flat:
71 |             control.cell?.isBezeled = false
   |                           `- warning: main actor-isolated property 'isBezeled' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
72 |             control.borderLayer = .roundedRectBorder(for: control)
73 |             control.splitterLayer = .segmentSplitter(for: control, afterSegment: 0)
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSCell.h:124:35: note: mutation of this property is only permitted within the actor
122 | @property (getter=isSelectable) BOOL selectable;
123 | @property (getter=isBordered) BOOL bordered;
124 | @property (getter=isBezeled) BOOL bezeled;
    |                                   `- note: mutation of this property is only permitted within the actor
125 | @property (getter=isScrollable) BOOL scrollable; /* If YES, sets wraps to NO */
126 | @property (getter=isHighlighted) BOOL highlighted;
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:71:21: warning: main actor-isolated property 'cell' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 |     func apply(to control: KeyRecorderSegmentedControl) {
   |          `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 |         control.segmentStyle = cocoaValue
69 |         switch self {
70 |         case .flat:
71 |             control.cell?.isBezeled = false
   |                     `- warning: main actor-isolated property 'cell' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
72 |             control.borderLayer = .roundedRectBorder(for: control)
73 |             control.splitterLayer = .segmentSplitter(for: control, afterSegment: 0)
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSControl.h:129:47: note: property declared here
127 | @property (class, nullable) Class cellClass;
128 |
129 | @property (nullable, strong) __kindof NSCell *cell;
    |                                               `- note: property declared here
130 |
131 | - (nullable __kindof NSCell *)selectedCell;
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:72:21: warning: main actor-isolated property 'borderLayer' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 |     func apply(to control: KeyRecorderSegmentedControl) {
   |          `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 |         control.segmentStyle = cocoaValue
69 |         switch self {
70 |         case .flat:
71 |             control.cell?.isBezeled = false
72 |             control.borderLayer = .roundedRectBorder(for: control)
   |                     `- warning: main actor-isolated property 'borderLayer' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
73 |             control.splitterLayer = .segmentSplitter(for: control, afterSegment: 0)
74 |         default:
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:226:9: note: mutation of this property is only permitted within the actor
224 |     }
225 |
226 |     var borderLayer: CALayer? {
    |         `- note: mutation of this property is only permitted within the actor
227 |         didSet {
228 |             if let borderLayer {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:73:21: warning: main actor-isolated property 'splitterLayer' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 |     func apply(to control: KeyRecorderSegmentedControl) {
   |          `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 |         control.segmentStyle = cocoaValue
69 |         switch self {
   :
71 |             control.cell?.isBezeled = false
72 |             control.borderLayer = .roundedRectBorder(for: control)
73 |             control.splitterLayer = .segmentSplitter(for: control, afterSegment: 0)
   |                     `- warning: main actor-isolated property 'splitterLayer' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
74 |         default:
75 |             control.cell?.isBezeled = true
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:237:9: note: mutation of this property is only permitted within the actor
235 |     }
236 |
237 |     var splitterLayer: CALayer? {
    |         `- note: mutation of this property is only permitted within the actor
238 |         didSet {
239 |             if let splitterLayer {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:75:27: warning: main actor-isolated property 'isBezeled' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 |     func apply(to control: KeyRecorderSegmentedControl) {
   |          `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 |         control.segmentStyle = cocoaValue
69 |         switch self {
   :
73 |             control.splitterLayer = .segmentSplitter(for: control, afterSegment: 0)
74 |         default:
75 |             control.cell?.isBezeled = true
   |                           `- warning: main actor-isolated property 'isBezeled' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
76 |             control.borderLayer = nil
77 |             control.splitterLayer = nil
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSCell.h:124:35: note: mutation of this property is only permitted within the actor
122 | @property (getter=isSelectable) BOOL selectable;
123 | @property (getter=isBordered) BOOL bordered;
124 | @property (getter=isBezeled) BOOL bezeled;
    |                                   `- note: mutation of this property is only permitted within the actor
125 | @property (getter=isScrollable) BOOL scrollable; /* If YES, sets wraps to NO */
126 | @property (getter=isHighlighted) BOOL highlighted;
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:75:21: warning: main actor-isolated property 'cell' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 |     func apply(to control: KeyRecorderSegmentedControl) {
   |          `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 |         control.segmentStyle = cocoaValue
69 |         switch self {
   :
73 |             control.splitterLayer = .segmentSplitter(for: control, afterSegment: 0)
74 |         default:
75 |             control.cell?.isBezeled = true
   |                     `- warning: main actor-isolated property 'cell' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
76 |             control.borderLayer = nil
77 |             control.splitterLayer = nil
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSControl.h:129:47: note: property declared here
127 | @property (class, nullable) Class cellClass;
128 |
129 | @property (nullable, strong) __kindof NSCell *cell;
    |                                               `- note: property declared here
130 |
131 | - (nullable __kindof NSCell *)selectedCell;
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:76:21: warning: main actor-isolated property 'borderLayer' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 |     func apply(to control: KeyRecorderSegmentedControl) {
   |          `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 |         control.segmentStyle = cocoaValue
69 |         switch self {
   :
74 |         default:
75 |             control.cell?.isBezeled = true
76 |             control.borderLayer = nil
   |                     `- warning: main actor-isolated property 'borderLayer' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
77 |             control.splitterLayer = nil
78 |         }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:226:9: note: mutation of this property is only permitted within the actor
224 |     }
225 |
226 |     var borderLayer: CALayer? {
    |         `- note: mutation of this property is only permitted within the actor
227 |         didSet {
228 |             if let borderLayer {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:77:21: warning: main actor-isolated property 'splitterLayer' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 |     func apply(to control: KeyRecorderSegmentedControl) {
   |          `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 |         control.segmentStyle = cocoaValue
69 |         switch self {
   :
75 |             control.cell?.isBezeled = true
76 |             control.borderLayer = nil
77 |             control.splitterLayer = nil
   |                     `- warning: main actor-isolated property 'splitterLayer' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
78 |         }
79 |     }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:237:9: note: mutation of this property is only permitted within the actor
235 |     }
236 |
237 |     var splitterLayer: CALayer? {
    |         `- note: mutation of this property is only permitted within the actor
238 |         didSet {
239 |             if let splitterLayer {
[10/15] Compiling SwiftKeys Observation.swift
[11/15] Compiling SwiftKeys Utilities.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:33:42: warning: main actor-isolated property 'bounds' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
 30 |     }
 31 |
 32 |     static func roundedRectBorder(for control: NSSegmentedControl) -> CALayer {
    |                 `- note: add '@MainActor' to make static method 'roundedRectBorder(for:)' part of global actor 'MainActor'
 33 |         roundedRectBorder(frame: control.bounds, color: .controlColor, lineWidth: 1, cornerRadius: 6)
    |                                          `- warning: main actor-isolated property 'bounds' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
 34 |     }
 35 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSView.h:139:18: note: property declared here
137 | - (void)scaleUnitSquareToSize:(NSSize)newUnitSize;
138 | - (void)rotateByAngle:(CGFloat)angle;
139 | @property NSRect bounds;
    |                  `- note: property declared here
140 |
141 | @property (getter=isFlipped, readonly) BOOL flipped;
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:38:31: warning: main actor-isolated property 'bounds' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
 34 |     }
 35 |
 36 |     static func segmentSplitter(for control: NSSegmentedControl, afterSegment segment: Int) -> CALayer {
    |                 `- note: add '@MainActor' to make static method 'segmentSplitter(for:afterSegment:)' part of global actor 'MainActor'
 37 |         let layer = CAShapeLayer()
 38 |         layer.frame = control.bounds
    |                               `- warning: main actor-isolated property 'bounds' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
 39 |         layer.lineWidth = 1
 40 |         if #available(macOS 10.14, *) {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSView.h:139:18: note: property declared here
137 | - (void)scaleUnitSquareToSize:(NSSize)newUnitSize;
138 | - (void)rotateByAngle:(CGFloat)angle;
139 | @property NSRect bounds;
    |                  `- note: property declared here
140 |
141 | @property (getter=isFlipped, readonly) BOOL flipped;
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:48:48: warning: main actor-isolated property 'segmentCount' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
 34 |     }
 35 |
 36 |     static func segmentSplitter(for control: NSSegmentedControl, afterSegment segment: Int) -> CALayer {
    |                 `- note: add '@MainActor' to make static method 'segmentSplitter(for:afterSegment:)' part of global actor 'MainActor'
 37 |         let layer = CAShapeLayer()
 38 |         layer.frame = control.bounds
    :
 46 |         let path = CGMutablePath()
 47 |
 48 |         let segment = max(min(segment, control.segmentCount), 0)
    |                                                `- warning: main actor-isolated property 'segmentCount' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
 49 |         let xPosition: CGFloat = (0...segment).reduce(into: 0) {
 50 |             $0 += control.width(forSegment: $1)
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSegmentedControl.h:55:21: note: property declared here
 53 | @interface NSSegmentedControl : NSControl <NSUserInterfaceCompression>
 54 |
 55 | @property NSInteger segmentCount;
    |                     `- note: property declared here
 56 |
 57 | @property NSInteger selectedSegment;
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:50:27: warning: call to main actor-isolated instance method 'width(forSegment:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
 48 |         let segment = max(min(segment, control.segmentCount), 0)
 49 |         let xPosition: CGFloat = (0...segment).reduce(into: 0) {
 50 |             $0 += control.width(forSegment: $1)
    |                           `- warning: call to main actor-isolated instance method 'width(forSegment:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
 51 |         }
 52 |
AppKit.NSSegmentedControl.width:2:22: note: calls to instance method 'width(forSegment:)' from outside of its actor context are implicitly asynchronous
1 | class NSSegmentedControl {
2 | @MainActor open func width(forSegment segment: Int) -> CGFloat}
  |                      |- note: calls to instance method 'width(forSegment:)' from outside of its actor context are implicitly asynchronous
  |                      `- note: main actor isolation inferred from inheritance from class 'NSControl'
3 |
[12/15] Compiling SwiftKeys NSMenuItem+extensions.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:11:24: warning: static property 'keyCommandNameStorage' is not concurrency-safe because non-'Sendable' type 'Storage<KeyCommand.Name>' may have shared mutable state; this is an error in the Swift 6 language mode
  9 |
 10 | extension NSMenuItem {
 11 |     private static let keyCommandNameStorage = Storage<KeyCommand.Name>()
    |                        |- warning: static property 'keyCommandNameStorage' is not concurrency-safe because non-'Sendable' type 'Storage<KeyCommand.Name>' may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'keyCommandNameStorage' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 12 |     private static let keyAndModifierChangeHandlerStorage = Storage<VoidHandler>()
 13 |     private static let observationStorage = Storage<Set<NSKeyValueObservation>>()
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:349:7: note: generic class 'Storage' does not conform to the 'Sendable' protocol
347 |
348 | /// A type that uses object association to store external values.
349 | class Storage<Value> {
    |       `- note: generic class 'Storage' does not conform to the 'Sendable' protocol
350 |     private let policy: AssociationPolicy
351 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:12:24: warning: static property 'keyAndModifierChangeHandlerStorage' is not concurrency-safe because non-'Sendable' type 'Storage<VoidHandler>' (aka 'Storage<Handler<()>>') may have shared mutable state; this is an error in the Swift 6 language mode
 10 | extension NSMenuItem {
 11 |     private static let keyCommandNameStorage = Storage<KeyCommand.Name>()
 12 |     private static let keyAndModifierChangeHandlerStorage = Storage<VoidHandler>()
    |                        |- warning: static property 'keyAndModifierChangeHandlerStorage' is not concurrency-safe because non-'Sendable' type 'Storage<VoidHandler>' (aka 'Storage<Handler<()>>') may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'keyAndModifierChangeHandlerStorage' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 13 |     private static let observationStorage = Storage<Set<NSKeyValueObservation>>()
 14 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:349:7: note: generic class 'Storage' does not conform to the 'Sendable' protocol
347 |
348 | /// A type that uses object association to store external values.
349 | class Storage<Value> {
    |       `- note: generic class 'Storage' does not conform to the 'Sendable' protocol
350 |     private let policy: AssociationPolicy
351 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:13:24: warning: static property 'observationStorage' is not concurrency-safe because non-'Sendable' type 'Storage<Set<NSKeyValueObservation>>' may have shared mutable state; this is an error in the Swift 6 language mode
 11 |     private static let keyCommandNameStorage = Storage<KeyCommand.Name>()
 12 |     private static let keyAndModifierChangeHandlerStorage = Storage<VoidHandler>()
 13 |     private static let observationStorage = Storage<Set<NSKeyValueObservation>>()
    |                        |- warning: static property 'observationStorage' is not concurrency-safe because non-'Sendable' type 'Storage<Set<NSKeyValueObservation>>' may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'observationStorage' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 14 |
 15 |     private var keyAndModifierChangeHandler: VoidHandler? {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:349:7: note: generic class 'Storage' does not conform to the 'Sendable' protocol
347 |
348 | /// A type that uses object association to store external values.
349 | class Storage<Value> {
    |       `- note: generic class 'Storage' does not conform to the 'Sendable' protocol
350 |     private let policy: AssociationPolicy
351 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:62:29: warning: capture of 'self' with non-sendable type 'NSMenuItem?' in a '@Sendable' closure
 60 |                 observe(\.keyEquivalent, options: [.old, .new]) { [weak self] _, changes in
 61 |                     guard
 62 |                         let self,
    |                             `- warning: capture of 'self' with non-sendable type 'NSMenuItem?' in a '@Sendable' closure
 63 |                         let oldValue = changes.oldValue,
 64 |                         let newValue = changes.newValue,
Swift.Optional:1:21: note: generic enum 'Optional' does not conform to the 'Sendable' protocol
1 | @frozen public enum Optional<Wrapped> : ~Copyable where Wrapped : ~Copyable {
  |                     `- note: generic enum 'Optional' does not conform to the 'Sendable' protocol
2 |     case none
3 |     case some(Wrapped)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:76:29: warning: capture of 'self' with non-sendable type 'NSMenuItem?' in a '@Sendable' closure
 74 |                 observe(\.keyEquivalentModifierMask, options: [.old, .new]) { [weak self] _, changes in
 75 |                     guard
 76 |                         let self,
    |                             `- warning: capture of 'self' with non-sendable type 'NSMenuItem?' in a '@Sendable' closure
 77 |                         let oldValue = changes.oldValue,
 78 |                         let newValue = changes.newValue,
Swift.Optional:1:21: note: generic enum 'Optional' does not conform to the 'Sendable' protocol
1 | @frozen public enum Optional<Wrapped> : ~Copyable where Wrapped : ~Copyable {
  |                     `- note: generic enum 'Optional' does not conform to the 'Sendable' protocol
2 |     case none
3 |     case some(Wrapped)
[13/15] Compiling SwiftKeys KeyRecorderView.swift
[14/15] Compiling SwiftKeys KeyRecorder.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:412:22: warning: main actor-isolated property 'recordingState' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
206 |     }
207 |
208 |     var recordingState = RecordingState.idle {
    |         `- note: mutation of this property is only permitted within the actor
209 |         didSet {
210 |             updateVisualAppearance()
    :
410 |             }
411 |             if !newValue {
412 |                 self.recordingState = .idle
    |                      `- warning: main actor-isolated property 'recordingState' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
413 |                 self.updateBasedOnNewRecordingState()
414 |             }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:413:22: warning: call to main actor-isolated instance method 'updateBasedOnNewRecordingState()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
411 |             if !newValue {
412 |                 self.recordingState = .idle
413 |                 self.updateBasedOnNewRecordingState()
    |                      `- warning: call to main actor-isolated instance method 'updateBasedOnNewRecordingState()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
414 |             }
415 |         }
    :
499 |     }
500 |
501 |     func updateBasedOnNewRecordingState() {
    |          |- note: calls to instance method 'updateBasedOnNewRecordingState()' from outside of its actor context are implicitly asynchronous
    |          `- note: main actor isolation inferred from inheritance from class 'NSSegmentedControl'
502 |         // Note: updateVisualAppearance() will get called as an observation
503 |         // handler as soon as the proxy's registration state changes.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:426:22: warning: main actor-isolated property 'recordingState' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
206 |     }
207 |
208 |     var recordingState = RecordingState.idle {
    |         `- note: mutation of this property is only permitted within the actor
209 |         didSet {
210 |             updateVisualAppearance()
    :
424 |             }
425 |             if newValue != .current {
426 |                 self.recordingState = .idle
    |                      `- warning: main actor-isolated property 'recordingState' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
427 |                 self.updateBasedOnNewRecordingState()
428 |             }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:427:22: warning: call to main actor-isolated instance method 'updateBasedOnNewRecordingState()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
425 |             if newValue != .current {
426 |                 self.recordingState = .idle
427 |                 self.updateBasedOnNewRecordingState()
    |                      `- warning: call to main actor-isolated instance method 'updateBasedOnNewRecordingState()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
428 |             }
429 |         }
    :
499 |     }
500 |
501 |     func updateBasedOnNewRecordingState() {
    |          |- note: calls to instance method 'updateBasedOnNewRecordingState()' from outside of its actor context are implicitly asynchronous
    |          `- note: main actor isolation inferred from inheritance from class 'NSSegmentedControl'
502 |         // Note: updateVisualAppearance() will get called as an observation
503 |         // handler as soon as the proxy's registration state changes.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:579:25: warning: call to main actor-isolated initializer 'init()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
573 |         }
574 |
575 |         func displayAlert() {
    |              `- note: add '@MainActor' to make instance method 'displayAlert()' part of global actor 'MainActor'
576 |             guard self != .noFailure else {
577 |                 return
578 |             }
579 |             let alert = NSAlert()
    |                         `- warning: call to main actor-isolated initializer 'init()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
580 |             alert.messageText = messageText
581 |             alert.informativeText = infoText
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/usr/include/objc/NSObject.h:66:1: note: calls to initializer 'init()' from outside of its actor context are implicitly asynchronous
 64 |
 65 | + (void)initialize;
 66 | - (instancetype)init
    | `- note: calls to initializer 'init()' from outside of its actor context are implicitly asynchronous
 67 | #if NS_ENFORCE_NSOBJECT_DESIGNATED_INITIALIZER
 68 |     NS_DESIGNATED_INITIALIZER
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:580:19: warning: main actor-isolated property 'messageText' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
573 |         }
574 |
575 |         func displayAlert() {
    |              `- note: add '@MainActor' to make instance method 'displayAlert()' part of global actor 'MainActor'
576 |             guard self != .noFailure else {
577 |                 return
578 |             }
579 |             let alert = NSAlert()
580 |             alert.messageText = messageText
    |                   `- warning: main actor-isolated property 'messageText' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
581 |             alert.informativeText = infoText
582 |             alert.runModal()
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAlert.h:71:28: note: mutation of this property is only permitted within the actor
 69 | /// The text that is displayed prominently in the alert.
 70 | /// - Note: Use this string to get the user’s attention and communicate the reason for displaying the alert.
 71 | @property (copy) NSString *messageText;
    |                            `- note: mutation of this property is only permitted within the actor
 72 |
 73 | /// The descriptive text that provides more details about the reason for the alert.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:581:19: warning: main actor-isolated property 'informativeText' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
573 |         }
574 |
575 |         func displayAlert() {
    |              `- note: add '@MainActor' to make instance method 'displayAlert()' part of global actor 'MainActor'
576 |             guard self != .noFailure else {
577 |                 return
    :
579 |             let alert = NSAlert()
580 |             alert.messageText = messageText
581 |             alert.informativeText = infoText
    |                   `- warning: main actor-isolated property 'informativeText' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
582 |             alert.runModal()
583 |         }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAlert.h:75:28: note: mutation of this property is only permitted within the actor
 73 | /// The descriptive text that provides more details about the reason for the alert.
 74 | /// - Note: The informative text string is displayed below the message text and is less prominent. Use this string to provide additional context about the reason for the alert or about the actions that the user might take.
 75 | @property (copy) NSString *informativeText;
    |                            `- note: mutation of this property is only permitted within the actor
 76 |
 77 | // MARK: - Accessing a Custom Alert Icon
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:582:19: warning: call to main actor-isolated instance method 'runModal()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
573 |         }
574 |
575 |         func displayAlert() {
    |              `- note: add '@MainActor' to make instance method 'displayAlert()' part of global actor 'MainActor'
576 |             guard self != .noFailure else {
577 |                 return
    :
580 |             alert.messageText = messageText
581 |             alert.informativeText = infoText
582 |             alert.runModal()
    |                   `- warning: call to main actor-isolated instance method 'runModal()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
583 |         }
584 |
AppKit.NSAlert.runModal:2:22: note: calls to instance method 'runModal()' from outside of its actor context are implicitly asynchronous
1 | class NSAlert {
2 | @MainActor open func runModal() -> NSApplication.ModalResponse}
  |                      `- note: calls to instance method 'runModal()' from outside of its actor context are implicitly asynchronous
3 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:526:23: warning: cannot access property 'keyDownMonitor' with a non-sendable type 'LocalEventMonitor?' from nonisolated deinit; this is an error in the Swift 6 language mode
524 |
525 |     deinit {
526 |         keyDownMonitor?.stop()
    |                       `- warning: cannot access property 'keyDownMonitor' with a non-sendable type 'LocalEventMonitor?' from nonisolated deinit; this is an error in the Swift 6 language mode
527 |         mouseDownMonitor?.stop()
528 |     }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:74:7: note: class 'LocalEventMonitor' does not conform to the 'Sendable' protocol
 72 | // MARK: - LocalEventMonitor
 73 |
 74 | class LocalEventMonitor {
    |       `- note: class 'LocalEventMonitor' does not conform to the 'Sendable' protocol
 75 |     private let mask: NSEvent.EventTypeMask
 76 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:527:25: warning: cannot access property 'mouseDownMonitor' with a non-sendable type 'LocalEventMonitor?' from nonisolated deinit; this is an error in the Swift 6 language mode
525 |     deinit {
526 |         keyDownMonitor?.stop()
527 |         mouseDownMonitor?.stop()
    |                         `- warning: cannot access property 'mouseDownMonitor' with a non-sendable type 'LocalEventMonitor?' from nonisolated deinit; this is an error in the Swift 6 language mode
528 |     }
529 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:74:7: note: class 'LocalEventMonitor' does not conform to the 'Sendable' protocol
 72 | // MARK: - LocalEventMonitor
 73 |
 74 | class LocalEventMonitor {
    |       `- note: class 'LocalEventMonitor' does not conform to the 'Sendable' protocol
 75 |     private let mask: NSEvent.EventTypeMask
 76 |
[15/15] Compiling SwiftKeys ViewModifiers.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/ViewModifiers.swift:13:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 11 | @available(macOS 10.15, *)
 12 | struct KeyRecorderBezelStyleKey: EnvironmentKey {
 13 |     static var defaultValue = KeyRecorderView.BezelStyle.rounded
    |                |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
    |                |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 14 | }
 15 |
Build complete! (8.33s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "SwiftKeys",
  "name" : "SwiftKeys",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.13"
    }
  ],
  "products" : [
    {
      "name" : "SwiftKeys",
      "targets" : [
        "SwiftKeys"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SwiftKeysTests",
      "module_type" : "SwiftTarget",
      "name" : "SwiftKeysTests",
      "path" : "Tests/SwiftKeysTests",
      "sources" : [
        "EventTypeTests.swift",
        "KeyCommandProxyTests.swift",
        "KeyCommandTests.swift",
        "KeyRecorderTests.swift",
        "Utilities.swift"
      ],
      "target_dependencies" : [
        "SwiftKeys"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SwiftKeys",
      "module_type" : "SwiftTarget",
      "name" : "SwiftKeys",
      "path" : "Sources/SwiftKeys",
      "product_memberships" : [
        "SwiftKeys"
      ],
      "sources" : [
        "KeyCommand/Key.swift",
        "KeyCommand/KeyCommand.swift",
        "KeyCommand/KeyCommandProxy.swift",
        "KeyCommand/Modifier.swift",
        "KeyCommand/Name.swift",
        "KeyCommand/Observation.swift",
        "KeyRecorder/BezelStyle.swift",
        "KeyRecorder/KeyRecorder.swift",
        "KeyRecorder/KeyRecorderView.swift",
        "Utilities/NSMenuItem+extensions.swift",
        "Utilities/Utilities.swift",
        "Utilities/ViewModifiers.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
✅  Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path:  $PWD/.docs/jordanbaird/swiftkeys/main
Repository:               jordanbaird/SwiftKeys
Swift version used:       6.1
Target:                   SwiftKeys
Extracting symbol information for 'SwiftKeys'...
Finished extracting symbol information for 'SwiftKeys'. (5.46s)
Building documentation for 'SwiftKeys'...
Finished building documentation for 'SwiftKeys' (0.69s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/jordanbaird/swiftkeys/main
Fetching https://github.com/swiftlang/swift-docc-plugin from cache
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (0.46s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.4.3 (1.15s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit from cache
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (0.71s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.35s)
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.4.3
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Building for debugging...
[0/8] Write sources
[2/8] Write snippet-extract-tool-entitlement.plist
[2/8] Write sources
[4/8] Write swift-version-2F0A5646E1D333AE.txt
[6/53] Emitting module SymbolKit
[7/57] Compiling SymbolKit GenericConstraint.swift
[8/57] Compiling SymbolKit GenericParameter.swift
[9/57] Compiling SymbolKit Generics.swift
[10/57] Compiling SymbolKit Namespace.swift
[11/57] Compiling SymbolKit SemanticVersion.swift
[12/57] Compiling SymbolKit AccessControl.swift
[13/57] Compiling SymbolKit Availability.swift
[14/57] Compiling SymbolKit AvailabilityItem.swift
[15/57] Compiling SymbolKit Domain.swift
[16/57] Compiling SymbolKit Mixin+Equals.swift
[17/57] Compiling SymbolKit Mixin+Hash.swift
[18/57] Compiling SymbolKit Mixin.swift
[19/57] Compiling SymbolKit LineList.swift
[20/57] Compiling SymbolKit Position.swift
[21/57] Compiling SymbolKit DeclarationFragments.swift
[22/57] Compiling SymbolKit Fragment.swift
[23/57] Compiling SymbolKit FragmentKind.swift
[24/57] Compiling SymbolKit FunctionParameter.swift
[25/57] Compiling SymbolKit FunctionSignature.swift
[26/57] Compiling SymbolKit SourceRange.swift
[27/57] Compiling SymbolKit Metadata.swift
[28/57] Compiling SymbolKit Module.swift
[29/57] Compiling SymbolKit OperatingSystem.swift
[30/57] Compiling SymbolKit Platform.swift
[31/57] Compiling SymbolKit Relationship.swift
[32/57] Compiling SymbolKit RelationshipKind.swift
[33/57] Compiling SymbolKit SourceOrigin.swift
[34/57] Compiling SymbolKit GenericConstraints.swift
[35/57] Compiling SymbolKit Swift.swift
[36/57] Compiling SymbolKit Names.swift
[37/57] Compiling SymbolKit SPI.swift
[38/57] Compiling SymbolKit Snippet.swift
[39/57] Compiling SymbolKit Extension.swift
[40/57] Compiling SymbolKit Symbol.swift
[41/57] Compiling SymbolKit SymbolKind.swift
[42/57] Compiling SymbolKit SymbolGraph.swift
[43/57] Compiling SymbolKit GraphCollector.swift
[44/57] Compiling SymbolKit Identifier.swift
[45/57] Compiling SymbolKit KindIdentifier.swift
[46/57] Compiling SymbolKit Location.swift
[47/57] Compiling SymbolKit Mutability.swift
[48/57] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[49/57] Compiling SymbolKit UnifiedSymbol.swift
[50/57] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[51/57] Compiling SymbolKit UnifiedSymbolGraph.swift
[52/57] Compiling Snippets SnippetParser.swift
[53/57] Emitting module Snippets
[54/57] Compiling Snippets Snippet.swift
[55/61] Compiling snippet_extract URL+Status.swift
[56/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[57/61] Emitting module snippet_extract
[58/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract-tool
[60/61] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (4.23s)
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/13] Compiling SwiftKeys NSMenuItem+extensions.swift
[3/13] Compiling SwiftKeys KeyRecorderView.swift
[4/13] Compiling SwiftKeys Utilities.swift
[5/14] Compiling SwiftKeys ViewModifiers.swift
[6/14] Compiling SwiftKeys BezelStyle.swift
[7/14] Compiling SwiftKeys Observation.swift
[8/14] Emitting module SwiftKeys
[9/14] Compiling SwiftKeys KeyCommandProxy.swift
[10/14] Compiling SwiftKeys Modifier.swift
[11/14] Compiling SwiftKeys Key.swift
[12/14] Compiling SwiftKeys KeyCommand.swift
[13/14] Compiling SwiftKeys Name.swift
[14/14] Compiling SwiftKeys KeyRecorder.swift
Build of target: 'SwiftKeys' complete! (1.40s)
    1989
15	/Users/admin/builder/spi-builder-workspace/.docs/jordanbaird/swiftkeys/main
✅  Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/jordanbaird/swiftkeys/main
File count: 1989
Doc size:   15.0MB
Preparing doc bundle ...
Uploading prod-jordanbaird-swiftkeys-main-50e26b07.zip to s3://spi-docs-inbox/prod-jordanbaird-swiftkeys-main-50e26b07.zip
Copying... [12%]
Copying... [21%]
Copying... [31%]
Copying... [41%]
Copying... [50%]
Copying... [60%]
Copying... [72%]
Copying... [81%]
Copying... [91%]
Copying... [100%]
Done.