Build Information
Failed to build MediaBridge, reference 1.8.0 (e08581), with Swift 6.2 for macOS (SPM) on 29 Oct 2026 10:05:13 UTC.
Build Command
env DEVELOPER_DIR=/Applications/Xcode-26.3.0.app xcrun swift build --arch arm64Build Log
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(name: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) {
/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:62:13: error: 'makeAsyncIterator()' 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()
:
60 | let task = Task { [weak self] in
61 | self?.isLoading = true
62 | for await result in library.results(query) {
| |- error: 'makeAsyncIterator()' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
63 | guard !Task.isCancelled, let self else { return }
64 | self.apply(result)
/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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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
| `- note: in expansion of macro 'Entry' on property 'musicPlayer' here
+--- macro expansion @Entry -----------------------------------------
|1 | private struct __Key_musicPlayer: SwiftUICore.EnvironmentKey {
|2 | @SwiftUICore.__EntryDefaultValue
|3 | static var defaultValue: any MusicPlayerProtocol = MPMusicPlayerController.applicationMusicPlayer
| | `- error: 'MPMusicPlayerController' is unavailable in macOS
|4 | }
+--------------------------------------------------------------------
9 | }
10 |
/Applications/Xcode-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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
| `- note: in expansion of macro 'Entry' on property 'musicPlayer' here
+--- macro expansion @Entry -----------------------------------------
|1 | private struct __Key_musicPlayer: SwiftUICore.EnvironmentKey {
|2 | @SwiftUICore.__EntryDefaultValue
| | `- note: in expansion of macro '__EntryDefaultValue' on static property 'defaultValue' here
|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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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: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))
<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: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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:112:28: error: 'init(name: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(name: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:113:13: error: 'makeAsyncIterator()' 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))
:
111 | player.beginGeneratingPlaybackNotifications()
112 | let playbackTask = Task { [weak self] in
113 | for await _ in playbackChanges {
| |- error: 'makeAsyncIterator()' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
114 | self?.refreshPlayback()
115 | }
/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()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:117:25: error: 'init(name: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(name: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:118:13: error: 'makeAsyncIterator()' 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))
:
116 | }
117 | let queueTask = Task { [weak self] in
118 | for await _ in queueChanges {
| |- error: 'makeAsyncIterator()' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
119 | self?.queueDidChange()
120 | }
/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(name: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(name: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(name: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(name: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 | }
[62/62] 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>] = []
/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) {
<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: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 |
/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(name: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(name: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) {
/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:62:13: error: 'makeAsyncIterator()' 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()
:
60 | let task = Task { [weak self] in
61 | self?.isLoading = true
62 | for await result in library.results(query) {
| |- error: 'makeAsyncIterator()' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
63 | guard !Task.isCancelled, let self else { return }
64 | self.apply(result)
/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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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
| `- note: in expansion of macro 'Entry' on property 'musicPlayer' here
+--- macro expansion @Entry -----------------------------------------
|1 | private struct __Key_musicPlayer: SwiftUICore.EnvironmentKey {
|2 | @SwiftUICore.__EntryDefaultValue
|3 | static var defaultValue: any MusicPlayerProtocol = MPMusicPlayerController.applicationMusicPlayer
| | `- error: 'MPMusicPlayerController' is unavailable in macOS
|4 | }
+--------------------------------------------------------------------
9 | }
10 |
/Applications/Xcode-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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
| `- note: in expansion of macro 'Entry' on property 'musicPlayer' here
+--- macro expansion @Entry -----------------------------------------
|1 | private struct __Key_musicPlayer: SwiftUICore.EnvironmentKey {
|2 | @SwiftUICore.__EntryDefaultValue
| | `- note: in expansion of macro '__EntryDefaultValue' on static property 'defaultValue' here
|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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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: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))
<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: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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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-26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.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()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:112:28: error: 'init(name: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(name: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:113:13: error: 'makeAsyncIterator()' 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))
:
111 | player.beginGeneratingPlaybackNotifications()
112 | let playbackTask = Task { [weak self] in
113 | for await _ in playbackChanges {
| |- error: 'makeAsyncIterator()' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
114 | self?.refreshPlayback()
115 | }
/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()
/Users/admin/builder/spi-builder-workspace/Sources/Views/NowPlayingLoader.swift:117:25: error: 'init(name: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(name: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:118:13: error: 'makeAsyncIterator()' 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))
:
116 | }
117 | let queueTask = Task { [weak self] in
118 | for await _ in queueChanges {
| |- error: 'makeAsyncIterator()' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
119 | self?.queueDidChange()
120 | }
/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(name: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(name: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(name: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(name: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.2 macosSpm