The Swift Package Index logo.Swift Package Index

Build Information

Failed to build MediaBridge, reference main (2c9629), with Swift 6.1 for macOS (SPM) on 29 Oct 2026 14:15:04 UTC.

Build Command

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

Build Log

10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
21 |     private var foregroundCancellable: AnyCancellable?
22 |     private var awaitingFirstResult = false
23 |     private var waiters: [CheckedContinuation<Void, Never>] = []
   |                           `- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
24 |
25 |     init(notifications: NotificationCenter = .default) {
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:53:15: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
49 |
50 |     /// Returns once the current query's first result is in.
51 |     func settle() async {
   |          `- note: add @available attribute to enclosing instance method
52 |         guard awaitingFirstResult else { return }
53 |         await withCheckedContinuation { waiters.append($0) }
   |               |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
   |               `- note: add 'if #available' version check
54 |     }
55 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:53:40: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:53:39: note: expanded code originates here
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
49 |
50 |     /// Returns once the current query's first result is in.
51 |     func settle() async {
   |          `- note: add @available attribute to enclosing instance method
52 |         guard awaitingFirstResult else { return }
53 |         await withCheckedContinuation { waiters.append($0) }
   +--- /Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift
   |51 |
   |52 |
   |53 |                                       #isolation
   |   |                                        `- error: 'isolation()' is only available in macOS 10.15 or newer
   +------------------------------------------------------------------------------------
54 |     }
55 |
macro expansion #isolation:1:1: error: 'MainActor' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:53:39: note: expanded code originates here
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
49 |
50 |     /// Returns once the current query's first result is in.
51 |     func settle() async {
   |          `- note: add @available attribute to enclosing instance method
52 |         guard awaitingFirstResult else { return }
53 |         await withCheckedContinuation { waiters.append($0) }
   +--- /Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift
   |51 |
   |52 |
   |53 |                                       #isolation
   |   +--- macro expansion #isolation ---------------------------------
   |   |1 | nil
   |   |  | `- error: 'MainActor' is only available in macOS 10.15 or newer
   |   +----------------------------------------------------------------
   +------------------------------------------------------------------------------------
54 |     }
55 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:58:15: error: 'cancel()' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
   |               |- error: 'cancel()' is only available in macOS 10.15 or newer
   |               `- note: add 'if #available' version check
