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

Failed to build PianoKeyboard, reference master (a91f95), with Swift 6.0 for macOS (SPM) on 4 May 2025 09:26:40 UTC.

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 4.61.3
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/garynewby/PianoKeyboard.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/garynewby/PianoKeyboard
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
HEAD is now at a91f95d Fix CI simulator type
Cloned https://github.com/garynewby/PianoKeyboard.git
Revision (git rev-parse @):
a91f95d27e9c67c2be16a707d5d142c035e5e325
SUCCESS checkout https://github.com/garynewby/PianoKeyboard.git at master
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/garynewby/PianoKeyboard.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-5BDAB9E9C0126B9D.txt
[3/12] Compiling PianoKeyboard RoundedCornersShape.swift
/Users/admin/builder/spi-builder-workspace/Source/RoundedCornersShape.swift:11:18: error: cannot find type 'UIRectCorner' in scope
 9 |
10 | public struct RoundedCornersShape: Shape {
11 |     let corners: UIRectCorner
   |                  `- error: cannot find type 'UIRectCorner' in scope
12 |     let radius: CGFloat
13 |
/Users/admin/builder/spi-builder-workspace/Source/RoundedCornersShape.swift:14:26: error: cannot find type 'UIRectCorner' in scope
12 |     let radius: CGFloat
13 |
14 |     public init(corners: UIRectCorner, radius: CGFloat) {
   |                          `- error: cannot find type 'UIRectCorner' in scope
15 |         self.corners = corners
16 |         self.radius = radius
/Users/admin/builder/spi-builder-workspace/Source/RoundedCornersShape.swift:19:42: error: 'Path' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct RoundedCornersShape: Shape {
   |               `- note: add @available attribute to enclosing struct
11 |     let corners: UIRectCorner
12 |     let radius: CGFloat
   :
17 |     }
18 |
19 |     public func path(in rect: CGRect) -> Path {
   |                 |                        `- error: 'Path' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
20 |         let path = UIBezierPath(
21 |             roundedRect: rect,
/Users/admin/builder/spi-builder-workspace/Source/RoundedCornersShape.swift:20:20: error: cannot find 'UIBezierPath' in scope
18 |
19 |     public func path(in rect: CGRect) -> Path {
20 |         let path = UIBezierPath(
   |                    `- error: cannot find 'UIBezierPath' in scope
21 |             roundedRect: rect,
22 |             byRoundingCorners: corners,
[4/12] Compiling PianoKeyboard ModernStyle.swift
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:18:47: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
16 |     }
17 |
18 |     public func naturalColor(_ down: Bool) -> Color {
   |                 |                             `- error: 'Color' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
19 |         down ? Color(red: 0.6, green: 0.6, blue: 0.6) : Color(red: 0.9, green: 0.9, blue: 0.9)
20 |     }
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:22:49: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
20 |     }
21 |
22 |     public func sharpFlatColor(_ down: Bool) -> Color {
   |                 |                               `- error: 'Color' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
23 |         down ? Color(red: 0.4, green: 0.4, blue: 0.4) : Color(red: 0.2, green: 0.2, blue: 0.2)
24 |     }
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:26:50: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
24 |     }
25 |
26 |     public func labelColor(_ noteNumber: Int) -> Color {
   |                 |                                `- error: 'Color' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
27 |         Color(hue: Double(noteNumber) / 127.0, saturation: 1, brightness: 0.6)
28 |     }
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:34:69: error: 'GeometryProxy' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
32 |     }
33 |
34 |     public func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> some View {
   |                 |                                                   `- error: 'GeometryProxy' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
35 |         Canvas { context, size in
36 |             let width = size.width
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:34:92: error: 'View' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
32 |     }
33 |
34 |     public func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> some View {
   |                 |                                                                          `- error: 'View' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
35 |         Canvas { context, size in
36 |             let width = size.width
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:19:16: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
16 |     }
17 |
18 |     public func naturalColor(_ down: Bool) -> Color {
   |                 `- note: add @available attribute to enclosing instance method
19 |         down ? Color(red: 0.6, green: 0.6, blue: 0.6) : Color(red: 0.9, green: 0.9, blue: 0.9)
   |                |- error: 'Color' is only available in macOS 10.15 or newer
   |                `- note: add 'if #available' version check
20 |     }
21 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:19:16: error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
16 |     }
17 |
18 |     public func naturalColor(_ down: Bool) -> Color {
   |                 `- note: add @available attribute to enclosing instance method
19 |         down ? Color(red: 0.6, green: 0.6, blue: 0.6) : Color(red: 0.9, green: 0.9, blue: 0.9)
   |                |- error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
   |                `- note: add 'if #available' version check
20 |     }
21 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:19:57: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
16 |     }
17 |
18 |     public func naturalColor(_ down: Bool) -> Color {
   |                 `- note: add @available attribute to enclosing instance method
19 |         down ? Color(red: 0.6, green: 0.6, blue: 0.6) : Color(red: 0.9, green: 0.9, blue: 0.9)
   |                                                         |- error: 'Color' is only available in macOS 10.15 or newer
   |                                                         `- note: add 'if #available' version check
20 |     }
21 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:19:57: error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
16 |     }
17 |
18 |     public func naturalColor(_ down: Bool) -> Color {
   |                 `- note: add @available attribute to enclosing instance method
19 |         down ? Color(red: 0.6, green: 0.6, blue: 0.6) : Color(red: 0.9, green: 0.9, blue: 0.9)
   |                                                         |- error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
   |                                                         `- note: add 'if #available' version check
20 |     }
21 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:23:16: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
20 |     }
21 |
22 |     public func sharpFlatColor(_ down: Bool) -> Color {
   |                 `- note: add @available attribute to enclosing instance method
23 |         down ? Color(red: 0.4, green: 0.4, blue: 0.4) : Color(red: 0.2, green: 0.2, blue: 0.2)
   |                |- error: 'Color' is only available in macOS 10.15 or newer
   |                `- note: add 'if #available' version check
24 |     }
25 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:23:16: error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
20 |     }
21 |
22 |     public func sharpFlatColor(_ down: Bool) -> Color {
   |                 `- note: add @available attribute to enclosing instance method
23 |         down ? Color(red: 0.4, green: 0.4, blue: 0.4) : Color(red: 0.2, green: 0.2, blue: 0.2)
   |                |- error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
   |                `- note: add 'if #available' version check
24 |     }
25 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:23:57: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
20 |     }
21 |
22 |     public func sharpFlatColor(_ down: Bool) -> Color {
   |                 `- note: add @available attribute to enclosing instance method
23 |         down ? Color(red: 0.4, green: 0.4, blue: 0.4) : Color(red: 0.2, green: 0.2, blue: 0.2)
   |                                                         |- error: 'Color' is only available in macOS 10.15 or newer
   |                                                         `- note: add 'if #available' version check
24 |     }
25 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:23:57: error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
20 |     }
21 |
22 |     public func sharpFlatColor(_ down: Bool) -> Color {
   |                 `- note: add @available attribute to enclosing instance method
23 |         down ? Color(red: 0.4, green: 0.4, blue: 0.4) : Color(red: 0.2, green: 0.2, blue: 0.2)
   |                                                         |- error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
   |                                                         `- note: add 'if #available' version check
24 |     }
25 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:27:9: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
24 |     }
25 |
26 |     public func labelColor(_ noteNumber: Int) -> Color {
   |                 `- note: add @available attribute to enclosing instance method
27 |         Color(hue: Double(noteNumber) / 127.0, saturation: 1, brightness: 0.6)
   |         |- error: 'Color' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
28 |     }
29 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:27:9: error: 'init(hue:saturation:brightness:opacity:)' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
24 |     }
25 |
26 |     public func labelColor(_ noteNumber: Int) -> Color {
   |                 `- note: add @available attribute to enclosing instance method
27 |         Color(hue: Double(noteNumber) / 127.0, saturation: 1, brightness: 0.6)
   |         |- error: 'init(hue:saturation:brightness:opacity:)' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
28 |     }
29 |
/Users/admin/builder/spi-builder-workspace/Source/RoundedCornersShape.swift:14:26: error: cannot find type 'UIRectCorner' in scope
12 |     let radius: CGFloat
13 |
14 |     public init(corners: UIRectCorner, radius: CGFloat) {
   |                          `- error: cannot find type 'UIRectCorner' in scope
15 |         self.corners = corners
16 |         self.radius = radius
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:53:59: error: reference to member 'bottomLeft' cannot be resolved without a contextual type
51 |                 )
52 |
53 |                 let path = RoundedCornersShape(corners: [.bottomLeft, .bottomRight], radius: cornerRadius)
   |                                                           `- error: reference to member 'bottomLeft' cannot be resolved without a contextual type
54 |                     .path(in: rect)
55 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:53:72: error: reference to member 'bottomRight' cannot be resolved without a contextual type
51 |                 )
52 |
53 |                 let path = RoundedCornersShape(corners: [.bottomLeft, .bottomRight], radius: cornerRadius)
   |                                                                        `- error: reference to member 'bottomRight' cannot be resolved without a contextual type
54 |                     .path(in: rect)
55 |
[5/12] Compiling PianoKeyboard TouchesView.swift
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:13:30: error: cannot find type 'Context' in scope
11 |     var viewModel: PianoKeyboardViewModel
12 |
13 |     func makeUIView(context: Context) -> TouchesUIView {
   |                              `- error: cannot find type 'Context' in scope