59 |         awaitingFirstResult = true
60 |         let task = Task { [weak self] in
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:60:20: error: 'Task' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
59 |         awaitingFirstResult = true
60 |         let task = Task { [weak self] in
   |                    |- error: 'Task' is only available in macOS 10.15 or newer
   |                    `- note: add 'if #available' version check
61 |             self?.isLoading = true
62 |             for await result in library.results(query) {
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:60:20: error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
59 |         awaitingFirstResult = true
60 |         let task = Task { [weak self] in
   |                    |- error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
   |                    `- note: add 'if #available' version check
61 |             self?.isLoading = true
62 |             for await result in library.results(query) {
<unknown>:0: error: 'makeAsyncIterator()' is only available in macOS 10.15 or newer
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:61:13: error: setter for 'isLoading' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
59 |         awaitingFirstResult = true
60 |         let task = Task { [weak self] in
61 |             self?.isLoading = true
   |             |- error: setter for 'isLoading' is only available in macOS 10.15 or newer
   |             `- note: add 'if #available' version check
62 |             for await result in library.results(query) {
63 |                 guard !Task.isCancelled, let self else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:63:24: error: 'Task' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
   :
61 |             self?.isLoading = true
62 |             for await result in library.results(query) {
63 |                 guard !Task.isCancelled, let self else { return }
   |                        |- error: 'Task' is only available in macOS 10.15 or newer
   |                        `- note: add 'if #available' version check
64 |                 self.apply(result)
65 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:63:29: error: 'isCancelled' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
   :
61 |             self?.isLoading = true
62 |             for await result in library.results(query) {
63 |                 guard !Task.isCancelled, let self else { return }
   |                             |- error: 'isCancelled' is only available in macOS 10.15 or newer
   |                             `- note: add 'if #available' version check
64 |                 self.apply(result)
65 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:68:27: error: 'AnyCancellable' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
   :
66 |         }
67 |         feed = task
68 |         feedCancellable = AnyCancellable { task.cancel() }
   |                           |- error: 'AnyCancellable' is only available in macOS 10.15 or newer
   |                           `- note: add 'if #available' version check
69 |     }
70 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:68:49: error: 'cancel()' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
   :
66 |         }
67 |         feed = task
68 |         feedCancellable = AnyCancellable { task.cancel() }
   |                                                 |- error: 'cancel()' is only available in macOS 10.15 or newer
   |                                                 `- note: add 'if #available' version check
69 |     }
70 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:74:13: error: setter for 'elements' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
69 |     }
70 |
71 |     private func apply(_ result: Result<[Element], MusicLibraryError>) {
   |                  `- note: add @available attribute to enclosing instance method
72 |         switch result {
73 |         case .success(let elements):
74 |             self.elements = elements
   |             |- error: setter for 'elements' is only available in macOS 10.15 or newer
   |             `- note: add 'if #available' version check
75 |             error = nil
76 |         case .failure(let error):
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:75:13: error: setter for 'error' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
69 |     }
70 |
71 |     private func apply(_ result: Result<[Element], MusicLibraryError>) {
   |                  `- note: add @available attribute to enclosing instance method
72 |         switch result {
73 |         case .success(let elements):
74 |             self.elements = elements
75 |             error = nil
   |             |- error: setter for 'error' is only available in macOS 10.15 or newer
   |             `- note: add 'if #available' version check
76 |         case .failure(let error):
77 |             self.error = error
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:77:13: error: setter for 'error' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
69 |     }
70 |
71 |     private func apply(_ result: Result<[Element], MusicLibraryError>) {
   |                  `- note: add @available attribute to enclosing instance method
72 |         switch result {
73 |         case .success(let elements):
   :
75 |             error = nil
76 |         case .failure(let error):
77 |             self.error = error
   |             |- error: setter for 'error' is only available in macOS 10.15 or newer
   |             `- note: add 'if #available' version check
78 |         }
79 |         isLoading = false
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:79:9: error: setter for 'isLoading' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
69 |     }
70 |
71 |     private func apply(_ result: Result<[Element], MusicLibraryError>) {
   |                  `- note: add @available attribute to enclosing instance method
72 |         switch result {
73 |         case .success(let elements):
   :
77 |             self.error = error
78 |         }
79 |         isLoading = false
   |         |- error: setter for 'isLoading' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
80 |         awaitingFirstResult = false
81 |         let waiting = waiters
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:83:30: error: 'resume()' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
69 |     }
70 |
71 |     private func apply(_ result: Result<[Element], MusicLibraryError>) {
   |                  `- note: add @available attribute to enclosing instance method
72 |         switch result {
73 |         case .success(let elements):
   :
81 |         let waiting = waiters
82 |         waiters = []
83 |         waiting.forEach { $0.resume() }
   |                              |- error: 'resume()' is only available in macOS 10.15 or newer
   |                              `- note: add 'if #available' version check
84 |     }
85 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicLibraryEnvironment.swift:3:11: error: 'EnvironmentValues' is only available in macOS 10.15 or newer
 1 | import SwiftUI
 2 |
 3 | extension EnvironmentValues {
   | |         `- error: 'EnvironmentValues' is only available in macOS 10.15 or newer
   | `- note: add @available attribute to enclosing extension
 4 |     /// The library that ``MediaQuery`` and your views read from. Defaults to the device's library.
 5 |     @Entry public var musicLibrary: any MusicLibraryProtocol = deviceLibrary
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicLibraryEnvironment.swift:18:75: error: 'View' is only available in macOS 10.15 or newer
 6 | }
 7 |
 8 | extension View {
   | `- note: add @available attribute to enclosing extension
 9 |     /// Sets the library that ``MediaQuery`` and ``SwiftUICore/EnvironmentValues/musicLibrary`` read in
10 |     /// this view hierarchy, such as a preview library.
   :
16 |     /// }
17 |     /// ```
18 |     public func musicLibrary(_ library: any MusicLibraryProtocol) -> some View {
   |                 |                                                         `- error: 'View' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
19 |         environment(\.musicLibrary, library)
20 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicLibraryEnvironment.swift:8:11: error: 'View' is only available in macOS 10.15 or newer
 6 | }
 7 |
 8 | extension View {
   | |         `- error: 'View' is only available in macOS 10.15 or newer
   | `- note: add @available attribute to enclosing extension
 9 |     /// Sets the library that ``MediaQuery`` and ``SwiftUICore/EnvironmentValues/musicLibrary`` read in
10 |     /// this view hierarchy, such as a preview library.
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicLibraryEnvironment.swift:19:9: error: 'environment' is only available in macOS 10.15 or newer
 6 | }
 7 |
 8 | extension View {
   | `- note: add @available attribute to enclosing extension
 9 |     /// Sets the library that ``MediaQuery`` and ``SwiftUICore/EnvironmentValues/musicLibrary`` read in
10 |     /// this view hierarchy, such as a preview library.
   :
16 |     /// }
17 |     /// ```
18 |     public func musicLibrary(_ library: any MusicLibraryProtocol) -> some View {
   |                 `- note: add @available attribute to enclosing instance method
19 |         environment(\.musicLibrary, library)
   |         |- error: 'environment' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
20 |     }
21 | }
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:8:62: error: 'MPMusicPlayerController' is unavailable in macOS
 6 |     /// `MPMusicPlayerController.applicationMusicPlayer`, which plays inside your app without
 7 |     /// changing the Music app's queue.
 8 |     @Entry public var musicPlayer: any MusicPlayerProtocol = MPMusicPlayerController.applicationMusicPlayer
   |                                                              `- error: 'MPMusicPlayerController' is unavailable in macOS
 9 | }
10 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:57:12: note: 'MPMusicPlayerController' has been explicitly marked unavailable here
 55 | MP_API(ios(3.0), tvos(14.0))
 56 | API_UNAVAILABLE(watchos, macos)
 57 | @interface MPMusicPlayerController : NSObject <MPMediaPlayback>
    |            `- note: 'MPMusicPlayerController' has been explicitly marked unavailable here
 58 |
 59 | /// Playing items with applicationMusicPlayer does not affect Music's playback state.
macro expansion @Entry:3:56: error: 'MPMusicPlayerController' is unavailable in macOS
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:8:108: note: expanded code originates here
 6 |     /// `MPMusicPlayerController.applicationMusicPlayer`, which plays inside your app without
 7 |     /// changing the Music app's queue.
 8 |     @Entry public var musicPlayer: any MusicPlayerProtocol = MPMusicPlayerController.applicationMusicPlayer
   +--- macro expansion @Entry -----------------------------------------
   |1 | private struct __Key_musicPlayer: SwiftUICore.EnvironmentKey {
   |2 |     @__EntryDefaultValue
   |3 |     static var defaultValue: any MusicPlayerProtocol = MPMusicPlayerController.applicationMusicPlayer
   |  |                                                        `- error: 'MPMusicPlayerController' is unavailable in macOS
   |4 | }
   +--------------------------------------------------------------------
 9 | }
10 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:57:12: note: 'MPMusicPlayerController' has been explicitly marked unavailable here
 55 | MP_API(ios(3.0), tvos(14.0))
 56 | API_UNAVAILABLE(watchos, macos)
 57 | @interface MPMusicPlayerController : NSObject <MPMediaPlayback>
    |            `- note: 'MPMusicPlayerController' has been explicitly marked unavailable here
 58 |
 59 | /// Playing items with applicationMusicPlayer does not affect Music's playback state.
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:4:11: error: 'EnvironmentValues' is only available in macOS 10.15 or newer
 2 | import SwiftUI
 3 |
 4 | extension EnvironmentValues {
   | |         `- error: 'EnvironmentValues' is only available in macOS 10.15 or newer
   | `- note: add @available attribute to enclosing extension
 5 |     /// The player that ``NowPlaying`` and your views control. Defaults to
 6 |     /// `MPMusicPlayerController.applicationMusicPlayer`, which plays inside your app without
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:19:72: error: 'View' is only available in macOS 10.15 or newer
 9 | }
10 |
11 | extension View {
   | `- note: add @available attribute to enclosing extension
12 |     /// Sets the player that ``NowPlaying`` and ``SwiftUICore/EnvironmentValues/musicPlayer`` use in
13 |     /// this view hierarchy.
   :
17 |     ///     .musicPlayer(MPMusicPlayerController.systemMusicPlayer)   // control the Music app
18 |     /// ```
19 |     public func musicPlayer(_ player: any MusicPlayerProtocol) -> some View {
   |                 |                                                      `- error: 'View' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
20 |         environment(\.musicPlayer, player)
21 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:11:11: error: 'View' is only available in macOS 10.15 or newer
 9 | }
10 |
11 | extension View {
   | |         `- error: 'View' is only available in macOS 10.15 or newer
   | `- note: add @available attribute to enclosing extension
12 |     /// Sets the player that ``NowPlaying`` and ``SwiftUICore/EnvironmentValues/musicPlayer`` use in
13 |     /// this view hierarchy.
macro expansion @__EntryDefaultValue:3:9: error: 'MPMusicPlayerController' is unavailable in macOS
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:8:108: note: expanded code originates here
 6 |     /// `MPMusicPlayerController.applicationMusicPlayer`, which plays inside your app without
 7 |     /// changing the Music app's queue.
 8 |     @Entry public var musicPlayer: any MusicPlayerProtocol = MPMusicPlayerController.applicationMusicPlayer
   +--- macro expansion @Entry -----------------------------------------
   |1 | private struct __Key_musicPlayer: SwiftUICore.EnvironmentKey {
   |2 |     @__EntryDefaultValue
   |3 |     static var defaultValue: any MusicPlayerProtocol = MPMusicPlayerController.applicationMusicPlayer
   |  +--- macro expansion @__EntryDefaultValue ------------------------
   |  |1 | {
   |  |2 |     get {
   |  |3 |         MPMusicPlayerController.applicationMusicPlayer
   |  |  |         `- error: 'MPMusicPlayerController' is unavailable in macOS
   |  |4 |     }
   |  |5 | }
   |  +-----------------------------------------------------------------
   |4 | }
   +--------------------------------------------------------------------
 9 | }
10 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:57:12: note: 'MPMusicPlayerController' has been explicitly marked unavailable here
 55 | MP_API(ios(3.0), tvos(14.0))
 56 | API_UNAVAILABLE(watchos, macos)
 57 | @interface MPMusicPlayerController : NSObject <MPMediaPlayback>
    |            `- note: 'MPMusicPlayerController' has been explicitly marked unavailable here
 58 |
 59 | /// Playing items with applicationMusicPlayer does not affect Music's playback state.
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:20:9: error: 'environment' is only available in macOS 10.15 or newer
 9 | }
10 |
11 | extension View {
   | `- note: add @available attribute to enclosing extension
12 |     /// Sets the player that ``NowPlaying`` and ``SwiftUICore/EnvironmentValues/musicPlayer`` use in
13 |     /// this view hierarchy.
   :
17 |     ///     .musicPlayer(MPMusicPlayerController.systemMusicPlayer)   // control the Music app
18 |     /// ```
19 |     public func musicPlayer(_ player: any MusicPlayerProtocol) -> some View {
   |                 `- note: add @available attribute to enclosing instance method
20 |         environment(\.musicPlayer, player)
   |         |- error: 'environment' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
21 |     }
22 | }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:41:6: error: 'Environment' is only available in macOS 10.15 or newer
 38 | @MainActor
 39 | @propertyWrapper
 40 | public struct NowPlaying: @preconcurrency DynamicProperty {
    |               `- note: add @available attribute to enclosing struct
 41 |     @Environment(\.musicPlayer) private var player
    |      `- error: 'Environment' is only available in macOS 10.15 or newer
 42 |     @StateObject private var loader = NowPlayingLoader()
 43 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:42:6: error: 'StateObject' is only available in macOS 11.0 or newer
 38 | @MainActor
 39 | @propertyWrapper
 40 | public struct NowPlaying: @preconcurrency DynamicProperty {
    |               `- note: add @available attribute to enclosing struct
 41 |     @Environment(\.musicPlayer) private var player
 42 |     @StateObject private var loader = NowPlayingLoader()
    |      `- error: 'StateObject' is only available in macOS 11.0 or newer
 43 |
 44 |     public init() {}
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:71:35: error: 'MPMusicPlaybackState' is unavailable in macOS
 69 |
 70 |         /// Whether the player is playing, paused, stopped, interrupted, or seeking.
 71 |         public var playbackState: MPMusicPlaybackState { loader.playbackState }
    |                                   `- error: 'MPMusicPlaybackState' is unavailable in macOS
 72 |
 73 |         /// Whether the song is playing now.
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:20:28: note: 'MPMusicPlaybackState' has been explicitly marked unavailable here
 18 | @class MPMusicPlayerApplicationController;
 19 |
 20 | typedef NS_ENUM(NSInteger, MPMusicPlaybackState) {
    |                            `- note: 'MPMusicPlaybackState' has been explicitly marked unavailable here
 21 |     MPMusicPlaybackStateStopped,
 22 |     MPMusicPlaybackStatePlaying,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:84:32: error: 'MPMusicRepeatMode' is unavailable in macOS
 82 |         /// MediaPlayer sends no notification when it changes, so a change made by another app shows
 83 |         /// up when this app becomes active, or right away if you use ``setRepeatMode(_:)``.
 84 |         public var repeatMode: MPMusicRepeatMode { loader.repeatMode }
    |                                `- error: 'MPMusicRepeatMode' is unavailable in macOS
 85 |
 86 |         /// Whether the player shuffles; see ``repeatMode`` for when it updates.
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:29:28: note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 27 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 28 |
 29 | typedef NS_ENUM(NSInteger, MPMusicRepeatMode) {
    |                            `- note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 30 |     MPMusicRepeatModeDefault, // the user's preference for repeat mode
 31 |     MPMusicRepeatModeNone,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:87:33: error: 'MPMusicShuffleMode' is unavailable in macOS
 85 |
 86 |         /// Whether the player shuffles; see ``repeatMode`` for when it updates.
 87 |         public var shuffleMode: MPMusicShuffleMode { loader.shuffleMode }
    |                                 `- error: 'MPMusicShuffleMode' is unavailable in macOS
 88 |
 89 |         /// The songs in the queue, in playing order. Empty unless the player reports its queue,
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:36:28: note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 34 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 35 |
 36 | typedef NS_ENUM(NSInteger, MPMusicShuffleMode) {
    |                            `- note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 37 |     MPMusicShuffleModeDefault, // the user's preference for shuffle mode
 38 |     MPMusicShuffleModeOff,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:106:43: error: 'MPMusicRepeatMode' is unavailable in macOS
104 |
105 |         /// Sets how the player repeats and refreshes ``repeatMode``.
106 |         public func setRepeatMode(_ mode: MPMusicRepeatMode) { loader.setRepeatMode(mode) }
    |                                           `- error: 'MPMusicRepeatMode' is unavailable in macOS
107 |
108 |         /// Sets whether the player shuffles and refreshes ``shuffleMode``.
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:29:28: note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 27 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 28 |
 29 | typedef NS_ENUM(NSInteger, MPMusicRepeatMode) {
    |                            `- note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 30 |     MPMusicRepeatModeDefault, // the user's preference for repeat mode
 31 |     MPMusicRepeatModeNone,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:109:44: error: 'MPMusicShuffleMode' is unavailable in macOS
107 |
108 |         /// Sets whether the player shuffles and refreshes ``shuffleMode``.
109 |         public func setShuffleMode(_ mode: MPMusicShuffleMode) { loader.setShuffleMode(mode) }
    |                                            `- error: 'MPMusicShuffleMode' is unavailable in macOS
110 |     }
111 | }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:36:28: note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 34 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 35 |
 36 | typedef NS_ENUM(NSInteger, MPMusicShuffleMode) {
    |                            `- note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 37 |     MPMusicShuffleModeDefault, // the user's preference for shuffle mode
 38 |     MPMusicShuffleModeOff,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:10:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
 12 |     @Published private(set) var position = PlaybackPosition.zero
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:11:48: error: 'MPMusicPlaybackState' is unavailable in macOS
  9 | final class NowPlayingLoader: ObservableObject {
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    |                                                `- error: 'MPMusicPlaybackState' is unavailable in macOS
 12 |     @Published private(set) var position = PlaybackPosition.zero
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:20:28: note: 'MPMusicPlaybackState' has been explicitly marked unavailable here
 18 | @class MPMusicPlayerApplicationController;
 19 |
 20 | typedef NS_ENUM(NSInteger, MPMusicPlaybackState) {
    |                            `- note: 'MPMusicPlaybackState' has been explicitly marked unavailable here
 21 |     MPMusicPlaybackStateStopped,
 22 |     MPMusicPlaybackStatePlaying,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:11:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 12 |     @Published private(set) var position = PlaybackPosition.zero
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:12:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
 12 |     @Published private(set) var position = PlaybackPosition.zero
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:13:45: error: 'MPMusicRepeatMode' is unavailable in macOS
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
 12 |     @Published private(set) var position = PlaybackPosition.zero
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
    |                                             `- error: 'MPMusicRepeatMode' is unavailable in macOS
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
 15 |     @Published private(set) var queue: [Song] = []
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:29:28: note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 27 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 28 |
 29 | typedef NS_ENUM(NSInteger, MPMusicRepeatMode) {
    |                            `- note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 30 |     MPMusicRepeatModeDefault, // the user's preference for repeat mode
 31 |     MPMusicRepeatModeNone,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:13:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
 12 |     @Published private(set) var position = PlaybackPosition.zero
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
 15 |     @Published private(set) var queue: [Song] = []
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:14:46: error: 'MPMusicShuffleMode' is unavailable in macOS
 12 |     @Published private(set) var position = PlaybackPosition.zero
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
    |                                              `- error: 'MPMusicShuffleMode' is unavailable in macOS
 15 |     @Published private(set) var queue: [Song] = []
 16 |     @Published private(set) var queueIndex: Int?
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:36:28: note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 34 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 35 |
 36 | typedef NS_ENUM(NSInteger, MPMusicShuffleMode) {
    |                            `- note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 37 |     MPMusicShuffleModeDefault, // the user's preference for shuffle mode
 38 |     MPMusicShuffleModeOff,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:14:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
 12 |     @Published private(set) var position = PlaybackPosition.zero
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 15 |     @Published private(set) var queue: [Song] = []
 16 |     @Published private(set) var queueIndex: Int?
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:15:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
 15 |     @Published private(set) var queue: [Song] = []
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 16 |     @Published private(set) var queueIndex: Int?
 17 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:16:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
 15 |     @Published private(set) var queue: [Song] = []
 16 |     @Published private(set) var queueIndex: Int?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 17 |
 18 |     private var player: (any MusicPlayerProtocol)?
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:19:30: error: 'AnyCancellable' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 17 |
 18 |     private var player: (any MusicPlayerProtocol)?
 19 |     private var observation: AnyCancellable?
    |                              `- error: 'AnyCancellable' is only available in macOS 10.15 or newer
 20 |     private var queueTask: Task<Void, Never>?
 21 |     private var queueIsKnown = false
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:20:28: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 18 |     private var player: (any MusicPlayerProtocol)?
 19 |     private var observation: AnyCancellable?
 20 |     private var queueTask: Task<Void, Never>?
    |                            `- error: 'Task' is only available in macOS 10.15 or newer
 21 |     private var queueIsKnown = false
 22 |     private var queueReadInFlight = false
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:26:31: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 24 |     private var queueIDs: [UInt64]?
 25 |     private var queueGap: TimeInterval
 26 |     private var trailingRead: Task<Void, Never>?
    |                               `- error: 'Task' is only available in macOS 10.15 or newer
 27 |     private let baseQueueGap: TimeInterval
 28 |     private let maximumQueueGap: TimeInterval
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:82:32: error: 'MPMusicRepeatMode' is unavailable in macOS
 80 |     }
 81 |
 82 |     func setRepeatMode(_ mode: MPMusicRepeatMode) {
    |                                `- error: 'MPMusicRepeatMode' is unavailable in macOS
 83 |         player?.repeatMode = mode
 84 |         refreshPlayback()
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:29:28: note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 27 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 28 |
 29 | typedef NS_ENUM(NSInteger, MPMusicRepeatMode) {
    |                            `- note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 30 |     MPMusicRepeatModeDefault, // the user's preference for repeat mode
 31 |     MPMusicRepeatModeNone,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:87:33: error: 'MPMusicShuffleMode' is unavailable in macOS
 85 |     }
 86 |
 87 |     func setShuffleMode(_ mode: MPMusicShuffleMode) {
    |                                 `- error: 'MPMusicShuffleMode' is unavailable in macOS
 88 |         player?.shuffleMode = mode
 89 |         refreshPlayback()
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:36:28: note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 34 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 35 |
 36 | typedef NS_ENUM(NSInteger, MPMusicShuffleMode) {
    |                            `- note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 37 |     MPMusicShuffleModeDefault, // the user's preference for shuffle mode
 38 |     MPMusicShuffleModeOff,
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, Song?>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, Song?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, MPMusicPlaybackState>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, MPMusicPlaybackState>'
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, PlaybackPosition>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, PlaybackPosition>'
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, MPMusicRepeatMode>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, MPMusicRepeatMode>'
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, MPMusicShuffleMode>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, MPMusicShuffleMode>'
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, [Song]>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, [Song]>'
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, Int?>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, Int?>'
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:92:64: error: 'AnyCancellable' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  |                                             `- error: 'AnyCancellable' is only available in macOS 10.15 or newer
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:44:20: error: 'cancel()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 39 |     }
 40 |
 41 |     func update(player: any MusicPlayerProtocol) {
    |          `- note: add @available attribute to enclosing instance method
 42 |         guard player !== self.player else { return }
 43 |         observation = nil
 44 |         queueTask?.cancel()
    |                    |- error: 'cancel()' is only available in macOS 10.15 or newer
    |                    `- note: add 'if #available' version check
 45 |         trailingRead?.cancel()
 46 |         self.player = player
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:45:23: error: 'cancel()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 39 |     }
 40 |
 41 |     func update(player: any MusicPlayerProtocol) {
    |          `- note: add @available attribute to enclosing instance method
 42 |         guard player !== self.player else { return }
 43 |         observation = nil
 44 |         queueTask?.cancel()
 45 |         trailingRead?.cancel()
    |                       |- error: 'cancel()' is only available in macOS 10.15 or newer
    |                       `- note: add 'if #available' version check
 46 |         self.player = player
 47 |         queue = []
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:47:9: error: setter for 'queue' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 39 |     }
 40 |
 41 |     func update(player: any MusicPlayerProtocol) {
    |          `- note: add @available attribute to enclosing instance method
 42 |         guard player !== self.player else { return }
 43 |         observation = nil
    :
 45 |         trailingRead?.cancel()
 46 |         self.player = player
 47 |         queue = []
    |         |- error: setter for 'queue' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 48 |         queueIndex = nil
 49 |         queueIsKnown = false
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:48:9: error: setter for 'queueIndex' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 39 |     }
 40 |
 41 |     func update(player: any MusicPlayerProtocol) {
    |          `- note: add @available attribute to enclosing instance method
 42 |         guard player !== self.player else { return }
 43 |         observation = nil
    :
 46 |         self.player = player
 47 |         queue = []
 48 |         queueIndex = nil
    |         |- error: setter for 'queueIndex' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 49 |         queueIsKnown = false
 50 |         queueReadInFlight = false
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:94:43: error: 'AsyncStream' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    |                                           |- error: 'AsyncStream' is only available in macOS 10.15 or newer
    |                                           `- note: add 'if #available' version check
 95 |         let (queueChanges, queue) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
 96 |         var observers: [any NSObjectProtocol] = [
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:94:61: error: 'makeStream(of:bufferingPolicy:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    |                                                             |- error: 'makeStream(of:bufferingPolicy:)' is only available in macOS 10.15 or newer
    |                                                             `- note: add 'if #available' version check
 95 |         let (queueChanges, queue) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
 96 |         var observers: [any NSObjectProtocol] = [
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:95:37: error: 'AsyncStream' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
 95 |         let (queueChanges, queue) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    |                                     |- error: 'AsyncStream' is only available in macOS 10.15 or newer
    |                                     `- note: add 'if #available' version check
 96 |         var observers: [any NSObjectProtocol] = [
 97 |             .MPMusicPlayerControllerNowPlayingItemDidChange, .MPMusicPlayerControllerPlaybackStateDidChange,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:95:55: error: 'makeStream(of:bufferingPolicy:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
 95 |         let (queueChanges, queue) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    |                                                       |- error: 'makeStream(of:bufferingPolicy:)' is only available in macOS 10.15 or newer
    |                                                       `- note: add 'if #available' version check
 96 |         var observers: [any NSObjectProtocol] = [
 97 |             .MPMusicPlayerControllerNowPlayingItemDidChange, .MPMusicPlayerControllerPlaybackStateDidChange,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:97:14: error: 'MPMusicPlayerControllerNowPlayingItemDidChange' is unavailable in macOS
 95 |         let (queueChanges, queue) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
 96 |         var observers: [any NSObjectProtocol] = [
 97 |             .MPMusicPlayerControllerNowPlayingItemDidChange, .MPMusicPlayerControllerPlaybackStateDidChange,
    |              `- error: 'MPMusicPlayerControllerNowPlayingItemDidChange' is unavailable in macOS
 98 |         ].map { name in
 99 |             center.addObserver(forName: name, object: player, queue: nil) { _ in playback.yield() }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:138:36: note: 'MPMusicPlayerControllerNowPlayingItemDidChange' has been explicitly marked unavailable here
136 |
137 | // Posted when the currently playing media item changes.
138 | MP_EXTERN NSNotificationName const MPMusicPlayerControllerNowPlayingItemDidChangeNotification
    |                                    `- note: 'MPMusicPlayerControllerNowPlayingItemDidChange' has been explicitly marked unavailable here
139 |     MP_API(ios(3.0), tvos(14.0))
140 |     API_UNAVAILABLE(watchos, macos);
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:97:63: error: 'MPMusicPlayerControllerPlaybackStateDidChange' is unavailable in macOS
 95 |         let (queueChanges, queue) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
 96 |         var observers: [any NSObjectProtocol] = [
 97 |             .MPMusicPlayerControllerNowPlayingItemDidChange, .MPMusicPlayerControllerPlaybackStateDidChange,
    |                                                               `- error: 'MPMusicPlayerControllerPlaybackStateDidChange' is unavailable in macOS
 98 |         ].map { name in
 99 |             center.addObserver(forName: name, object: player, queue: nil) { _ in playback.yield() }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:133:36: note: 'MPMusicPlayerControllerPlaybackStateDidChange' has been explicitly marked unavailable here
131 |
132 | // Posted when the playback state changes, either programatically or by the user.
133 | MP_EXTERN NSNotificationName const MPMusicPlayerControllerPlaybackStateDidChangeNotification
    |                                    `- note: 'MPMusicPlayerControllerPlaybackStateDidChange' has been explicitly marked unavailable here
134 |     MP_API(ios(3.0), tvos(14.0))
135 |     API_UNAVAILABLE(watchos, macos);
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:99:91: error: 'yield()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
 97 |             .MPMusicPlayerControllerNowPlayingItemDidChange, .MPMusicPlayerControllerPlaybackStateDidChange,
 98 |         ].map { name in
 99 |             center.addObserver(forName: name, object: player, queue: nil) { _ in playback.yield() }
    |                                                                                           |- error: 'yield()' is only available in macOS 10.15 or newer
    |                                                                                           `- note: add 'if #available' version check
100 |         }
101 |         observers.append(
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:102:42: error: 'MPMusicPlayerControllerQueueDidChange' is unavailable in macOS
100 |         }
101 |         observers.append(
102 |             center.addObserver(forName: .MPMusicPlayerControllerQueueDidChange, object: player, queue: nil) { _ in queue.yield() })
    |                                          `- error: 'MPMusicPlayerControllerQueueDidChange' is unavailable in macOS
103 |         #if canImport(UIKit)
104 |             // Repeat and shuffle have no notification, and another app can change them while this one
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerApplicationController.h:43:28: note: 'MPMusicPlayerControllerQueueDidChange' has been explicitly marked unavailable here
41 |
42 | // Posted when the queue changes
43 | MP_EXTERN NSString * const MPMusicPlayerControllerQueueDidChangeNotification
   |                            `- note: 'MPMusicPlayerControllerQueueDidChange' has been explicitly marked unavailable here
44 |     MP_API(ios(10.3), tvos(14.0))
45 |     API_UNAVAILABLE(watchos, macos);
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:102:122: error: 'yield()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
100 |         }
101 |         observers.append(
102 |             center.addObserver(forName: .MPMusicPlayerControllerQueueDidChange, object: player, queue: nil) { _ in queue.yield() })
    |                                                                                                                          |- error: 'yield()' is only available in macOS 10.15 or newer
    |                                                                                                                          `- note: add 'if #available' version check
103 |         #if canImport(UIKit)
104 |             // Repeat and shuffle have no notification, and another app can change them while this one
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:112:28: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
110 |         #endif
111 |         player.beginGeneratingPlaybackNotifications()
112 |         let playbackTask = Task { [weak self] in
    |                            |- error: 'Task' is only available in macOS 10.15 or newer
    |                            `- note: add 'if #available' version check
113 |             for await _ in playbackChanges {
114 |                 self?.refreshPlayback()
<unknown>:0: error: 'makeAsyncIterator()' is only available in macOS 10.15 or newer
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:112:28: error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
110 |         #endif
111 |         player.beginGeneratingPlaybackNotifications()
112 |         let playbackTask = Task { [weak self] in
    |                            |- error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
    |                            `- note: add 'if #available' version check
113 |             for await _ in playbackChanges {
114 |                 self?.refreshPlayback()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:117:25: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
115 |             }
116 |         }
117 |         let queueTask = Task { [weak self] in
    |                         |- error: 'Task' is only available in macOS 10.15 or newer
    |                         `- note: add 'if #available' version check
118 |             for await _ in queueChanges {
119 |                 self?.queueDidChange()
<unknown>:0: error: 'makeAsyncIterator()' is only available in macOS 10.15 or newer
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:117:25: error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
115 |             }
116 |         }
117 |         let queueTask = Task { [weak self] in
    |                         |- error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
    |                         `- note: add 'if #available' version check
118 |             for await _ in queueChanges {
119 |                 self?.queueDidChange()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:122:16: error: 'AnyCancellable' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
120 |             }
121 |         }
122 |         return AnyCancellable {
    |                |- error: 'AnyCancellable' is only available in macOS 10.15 or newer
    |                `- note: add 'if #available' version check
123 |             observers.forEach(center.removeObserver)
124 |             playback.finish()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:126:26: error: 'cancel()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
124 |             playback.finish()
125 |             queue.finish()
126 |             playbackTask.cancel()
    |                          |- error: 'cancel()' is only available in macOS 10.15 or newer
    |                          `- note: add 'if #available' version check
127 |             queueTask.cancel()
128 |             player.endGeneratingPlaybackNotifications()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:127:23: error: 'cancel()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
125 |             queue.finish()
126 |             playbackTask.cancel()
127 |             queueTask.cancel()
    |                       |- error: 'cancel()' is only available in macOS 10.15 or newer
    |                       `- note: add 'if #available' version check
128 |             player.endGeneratingPlaybackNotifications()
129 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:137:55: error: setter for 'song' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
132 |     /// Everything that changes with playback. The queue is not read here: that is a transaction on
133 |     /// the player, so it happens once when the player is set and when the queue itself changes.
134 |     private func refreshPlayback() {
    |                  `- note: add @available attribute to enclosing instance method
135 |         guard let player else { return }
136 |         let song = player.nowPlayingSong
137 |         if song?.mediaItem !== self.song?.mediaItem { self.song = song }
    |                                                       |- error: setter for 'song' is only available in macOS 10.15 or newer
    |                                                       `- note: add 'if #available' version check
138 |         let state = player.playbackState
139 |         if state != playbackState { playbackState = state }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:139:37: error: setter for 'playbackState' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
132 |     /// Everything that changes with playback. The queue is not read here: that is a transaction on
133 |     /// the player, so it happens once when the player is set and when the queue itself changes.
134 |     private func refreshPlayback() {
    |                  `- note: add @available attribute to enclosing instance method
135 |         guard let player else { return }
136 |         let song = player.nowPlayingSong
137 |         if song?.mediaItem !== self.song?.mediaItem { self.song = song }
138 |         let state = player.playbackState
139 |         if state != playbackState { playbackState = state }
    |                                     |- error: setter for 'playbackState' is only available in macOS 10.15 or newer
    |                                     `- note: add 'if #available' version check
140 |         position = player.playbackPosition
141 |         if player.repeatMode != repeatMode { repeatMode = player.repeatMode }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:140:9: error: setter for 'position' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
132 |     /// Everything that changes with playback. The queue is not read here: that is a transaction on
133 |     /// the player, so it happens once when the player is set and when the queue itself changes.
134 |     private func refreshPlayback() {
    |                  `- note: add @available attribute to enclosing instance method
135 |         guard let player else { return }
136 |         let song = player.nowPlayingSong
    :
138 |         let state = player.playbackState
139 |         if state != playbackState { playbackState = state }
140 |         position = player.playbackPosition
    |         |- error: setter for 'position' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
141 |         if player.repeatMode != repeatMode { repeatMode = player.repeatMode }
142 |         if player.shuffleMode != shuffleMode { shuffleMode = player.shuffleMode }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:141:46: error: setter for 'repeatMode' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
132 |     /// Everything that changes with playback. The queue is not read here: that is a transaction on
133 |     /// the player, so it happens once when the player is set and when the queue itself changes.
134 |     private func refreshPlayback() {
    |                  `- note: add @available attribute to enclosing instance method
135 |         guard let player else { return }
136 |         let song = player.nowPlayingSong
    :
139 |         if state != playbackState { playbackState = state }
140 |         position = player.playbackPosition
141 |         if player.repeatMode != repeatMode { repeatMode = player.repeatMode }
    |                                              |- error: setter for 'repeatMode' is only available in macOS 10.15 or newer
    |                                              `- note: add 'if #available' version check
142 |         if player.shuffleMode != shuffleMode { shuffleMode = player.shuffleMode }
143 |         if queueIsKnown { queueIndex = player.nowPlayingIndex }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:142:48: error: setter for 'shuffleMode' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
132 |     /// Everything that changes with playback. The queue is not read here: that is a transaction on
133 |     /// the player, so it happens once when the player is set and when the queue itself changes.
134 |     private func refreshPlayback() {
    |                  `- note: add @available attribute to enclosing instance method
135 |         guard let player else { return }
136 |         let song = player.nowPlayingSong
    :
140 |         position = player.playbackPosition
141 |         if player.repeatMode != repeatMode { repeatMode = player.repeatMode }
142 |         if player.shuffleMode != shuffleMode { shuffleMode = player.shuffleMode }
    |                                                |- error: setter for 'shuffleMode' is only available in macOS 10.15 or newer
    |                                                `- note: add 'if #available' version check
143 |         if queueIsKnown { queueIndex = player.nowPlayingIndex }
144 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:143:27: error: setter for 'queueIndex' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
132 |     /// Everything that changes with playback. The queue is not read here: that is a transaction on
133 |     /// the player, so it happens once when the player is set and when the queue itself changes.
134 |     private func refreshPlayback() {
    |                  `- note: add @available attribute to enclosing instance method
135 |         guard let player else { return }
136 |         let song = player.nowPlayingSong
    :
141 |         if player.repeatMode != repeatMode { repeatMode = player.repeatMode }
142 |         if player.shuffleMode != shuffleMode { shuffleMode = player.shuffleMode }
143 |         if queueIsKnown { queueIndex = player.nowPlayingIndex }
    |                           |- error: setter for 'queueIndex' is only available in macOS 10.15 or newer
    |                           `- note: add 'if #available' version check
144 |     }
145 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:150:24: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
144 |     }
145 |
146 |     private func queueDidChange() {
    |                  `- note: add @available attribute to enclosing instance method
147 |         guard !queueReadInFlight, trailingRead == nil else { return }
148 |         let wait = queueGap - Date().timeIntervalSince(queueReadFinished)
149 |         guard wait > 0 else { return readQueue() }
150 |         trailingRead = Task { [weak self] in
    |                        |- error: 'Task' is only available in macOS 10.15 or newer
    |                        `- note: add 'if #available' version check
151 |             try? await Task.sleep(nanoseconds: UInt64(wait * 1_000_000_000))
152 |             guard !Task.isCancelled, let self else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:150:24: error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
144 |     }
145 |
146 |     private func queueDidChange() {
    |                  `- note: add @available attribute to enclosing instance method
147 |         guard !queueReadInFlight, trailingRead == nil else { return }
148 |         let wait = queueGap - Date().timeIntervalSince(queueReadFinished)
149 |         guard wait > 0 else { return readQueue() }
150 |         trailingRead = Task { [weak self] in
    |                        |- error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
    |                        `- note: add 'if #available' version check
151 |             try? await Task.sleep(nanoseconds: UInt64(wait * 1_000_000_000))
152 |             guard !Task.isCancelled, let self else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:151:24: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
144 |     }
145 |
146 |     private func queueDidChange() {
    |                  `- note: add @available attribute to enclosing instance method
147 |         guard !queueReadInFlight, trailingRead == nil else { return }
148 |         let wait = queueGap - Date().timeIntervalSince(queueReadFinished)
149 |         guard wait > 0 else { return readQueue() }
150 |         trailingRead = Task { [weak self] in
151 |             try? await Task.sleep(nanoseconds: UInt64(wait * 1_000_000_000))
    |                        |- error: 'Task' is only available in macOS 10.15 or newer
    |                        `- note: add 'if #available' version check
152 |             guard !Task.isCancelled, let self else { return }
153 |             trailingRead = nil
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:151:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
144 |     }
145 |
146 |     private func queueDidChange() {
    |                  `- note: add @available attribute to enclosing instance method
147 |         guard !queueReadInFlight, trailingRead == nil else { return }
148 |         let wait = queueGap - Date().timeIntervalSince(queueReadFinished)
149 |         guard wait > 0 else { return readQueue() }
150 |         trailingRead = Task { [weak self] in
151 |             try? await Task.sleep(nanoseconds: UInt64(wait * 1_000_000_000))
    |                             |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
152 |             guard !Task.isCancelled, let self else { return }
153 |             trailingRead = nil
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:152:20: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
144 |     }
145 |
146 |     private func queueDidChange() {
    |                  `- note: add @available attribute to enclosing instance method
147 |         guard !queueReadInFlight, trailingRead == nil else { return }
148 |         let wait = queueGap - Date().timeIntervalSince(queueReadFinished)
    :
150 |         trailingRead = Task { [weak self] in
151 |             try? await Task.sleep(nanoseconds: UInt64(wait * 1_000_000_000))
152 |             guard !Task.isCancelled, let self else { return }
    |                    |- error: 'Task' is only available in macOS 10.15 or newer
    |                    `- note: add 'if #available' version check
153 |             trailingRead = nil
154 |             readQueue()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:152:25: error: 'isCancelled' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
144 |     }
145 |
146 |     private func queueDidChange() {
    |                  `- note: add @available attribute to enclosing instance method
147 |         guard !queueReadInFlight, trailingRead == nil else { return }
148 |         let wait = queueGap - Date().timeIntervalSince(queueReadFinished)
    :
150 |         trailingRead = Task { [weak self] in
151 |             try? await Task.sleep(nanoseconds: UInt64(wait * 1_000_000_000))
152 |             guard !Task.isCancelled, let self else { return }
    |                         |- error: 'isCancelled' is only available in macOS 10.15 or newer
    |                         `- note: add 'if #available' version check
153 |             trailingRead = nil
154 |             readQueue()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:160:20: error: 'cancel()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
    |                    |- error: 'cancel()' is only available in macOS 10.15 or newer
    |                    `- note: add 'if #available' version check
161 |         queueReadInFlight = true
162 |         queueTask = Task { [weak self] in
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:162:21: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
161 |         queueReadInFlight = true
162 |         queueTask = Task { [weak self] in
    |                     |- error: 'Task' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
163 |             let songs = (try? await player.queuedSongs()) ?? nil
164 |             guard !Task.isCancelled, let self else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:162:21: error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
161 |         queueReadInFlight = true
162 |         queueTask = Task { [weak self] in
    |                     |- error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
163 |             let songs = (try? await player.queuedSongs()) ?? nil
164 |             guard !Task.isCancelled, let self else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:164:20: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
    :
162 |         queueTask = Task { [weak self] in
163 |             let songs = (try? await player.queuedSongs()) ?? nil
164 |             guard !Task.isCancelled, let self else { return }
    |                    |- error: 'Task' is only available in macOS 10.15 or newer
    |                    `- note: add 'if #available' version check
165 |             queueReadInFlight = false
166 |             queueReadFinished = Date()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:164:25: error: 'isCancelled' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
    :
162 |         queueTask = Task { [weak self] in
163 |             let songs = (try? await player.queuedSongs()) ?? nil
164 |             guard !Task.isCancelled, let self else { return }
    |                         |- error: 'isCancelled' is only available in macOS 10.15 or newer
    |                         `- note: add 'if #available' version check
165 |             queueReadInFlight = false
166 |             queueReadFinished = Date()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:171:13: error: setter for 'queue' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
    :
169 |             queueIDs = ids
170 |             queueIsKnown = songs != nil
171 |             queue = songs ?? []
    |             |- error: setter for 'queue' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
172 |             queueIndex = songs == nil ? nil : player.nowPlayingIndex
173 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:172:13: error: setter for 'queueIndex' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
    :
170 |             queueIsKnown = songs != nil
171 |             queue = songs ?? []
172 |             queueIndex = songs == nil ? nil : player.nowPlayingIndex
    |             |- error: setter for 'queueIndex' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
173 |         }
174 |     }
[61/61] Compiling MediaBridge NowPlayingLoader.swift
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:10:6: error: 'Published' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
   |      `- error: 'Published' is only available in macOS 10.15 or newer
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
12 |     /// changes don't set it, so a list doesn't flash a spinner while a song plays.
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:13:6: error: 'Published' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
12 |     /// changes don't set it, so a list doesn't flash a spinner while a song plays.
13 |     @Published private(set) var isLoading = false
   |      `- error: 'Published' is only available in macOS 10.15 or newer
14 |     @Published private(set) var error: MusicLibraryError?
15 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:14:6: error: 'Published' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
12 |     /// changes don't set it, so a list doesn't flash a spinner while a song plays.
13 |     @Published private(set) var isLoading = false
14 |     @Published private(set) var error: MusicLibraryError?
   |      `- error: 'Published' is only available in macOS 10.15 or newer
15 |
16 |     private var query: LibraryQuery<Element>?
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:19:23: error: 'Task' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
17 |     private var library: (any MusicLibraryProtocol)?
18 |     private var libraryIdentity: ObjectIdentifier?
19 |     private var feed: Task<Void, Never>?
   |                       `- error: 'Task' is only available in macOS 10.15 or newer
20 |     private var feedCancellable: AnyCancellable?
21 |     private var foregroundCancellable: AnyCancellable?
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:20:34: error: 'AnyCancellable' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
18 |     private var libraryIdentity: ObjectIdentifier?
19 |     private var feed: Task<Void, Never>?
20 |     private var feedCancellable: AnyCancellable?
   |                                  `- error: 'AnyCancellable' is only available in macOS 10.15 or newer
21 |     private var foregroundCancellable: AnyCancellable?
22 |     private var awaitingFirstResult = false
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:21:40: error: 'AnyCancellable' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
19 |     private var feed: Task<Void, Never>?
20 |     private var feedCancellable: AnyCancellable?
21 |     private var foregroundCancellable: AnyCancellable?
   |                                        `- error: 'AnyCancellable' is only available in macOS 10.15 or newer
22 |     private var awaitingFirstResult = false
23 |     private var waiters: [CheckedContinuation<Void, Never>] = []
<unknown>:0: error: cannot convert value of type 'KeyPath<MediaQueryLoader<Element>, [Element]>' to expected argument type 'ReferenceWritableKeyPath<MediaQueryLoader<Element>, [Element]>'
<unknown>:0: error: cannot convert value of type 'KeyPath<MediaQueryLoader<Element>, Bool>' to expected argument type 'ReferenceWritableKeyPath<MediaQueryLoader<Element>, Bool>'
<unknown>:0: error: cannot convert value of type 'KeyPath<MediaQueryLoader<Element>, MusicLibraryError?>' to expected argument type 'ReferenceWritableKeyPath<MediaQueryLoader<Element>, MusicLibraryError?>'
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:23:27: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
21 |     private var foregroundCancellable: AnyCancellable?
22 |     private var awaitingFirstResult = false
23 |     private var waiters: [CheckedContinuation<Void, Never>] = []
   |                           `- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
24 |
25 |     init(notifications: NotificationCenter = .default) {
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:53:15: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
49 |
50 |     /// Returns once the current query's first result is in.
51 |     func settle() async {
   |          `- note: add @available attribute to enclosing instance method
52 |         guard awaitingFirstResult else { return }
53 |         await withCheckedContinuation { waiters.append($0) }
   |               |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
   |               `- note: add 'if #available' version check
54 |     }
55 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:53:40: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:53:39: note: expanded code originates here
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
49 |
50 |     /// Returns once the current query's first result is in.
51 |     func settle() async {
   |          `- note: add @available attribute to enclosing instance method
52 |         guard awaitingFirstResult else { return }
53 |         await withCheckedContinuation { waiters.append($0) }
   +--- /Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift
   |51 |
   |52 |
   |53 |                                       #isolation
   |   |                                        `- error: 'isolation()' is only available in macOS 10.15 or newer
   +------------------------------------------------------------------------------------
54 |     }
55 |
macro expansion #isolation:1:1: error: 'MainActor' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:53:39: note: expanded code originates here
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
49 |
50 |     /// Returns once the current query's first result is in.
51 |     func settle() async {
   |          `- note: add @available attribute to enclosing instance method
52 |         guard awaitingFirstResult else { return }
53 |         await withCheckedContinuation { waiters.append($0) }
   +--- /Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift
   |51 |
   |52 |
   |53 |                                       #isolation
   |   +--- macro expansion #isolation ---------------------------------
   |   |1 | nil
   |   |  | `- error: 'MainActor' is only available in macOS 10.15 or newer
   |   +----------------------------------------------------------------
   +------------------------------------------------------------------------------------
54 |     }
55 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:58:15: error: 'cancel()' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
   |               |- error: 'cancel()' is only available in macOS 10.15 or newer
   |               `- note: add 'if #available' version check
59 |         awaitingFirstResult = true
60 |         let task = Task { [weak self] in
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:60:20: error: 'Task' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
59 |         awaitingFirstResult = true
60 |         let task = Task { [weak self] in
   |                    |- error: 'Task' is only available in macOS 10.15 or newer
   |                    `- note: add 'if #available' version check
61 |             self?.isLoading = true
62 |             for await result in library.results(query) {
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:60:20: error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
59 |         awaitingFirstResult = true
60 |         let task = Task { [weak self] in
   |                    |- error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
   |                    `- note: add 'if #available' version check
61 |             self?.isLoading = true
62 |             for await result in library.results(query) {
<unknown>:0: error: 'makeAsyncIterator()' is only available in macOS 10.15 or newer
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:61:13: error: setter for 'isLoading' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
59 |         awaitingFirstResult = true
60 |         let task = Task { [weak self] in
61 |             self?.isLoading = true
   |             |- error: setter for 'isLoading' is only available in macOS 10.15 or newer
   |             `- note: add 'if #available' version check
62 |             for await result in library.results(query) {
63 |                 guard !Task.isCancelled, let self else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:63:24: error: 'Task' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
   :
61 |             self?.isLoading = true
62 |             for await result in library.results(query) {
63 |                 guard !Task.isCancelled, let self else { return }
   |                        |- error: 'Task' is only available in macOS 10.15 or newer
   |                        `- note: add 'if #available' version check
64 |                 self.apply(result)
65 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:63:29: error: 'isCancelled' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
   :
61 |             self?.isLoading = true
62 |             for await result in library.results(query) {
63 |                 guard !Task.isCancelled, let self else { return }
   |                             |- error: 'isCancelled' is only available in macOS 10.15 or newer
   |                             `- note: add 'if #available' version check
64 |                 self.apply(result)
65 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:68:27: error: 'AnyCancellable' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
   :
66 |         }
67 |         feed = task
68 |         feedCancellable = AnyCancellable { task.cancel() }
   |                           |- error: 'AnyCancellable' is only available in macOS 10.15 or newer
   |                           `- note: add 'if #available' version check
69 |     }
70 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:68:49: error: 'cancel()' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
54 |     }
55 |
56 |     private func start() {
   |                  `- note: add @available attribute to enclosing instance method
57 |         guard let query, let library else { return }
58 |         feed?.cancel()
   :
66 |         }
67 |         feed = task
68 |         feedCancellable = AnyCancellable { task.cancel() }
   |                                                 |- error: 'cancel()' is only available in macOS 10.15 or newer
   |                                                 `- note: add 'if #available' version check
69 |     }
70 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:74:13: error: setter for 'elements' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
69 |     }
70 |
71 |     private func apply(_ result: Result<[Element], MusicLibraryError>) {
   |                  `- note: add @available attribute to enclosing instance method
72 |         switch result {
73 |         case .success(let elements):
74 |             self.elements = elements
   |             |- error: setter for 'elements' is only available in macOS 10.15 or newer
   |             `- note: add 'if #available' version check
75 |             error = nil
76 |         case .failure(let error):
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:75:13: error: setter for 'error' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
69 |     }
70 |
71 |     private func apply(_ result: Result<[Element], MusicLibraryError>) {
   |                  `- note: add @available attribute to enclosing instance method
72 |         switch result {
73 |         case .success(let elements):
74 |             self.elements = elements
75 |             error = nil
   |             |- error: setter for 'error' is only available in macOS 10.15 or newer
   |             `- note: add 'if #available' version check
76 |         case .failure(let error):
77 |             self.error = error
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:77:13: error: setter for 'error' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
69 |     }
70 |
71 |     private func apply(_ result: Result<[Element], MusicLibraryError>) {
   |                  `- note: add @available attribute to enclosing instance method
72 |         switch result {
73 |         case .success(let elements):
   :
75 |             error = nil
76 |         case .failure(let error):
77 |             self.error = error
   |             |- error: setter for 'error' is only available in macOS 10.15 or newer
   |             `- note: add 'if #available' version check
78 |         }
79 |         isLoading = false
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:79:9: error: setter for 'isLoading' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
69 |     }
70 |
71 |     private func apply(_ result: Result<[Element], MusicLibraryError>) {
   |                  `- note: add @available attribute to enclosing instance method
72 |         switch result {
73 |         case .success(let elements):
   :
77 |             self.error = error
78 |         }
79 |         isLoading = false
   |         |- error: setter for 'isLoading' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
80 |         awaitingFirstResult = false
81 |         let waiting = waiters
/Users/admin/builder/spi-builder-workspace/Sources/Views/MediaQueryLoader.swift:83:30: error: 'resume()' is only available in macOS 10.15 or newer
 7 |
 8 | @MainActor
 9 | final class MediaQueryLoader<Element: LibraryElement>: ObservableObject {
   |             `- note: add @available attribute to enclosing generic class
10 |     @Published private(set) var elements: [Element] = []
11 |     /// True until the current query's first result arrives. Later refetches triggered by library
   :
69 |     }
70 |
71 |     private func apply(_ result: Result<[Element], MusicLibraryError>) {
   |                  `- note: add @available attribute to enclosing instance method
72 |         switch result {
73 |         case .success(let elements):
   :
81 |         let waiting = waiters
82 |         waiters = []
83 |         waiting.forEach { $0.resume() }
   |                              |- error: 'resume()' is only available in macOS 10.15 or newer
   |                              `- note: add 'if #available' version check
84 |     }
85 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicLibraryEnvironment.swift:3:11: error: 'EnvironmentValues' is only available in macOS 10.15 or newer
 1 | import SwiftUI
 2 |
 3 | extension EnvironmentValues {
   | |         `- error: 'EnvironmentValues' is only available in macOS 10.15 or newer
   | `- note: add @available attribute to enclosing extension
 4 |     /// The library that ``MediaQuery`` and your views read from. Defaults to the device's library.
 5 |     @Entry public var musicLibrary: any MusicLibraryProtocol = deviceLibrary
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicLibraryEnvironment.swift:18:75: error: 'View' is only available in macOS 10.15 or newer
 6 | }
 7 |
 8 | extension View {
   | `- note: add @available attribute to enclosing extension
 9 |     /// Sets the library that ``MediaQuery`` and ``SwiftUICore/EnvironmentValues/musicLibrary`` read in
10 |     /// this view hierarchy, such as a preview library.
   :
16 |     /// }
17 |     /// ```
18 |     public func musicLibrary(_ library: any MusicLibraryProtocol) -> some View {
   |                 |                                                         `- error: 'View' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
19 |         environment(\.musicLibrary, library)
20 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicLibraryEnvironment.swift:8:11: error: 'View' is only available in macOS 10.15 or newer
 6 | }
 7 |
 8 | extension View {
   | |         `- error: 'View' is only available in macOS 10.15 or newer
   | `- note: add @available attribute to enclosing extension
 9 |     /// Sets the library that ``MediaQuery`` and ``SwiftUICore/EnvironmentValues/musicLibrary`` read in
10 |     /// this view hierarchy, such as a preview library.
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicLibraryEnvironment.swift:19:9: error: 'environment' is only available in macOS 10.15 or newer
 6 | }
 7 |
 8 | extension View {
   | `- note: add @available attribute to enclosing extension
 9 |     /// Sets the library that ``MediaQuery`` and ``SwiftUICore/EnvironmentValues/musicLibrary`` read in
10 |     /// this view hierarchy, such as a preview library.
   :
16 |     /// }
17 |     /// ```
18 |     public func musicLibrary(_ library: any MusicLibraryProtocol) -> some View {
   |                 `- note: add @available attribute to enclosing instance method
19 |         environment(\.musicLibrary, library)
   |         |- error: 'environment' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
20 |     }
21 | }
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:8:62: error: 'MPMusicPlayerController' is unavailable in macOS
 6 |     /// `MPMusicPlayerController.applicationMusicPlayer`, which plays inside your app without
 7 |     /// changing the Music app's queue.
 8 |     @Entry public var musicPlayer: any MusicPlayerProtocol = MPMusicPlayerController.applicationMusicPlayer
   |                                                              `- error: 'MPMusicPlayerController' is unavailable in macOS
 9 | }
10 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:57:12: note: 'MPMusicPlayerController' has been explicitly marked unavailable here
 55 | MP_API(ios(3.0), tvos(14.0))
 56 | API_UNAVAILABLE(watchos, macos)
 57 | @interface MPMusicPlayerController : NSObject <MPMediaPlayback>
    |            `- note: 'MPMusicPlayerController' has been explicitly marked unavailable here
 58 |
 59 | /// Playing items with applicationMusicPlayer does not affect Music's playback state.
macro expansion @Entry:3:56: error: 'MPMusicPlayerController' is unavailable in macOS
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:8:108: note: expanded code originates here
 6 |     /// `MPMusicPlayerController.applicationMusicPlayer`, which plays inside your app without
 7 |     /// changing the Music app's queue.
 8 |     @Entry public var musicPlayer: any MusicPlayerProtocol = MPMusicPlayerController.applicationMusicPlayer
   +--- macro expansion @Entry -----------------------------------------
   |1 | private struct __Key_musicPlayer: SwiftUICore.EnvironmentKey {
   |2 |     @__EntryDefaultValue
   |3 |     static var defaultValue: any MusicPlayerProtocol = MPMusicPlayerController.applicationMusicPlayer
   |  |                                                        `- error: 'MPMusicPlayerController' is unavailable in macOS
   |4 | }
   +--------------------------------------------------------------------
 9 | }
10 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:57:12: note: 'MPMusicPlayerController' has been explicitly marked unavailable here
 55 | MP_API(ios(3.0), tvos(14.0))
 56 | API_UNAVAILABLE(watchos, macos)
 57 | @interface MPMusicPlayerController : NSObject <MPMediaPlayback>
    |            `- note: 'MPMusicPlayerController' has been explicitly marked unavailable here
 58 |
 59 | /// Playing items with applicationMusicPlayer does not affect Music's playback state.
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:4:11: error: 'EnvironmentValues' is only available in macOS 10.15 or newer
 2 | import SwiftUI
 3 |
 4 | extension EnvironmentValues {
   | |         `- error: 'EnvironmentValues' is only available in macOS 10.15 or newer
   | `- note: add @available attribute to enclosing extension
 5 |     /// The player that ``NowPlaying`` and your views control. Defaults to
 6 |     /// `MPMusicPlayerController.applicationMusicPlayer`, which plays inside your app without
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:19:72: error: 'View' is only available in macOS 10.15 or newer
 9 | }
10 |
11 | extension View {
   | `- note: add @available attribute to enclosing extension
12 |     /// Sets the player that ``NowPlaying`` and ``SwiftUICore/EnvironmentValues/musicPlayer`` use in
13 |     /// this view hierarchy.
   :
17 |     ///     .musicPlayer(MPMusicPlayerController.systemMusicPlayer)   // control the Music app
18 |     /// ```
19 |     public func musicPlayer(_ player: any MusicPlayerProtocol) -> some View {
   |                 |                                                      `- error: 'View' is only available in macOS 10.15 or newer
   |                 `- note: add @available attribute to enclosing instance method
20 |         environment(\.musicPlayer, player)
21 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:11:11: error: 'View' is only available in macOS 10.15 or newer
 9 | }
10 |
11 | extension View {
   | |         `- error: 'View' is only available in macOS 10.15 or newer
   | `- note: add @available attribute to enclosing extension
12 |     /// Sets the player that ``NowPlaying`` and ``SwiftUICore/EnvironmentValues/musicPlayer`` use in
13 |     /// this view hierarchy.
macro expansion @__EntryDefaultValue:3:9: error: 'MPMusicPlayerController' is unavailable in macOS
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:8:108: note: expanded code originates here
 6 |     /// `MPMusicPlayerController.applicationMusicPlayer`, which plays inside your app without
 7 |     /// changing the Music app's queue.
 8 |     @Entry public var musicPlayer: any MusicPlayerProtocol = MPMusicPlayerController.applicationMusicPlayer
   +--- macro expansion @Entry -----------------------------------------
   |1 | private struct __Key_musicPlayer: SwiftUICore.EnvironmentKey {
   |2 |     @__EntryDefaultValue
   |3 |     static var defaultValue: any MusicPlayerProtocol = MPMusicPlayerController.applicationMusicPlayer
   |  +--- macro expansion @__EntryDefaultValue ------------------------
   |  |1 | {
   |  |2 |     get {
   |  |3 |         MPMusicPlayerController.applicationMusicPlayer
   |  |  |         `- error: 'MPMusicPlayerController' is unavailable in macOS
   |  |4 |     }
   |  |5 | }
   |  +-----------------------------------------------------------------
   |4 | }
   +--------------------------------------------------------------------
 9 | }
10 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:57:12: note: 'MPMusicPlayerController' has been explicitly marked unavailable here
 55 | MP_API(ios(3.0), tvos(14.0))
 56 | API_UNAVAILABLE(watchos, macos)
 57 | @interface MPMusicPlayerController : NSObject <MPMediaPlayback>
    |            `- note: 'MPMusicPlayerController' has been explicitly marked unavailable here
 58 |
 59 | /// Playing items with applicationMusicPlayer does not affect Music's playback state.
/Users/admin/builder/spi-builder-workspace/Sources/Views/MusicPlayerEnvironment.swift:20:9: error: 'environment' is only available in macOS 10.15 or newer
 9 | }
10 |
11 | extension View {
   | `- note: add @available attribute to enclosing extension
12 |     /// Sets the player that ``NowPlaying`` and ``SwiftUICore/EnvironmentValues/musicPlayer`` use in
13 |     /// this view hierarchy.
   :
17 |     ///     .musicPlayer(MPMusicPlayerController.systemMusicPlayer)   // control the Music app
18 |     /// ```
19 |     public func musicPlayer(_ player: any MusicPlayerProtocol) -> some View {
   |                 `- note: add @available attribute to enclosing instance method
20 |         environment(\.musicPlayer, player)
   |         |- error: 'environment' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
21 |     }
22 | }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:41:6: error: 'Environment' is only available in macOS 10.15 or newer
 38 | @MainActor
 39 | @propertyWrapper
 40 | public struct NowPlaying: @preconcurrency DynamicProperty {
    |               `- note: add @available attribute to enclosing struct
 41 |     @Environment(\.musicPlayer) private var player
    |      `- error: 'Environment' is only available in macOS 10.15 or newer
 42 |     @StateObject private var loader = NowPlayingLoader()
 43 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:42:6: error: 'StateObject' is only available in macOS 11.0 or newer
 38 | @MainActor
 39 | @propertyWrapper
 40 | public struct NowPlaying: @preconcurrency DynamicProperty {
    |               `- note: add @available attribute to enclosing struct
 41 |     @Environment(\.musicPlayer) private var player
 42 |     @StateObject private var loader = NowPlayingLoader()
    |      `- error: 'StateObject' is only available in macOS 11.0 or newer
 43 |
 44 |     public init() {}
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:71:35: error: 'MPMusicPlaybackState' is unavailable in macOS
 69 |
 70 |         /// Whether the player is playing, paused, stopped, interrupted, or seeking.
 71 |         public var playbackState: MPMusicPlaybackState { loader.playbackState }
    |                                   `- error: 'MPMusicPlaybackState' is unavailable in macOS
 72 |
 73 |         /// Whether the song is playing now.
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:20:28: note: 'MPMusicPlaybackState' has been explicitly marked unavailable here
 18 | @class MPMusicPlayerApplicationController;
 19 |
 20 | typedef NS_ENUM(NSInteger, MPMusicPlaybackState) {
    |                            `- note: 'MPMusicPlaybackState' has been explicitly marked unavailable here
 21 |     MPMusicPlaybackStateStopped,
 22 |     MPMusicPlaybackStatePlaying,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:84:32: error: 'MPMusicRepeatMode' is unavailable in macOS
 82 |         /// MediaPlayer sends no notification when it changes, so a change made by another app shows
 83 |         /// up when this app becomes active, or right away if you use ``setRepeatMode(_:)``.
 84 |         public var repeatMode: MPMusicRepeatMode { loader.repeatMode }
    |                                `- error: 'MPMusicRepeatMode' is unavailable in macOS
 85 |
 86 |         /// Whether the player shuffles; see ``repeatMode`` for when it updates.
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:29:28: note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 27 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 28 |
 29 | typedef NS_ENUM(NSInteger, MPMusicRepeatMode) {
    |                            `- note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 30 |     MPMusicRepeatModeDefault, // the user's preference for repeat mode
 31 |     MPMusicRepeatModeNone,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:87:33: error: 'MPMusicShuffleMode' is unavailable in macOS
 85 |
 86 |         /// Whether the player shuffles; see ``repeatMode`` for when it updates.
 87 |         public var shuffleMode: MPMusicShuffleMode { loader.shuffleMode }
    |                                 `- error: 'MPMusicShuffleMode' is unavailable in macOS
 88 |
 89 |         /// The songs in the queue, in playing order. Empty unless the player reports its queue,
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:36:28: note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 34 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 35 |
 36 | typedef NS_ENUM(NSInteger, MPMusicShuffleMode) {
    |                            `- note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 37 |     MPMusicShuffleModeDefault, // the user's preference for shuffle mode
 38 |     MPMusicShuffleModeOff,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:106:43: error: 'MPMusicRepeatMode' is unavailable in macOS
104 |
105 |         /// Sets how the player repeats and refreshes ``repeatMode``.
106 |         public func setRepeatMode(_ mode: MPMusicRepeatMode) { loader.setRepeatMode(mode) }
    |                                           `- error: 'MPMusicRepeatMode' is unavailable in macOS
107 |
108 |         /// Sets whether the player shuffles and refreshes ``shuffleMode``.
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:29:28: note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 27 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 28 |
 29 | typedef NS_ENUM(NSInteger, MPMusicRepeatMode) {
    |                            `- note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 30 |     MPMusicRepeatModeDefault, // the user's preference for repeat mode
 31 |     MPMusicRepeatModeNone,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlaying.swift:109:44: error: 'MPMusicShuffleMode' is unavailable in macOS
107 |
108 |         /// Sets whether the player shuffles and refreshes ``shuffleMode``.
109 |         public func setShuffleMode(_ mode: MPMusicShuffleMode) { loader.setShuffleMode(mode) }
    |                                            `- error: 'MPMusicShuffleMode' is unavailable in macOS
110 |     }
111 | }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:36:28: note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 34 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 35 |
 36 | typedef NS_ENUM(NSInteger, MPMusicShuffleMode) {
    |                            `- note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 37 |     MPMusicShuffleModeDefault, // the user's preference for shuffle mode
 38 |     MPMusicShuffleModeOff,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:10:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
 12 |     @Published private(set) var position = PlaybackPosition.zero
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:11:48: error: 'MPMusicPlaybackState' is unavailable in macOS
  9 | final class NowPlayingLoader: ObservableObject {
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    |                                                `- error: 'MPMusicPlaybackState' is unavailable in macOS
 12 |     @Published private(set) var position = PlaybackPosition.zero
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:20:28: note: 'MPMusicPlaybackState' has been explicitly marked unavailable here
 18 | @class MPMusicPlayerApplicationController;
 19 |
 20 | typedef NS_ENUM(NSInteger, MPMusicPlaybackState) {
    |                            `- note: 'MPMusicPlaybackState' has been explicitly marked unavailable here
 21 |     MPMusicPlaybackStateStopped,
 22 |     MPMusicPlaybackStatePlaying,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:11:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 12 |     @Published private(set) var position = PlaybackPosition.zero
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:12:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
 12 |     @Published private(set) var position = PlaybackPosition.zero
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:13:45: error: 'MPMusicRepeatMode' is unavailable in macOS
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
 12 |     @Published private(set) var position = PlaybackPosition.zero
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
    |                                             `- error: 'MPMusicRepeatMode' is unavailable in macOS
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
 15 |     @Published private(set) var queue: [Song] = []
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:29:28: note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 27 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 28 |
 29 | typedef NS_ENUM(NSInteger, MPMusicRepeatMode) {
    |                            `- note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 30 |     MPMusicRepeatModeDefault, // the user's preference for repeat mode
 31 |     MPMusicRepeatModeNone,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:13:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
 12 |     @Published private(set) var position = PlaybackPosition.zero
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
 15 |     @Published private(set) var queue: [Song] = []
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:14:46: error: 'MPMusicShuffleMode' is unavailable in macOS
 12 |     @Published private(set) var position = PlaybackPosition.zero
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
    |                                              `- error: 'MPMusicShuffleMode' is unavailable in macOS
 15 |     @Published private(set) var queue: [Song] = []
 16 |     @Published private(set) var queueIndex: Int?
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:36:28: note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 34 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 35 |
 36 | typedef NS_ENUM(NSInteger, MPMusicShuffleMode) {
    |                            `- note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 37 |     MPMusicShuffleModeDefault, // the user's preference for shuffle mode
 38 |     MPMusicShuffleModeOff,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:14:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
 12 |     @Published private(set) var position = PlaybackPosition.zero
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 15 |     @Published private(set) var queue: [Song] = []
 16 |     @Published private(set) var queueIndex: Int?
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:15:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 13 |     @Published private(set) var repeatMode: MPMusicRepeatMode = .default
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
 15 |     @Published private(set) var queue: [Song] = []
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 16 |     @Published private(set) var queueIndex: Int?
 17 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:16:6: error: 'Published' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 14 |     @Published private(set) var shuffleMode: MPMusicShuffleMode = .default
 15 |     @Published private(set) var queue: [Song] = []
 16 |     @Published private(set) var queueIndex: Int?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 17 |
 18 |     private var player: (any MusicPlayerProtocol)?
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:19:30: error: 'AnyCancellable' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 17 |
 18 |     private var player: (any MusicPlayerProtocol)?
 19 |     private var observation: AnyCancellable?
    |                              `- error: 'AnyCancellable' is only available in macOS 10.15 or newer
 20 |     private var queueTask: Task<Void, Never>?
 21 |     private var queueIsKnown = false
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:20:28: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 18 |     private var player: (any MusicPlayerProtocol)?
 19 |     private var observation: AnyCancellable?
 20 |     private var queueTask: Task<Void, Never>?
    |                            `- error: 'Task' is only available in macOS 10.15 or newer
 21 |     private var queueIsKnown = false
 22 |     private var queueReadInFlight = false
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:26:31: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 24 |     private var queueIDs: [UInt64]?
 25 |     private var queueGap: TimeInterval
 26 |     private var trailingRead: Task<Void, Never>?
    |                               `- error: 'Task' is only available in macOS 10.15 or newer
 27 |     private let baseQueueGap: TimeInterval
 28 |     private let maximumQueueGap: TimeInterval
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:82:32: error: 'MPMusicRepeatMode' is unavailable in macOS
 80 |     }
 81 |
 82 |     func setRepeatMode(_ mode: MPMusicRepeatMode) {
    |                                `- error: 'MPMusicRepeatMode' is unavailable in macOS
 83 |         player?.repeatMode = mode
 84 |         refreshPlayback()
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:29:28: note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 27 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 28 |
 29 | typedef NS_ENUM(NSInteger, MPMusicRepeatMode) {
    |                            `- note: 'MPMusicRepeatMode' has been explicitly marked unavailable here
 30 |     MPMusicRepeatModeDefault, // the user's preference for repeat mode
 31 |     MPMusicRepeatModeNone,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:87:33: error: 'MPMusicShuffleMode' is unavailable in macOS
 85 |     }
 86 |
 87 |     func setShuffleMode(_ mode: MPMusicShuffleMode) {
    |                                 `- error: 'MPMusicShuffleMode' is unavailable in macOS
 88 |         player?.shuffleMode = mode
 89 |         refreshPlayback()
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:36:28: note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 34 | } MP_API(ios(3.0), tvos(14.0)) API_UNAVAILABLE(watchos, macos);
 35 |
 36 | typedef NS_ENUM(NSInteger, MPMusicShuffleMode) {
    |                            `- note: 'MPMusicShuffleMode' has been explicitly marked unavailable here
 37 |     MPMusicShuffleModeDefault, // the user's preference for shuffle mode
 38 |     MPMusicShuffleModeOff,
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, Song?>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, Song?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, MPMusicPlaybackState>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, MPMusicPlaybackState>'
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, PlaybackPosition>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, PlaybackPosition>'
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, MPMusicRepeatMode>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, MPMusicRepeatMode>'
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, MPMusicShuffleMode>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, MPMusicShuffleMode>'
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, [Song]>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, [Song]>'
<unknown>:0: error: cannot convert value of type 'KeyPath<NowPlayingLoader, Int?>' to expected argument type 'ReferenceWritableKeyPath<NowPlayingLoader, Int?>'
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:92:64: error: 'AnyCancellable' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  |                                             `- error: 'AnyCancellable' is only available in macOS 10.15 or newer
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:44:20: error: 'cancel()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 39 |     }
 40 |
 41 |     func update(player: any MusicPlayerProtocol) {
    |          `- note: add @available attribute to enclosing instance method
 42 |         guard player !== self.player else { return }
 43 |         observation = nil
 44 |         queueTask?.cancel()
    |                    |- error: 'cancel()' is only available in macOS 10.15 or newer
    |                    `- note: add 'if #available' version check
 45 |         trailingRead?.cancel()
 46 |         self.player = player
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:45:23: error: 'cancel()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 39 |     }
 40 |
 41 |     func update(player: any MusicPlayerProtocol) {
    |          `- note: add @available attribute to enclosing instance method
 42 |         guard player !== self.player else { return }
 43 |         observation = nil
 44 |         queueTask?.cancel()
 45 |         trailingRead?.cancel()
    |                       |- error: 'cancel()' is only available in macOS 10.15 or newer
    |                       `- note: add 'if #available' version check
 46 |         self.player = player
 47 |         queue = []
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:47:9: error: setter for 'queue' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 39 |     }
 40 |
 41 |     func update(player: any MusicPlayerProtocol) {
    |          `- note: add @available attribute to enclosing instance method
 42 |         guard player !== self.player else { return }
 43 |         observation = nil
    :
 45 |         trailingRead?.cancel()
 46 |         self.player = player
 47 |         queue = []
    |         |- error: setter for 'queue' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 48 |         queueIndex = nil
 49 |         queueIsKnown = false
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:48:9: error: setter for 'queueIndex' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 39 |     }
 40 |
 41 |     func update(player: any MusicPlayerProtocol) {
    |          `- note: add @available attribute to enclosing instance method
 42 |         guard player !== self.player else { return }
 43 |         observation = nil
    :
 46 |         self.player = player
 47 |         queue = []
 48 |         queueIndex = nil
    |         |- error: setter for 'queueIndex' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 49 |         queueIsKnown = false
 50 |         queueReadInFlight = false
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:94:43: error: 'AsyncStream' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    |                                           |- error: 'AsyncStream' is only available in macOS 10.15 or newer
    |                                           `- note: add 'if #available' version check
 95 |         let (queueChanges, queue) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
 96 |         var observers: [any NSObjectProtocol] = [
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:94:61: error: 'makeStream(of:bufferingPolicy:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    |                                                             |- error: 'makeStream(of:bufferingPolicy:)' is only available in macOS 10.15 or newer
    |                                                             `- note: add 'if #available' version check
 95 |         let (queueChanges, queue) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
 96 |         var observers: [any NSObjectProtocol] = [
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:95:37: error: 'AsyncStream' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
 95 |         let (queueChanges, queue) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    |                                     |- error: 'AsyncStream' is only available in macOS 10.15 or newer
    |                                     `- note: add 'if #available' version check
 96 |         var observers: [any NSObjectProtocol] = [
 97 |             .MPMusicPlayerControllerNowPlayingItemDidChange, .MPMusicPlayerControllerPlaybackStateDidChange,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:95:55: error: 'makeStream(of:bufferingPolicy:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
 95 |         let (queueChanges, queue) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    |                                                       |- error: 'makeStream(of:bufferingPolicy:)' is only available in macOS 10.15 or newer
    |                                                       `- note: add 'if #available' version check
 96 |         var observers: [any NSObjectProtocol] = [
 97 |             .MPMusicPlayerControllerNowPlayingItemDidChange, .MPMusicPlayerControllerPlaybackStateDidChange,
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:97:14: error: 'MPMusicPlayerControllerNowPlayingItemDidChange' is unavailable in macOS
 95 |         let (queueChanges, queue) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
 96 |         var observers: [any NSObjectProtocol] = [
 97 |             .MPMusicPlayerControllerNowPlayingItemDidChange, .MPMusicPlayerControllerPlaybackStateDidChange,
    |              `- error: 'MPMusicPlayerControllerNowPlayingItemDidChange' is unavailable in macOS
 98 |         ].map { name in
 99 |             center.addObserver(forName: name, object: player, queue: nil) { _ in playback.yield() }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:138:36: note: 'MPMusicPlayerControllerNowPlayingItemDidChange' has been explicitly marked unavailable here
136 |
137 | // Posted when the currently playing media item changes.
138 | MP_EXTERN NSNotificationName const MPMusicPlayerControllerNowPlayingItemDidChangeNotification
    |                                    `- note: 'MPMusicPlayerControllerNowPlayingItemDidChange' has been explicitly marked unavailable here
139 |     MP_API(ios(3.0), tvos(14.0))
140 |     API_UNAVAILABLE(watchos, macos);
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:97:63: error: 'MPMusicPlayerControllerPlaybackStateDidChange' is unavailable in macOS
 95 |         let (queueChanges, queue) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
 96 |         var observers: [any NSObjectProtocol] = [
 97 |             .MPMusicPlayerControllerNowPlayingItemDidChange, .MPMusicPlayerControllerPlaybackStateDidChange,
    |                                                               `- error: 'MPMusicPlayerControllerPlaybackStateDidChange' is unavailable in macOS
 98 |         ].map { name in
 99 |             center.addObserver(forName: name, object: player, queue: nil) { _ in playback.yield() }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerController.h:133:36: note: 'MPMusicPlayerControllerPlaybackStateDidChange' has been explicitly marked unavailable here
131 |
132 | // Posted when the playback state changes, either programatically or by the user.
133 | MP_EXTERN NSNotificationName const MPMusicPlayerControllerPlaybackStateDidChangeNotification
    |                                    `- note: 'MPMusicPlayerControllerPlaybackStateDidChange' has been explicitly marked unavailable here
134 |     MP_API(ios(3.0), tvos(14.0))
135 |     API_UNAVAILABLE(watchos, macos);
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:99:91: error: 'yield()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
 97 |             .MPMusicPlayerControllerNowPlayingItemDidChange, .MPMusicPlayerControllerPlaybackStateDidChange,
 98 |         ].map { name in
 99 |             center.addObserver(forName: name, object: player, queue: nil) { _ in playback.yield() }
    |                                                                                           |- error: 'yield()' is only available in macOS 10.15 or newer
    |                                                                                           `- note: add 'if #available' version check
100 |         }
101 |         observers.append(
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:102:42: error: 'MPMusicPlayerControllerQueueDidChange' is unavailable in macOS
100 |         }
101 |         observers.append(
102 |             center.addObserver(forName: .MPMusicPlayerControllerQueueDidChange, object: player, queue: nil) { _ in queue.yield() })
    |                                          `- error: 'MPMusicPlayerControllerQueueDidChange' is unavailable in macOS
103 |         #if canImport(UIKit)
104 |             // Repeat and shuffle have no notification, and another app can change them while this one
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMusicPlayerApplicationController.h:43:28: note: 'MPMusicPlayerControllerQueueDidChange' has been explicitly marked unavailable here
41 |
42 | // Posted when the queue changes
43 | MP_EXTERN NSString * const MPMusicPlayerControllerQueueDidChangeNotification
   |                            `- note: 'MPMusicPlayerControllerQueueDidChange' has been explicitly marked unavailable here
44 |     MP_API(ios(10.3), tvos(14.0))
45 |     API_UNAVAILABLE(watchos, macos);
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:102:122: error: 'yield()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
100 |         }
101 |         observers.append(
102 |             center.addObserver(forName: .MPMusicPlayerControllerQueueDidChange, object: player, queue: nil) { _ in queue.yield() })
    |                                                                                                                          |- error: 'yield()' is only available in macOS 10.15 or newer
    |                                                                                                                          `- note: add 'if #available' version check
103 |         #if canImport(UIKit)
104 |             // Repeat and shuffle have no notification, and another app can change them while this one
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:112:28: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
110 |         #endif
111 |         player.beginGeneratingPlaybackNotifications()
112 |         let playbackTask = Task { [weak self] in
    |                            |- error: 'Task' is only available in macOS 10.15 or newer
    |                            `- note: add 'if #available' version check
113 |             for await _ in playbackChanges {
114 |                 self?.refreshPlayback()
<unknown>:0: error: 'makeAsyncIterator()' is only available in macOS 10.15 or newer
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:112:28: error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
110 |         #endif
111 |         player.beginGeneratingPlaybackNotifications()
112 |         let playbackTask = Task { [weak self] in
    |                            |- error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
    |                            `- note: add 'if #available' version check
113 |             for await _ in playbackChanges {
114 |                 self?.refreshPlayback()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:117:25: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
115 |             }
116 |         }
117 |         let queueTask = Task { [weak self] in
    |                         |- error: 'Task' is only available in macOS 10.15 or newer
    |                         `- note: add 'if #available' version check
118 |             for await _ in queueChanges {
119 |                 self?.queueDidChange()
<unknown>:0: error: 'makeAsyncIterator()' is only available in macOS 10.15 or newer
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:117:25: error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
115 |             }
116 |         }
117 |         let queueTask = Task { [weak self] in
    |                         |- error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
    |                         `- note: add 'if #available' version check
118 |             for await _ in queueChanges {
119 |                 self?.queueDidChange()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:122:16: error: 'AnyCancellable' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
120 |             }
121 |         }
122 |         return AnyCancellable {
    |                |- error: 'AnyCancellable' is only available in macOS 10.15 or newer
    |                `- note: add 'if #available' version check
123 |             observers.forEach(center.removeObserver)
124 |             playback.finish()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:126:26: error: 'cancel()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
124 |             playback.finish()
125 |             queue.finish()
126 |             playbackTask.cancel()
    |                          |- error: 'cancel()' is only available in macOS 10.15 or newer
    |                          `- note: add 'if #available' version check
127 |             queueTask.cancel()
128 |             player.endGeneratingPlaybackNotifications()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:127:23: error: 'cancel()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
 90 |     }
 91 |
 92 |     private func observe(_ player: any MusicPlayerProtocol) -> AnyCancellable {
    |                  `- note: add @available attribute to enclosing instance method
 93 |         let center = NotificationCenter.default
 94 |         let (playbackChanges, playback) = AsyncStream<Void>.makeStream(bufferingPolicy: .bufferingNewest(1))
    :
125 |             queue.finish()
126 |             playbackTask.cancel()
127 |             queueTask.cancel()
    |                       |- error: 'cancel()' is only available in macOS 10.15 or newer
    |                       `- note: add 'if #available' version check
128 |             player.endGeneratingPlaybackNotifications()
129 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:137:55: error: setter for 'song' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
132 |     /// Everything that changes with playback. The queue is not read here: that is a transaction on
133 |     /// the player, so it happens once when the player is set and when the queue itself changes.
134 |     private func refreshPlayback() {
    |                  `- note: add @available attribute to enclosing instance method
135 |         guard let player else { return }
136 |         let song = player.nowPlayingSong
137 |         if song?.mediaItem !== self.song?.mediaItem { self.song = song }
    |                                                       |- error: setter for 'song' is only available in macOS 10.15 or newer
    |                                                       `- note: add 'if #available' version check
138 |         let state = player.playbackState
139 |         if state != playbackState { playbackState = state }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:139:37: error: setter for 'playbackState' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
132 |     /// Everything that changes with playback. The queue is not read here: that is a transaction on
133 |     /// the player, so it happens once when the player is set and when the queue itself changes.
134 |     private func refreshPlayback() {
    |                  `- note: add @available attribute to enclosing instance method
135 |         guard let player else { return }
136 |         let song = player.nowPlayingSong
137 |         if song?.mediaItem !== self.song?.mediaItem { self.song = song }
138 |         let state = player.playbackState
139 |         if state != playbackState { playbackState = state }
    |                                     |- error: setter for 'playbackState' is only available in macOS 10.15 or newer
    |                                     `- note: add 'if #available' version check
140 |         position = player.playbackPosition
141 |         if player.repeatMode != repeatMode { repeatMode = player.repeatMode }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:140:9: error: setter for 'position' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
132 |     /// Everything that changes with playback. The queue is not read here: that is a transaction on
133 |     /// the player, so it happens once when the player is set and when the queue itself changes.
134 |     private func refreshPlayback() {
    |                  `- note: add @available attribute to enclosing instance method
135 |         guard let player else { return }
136 |         let song = player.nowPlayingSong
    :
138 |         let state = player.playbackState
139 |         if state != playbackState { playbackState = state }
140 |         position = player.playbackPosition
    |         |- error: setter for 'position' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
141 |         if player.repeatMode != repeatMode { repeatMode = player.repeatMode }
142 |         if player.shuffleMode != shuffleMode { shuffleMode = player.shuffleMode }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:141:46: error: setter for 'repeatMode' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
132 |     /// Everything that changes with playback. The queue is not read here: that is a transaction on
133 |     /// the player, so it happens once when the player is set and when the queue itself changes.
134 |     private func refreshPlayback() {
    |                  `- note: add @available attribute to enclosing instance method
135 |         guard let player else { return }
136 |         let song = player.nowPlayingSong
    :
139 |         if state != playbackState { playbackState = state }
140 |         position = player.playbackPosition
141 |         if player.repeatMode != repeatMode { repeatMode = player.repeatMode }
    |                                              |- error: setter for 'repeatMode' is only available in macOS 10.15 or newer
    |                                              `- note: add 'if #available' version check
142 |         if player.shuffleMode != shuffleMode { shuffleMode = player.shuffleMode }
143 |         if queueIsKnown { queueIndex = player.nowPlayingIndex }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:142:48: error: setter for 'shuffleMode' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
132 |     /// Everything that changes with playback. The queue is not read here: that is a transaction on
133 |     /// the player, so it happens once when the player is set and when the queue itself changes.
134 |     private func refreshPlayback() {
    |                  `- note: add @available attribute to enclosing instance method
135 |         guard let player else { return }
136 |         let song = player.nowPlayingSong
    :
140 |         position = player.playbackPosition
141 |         if player.repeatMode != repeatMode { repeatMode = player.repeatMode }
142 |         if player.shuffleMode != shuffleMode { shuffleMode = player.shuffleMode }
    |                                                |- error: setter for 'shuffleMode' is only available in macOS 10.15 or newer
    |                                                `- note: add 'if #available' version check
143 |         if queueIsKnown { queueIndex = player.nowPlayingIndex }
144 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:143:27: error: setter for 'queueIndex' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
132 |     /// Everything that changes with playback. The queue is not read here: that is a transaction on
133 |     /// the player, so it happens once when the player is set and when the queue itself changes.
134 |     private func refreshPlayback() {
    |                  `- note: add @available attribute to enclosing instance method
135 |         guard let player else { return }
136 |         let song = player.nowPlayingSong
    :
141 |         if player.repeatMode != repeatMode { repeatMode = player.repeatMode }
142 |         if player.shuffleMode != shuffleMode { shuffleMode = player.shuffleMode }
143 |         if queueIsKnown { queueIndex = player.nowPlayingIndex }
    |                           |- error: setter for 'queueIndex' is only available in macOS 10.15 or newer
    |                           `- note: add 'if #available' version check
144 |     }
145 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:150:24: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
144 |     }
145 |
146 |     private func queueDidChange() {
    |                  `- note: add @available attribute to enclosing instance method
147 |         guard !queueReadInFlight, trailingRead == nil else { return }
148 |         let wait = queueGap - Date().timeIntervalSince(queueReadFinished)
149 |         guard wait > 0 else { return readQueue() }
150 |         trailingRead = Task { [weak self] in
    |                        |- error: 'Task' is only available in macOS 10.15 or newer
    |                        `- note: add 'if #available' version check
151 |             try? await Task.sleep(nanoseconds: UInt64(wait * 1_000_000_000))
152 |             guard !Task.isCancelled, let self else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:150:24: error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
144 |     }
145 |
146 |     private func queueDidChange() {
    |                  `- note: add @available attribute to enclosing instance method
147 |         guard !queueReadInFlight, trailingRead == nil else { return }
148 |         let wait = queueGap - Date().timeIntervalSince(queueReadFinished)
149 |         guard wait > 0 else { return readQueue() }
150 |         trailingRead = Task { [weak self] in
    |                        |- error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
    |                        `- note: add 'if #available' version check
151 |             try? await Task.sleep(nanoseconds: UInt64(wait * 1_000_000_000))
152 |             guard !Task.isCancelled, let self else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:151:24: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
144 |     }
145 |
146 |     private func queueDidChange() {
    |                  `- note: add @available attribute to enclosing instance method
147 |         guard !queueReadInFlight, trailingRead == nil else { return }
148 |         let wait = queueGap - Date().timeIntervalSince(queueReadFinished)
149 |         guard wait > 0 else { return readQueue() }
150 |         trailingRead = Task { [weak self] in
151 |             try? await Task.sleep(nanoseconds: UInt64(wait * 1_000_000_000))
    |                        |- error: 'Task' is only available in macOS 10.15 or newer
    |                        `- note: add 'if #available' version check
152 |             guard !Task.isCancelled, let self else { return }
153 |             trailingRead = nil
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:151:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
144 |     }
145 |
146 |     private func queueDidChange() {
    |                  `- note: add @available attribute to enclosing instance method
147 |         guard !queueReadInFlight, trailingRead == nil else { return }
148 |         let wait = queueGap - Date().timeIntervalSince(queueReadFinished)
149 |         guard wait > 0 else { return readQueue() }
150 |         trailingRead = Task { [weak self] in
151 |             try? await Task.sleep(nanoseconds: UInt64(wait * 1_000_000_000))
    |                             |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
152 |             guard !Task.isCancelled, let self else { return }
153 |             trailingRead = nil
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:152:20: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
144 |     }
145 |
146 |     private func queueDidChange() {
    |                  `- note: add @available attribute to enclosing instance method
147 |         guard !queueReadInFlight, trailingRead == nil else { return }
148 |         let wait = queueGap - Date().timeIntervalSince(queueReadFinished)
    :
150 |         trailingRead = Task { [weak self] in
151 |             try? await Task.sleep(nanoseconds: UInt64(wait * 1_000_000_000))
152 |             guard !Task.isCancelled, let self else { return }
    |                    |- error: 'Task' is only available in macOS 10.15 or newer
    |                    `- note: add 'if #available' version check
153 |             trailingRead = nil
154 |             readQueue()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:152:25: error: 'isCancelled' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
144 |     }
145 |
146 |     private func queueDidChange() {
    |                  `- note: add @available attribute to enclosing instance method
147 |         guard !queueReadInFlight, trailingRead == nil else { return }
148 |         let wait = queueGap - Date().timeIntervalSince(queueReadFinished)
    :
150 |         trailingRead = Task { [weak self] in
151 |             try? await Task.sleep(nanoseconds: UInt64(wait * 1_000_000_000))
152 |             guard !Task.isCancelled, let self else { return }
    |                         |- error: 'isCancelled' is only available in macOS 10.15 or newer
    |                         `- note: add 'if #available' version check
153 |             trailingRead = nil
154 |             readQueue()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:160:20: error: 'cancel()' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
    |                    |- error: 'cancel()' is only available in macOS 10.15 or newer
    |                    `- note: add 'if #available' version check
161 |         queueReadInFlight = true
162 |         queueTask = Task { [weak self] in
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:162:21: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
161 |         queueReadInFlight = true
162 |         queueTask = Task { [weak self] in
    |                     |- error: 'Task' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
163 |             let songs = (try? await player.queuedSongs()) ?? nil
164 |             guard !Task.isCancelled, let self else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:162:21: error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
161 |         queueReadInFlight = true
162 |         queueTask = Task { [weak self] in
    |                     |- error: 'init(priority:operation:)' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
163 |             let songs = (try? await player.queuedSongs()) ?? nil
164 |             guard !Task.isCancelled, let self else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:164:20: error: 'Task' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
    :
162 |         queueTask = Task { [weak self] in
163 |             let songs = (try? await player.queuedSongs()) ?? nil
164 |             guard !Task.isCancelled, let self else { return }
    |                    |- error: 'Task' is only available in macOS 10.15 or newer
    |                    `- note: add 'if #available' version check
165 |             queueReadInFlight = false
166 |             queueReadFinished = Date()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:164:25: error: 'isCancelled' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
    :
162 |         queueTask = Task { [weak self] in
163 |             let songs = (try? await player.queuedSongs()) ?? nil
164 |             guard !Task.isCancelled, let self else { return }
    |                         |- error: 'isCancelled' is only available in macOS 10.15 or newer
    |                         `- note: add 'if #available' version check
165 |             queueReadInFlight = false
166 |             queueReadFinished = Date()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:171:13: error: setter for 'queue' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
    :
169 |             queueIDs = ids
170 |             queueIsKnown = songs != nil
171 |             queue = songs ?? []
    |             |- error: setter for 'queue' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
172 |             queueIndex = songs == nil ? nil : player.nowPlayingIndex
173 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:172:13: error: setter for 'queueIndex' is only available in macOS 10.15 or newer
  7 |
  8 | @MainActor
  9 | final class NowPlayingLoader: ObservableObject {
    |             `- note: add @available attribute to enclosing class
 10 |     @Published private(set) var song: Song?
 11 |     @Published private(set) var playbackState: MPMusicPlaybackState = .stopped
    :
156 |     }
157 |
158 |     private func readQueue() {
    |                  `- note: add @available attribute to enclosing instance method
159 |         guard let player else { return }
160 |         queueTask?.cancel()
    :
170 |             queueIsKnown = songs != nil
171 |             queue = songs ?? []
172 |             queueIndex = songs == nil ? nil : player.nowPlayingIndex
    |             |- error: setter for 'queueIndex' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
173 |         }
174 |     }
warning: 'spi-builder-workspace': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/admin/builder/spi-builder-workspace/Sources/MediaBridge.xctestplan
BUILD FAILURE 6.1 macosSpm