14 |         let touchesUIView = TouchesUIView()
15 |         touchesUIView.isMultipleTouchEnabled = true
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:20:57: error: cannot find type 'Context' in scope
18 |     }
19 |
20 |     func updateUIView(_ uiView: TouchesUIView, context: Context) {}
   |                                                         `- error: cannot find type 'Context' in scope
21 |
22 |     func makeCoordinator() -> Coordinator {
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:10:21: error: cannot find type 'UIViewRepresentable' in scope
 8 | import SwiftUI
 9 |
10 | struct TouchesView: UIViewRepresentable {
   |                     `- error: cannot find type 'UIViewRepresentable' in scope
11 |     var viewModel: PianoKeyboardViewModel
12 |
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:44:22: error: cannot find type 'UIView' in scope
42 | }
43 |
44 | class TouchesUIView: UIView {
   |                      `- error: cannot find type 'UIView' in scope
45 |     static var minNumberOfKeys: Int = 12
46 |     static var maxNumberOfKeys: Int = 61
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:58:54: error: cannot find type 'UITouch' in scope
56 |     }
57 |
58 |     public override func touchesBegan(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                                                      `- error: cannot find type 'UITouch' in scope
59 |         for touch in touches {
60 |             currentTouches.add(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:58:72: error: cannot find type 'UIEvent' in scope
56 |     }
57 |
58 |     public override func touchesBegan(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                                                                        `- error: cannot find type 'UIEvent' in scope
59 |         for touch in touches {
60 |             currentTouches.add(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:58:26: error: method does not override any method from its superclass
56 |     }
57 |
58 |     public override func touchesBegan(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                          `- error: method does not override any method from its superclass
59 |         for touch in touches {
60 |             currentTouches.add(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:65:54: error: cannot find type 'UITouch' in scope
63 |     }
64 |
65 |     public override func touchesMoved(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                                                      `- error: cannot find type 'UITouch' in scope
66 |         for touch in touches {
67 |             currentTouches.add(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:65:72: error: cannot find type 'UIEvent' in scope
63 |     }
64 |
65 |     public override func touchesMoved(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                                                                        `- error: cannot find type 'UIEvent' in scope
66 |         for touch in touches {
67 |             currentTouches.add(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:65:26: error: method does not override any method from its superclass
63 |     }
64 |
65 |     public override func touchesMoved(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                          `- error: method does not override any method from its superclass
66 |         for touch in touches {
67 |             currentTouches.add(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:72:54: error: cannot find type 'UITouch' in scope
70 |     }
71 |
72 |     public override func touchesEnded(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                                                      `- error: cannot find type 'UITouch' in scope
73 |         for touch in touches {
74 |             currentTouches.remove(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:72:72: error: cannot find type 'UIEvent' in scope
70 |     }
71 |
72 |     public override func touchesEnded(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                                                                        `- error: cannot find type 'UIEvent' in scope
73 |         for touch in touches {
74 |             currentTouches.remove(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:72:26: error: method does not override any method from its superclass
70 |     }
71 |
72 |     public override func touchesEnded(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                          `- error: method does not override any method from its superclass
73 |         for touch in touches {
74 |             currentTouches.remove(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:79:58: error: cannot find type 'UITouch' in scope
77 |     }
78 |
79 |     public override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
   |                                                          `- error: cannot find type 'UITouch' in scope
80 |         for touch in touches {
81 |             currentTouches.remove(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:79:80: error: cannot find type 'UIEvent' in scope
77 |     }
78 |
79 |     public override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
   |                                                                                `- error: cannot find type 'UIEvent' in scope
80 |         for touch in touches {
81 |             currentTouches.remove(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:79:26: error: method does not override any method from its superclass
77 |     }
78 |
79 |     public override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
   |                          `- error: method does not override any method from its superclass
80 |         for touch in touches {
81 |             currentTouches.remove(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:15:23: error: value of type 'TouchesUIView' has no member 'isMultipleTouchEnabled'
13 |     func makeUIView(context: Context) -> TouchesUIView {
14 |         let touchesUIView = TouchesUIView()
15 |         touchesUIView.isMultipleTouchEnabled = true
   |                       `- error: value of type 'TouchesUIView' has no member 'isMultipleTouchEnabled'
16 |         touchesUIView.delegate = context.coordinator
17 |         return touchesUIView
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:52:57: error: cannot find type 'UITouch' in scope
50 |
51 |     func updateKeys() {
52 |         if let touches = currentTouches.allObjects as? [UITouch] {
   |                                                         `- error: cannot find type 'UITouch' in scope
53 |             let points = touches.map { $0.location(in: nil) }
54 |             delegate?.touches = points
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:53:56: error: 'nil' requires a contextual type
51 |     func updateKeys() {
52 |         if let touches = currentTouches.allObjects as? [UITouch] {
53 |             let points = touches.map { $0.location(in: nil) }
   |                                                        `- error: 'nil' requires a contextual type
54 |             delegate?.touches = points
55 |         }
error: emit-module command failed with exit code 1 (use -v to see invocation)
[6/12] Compiling PianoKeyboard PianoKeyboardView.swift
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:11:6: error: 'ObservedObject' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct PianoKeyboardView<T: KeyboardStyle>: View {
   |               `- note: add @available attribute to enclosing generic struct
11 |     @ObservedObject private var viewModel: PianoKeyboardViewModel
   |      `- error: 'ObservedObject' is only available in macOS 10.15 or newer
12 |     var style: T
13 |
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:22:27: error: 'View' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct PianoKeyboardView<T: KeyboardStyle>: View {
   |               `- note: add @available attribute to enclosing generic struct
11 |     @ObservedObject private var viewModel: PianoKeyboardViewModel
12 |     var style: T
   :
20 |     }
21 |
22 |     public var body: some View {
   |                |          `- error: 'View' is only available in macOS 10.15 or newer
   |                `- note: add @available attribute to enclosing property
23 |         GeometryReader { geometry in
24 |             ZStack(alignment: .top) {
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:33:2: error: 'Preview(_:body:)' is only available in macOS 10.15 or newer
31 | }
32 |
33 | #Preview {
   |  `- error: 'Preview(_:body:)' is only available in macOS 10.15 or newer
34 |     VStack {
35 |         PianoKeyboardView(style: ClassicStyle())
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:34:5: error: 'VStack' is only available in macOS 10.15 or newer
32 |
33 | #Preview {
34 |     VStack {
   |     |- error: 'VStack' is only available in macOS 10.15 or newer
   |     `- note: add 'if #available' version check
35 |         PianoKeyboardView(style: ClassicStyle())
36 |         PianoKeyboardView(style: ModernStyle())
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:38:6: error: 'frame(minWidth:idealWidth:maxWidth:minHeight:idealHeight:maxHeight:alignment:)' is only available in macOS 10.15 or newer
36 |         PianoKeyboardView(style: ModernStyle())
37 |     }
38 |     .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
   |      |- error: 'frame(minWidth:idealWidth:maxWidth:minHeight:idealHeight:maxHeight:alignment:)' is only available in macOS 10.15 or newer
   |      `- note: add 'if #available' version check
39 |     .background(.black)
40 | }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:38:67: error: 'top' is only available in macOS 10.15 or newer
36 |         PianoKeyboardView(style: ModernStyle())
37 |     }
38 |     .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
   |                                                                   |- error: 'top' is only available in macOS 10.15 or newer
   |                                                                   `- note: add 'if #available' version check
39 |     .background(.black)
40 | }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:39:6: error: 'background(_:ignoresSafeAreaEdges:)' is only available in macOS 12.0 or newer
37 |     }
38 |     .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
39 |     .background(.black)
   |      |- error: 'background(_:ignoresSafeAreaEdges:)' is only available in macOS 12.0 or newer
   |      `- note: add 'if #available' version check
40 | }
41 |
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:39:18: error: 'black' is only available in macOS 10.15 or newer
37 |     }
38 |     .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
39 |     .background(.black)
   |                  |- error: 'black' is only available in macOS 10.15 or newer
   |                  `- note: add 'if #available' version check
40 | }
41 |
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:18:9: error: setter for 'viewModel' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct PianoKeyboardView<T: KeyboardStyle>: View {
   |               `- note: add @available attribute to enclosing generic struct
11 |     @ObservedObject private var viewModel: PianoKeyboardViewModel
12 |     var style: T
13 |
14 |     public init(
   |            `- note: add @available attribute to enclosing initializer
15 |         viewModel: PianoKeyboardViewModel = PianoKeyboardViewModel(),
16 |         style: T
17 |     ) {
18 |         self.viewModel = viewModel
   |         |- error: setter for 'viewModel' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
19 |         self.style = style
20 |     }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:23:9: error: 'GeometryReader' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct PianoKeyboardView<T: KeyboardStyle>: View {
   |               `- note: add @available attribute to enclosing generic struct
11 |     @ObservedObject private var viewModel: PianoKeyboardViewModel
12 |     var style: T
   :
20 |     }
21 |
22 |     public var body: some View {
   |                `- note: add @available attribute to enclosing property
23 |         GeometryReader { geometry in
   |         |- error: 'GeometryReader' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
24 |             ZStack(alignment: .top) {
25 |                 style.layout(viewModel: viewModel, geometry: geometry)
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:24:13: error: 'ZStack' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct PianoKeyboardView<T: KeyboardStyle>: View {
   |               `- note: add @available attribute to enclosing generic struct
11 |     @ObservedObject private var viewModel: PianoKeyboardViewModel
12 |     var style: T
   :
20 |     }
21 |
22 |     public var body: some View {
   |                `- note: add @available attribute to enclosing property
23 |         GeometryReader { geometry in
24 |             ZStack(alignment: .top) {
   |             |- error: 'ZStack' is only available in macOS 10.15 or newer
   |             `- note: add 'if #available' version check
25 |                 style.layout(viewModel: viewModel, geometry: geometry)
26 |                 TouchesView(viewModel: viewModel)
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:24:32: error: 'top' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct PianoKeyboardView<T: KeyboardStyle>: View {
   |               `- note: add @available attribute to enclosing generic struct
11 |     @ObservedObject private var viewModel: PianoKeyboardViewModel
12 |     var style: T
   :
20 |     }
21 |
22 |     public var body: some View {
   |                `- note: add @available attribute to enclosing property
23 |         GeometryReader { geometry in
24 |             ZStack(alignment: .top) {
   |                                |- error: 'top' is only available in macOS 10.15 or newer
   |                                `- note: add 'if #available' version check
25 |                 style.layout(viewModel: viewModel, geometry: geometry)
26 |                 TouchesView(viewModel: viewModel)
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:26:17: error: 'buildExpression' is unavailable: this expression does not conform to 'View'
24 |             ZStack(alignment: .top) {
25 |                 style.layout(viewModel: viewModel, geometry: geometry)
26 |                 TouchesView(viewModel: viewModel)
   |                 `- error: 'buildExpression' is unavailable: this expression does not conform to 'View'
27 |             }
28 |             .background(.black)
SwiftUICore.ViewBuilder:5:24: note: 'buildExpression' has been explicitly marked unavailable here
 3 |     public static func buildExpression<Content>(_ content: Content) -> Content where Content : View
 4 |     @available(*, unavailable, message: "this expression does not conform to 'View'")
 5 |     public static func buildExpression(_ invalid: Any) -> some View
   |                        `- note: 'buildExpression' has been explicitly marked unavailable here
 6 |
 7 |     public static func buildBlock() -> EmptyView
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:28:14: error: 'background(_:ignoresSafeAreaEdges:)' is only available in macOS 12.0 or newer
 8 | import SwiftUI
 9 |
10 | public struct PianoKeyboardView<T: KeyboardStyle>: View {
   |               `- note: add @available attribute to enclosing generic struct
11 |     @ObservedObject private var viewModel: PianoKeyboardViewModel
12 |     var style: T
   :
20 |     }
21 |
22 |     public var body: some View {
   |                `- note: add @available attribute to enclosing property
23 |         GeometryReader { geometry in
24 |             ZStack(alignment: .top) {
   :
26 |                 TouchesView(viewModel: viewModel)
27 |             }
28 |             .background(.black)
   |              |- error: 'background(_:ignoresSafeAreaEdges:)' is only available in macOS 12.0 or newer
   |              `- note: add 'if #available' version check
29 |         }
30 |     }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:28:26: error: 'black' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct PianoKeyboardView<T: KeyboardStyle>: View {
   |               `- note: add @available attribute to enclosing generic struct
11 |     @ObservedObject private var viewModel: PianoKeyboardViewModel
12 |     var style: T
   :
20 |     }
21 |
22 |     public var body: some View {
   |                `- note: add @available attribute to enclosing property
23 |         GeometryReader { geometry in
24 |             ZStack(alignment: .top) {
   :
26 |                 TouchesView(viewModel: viewModel)
27 |             }
28 |             .background(.black)
   |                          |- error: 'black' is only available in macOS 10.15 or newer
   |                          `- note: add 'if #available' version check
29 |         }
30 |     }
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:27:28: error: 'title3' is only available in macOS 11.0 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 19 |     public let naturalKeySpace: CGFloat
 20 |
 21 |     public init(
    |            `- note: add @available attribute to enclosing initializer
 22 |         sfKeyWidthMultiplier: CGFloat = 0.65,
 23 |         sfKeyHeightMultiplier: CGFloat = 0.60,
    :
 25 |         cornerRadiusMultiplier: CGFloat = 0.008,
 26 |         naturalKeySpace: CGFloat = 3,
 27 |         labelFont: Font = .title3.bold(),
    |                            `- error: 'title3' is only available in macOS 11.0 or newer
 28 |         labelColor: Color = .gray,
 29 |         showLabels: Bool = true
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:27:35: error: 'bold()' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 19 |     public let naturalKeySpace: CGFloat
 20 |
 21 |     public init(
    |            `- note: add @available attribute to enclosing initializer
 22 |         sfKeyWidthMultiplier: CGFloat = 0.65,
 23 |         sfKeyHeightMultiplier: CGFloat = 0.60,
    :
 25 |         cornerRadiusMultiplier: CGFloat = 0.008,
 26 |         naturalKeySpace: CGFloat = 3,
 27 |         labelFont: Font = .title3.bold(),
    |                                   `- error: 'bold()' is only available in macOS 10.15 or newer
 28 |         labelColor: Color = .gray,
 29 |         showLabels: Bool = true
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:28:30: error: 'gray' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 19 |     public let naturalKeySpace: CGFloat
 20 |
 21 |     public init(
    |            `- note: add @available attribute to enclosing initializer
 22 |         sfKeyWidthMultiplier: CGFloat = 0.65,
 23 |         sfKeyHeightMultiplier: CGFloat = 0.60,
    :
 26 |         naturalKeySpace: CGFloat = 3,
 27 |         labelFont: Font = .title3.bold(),
 28 |         labelColor: Color = .gray,
    |                              `- error: 'gray' is only available in macOS 10.15 or newer
 29 |         showLabels: Bool = true
 30 |     ) {
[7/12] Compiling PianoKeyboard PianoKeyViewModel.swift
[8/12] Compiling PianoKeyboard ClassicStyle.swift
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:15:20: error: 'Font' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
 13 |     let sfKeyInsetMultiplier: CGFloat
 14 |     let cornerRadiusMultiplier: CGFloat
 15 |     let labelFont: Font
    |                    `- error: 'Font' is only available in macOS 10.15 or newer
 16 |     let labelColor: Color
 17 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:16:21: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 14 |     let cornerRadiusMultiplier: CGFloat
 15 |     let labelFont: Font
 16 |     let labelColor: Color
    |                     `- error: 'Color' is only available in macOS 10.15 or newer
 17 |
 18 |     public let showLabels: Bool
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:27:20: error: 'Font' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 19 |     public let naturalKeySpace: CGFloat
 20 |
 21 |     public init(
    |            `- note: add @available attribute to enclosing initializer
 22 |         sfKeyWidthMultiplier: CGFloat = 0.65,
 23 |         sfKeyHeightMultiplier: CGFloat = 0.60,
    :
 25 |         cornerRadiusMultiplier: CGFloat = 0.008,
 26 |         naturalKeySpace: CGFloat = 3,
 27 |         labelFont: Font = .title3.bold(),
    |                    `- error: 'Font' is only available in macOS 10.15 or newer
 28 |         labelColor: Color = .gray,
 29 |         showLabels: Bool = true
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:28:21: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 19 |     public let naturalKeySpace: CGFloat
 20 |
 21 |     public init(
    |            `- note: add @available attribute to enclosing initializer
 22 |         sfKeyWidthMultiplier: CGFloat = 0.65,
 23 |         sfKeyHeightMultiplier: CGFloat = 0.60,
    :
 26 |         naturalKeySpace: CGFloat = 3,
 27 |         labelFont: Font = .title3.bold(),
 28 |         labelColor: Color = .gray,
    |                     `- error: 'Color' is only available in macOS 10.15 or newer
 29 |         showLabels: Bool = true
 30 |     ) {
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:27:28: error: 'title3' is only available in macOS 11.0 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 19 |     public let naturalKeySpace: CGFloat
 20 |
 21 |     public init(
    |            `- note: add @available attribute to enclosing initializer
 22 |         sfKeyWidthMultiplier: CGFloat = 0.65,
 23 |         sfKeyHeightMultiplier: CGFloat = 0.60,
    :
 25 |         cornerRadiusMultiplier: CGFloat = 0.008,
 26 |         naturalKeySpace: CGFloat = 3,
 27 |         labelFont: Font = .title3.bold(),
    |                            `- error: 'title3' is only available in macOS 11.0 or newer
 28 |         labelColor: Color = .gray,
 29 |         showLabels: Bool = true
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:27:35: error: 'bold()' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 19 |     public let naturalKeySpace: CGFloat
 20 |
 21 |     public init(
    |            `- note: add @available attribute to enclosing initializer
 22 |         sfKeyWidthMultiplier: CGFloat = 0.65,
 23 |         sfKeyHeightMultiplier: CGFloat = 0.60,
    :
 25 |         cornerRadiusMultiplier: CGFloat = 0.008,
 26 |         naturalKeySpace: CGFloat = 3,
 27 |         labelFont: Font = .title3.bold(),
    |                                   `- error: 'bold()' is only available in macOS 10.15 or newer
 28 |         labelColor: Color = .gray,
 29 |         showLabels: Bool = true
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:28:30: error: 'gray' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 19 |     public let naturalKeySpace: CGFloat
 20 |
 21 |     public init(
    |            `- note: add @available attribute to enclosing initializer
 22 |         sfKeyWidthMultiplier: CGFloat = 0.65,
 23 |         sfKeyHeightMultiplier: CGFloat = 0.60,
    :
 26 |         naturalKeySpace: CGFloat = 3,
 27 |         labelFont: Font = .title3.bold(),
 28 |         labelColor: Color = .gray,
    |                              `- error: 'gray' is only available in macOS 10.15 or newer
 29 |         showLabels: Bool = true
 30 |     ) {
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:41:47: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 39 |     }
 40 |
 41 |     public func naturalColor(_ down: Bool) -> Color {
    |                 |                             `- error: 'Color' is only available in macOS 10.15 or newer
    |                 `- note: add @available attribute to enclosing instance method
 42 |         down ? Color(red: 0.6, green: 0.6, blue: 0.6) : Color(red: 0.9, green: 0.9, blue: 0.9)
 43 |     }
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:45:49: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 43 |     }
 44 |
 45 |     public func sharpFlatColor(_ down: Bool) -> Color {
    |                 |                               `- error: 'Color' is only available in macOS 10.15 or newer
    |                 `- note: add @available attribute to enclosing instance method
 46 |         down ? Color(red: 0.4, green: 0.4, blue: 0.4) : Color(red: 0.5, green: 0.5, blue: 0.5)
 47 |     }
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:49:50: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 47 |     }
 48 |
 49 |     public func labelColor(_ noteNumber: Int) -> Color {
    |                 |                                `- error: 'Color' is only available in macOS 10.15 or newer
    |                 `- note: add @available attribute to enclosing instance method
 50 |         Color(hue: Double(noteNumber) / 127.0, saturation: 1, brightness: 0.6)
 51 |     }
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:57:69: error: 'GeometryProxy' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 55 |     }
 56 |
 57 |     public func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> some View {
    |                 |                                                   `- error: 'GeometryProxy' is only available in macOS 10.15 or newer
    |                 `- note: add @available attribute to enclosing instance method
 58 |         Canvas { context, size in
 59 |             let width = size.width
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:57:92: error: 'View' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 55 |     }
 56 |
 57 |     public func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> some View {
    |                 |                                                                          `- error: 'View' is only available in macOS 10.15 or newer
    |                 `- note: add @available attribute to enclosing instance method
 58 |         Canvas { context, size in
 59 |             let width = size.width
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:42:16: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 39 |     }
 40 |
 41 |     public func naturalColor(_ down: Bool) -> Color {
    |                 `- note: add @available attribute to enclosing instance method
 42 |         down ? Color(red: 0.6, green: 0.6, blue: 0.6) : Color(red: 0.9, green: 0.9, blue: 0.9)
    |                |- error: 'Color' is only available in macOS 10.15 or newer
    |                `- note: add 'if #available' version check
 43 |     }
 44 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:42:16: error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 39 |     }
 40 |
 41 |     public func naturalColor(_ down: Bool) -> Color {
    |                 `- note: add @available attribute to enclosing instance method
 42 |         down ? Color(red: 0.6, green: 0.6, blue: 0.6) : Color(red: 0.9, green: 0.9, blue: 0.9)
    |                |- error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
    |                `- note: add 'if #available' version check
 43 |     }
 44 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:42:57: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 39 |     }
 40 |
 41 |     public func naturalColor(_ down: Bool) -> Color {
    |                 `- note: add @available attribute to enclosing instance method
 42 |         down ? Color(red: 0.6, green: 0.6, blue: 0.6) : Color(red: 0.9, green: 0.9, blue: 0.9)
    |                                                         |- error: 'Color' is only available in macOS 10.15 or newer
    |                                                         `- note: add 'if #available' version check
 43 |     }
 44 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:42:57: error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 39 |     }
 40 |
 41 |     public func naturalColor(_ down: Bool) -> Color {
    |                 `- note: add @available attribute to enclosing instance method
 42 |         down ? Color(red: 0.6, green: 0.6, blue: 0.6) : Color(red: 0.9, green: 0.9, blue: 0.9)
    |                                                         |- error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
    |                                                         `- note: add 'if #available' version check
 43 |     }
 44 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:46:16: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 43 |     }
 44 |
 45 |     public func sharpFlatColor(_ down: Bool) -> Color {
    |                 `- note: add @available attribute to enclosing instance method
 46 |         down ? Color(red: 0.4, green: 0.4, blue: 0.4) : Color(red: 0.5, green: 0.5, blue: 0.5)
    |                |- error: 'Color' is only available in macOS 10.15 or newer
    |                `- note: add 'if #available' version check
 47 |     }
 48 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:46:16: error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 43 |     }
 44 |
 45 |     public func sharpFlatColor(_ down: Bool) -> Color {
    |                 `- note: add @available attribute to enclosing instance method
 46 |         down ? Color(red: 0.4, green: 0.4, blue: 0.4) : Color(red: 0.5, green: 0.5, blue: 0.5)
    |                |- error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
    |                `- note: add 'if #available' version check
 47 |     }
 48 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:46:57: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 43 |     }
 44 |
 45 |     public func sharpFlatColor(_ down: Bool) -> Color {
    |                 `- note: add @available attribute to enclosing instance method
 46 |         down ? Color(red: 0.4, green: 0.4, blue: 0.4) : Color(red: 0.5, green: 0.5, blue: 0.5)
    |                                                         |- error: 'Color' is only available in macOS 10.15 or newer
    |                                                         `- note: add 'if #available' version check
 47 |     }
 48 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:46:57: error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 43 |     }
 44 |
 45 |     public func sharpFlatColor(_ down: Bool) -> Color {
    |                 `- note: add @available attribute to enclosing instance method
 46 |         down ? Color(red: 0.4, green: 0.4, blue: 0.4) : Color(red: 0.5, green: 0.5, blue: 0.5)
    |                                                         |- error: 'init(_:red:green:blue:opacity:)' is only available in macOS 10.15 or newer
    |                                                         `- note: add 'if #available' version check
 47 |     }
 48 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:50:9: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 47 |     }
 48 |
 49 |     public func labelColor(_ noteNumber: Int) -> Color {
    |                 `- note: add @available attribute to enclosing instance method
 50 |         Color(hue: Double(noteNumber) / 127.0, saturation: 1, brightness: 0.6)
    |         |- error: 'Color' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 51 |     }
 52 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:50:9: error: 'init(hue:saturation:brightness:opacity:)' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 47 |     }
 48 |
 49 |     public func labelColor(_ noteNumber: Int) -> Color {
    |                 `- note: add @available attribute to enclosing instance method
 50 |         Color(hue: Double(noteNumber) / 127.0, saturation: 1, brightness: 0.6)
    |         |- error: 'init(hue:saturation:brightness:opacity:)' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 51 |     }
 52 |
/Users/admin/builder/spi-builder-workspace/Source/RoundedCornersShape.swift:14:26: error: cannot find type 'UIRectCorner' in scope
12 |     let radius: CGFloat
13 |
14 |     public init(corners: UIRectCorner, radius: CGFloat) {
   |                          `- error: cannot find type 'UIRectCorner' in scope
15 |         self.corners = corners
16 |         self.radius = radius
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:78:59: error: reference to member 'bottomLeft' cannot be resolved without a contextual type
 76 |                 )
 77 |
 78 |                 let path = RoundedCornersShape(corners: [.bottomLeft, .bottomRight], radius: cornerRadius)
    |                                                           `- error: reference to member 'bottomLeft' cannot be resolved without a contextual type
 79 |                     .path(in: rect)
 80 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:78:72: error: reference to member 'bottomRight' cannot be resolved without a contextual type
 76 |                 )
 77 |
 78 |                 let path = RoundedCornersShape(corners: [.bottomLeft, .bottomRight], radius: cornerRadius)
    |                                                                        `- error: reference to member 'bottomRight' cannot be resolved without a contextual type
 79 |                     .path(in: rect)
 80 |
[9/12] Compiling PianoKeyboard Note.swift
[10/12] Compiling PianoKeyboard PianoKeyboardViewModel.swift
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:17:6: error: 'Published' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 18 |     @Published public var keysPressed: [String] = []
 19 |     @Published public var latch = false {
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:18:6: error: 'Published' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
 18 |     @Published public var keysPressed: [String] = []
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 19 |     @Published public var latch = false {
 20 |         didSet { reset() }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:19:6: error: 'Published' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
 18 |     @Published public var keysPressed: [String] = []
 19 |     @Published public var latch = false {
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 20 |         didSet { reset() }
 21 |     }
<unknown>:0: error: cannot convert value of type 'KeyPath<PianoKeyboardViewModel, [PianoKeyViewModel]>' to expected argument type 'ReferenceWritableKeyPath<PianoKeyboardViewModel, [PianoKeyViewModel]>'
<unknown>:0: error: cannot convert value of type 'KeyPath<PianoKeyboardViewModel, [String]>' to expected argument type 'ReferenceWritableKeyPath<PianoKeyboardViewModel, [String]>'
<unknown>:0: error: cannot convert value of type 'KeyPath<PianoKeyboardViewModel, Bool>' to expected argument type 'ReferenceWritableKeyPath<PianoKeyboardViewModel, Bool>'
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:15:38: error: 'ObservableObject' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              |                       `- error: 'ObservableObject' is only available in macOS 10.15 or newer
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:47:9: error: setter for 'keys' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    :
 44 |     }
 45 |
 46 |     private func configureKeys() {
    |                  `- note: add @available attribute to enclosing instance method
 47 |         keys = Array(repeating: PianoKeyViewModel(keyIndex: 0, noteOffset: noteOffset), count: numberOfKeys)
    |         |- error: setter for 'keys' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 48 |         keyRects = Array(repeating: .zero, count: numberOfKeys)
 49 |
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:51:13: error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    :
 44 |     }
 45 |
 46 |     private func configureKeys() {
    |                  `- note: add @available attribute to enclosing instance method
 47 |         keys = Array(repeating: PianoKeyViewModel(keyIndex: 0, noteOffset: noteOffset), count: numberOfKeys)
 48 |         keyRects = Array(repeating: .zero, count: numberOfKeys)
 49 |
 50 |         for i in 0..<numberOfKeys {
 51 |             keys[i] = PianoKeyViewModel(keyIndex: i, noteOffset: noteOffset)
    |             |- error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 52 |         }
 53 |     }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:73:29: error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    :
 53 |     }
 54 |
 55 |     private func updateKeys() {
    |                  `- note: add @available attribute to enclosing instance method
 56 |         var keyDownAt = Array(repeating: false, count: numberOfKeys)
 57 |
    :
 71 |                         if keyLatched {
 72 |                             keyUp(noteNumber)
 73 |                             keys[index].latched = false
    |                             |- error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
 74 |                             keys[index].touchDown = false
 75 |                         } else {
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:74:29: error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    :
 53 |     }
 54 |
 55 |     private func updateKeys() {
    |                  `- note: add @available attribute to enclosing instance method
 56 |         var keyDownAt = Array(repeating: false, count: numberOfKeys)
 57 |
    :
 72 |                             keyUp(noteNumber)
 73 |                             keys[index].latched = false
 74 |                             keys[index].touchDown = false
    |                             |- error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
 75 |                         } else {
 76 |                             keyDown(noteNumber)
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:77:29: error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    :
 53 |     }
 54 |
 55 |     private func updateKeys() {
    |                  `- note: add @available attribute to enclosing instance method
 56 |         var keyDownAt = Array(repeating: false, count: numberOfKeys)
 57 |
    :
 75 |                         } else {
 76 |                             keyDown(noteNumber)
 77 |                             keys[index].latched = true
    |                             |- error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
 78 |                             keys[index].touchDown = true
 79 |                         }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:78:29: error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    :
 53 |     }
 54 |
 55 |     private func updateKeys() {
    |                  `- note: add @available attribute to enclosing instance method
 56 |         var keyDownAt = Array(repeating: false, count: numberOfKeys)
 57 |
    :
 76 |                             keyDown(noteNumber)
 77 |                             keys[index].latched = true
 78 |                             keys[index].touchDown = true
    |                             |- error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
 79 |                         }
 80 |                     }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:88:21: error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    :
 53 |     }
 54 |
 55 |     private func updateKeys() {
    |                  `- note: add @available attribute to enclosing instance method
 56 |         var keyDownAt = Array(repeating: false, count: numberOfKeys)
 57 |
    :
 86 |                         keyUp(noteNumber)
 87 |                     }
 88 |                     keys[index].touchDown = keyDownAt[index]
    |                     |- error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 89 |                 }
 90 |             } else {
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:93:21: error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    :
 53 |     }
 54 |
 55 |     private func updateKeys() {
    |                  `- note: add @available attribute to enclosing instance method
 56 |         var keyDownAt = Array(repeating: false, count: numberOfKeys)
 57 |
    :
 91 |                 if keys[index].touchDown && keyDownAt[index] && keys[index].latched {
 92 |                     keyUp(noteNumber)
 93 |                     keys[index].latched = false
    |                     |- error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 94 |                     keys[index].touchDown = false
 95 |                 }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:94:21: error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    :
 53 |     }
 54 |
 55 |     private func updateKeys() {
    |                  `- note: add @available attribute to enclosing instance method
 56 |         var keyDownAt = Array(repeating: false, count: numberOfKeys)
 57 |
    :
 92 |                     keyUp(noteNumber)
 93 |                     keys[index].latched = false
 94 |                     keys[index].touchDown = false
    |                     |- error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 95 |                 }
 96 |             }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:101:9: error: cannot pass as inout because setter for 'keysPressed' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    :
 98 |     }
 99 |
100 |     private func keyDown(_ number: Int) {
    |                  `- note: add @available attribute to enclosing instance method
101 |         keysPressed.append(Note.name(for: number))
    |         |- error: cannot pass as inout because setter for 'keysPressed' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
102 |         delegate?.pianoKeyDown(number)
103 |     }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:110:9: error: cannot pass as inout because setter for 'keysPressed' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    :
103 |     }
104 |
105 |     private func keyUp(_ number: Int) {
    |                  `- note: add @available attribute to enclosing instance method
106 |         let note = Note.name(for: number)
107 |         guard let index = keysPressed.firstIndex(of: note) else {
108 |             return
109 |         }
110 |         keysPressed.remove(at: index)
    |         |- error: cannot pass as inout because setter for 'keysPressed' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
111 |         delegate?.pianoKeyUp(number)
112 |     }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:129:13: error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    :
125 |     }
126 |
127 |     private func reset() {
    |                  `- note: add @available attribute to enclosing instance method
128 |         for i in 0..<numberOfKeys {
129 |             keys[i].touchDown = false
    |             |- error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
130 |             keys[i].latched = false
131 |             keyUp(keys[i].noteNumber)
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:130:13: error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    :
125 |     }
126 |
127 |     private func reset() {
    |                  `- note: add @available attribute to enclosing instance method
128 |         for i in 0..<numberOfKeys {
129 |             keys[i].touchDown = false
130 |             keys[i].latched = false
    |             |- error: cannot pass as inout because setter for 'keys' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
131 |             keyUp(keys[i].noteNumber)
132 |         }
[11/12] Emitting module PianoKeyboard
/Users/admin/builder/spi-builder-workspace/Source/KeyboardStyle.swift:11:28: error: 'View' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public protocol KeyboardStyle {
   |                 `- note: add @available attribute to enclosing protocol
11 |     associatedtype Layout: View
   |                    |       `- error: 'View' is only available in macOS 10.15 or newer
   |                    `- note: add @available attribute to enclosing associated type
12 |
13 |     var naturalKeySpace: CGFloat { get }
/Users/admin/builder/spi-builder-workspace/Source/KeyboardStyle.swift:15:40: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public protocol KeyboardStyle {
   |                 `- note: add @available attribute to enclosing protocol
11 |     associatedtype Layout: View
12 |
13 |     var naturalKeySpace: CGFloat { get }
14 |     var showLabels: Bool { get }
15 |     func naturalColor(_ down: Bool) -> Color
   |          |                             `- error: 'Color' is only available in macOS 10.15 or newer
   |          `- note: add @available attribute to enclosing instance method
16 |     func sharpFlatColor(_ down: Bool) -> Color
17 |     func labelColor(_ noteNumber: Int) -> Color
/Users/admin/builder/spi-builder-workspace/Source/KeyboardStyle.swift:16:42: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public protocol KeyboardStyle {
   |                 `- note: add @available attribute to enclosing protocol
11 |     associatedtype Layout: View
12 |
   :
14 |     var showLabels: Bool { get }
15 |     func naturalColor(_ down: Bool) -> Color
16 |     func sharpFlatColor(_ down: Bool) -> Color
   |          |                               `- error: 'Color' is only available in macOS 10.15 or newer
   |          `- note: add @available attribute to enclosing instance method
17 |     func labelColor(_ noteNumber: Int) -> Color
18 |     func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> Layout
/Users/admin/builder/spi-builder-workspace/Source/KeyboardStyle.swift:17:43: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public protocol KeyboardStyle {
   |                 `- note: add @available attribute to enclosing protocol
11 |     associatedtype Layout: View
12 |
   :
15 |     func naturalColor(_ down: Bool) -> Color
16 |     func sharpFlatColor(_ down: Bool) -> Color
17 |     func labelColor(_ noteNumber: Int) -> Color
   |          |                                `- error: 'Color' is only available in macOS 10.15 or newer
   |          `- note: add @available attribute to enclosing instance method
18 |     func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> Layout
19 | }
/Users/admin/builder/spi-builder-workspace/Source/KeyboardStyle.swift:18:62: error: 'GeometryProxy' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public protocol KeyboardStyle {
   |                 `- note: add @available attribute to enclosing protocol
11 |     associatedtype Layout: View
12 |
   :
16 |     func sharpFlatColor(_ down: Bool) -> Color
17 |     func labelColor(_ noteNumber: Int) -> Color
18 |     func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> Layout
   |          |                                                   `- error: 'GeometryProxy' is only available in macOS 10.15 or newer
   |          `- note: add @available attribute to enclosing instance method
19 | }
20 |
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:11:6: error: 'ObservedObject' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct PianoKeyboardView<T: KeyboardStyle>: View {
   |               `- note: add @available attribute to enclosing generic struct
11 |     @ObservedObject private var viewModel: PianoKeyboardViewModel
   |      `- error: 'ObservedObject' is only available in macOS 10.15 or newer
12 |     var style: T
13 |
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:22:27: error: 'View' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct PianoKeyboardView<T: KeyboardStyle>: View {
   |               `- note: add @available attribute to enclosing generic struct
11 |     @ObservedObject private var viewModel: PianoKeyboardViewModel
12 |     var style: T
   :
20 |     }
21 |
22 |     public var body: some View {
   |                |          `- error: 'View' is only available in macOS 10.15 or newer
   |                `- note: add @available attribute to enclosing property
23 |         GeometryReader { geometry in
24 |             ZStack(alignment: .top) {
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:33:2: error: 'Preview(_:body:)' is only available in macOS 10.15 or newer
31 | }
32 |
33 | #Preview {
   |  `- error: 'Preview(_:body:)' is only available in macOS 10.15 or newer
34 |     VStack {
35 |         PianoKeyboardView(style: ClassicStyle())
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:34:5: error: 'VStack' is only available in macOS 10.15 or newer
32 |
33 | #Preview {
34 |     VStack {
   |     |- error: 'VStack' is only available in macOS 10.15 or newer
   |     `- note: add 'if #available' version check
35 |         PianoKeyboardView(style: ClassicStyle())
36 |         PianoKeyboardView(style: ModernStyle())
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:38:6: error: 'frame(minWidth:idealWidth:maxWidth:minHeight:idealHeight:maxHeight:alignment:)' is only available in macOS 10.15 or newer
36 |         PianoKeyboardView(style: ModernStyle())
37 |     }
38 |     .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
   |      |- error: 'frame(minWidth:idealWidth:maxWidth:minHeight:idealHeight:maxHeight:alignment:)' is only available in macOS 10.15 or newer
   |      `- note: add 'if #available' version check
39 |     .background(.black)
40 | }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:38:67: error: 'top' is only available in macOS 10.15 or newer
36 |         PianoKeyboardView(style: ModernStyle())
37 |     }
38 |     .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
   |                                                                   |- error: 'top' is only available in macOS 10.15 or newer
   |                                                                   `- note: add 'if #available' version check
39 |     .background(.black)
40 | }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:39:6: error: 'background(_:ignoresSafeAreaEdges:)' is only available in macOS 12.0 or newer
37 |     }
38 |     .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
39 |     .background(.black)
   |      |- error: 'background(_:ignoresSafeAreaEdges:)' is only available in macOS 12.0 or newer
   |      `- note: add 'if #available' version check
40 | }
41 |
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardView.swift:39:18: error: 'black' is only available in macOS 10.15 or newer
37 |     }
38 |     .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
39 |     .background(.black)
   |                  |- error: 'black' is only available in macOS 10.15 or newer
   |                  `- note: add 'if #available' version check
40 | }
41 |
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:17:6: error: 'Published' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 18 |     @Published public var keysPressed: [String] = []
 19 |     @Published public var latch = false {
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:18:6: error: 'Published' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
 18 |     @Published public var keysPressed: [String] = []
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 19 |     @Published public var latch = false {
 20 |         didSet { reset() }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:19:6: error: 'Published' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
 18 |     @Published public var keysPressed: [String] = []
 19 |     @Published public var latch = false {
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 20 |         didSet { reset() }
 21 |     }
/Users/admin/builder/spi-builder-workspace/Source/PianoKeyboardViewModel.swift:15:38: error: 'ObservableObject' is only available in macOS 10.15 or newer
 13 | }
 14 |
 15 | public class PianoKeyboardViewModel: ObservableObject {
    |              |                       `- error: 'ObservableObject' is only available in macOS 10.15 or newer
    |              `- note: add @available attribute to enclosing class
 16 |
 17 |     @Published public var keys: [PianoKeyViewModel] = []
/Users/admin/builder/spi-builder-workspace/Source/RoundedCornersShape.swift:11:18: error: cannot find type 'UIRectCorner' in scope
 9 |
10 | public struct RoundedCornersShape: Shape {
11 |     let corners: UIRectCorner
   |                  `- error: cannot find type 'UIRectCorner' in scope
12 |     let radius: CGFloat
13 |
/Users/admin/builder/spi-builder-workspace/Source/RoundedCornersShape.swift:14:26: error: cannot find type 'UIRectCorner' in scope
12 |     let radius: CGFloat
13 |
14 |     public init(corners: UIRectCorner, radius: CGFloat) {
   |                          `- error: cannot find type 'UIRectCorner' in scope
15 |         self.corners = corners
16 |         self.radius = radius
/Users/admin/builder/spi-builder-workspace/Source/RoundedCornersShape.swift:19:42: error: 'Path' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct RoundedCornersShape: Shape {
   |               `- note: add @available attribute to enclosing struct
11 |     let corners: UIRectCorner
12 |     let radius: CGFloat
   :
17 |     }
18 |
19 |     public func path(in rect: CGRect) -> Path {
   |                 |                        `- error: 'Path' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
20 |         let path = UIBezierPath(
21 |             roundedRect: rect,
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:15:20: error: 'Font' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
 13 |     let sfKeyInsetMultiplier: CGFloat
 14 |     let cornerRadiusMultiplier: CGFloat
 15 |     let labelFont: Font
    |                    `- error: 'Font' is only available in macOS 10.15 or newer
 16 |     let labelColor: Color
 17 |
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:16:21: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 14 |     let cornerRadiusMultiplier: CGFloat
 15 |     let labelFont: Font
 16 |     let labelColor: Color
    |                     `- error: 'Color' is only available in macOS 10.15 or newer
 17 |
 18 |     public let showLabels: Bool
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:27:20: error: 'Font' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 19 |     public let naturalKeySpace: CGFloat
 20 |
 21 |     public init(
    |            `- note: add @available attribute to enclosing initializer
 22 |         sfKeyWidthMultiplier: CGFloat = 0.65,
 23 |         sfKeyHeightMultiplier: CGFloat = 0.60,
    :
 25 |         cornerRadiusMultiplier: CGFloat = 0.008,
 26 |         naturalKeySpace: CGFloat = 3,
 27 |         labelFont: Font = .title3.bold(),
    |                    `- error: 'Font' is only available in macOS 10.15 or newer
 28 |         labelColor: Color = .gray,
 29 |         showLabels: Bool = true
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:28:21: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 19 |     public let naturalKeySpace: CGFloat
 20 |
 21 |     public init(
    |            `- note: add @available attribute to enclosing initializer
 22 |         sfKeyWidthMultiplier: CGFloat = 0.65,
 23 |         sfKeyHeightMultiplier: CGFloat = 0.60,
    :
 26 |         naturalKeySpace: CGFloat = 3,
 27 |         labelFont: Font = .title3.bold(),
 28 |         labelColor: Color = .gray,
    |                     `- error: 'Color' is only available in macOS 10.15 or newer
 29 |         showLabels: Bool = true
 30 |     ) {
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:27:28: error: 'title3' is only available in macOS 11.0 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 19 |     public let naturalKeySpace: CGFloat
 20 |
 21 |     public init(
    |            `- note: add @available attribute to enclosing initializer
 22 |         sfKeyWidthMultiplier: CGFloat = 0.65,
 23 |         sfKeyHeightMultiplier: CGFloat = 0.60,
    :
 25 |         cornerRadiusMultiplier: CGFloat = 0.008,
 26 |         naturalKeySpace: CGFloat = 3,
 27 |         labelFont: Font = .title3.bold(),
    |                            `- error: 'title3' is only available in macOS 11.0 or newer
 28 |         labelColor: Color = .gray,
 29 |         showLabels: Bool = true
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:27:35: error: 'bold()' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 19 |     public let naturalKeySpace: CGFloat
 20 |
 21 |     public init(
    |            `- note: add @available attribute to enclosing initializer
 22 |         sfKeyWidthMultiplier: CGFloat = 0.65,
 23 |         sfKeyHeightMultiplier: CGFloat = 0.60,
    :
 25 |         cornerRadiusMultiplier: CGFloat = 0.008,
 26 |         naturalKeySpace: CGFloat = 3,
 27 |         labelFont: Font = .title3.bold(),
    |                                   `- error: 'bold()' is only available in macOS 10.15 or newer
 28 |         labelColor: Color = .gray,
 29 |         showLabels: Bool = true
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:28:30: error: 'gray' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 19 |     public let naturalKeySpace: CGFloat
 20 |
 21 |     public init(
    |            `- note: add @available attribute to enclosing initializer
 22 |         sfKeyWidthMultiplier: CGFloat = 0.65,
 23 |         sfKeyHeightMultiplier: CGFloat = 0.60,
    :
 26 |         naturalKeySpace: CGFloat = 3,
 27 |         labelFont: Font = .title3.bold(),
 28 |         labelColor: Color = .gray,
    |                              `- error: 'gray' is only available in macOS 10.15 or newer
 29 |         showLabels: Bool = true
 30 |     ) {
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:41:47: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 39 |     }
 40 |
 41 |     public func naturalColor(_ down: Bool) -> Color {
    |                 |                             `- error: 'Color' is only available in macOS 10.15 or newer
    |                 `- note: add @available attribute to enclosing instance method
 42 |         down ? Color(red: 0.6, green: 0.6, blue: 0.6) : Color(red: 0.9, green: 0.9, blue: 0.9)
 43 |     }
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:45:49: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 43 |     }
 44 |
 45 |     public func sharpFlatColor(_ down: Bool) -> Color {
    |                 |                               `- error: 'Color' is only available in macOS 10.15 or newer
    |                 `- note: add @available attribute to enclosing instance method
 46 |         down ? Color(red: 0.4, green: 0.4, blue: 0.4) : Color(red: 0.5, green: 0.5, blue: 0.5)
 47 |     }
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:49:50: error: 'Color' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 47 |     }
 48 |
 49 |     public func labelColor(_ noteNumber: Int) -> Color {
    |                 |                                `- error: 'Color' is only available in macOS 10.15 or newer
    |                 `- note: add @available attribute to enclosing instance method
 50 |         Color(hue: Double(noteNumber) / 127.0, saturation: 1, brightness: 0.6)
 51 |     }
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:57:69: error: 'GeometryProxy' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 55 |     }
 56 |
 57 |     public func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> some View {
    |                 |                                                   `- error: 'GeometryProxy' is only available in macOS 10.15 or newer
    |                 `- note: add @available attribute to enclosing instance method
 58 |         Canvas { context, size in
 59 |             let width = size.width
/Users/admin/builder/spi-builder-workspace/Source/Styles/ClassicStyle.swift:57:92: error: 'View' is only available in macOS 10.15 or newer
  8 | import SwiftUI
  9 |
 10 | public struct ClassicStyle: KeyboardStyle {
    |               `- note: add @available attribute to enclosing struct
 11 |     let sfKeyWidthMultiplier: CGFloat
 12 |     let sfKeyHeightMultiplier: CGFloat
    :
 55 |     }
 56 |
 57 |     public func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> some View {
    |                 |                                                                          `- error: 'View' is only available in macOS 10.15 or newer
    |                 `- note: add @available attribute to enclosing instance method
 58 |         Canvas { context, size in
 59 |             let width = size.width
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:18:47: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
16 |     }
17 |
18 |     public func naturalColor(_ down: Bool) -> Color {
   |                 |                             `- error: 'Color' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
19 |         down ? Color(red: 0.6, green: 0.6, blue: 0.6) : Color(red: 0.9, green: 0.9, blue: 0.9)
20 |     }
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:22:49: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
20 |     }
21 |
22 |     public func sharpFlatColor(_ down: Bool) -> Color {
   |                 |                               `- error: 'Color' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
23 |         down ? Color(red: 0.4, green: 0.4, blue: 0.4) : Color(red: 0.2, green: 0.2, blue: 0.2)
24 |     }
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:26:50: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
24 |     }
25 |
26 |     public func labelColor(_ noteNumber: Int) -> Color {
   |                 |                                `- error: 'Color' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
27 |         Color(hue: Double(noteNumber) / 127.0, saturation: 1, brightness: 0.6)
28 |     }
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:34:69: error: 'GeometryProxy' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
32 |     }
33 |
34 |     public func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> some View {
   |                 |                                                   `- error: 'GeometryProxy' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
35 |         Canvas { context, size in
36 |             let width = size.width
/Users/admin/builder/spi-builder-workspace/Source/Styles/ModernStyle.swift:34:92: error: 'View' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public struct ModernStyle: KeyboardStyle {
   |               `- note: add @available attribute to enclosing struct
11 |     public let showLabels: Bool
12 |     public let naturalKeySpace: CGFloat = 2
   :
32 |     }
33 |
34 |     public func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> some View {
   |                 |                                                                          `- error: 'View' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
35 |         Canvas { context, size in
36 |             let width = size.width
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:13:30: error: cannot find type 'Context' in scope
11 |     var viewModel: PianoKeyboardViewModel
12 |
13 |     func makeUIView(context: Context) -> TouchesUIView {
   |                              `- error: cannot find type 'Context' in scope
14 |         let touchesUIView = TouchesUIView()
15 |         touchesUIView.isMultipleTouchEnabled = true
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:20:57: error: cannot find type 'Context' in scope
18 |     }
19 |
20 |     func updateUIView(_ uiView: TouchesUIView, context: Context) {}
   |                                                         `- error: cannot find type 'Context' in scope
21 |
22 |     func makeCoordinator() -> Coordinator {
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:10:21: error: cannot find type 'UIViewRepresentable' in scope
 8 | import SwiftUI
 9 |
10 | struct TouchesView: UIViewRepresentable {
   |                     `- error: cannot find type 'UIViewRepresentable' in scope
11 |     var viewModel: PianoKeyboardViewModel
12 |
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:44:22: error: cannot find type 'UIView' in scope
42 | }
43 |
44 | class TouchesUIView: UIView {
   |                      `- error: cannot find type 'UIView' in scope
45 |     static var minNumberOfKeys: Int = 12
46 |     static var maxNumberOfKeys: Int = 61
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:58:54: error: cannot find type 'UITouch' in scope
56 |     }
57 |
58 |     public override func touchesBegan(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                                                      `- error: cannot find type 'UITouch' in scope
59 |         for touch in touches {
60 |             currentTouches.add(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:58:72: error: cannot find type 'UIEvent' in scope
56 |     }
57 |
58 |     public override func touchesBegan(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                                                                        `- error: cannot find type 'UIEvent' in scope
59 |         for touch in touches {
60 |             currentTouches.add(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:58:26: error: method does not override any method from its superclass
56 |     }
57 |
58 |     public override func touchesBegan(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                          `- error: method does not override any method from its superclass
59 |         for touch in touches {
60 |             currentTouches.add(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:65:54: error: cannot find type 'UITouch' in scope
63 |     }
64 |
65 |     public override func touchesMoved(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                                                      `- error: cannot find type 'UITouch' in scope
66 |         for touch in touches {
67 |             currentTouches.add(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:65:72: error: cannot find type 'UIEvent' in scope
63 |     }
64 |
65 |     public override func touchesMoved(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                                                                        `- error: cannot find type 'UIEvent' in scope
66 |         for touch in touches {
67 |             currentTouches.add(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:65:26: error: method does not override any method from its superclass
63 |     }
64 |
65 |     public override func touchesMoved(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                          `- error: method does not override any method from its superclass
66 |         for touch in touches {
67 |             currentTouches.add(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:72:54: error: cannot find type 'UITouch' in scope
70 |     }
71 |
72 |     public override func touchesEnded(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                                                      `- error: cannot find type 'UITouch' in scope
73 |         for touch in touches {
74 |             currentTouches.remove(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:72:72: error: cannot find type 'UIEvent' in scope
70 |     }
71 |
72 |     public override func touchesEnded(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                                                                        `- error: cannot find type 'UIEvent' in scope
73 |         for touch in touches {
74 |             currentTouches.remove(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:72:26: error: method does not override any method from its superclass
70 |     }
71 |
72 |     public override func touchesEnded(_ touches: Set<UITouch>, with _: UIEvent?) {
   |                          `- error: method does not override any method from its superclass
73 |         for touch in touches {
74 |             currentTouches.remove(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:79:58: error: cannot find type 'UITouch' in scope
77 |     }
78 |
79 |     public override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
   |                                                          `- error: cannot find type 'UITouch' in scope
80 |         for touch in touches {
81 |             currentTouches.remove(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:79:80: error: cannot find type 'UIEvent' in scope
77 |     }
78 |
79 |     public override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
   |                                                                                `- error: cannot find type 'UIEvent' in scope
80 |         for touch in touches {
81 |             currentTouches.remove(touch)
/Users/admin/builder/spi-builder-workspace/Source/TouchesView.swift:79:26: error: method does not override any method from its superclass
77 |     }
78 |
79 |     public override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
   |                          `- error: method does not override any method from its superclass
80 |         for touch in touches {
81 |             currentTouches.remove(touch)
[12/12] Compiling PianoKeyboard KeyboardStyle.swift
/Users/admin/builder/spi-builder-workspace/Source/KeyboardStyle.swift:11:28: error: 'View' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public protocol KeyboardStyle {
   |                 `- note: add @available attribute to enclosing protocol
11 |     associatedtype Layout: View
   |                    |       `- error: 'View' is only available in macOS 10.15 or newer
   |                    `- note: add @available attribute to enclosing associated type
12 |
13 |     var naturalKeySpace: CGFloat { get }
/Users/admin/builder/spi-builder-workspace/Source/KeyboardStyle.swift:15:40: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public protocol KeyboardStyle {
   |                 `- note: add @available attribute to enclosing protocol
11 |     associatedtype Layout: View
12 |
13 |     var naturalKeySpace: CGFloat { get }
14 |     var showLabels: Bool { get }
15 |     func naturalColor(_ down: Bool) -> Color
   |          |                             `- error: 'Color' is only available in macOS 10.15 or newer
   |          `- note: add @available attribute to enclosing instance method
16 |     func sharpFlatColor(_ down: Bool) -> Color
17 |     func labelColor(_ noteNumber: Int) -> Color
/Users/admin/builder/spi-builder-workspace/Source/KeyboardStyle.swift:16:42: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public protocol KeyboardStyle {
   |                 `- note: add @available attribute to enclosing protocol
11 |     associatedtype Layout: View
12 |
   :
14 |     var showLabels: Bool { get }
15 |     func naturalColor(_ down: Bool) -> Color
16 |     func sharpFlatColor(_ down: Bool) -> Color
   |          |                               `- error: 'Color' is only available in macOS 10.15 or newer
   |          `- note: add @available attribute to enclosing instance method
17 |     func labelColor(_ noteNumber: Int) -> Color
18 |     func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> Layout
/Users/admin/builder/spi-builder-workspace/Source/KeyboardStyle.swift:17:43: error: 'Color' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public protocol KeyboardStyle {
   |                 `- note: add @available attribute to enclosing protocol
11 |     associatedtype Layout: View
12 |
   :
15 |     func naturalColor(_ down: Bool) -> Color
16 |     func sharpFlatColor(_ down: Bool) -> Color
17 |     func labelColor(_ noteNumber: Int) -> Color
   |          |                                `- error: 'Color' is only available in macOS 10.15 or newer
   |          `- note: add @available attribute to enclosing instance method
18 |     func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> Layout
19 | }
/Users/admin/builder/spi-builder-workspace/Source/KeyboardStyle.swift:18:62: error: 'GeometryProxy' is only available in macOS 10.15 or newer
 8 | import SwiftUI
 9 |
10 | public protocol KeyboardStyle {
   |                 `- note: add @available attribute to enclosing protocol
11 |     associatedtype Layout: View
12 |
   :
16 |     func sharpFlatColor(_ down: Bool) -> Color
17 |     func labelColor(_ noteNumber: Int) -> Color
18 |     func layout(viewModel: PianoKeyboardViewModel, geometry: GeometryProxy) -> Layout
   |          |                                                   `- error: 'GeometryProxy' is only available in macOS 10.15 or newer
   |          `- note: add @available attribute to enclosing instance method
19 | }
20 |
BUILD FAILURE 6.0 macosSpm