Build Information
Failed to build OpenImmersive, reference 1.6.3 (670e0b), with Swift 6.4 for macOS (Xcode) using Xcode 27.0 on 9 Oct 2026 06:32:45 UTC.
Build Command
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun xcodebuild -IDEClonedSourcePackagesDirPathOverride=$PWD/.dependencies -skipMacroValidation -skipPackagePluginValidation -derivedDataPath $PWD/.derivedData build -scheme OpenImmersive -destination platform=macOS,arch=arm64Build Log
149 | private func parseAudioOptions(from text: String) async {
| `- note: add '@available' attribute to enclosing instance method
150 | var audioOptions: [AudioOption] = []
151 |
:
165 |
166 | var language = ""
167 | if let match = try? languageSearch.firstMatch(in: audio.attributes) {
| |- error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
168 | language = String(match.language)
169 | }
/Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistReader.swift:168:35: error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
9 |
10 | /// Fetches the m3u8 HLS media playlist file at the specified URL and parses information such as available resolutions.
11 | public actor PlaylistReader {
| `- note: add '@available' attribute to enclosing actor
12 | /// Errors specific to Playlist Reader
13 | public enum PlaylistReaderError: Error {
:
147 | /// - Parameters:
148 | /// - text: text to be parsed, expected to be the contents of an HLS m3u8 playlist file.
149 | private func parseAudioOptions(from text: String) async {
| `- note: add '@available' attribute to enclosing instance method
150 | var audioOptions: [AudioOption] = []
151 |
:
166 | var language = ""
167 | if let match = try? languageSearch.firstMatch(in: audio.attributes) {
168 | language = String(match.language)
| |- error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
169 | }
170 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistReader.swift:172:44: error: 'firstMatch(in:)' is only available in macOS 13.0 or newer
9 |
10 | /// Fetches the m3u8 HLS media playlist file at the specified URL and parses information such as available resolutions.
11 | public actor PlaylistReader {
| `- note: add '@available' attribute to enclosing actor
12 | /// Errors specific to Playlist Reader
13 | public enum PlaylistReaderError: Error {
:
147 | /// - Parameters:
148 | /// - text: text to be parsed, expected to be the contents of an HLS m3u8 playlist file.
149 | private func parseAudioOptions(from text: String) async {
| `- note: add '@available' attribute to enclosing instance method
150 | var audioOptions: [AudioOption] = []
151 |
:
170 |
171 | var name = ""
172 | if let match = try? nameSearch.firstMatch(in: audio.attributes) {
| |- error: 'firstMatch(in:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
173 | name = String(match.name)
174 | }
/Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistReader.swift:172:59: error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
9 |
10 | /// Fetches the m3u8 HLS media playlist file at the specified URL and parses information such as available resolutions.
11 | public actor PlaylistReader {
| `- note: add '@available' attribute to enclosing actor
12 | /// Errors specific to Playlist Reader
13 | public enum PlaylistReaderError: Error {
:
147 | /// - Parameters:
148 | /// - text: text to be parsed, expected to be the contents of an HLS m3u8 playlist file.
149 | private func parseAudioOptions(from text: String) async {
| `- note: add '@available' attribute to enclosing instance method
150 | var audioOptions: [AudioOption] = []
151 |
:
170 |
171 | var name = ""
172 | if let match = try? nameSearch.firstMatch(in: audio.attributes) {
| |- error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
173 | name = String(match.name)
174 | }
/Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistReader.swift:173:31: error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
9 |
10 | /// Fetches the m3u8 HLS media playlist file at the specified URL and parses information such as available resolutions.
11 | public actor PlaylistReader {
| `- note: add '@available' attribute to enclosing actor
12 | /// Errors specific to Playlist Reader
13 | public enum PlaylistReaderError: Error {
:
147 | /// - Parameters:
148 | /// - text: text to be parsed, expected to be the contents of an HLS m3u8 playlist file.
149 | private func parseAudioOptions(from text: String) async {
| `- note: add '@available' attribute to enclosing instance method
150 | var audioOptions: [AudioOption] = []
151 |
:
171 | var name = ""
172 | if let match = try? nameSearch.firstMatch(in: audio.attributes) {
173 | name = String(match.name)
| |- error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
174 | }
175 |
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistLoaderDelegate.swift (in target 'OpenImmersive' from project 'OpenImmersive')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PlaylistLoaderDelegate.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistReader.swift (in target 'OpenImmersive' from project 'OpenImmersive')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PlaylistReader.swift
SwiftCompile normal arm64 Compiling\ PlaylistWriter.swift,\ VideoTools.swift /Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistWriter.swift /Users/admin/builder/spi-builder-workspace/Sources/Utils/VideoTools.swift (in target 'OpenImmersive' from project 'OpenImmersive')
/Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistWriter.swift:118:25: error: 'Regex' is only available in macOS 13.0 or newer
9 |
10 | /// Maintains a local m3u8 playlist and outputs a filtered version of it to enable user selection of audio and video variants.
11 | public actor PlaylistWriter {
| `- note: add '@available' attribute to enclosing actor
12 | /// Errors specific to Playlist Writer
13 | public enum PlaylistWriterError: Error {
:
115 | /// - lines: the lines of the playlist file.
116 | /// - audio: the selected audio variant.
117 | private func filterAudio(_ lines: inout [String], _ audio: AudioOption) throws {
| `- note: add '@available' attribute to enclosing instance method
118 | let uriSearch = /URI="(?<url>[^"]+)"/
| |- error: 'Regex' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
119 | let uriMatches = { (line: String) -> Bool in
120 | if let uri = try? uriSearch.firstMatch(in: line) {
/Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistWriter.swift:120:41: error: 'firstMatch(in:)' is only available in macOS 13.0 or newer
9 |
10 | /// Maintains a local m3u8 playlist and outputs a filtered version of it to enable user selection of audio and video variants.
11 | public actor PlaylistWriter {
| `- note: add '@available' attribute to enclosing actor
12 | /// Errors specific to Playlist Writer
13 | public enum PlaylistWriterError: Error {
:
115 | /// - lines: the lines of the playlist file.
116 | /// - audio: the selected audio variant.
117 | private func filterAudio(_ lines: inout [String], _ audio: AudioOption) throws {
| `- note: add '@available' attribute to enclosing instance method
118 | let uriSearch = /URI="(?<url>[^"]+)"/
119 | let uriMatches = { (line: String) -> Bool in
120 | if let uri = try? uriSearch.firstMatch(in: line) {
| |- error: 'firstMatch(in:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
121 | return String(uri.url).contains(audio.url.relativePath)
122 | }
/Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistWriter.swift:121:31: error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
9 |
10 | /// Maintains a local m3u8 playlist and outputs a filtered version of it to enable user selection of audio and video variants.
11 | public actor PlaylistWriter {
| `- note: add '@available' attribute to enclosing actor
12 | /// Errors specific to Playlist Writer
13 | public enum PlaylistWriterError: Error {
:
115 | /// - lines: the lines of the playlist file.
116 | /// - audio: the selected audio variant.
117 | private func filterAudio(_ lines: inout [String], _ audio: AudioOption) throws {
| `- note: add '@available' attribute to enclosing instance method
118 | let uriSearch = /URI="(?<url>[^"]+)"/
119 | let uriMatches = { (line: String) -> Bool in
120 | if let uri = try? uriSearch.firstMatch(in: line) {
121 | return String(uri.url).contains(audio.url.relativePath)
| |- error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
122 | }
123 | return false
/Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistWriter.swift:140:25: error: 'Regex' is only available in macOS 13.0 or newer
9 |
10 | /// Maintains a local m3u8 playlist and outputs a filtered version of it to enable user selection of audio and video variants.
11 | public actor PlaylistWriter {
| `- note: add '@available' attribute to enclosing actor
12 | /// Errors specific to Playlist Writer
13 | public enum PlaylistWriterError: Error {
:
135 | /// - Parameters:
136 | /// - lines: the lines of the playlist file.
137 | private func makeURLsAbsolute(_ lines: inout [String]) throws {
| `- note: add '@available' attribute to enclosing instance method
138 | //TODO: throw an error if?
139 |
140 | let uriSearch = /URI="(?<url>[^"]+)"/
| |- error: 'Regex' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
141 |
142 | for (index, line) in lines.enumerated() {
/Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistWriter.swift:151:41: error: 'firstMatch(in:)' is only available in macOS 13.0 or newer
9 |
10 | /// Maintains a local m3u8 playlist and outputs a filtered version of it to enable user selection of audio and video variants.
11 | public actor PlaylistWriter {
| `- note: add '@available' attribute to enclosing actor
12 | /// Errors specific to Playlist Writer
13 | public enum PlaylistWriterError: Error {
:
135 | /// - Parameters:
136 | /// - lines: the lines of the playlist file.
137 | private func makeURLsAbsolute(_ lines: inout [String]) throws {
| `- note: add '@available' attribute to enclosing instance method
138 | //TODO: throw an error if?
139 |
:
149 |
150 | // Make URLs absolute for others (audio, subtitles, etc.)
151 | if let uri = try? uriSearch.firstMatch(in: line) {
| |- error: 'firstMatch(in:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
152 | let string = String(uri.url)
153 | lines[index] = line.replacingOccurrences(of: string, with: absoluteURL(from: string).absoluteString)
/Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistWriter.swift:152:37: error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
9 |
10 | /// Maintains a local m3u8 playlist and outputs a filtered version of it to enable user selection of audio and video variants.
11 | public actor PlaylistWriter {
| `- note: add '@available' attribute to enclosing actor
12 | /// Errors specific to Playlist Writer
13 | public enum PlaylistWriterError: Error {
:
135 | /// - Parameters:
136 | /// - lines: the lines of the playlist file.
137 | private func makeURLsAbsolute(_ lines: inout [String]) throws {
| `- note: add '@available' attribute to enclosing instance method
138 | //TODO: throw an error if?
139 |
:
150 | // Make URLs absolute for others (audio, subtitles, etc.)
151 | if let uri = try? uriSearch.firstMatch(in: line) {
152 | let string = String(uri.url)
| |- error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
153 | lines[index] = line.replacingOccurrences(of: string, with: absoluteURL(from: string).absoluteString)
154 | }
/Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistWriter.swift:164:47: error: 'host(percentEncoded:)' is only available in macOS 13.0 or newer
9 |
10 | /// Maintains a local m3u8 playlist and outputs a filtered version of it to enable user selection of audio and video variants.
11 | public actor PlaylistWriter {
| `- note: add '@available' attribute to enclosing actor
12 | /// Errors specific to Playlist Writer
13 | public enum PlaylistWriterError: Error {
:
160 | /// - string: the input string, which is assumed to be an absolute URL or a relative path.
161 | /// - Returns: a URL object to an absolute URL that's either the input string (if already absolute) or the path appended to the base URL otherwise.
162 | private func absoluteURL(from string: String) -> URL {
| `- note: add '@available' attribute to enclosing instance method
163 | // testing for host() ensures that the URL is absolute
164 | if let url = URL(string: string), url.host() != nil {
| |- error: 'host(percentEncoded:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
165 | url
166 | } else {
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistWriter.swift (in target 'OpenImmersive' from project 'OpenImmersive')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PlaylistWriter.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Utils/VideoTools.swift (in target 'OpenImmersive' from project 'OpenImmersive')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile VideoTools.swift
SwiftCompile normal arm64 Compiling\ VideoScreen.swift,\ APMPInjector.swift /Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift /Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift (in target 'OpenImmersive' from project 'OpenImmersive')
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:13:2: error: 'Observable()' is only available in macOS 14.0 or newer
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- error: 'Observable()' is only available in macOS 14.0 or newer
14 | public class VideoPlayer: Sendable {
15 | //MARK: Video Player and Video Renderer
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift:91:20: error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
76 | }
77 |
78 | public extension VideoPlayer {
| `- note: add '@available' attribute to enclosing extension
79 | /// A RealityKit video material created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
80 | /// depending on whether the media has frame packing or not.
:
89 | /// A RealityKit video player component created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
90 | /// depending on whether the media has frame packing or not.
91 | var component: VideoPlayerComponent {
| | `- error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
| `- note: add '@available' attribute to enclosing property
92 | var component: VideoPlayerComponent
93 | if let renderer {
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:37:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'projection' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
35 | private(set) public var framePacking: VideoItem.FramePacking = .none
36 | /// The projection type of the video media, defaults to VR180.
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
38 | /// A playback error, if any.
39 | private(set) public var error: Error?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:53:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'aspectRatio' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
51 | public var playbackEndedAction: CustomAction?
52 | /// The aspect ratio of the current media (width / height) (equirectangular projection only).
53 | private(set) public var aspectRatio: Float?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
54 | /// The horizontal field of view for the current media (equirectangular projection only).
55 | private(set) public var horizontalFieldOfView: Float = 180.0
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift:27:13: error: 'withObservationTracking(_:onChange:)' is only available in macOS 14.0 or newer
10 |
11 | /// Manages `Entity` with the sphere/half-sphere or native player onto which the video is projected.
12 | public class VideoScreen {
| `- note: add '@available' attribute to enclosing class
13 | /// The `Entity` containing the sphere or flat plane onto which the video is projected.
14 | public let entity: Entity = Entity()
:
20 | /// - Parameters:
21 | /// - videoPlayer: the VideoPlayer instance
22 | public func update(source videoPlayer: VideoPlayer) {
| `- note: add '@available' attribute to enclosing instance method
23 | let projection = videoPlayer.projection
24 | switch projection {
25 | case .equirectangular(fieldOfView: _, force: _):
26 | // updateSphere() must be called only once to prevent creating multiple VideoMaterial instances
27 | withObservationTracking {
| |- error: 'withObservationTracking(_:onChange:)' is only available in macOS 14.0 or newer
| `- note: add 'if #available' version check
28 | _ = videoPlayer.aspectRatio
29 | } onChange: {
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:55:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'horizontalFieldOfView' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
53 | private(set) public var aspectRatio: Float?
54 | /// The horizontal field of view for the current media (equirectangular projection only).
55 | private(set) public var horizontalFieldOfView: Float = 180.0
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
56 | /// The vertical field of view for the current media (equirectangular projection only).
57 | public var verticalFieldOfView: Float {
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift:58:27: error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
10 |
11 | /// Manages `Entity` with the sphere/half-sphere or native player onto which the video is projected.
12 | public class VideoScreen {
| `- note: add '@available' attribute to enclosing class
13 | /// The `Entity` containing the sphere or flat plane onto which the video is projected.
14 | public let entity: Entity = Entity()
:
49 | /// - Parameters:
50 | /// - videoPlayer:the VideoPlayer instance
51 | private func updateSphere(_ videoPlayer: VideoPlayer) {
| `- note: add '@available' attribute to enclosing instance method
52 | let (mesh, transform) = VideoTools.makeVideoMesh(
53 | hFov: videoPlayer.horizontalFieldOfView,
:
56 |
57 | entity.name = "VideoScreen (Sphere)"
58 | entity.components[VideoPlayerComponent.self] = nil
| |- error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
| `- note: add 'if #available' version check
59 | entity.components[ModelComponent.self] = ModelComponent(
60 | mesh: mesh,
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift:73:27: error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
10 |
11 | /// Manages `Entity` with the sphere/half-sphere or native player onto which the video is projected.
12 | public class VideoScreen {
| `- note: add '@available' attribute to enclosing class
13 | /// The `Entity` containing the sphere or flat plane onto which the video is projected.
14 | public let entity: Entity = Entity()
:
68 | /// - videoPlayer:the VideoPlayer instance
69 | /// - transform: the position of the entity (default identity)
70 | private func updateNativePlayer(_ videoPlayer: VideoPlayer, transform: Transform = .identity) {
| `- note: add '@available' attribute to enclosing instance method
71 | entity.name = "VideoScreen (Native Player)"
72 | entity.components[ModelComponent.self] = nil
73 | entity.components[VideoPlayerComponent.self] = videoPlayer.component
| |- error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
| `- note: add 'if #available' version check
74 | entity.transform = transform
75 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift:83:13: error: 'init(videoRenderer:)' is only available in macOS 15.0 or newer
76 | }
77 |
78 | public extension VideoPlayer {
| `- note: add '@available' attribute to enclosing extension
79 | /// A RealityKit video material created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
80 | /// depending on whether the media has frame packing or not.
81 | var material: VideoMaterial {
| `- note: add '@available' attribute to enclosing property
82 | if let renderer {
83 | VideoMaterial(videoRenderer: renderer)
| |- error: 'init(videoRenderer:)' is only available in macOS 15.0 or newer
| `- note: add 'if #available' version check
84 | } else {
85 | VideoMaterial(avPlayer: player)
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift:92:24: error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
76 | }
77 |
78 | public extension VideoPlayer {
| `- note: add '@available' attribute to enclosing extension
79 | /// A RealityKit video material created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
80 | /// depending on whether the media has frame packing or not.
:
89 | /// A RealityKit video player component created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
90 | /// depending on whether the media has frame packing or not.
91 | var component: VideoPlayerComponent {
| `- note: add '@available' attribute to enclosing property
92 | var component: VideoPlayerComponent
| |- error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
| `- note: add 'if #available' version check
93 | if let renderer {
94 | component = VideoPlayerComponent(videoRenderer: renderer)
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift:94:25: error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
76 | }
77 |
78 | public extension VideoPlayer {
| `- note: add '@available' attribute to enclosing extension
79 | /// A RealityKit video material created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
80 | /// depending on whether the media has frame packing or not.
:
89 | /// A RealityKit video player component created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
90 | /// depending on whether the media has frame packing or not.
91 | var component: VideoPlayerComponent {
| `- note: add '@available' attribute to enclosing property
92 | var component: VideoPlayerComponent
93 | if let renderer {
94 | component = VideoPlayerComponent(videoRenderer: renderer)
| |- error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
| `- note: add 'if #available' version check
95 | } else {
96 | component = VideoPlayerComponent(avPlayer: player)
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift:94:25: error: 'init(videoRenderer:)' is only available in macOS 15.0 or newer
76 | }
77 |
78 | public extension VideoPlayer {
| `- note: add '@available' attribute to enclosing extension
79 | /// A RealityKit video material created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
80 | /// depending on whether the media has frame packing or not.
:
89 | /// A RealityKit video player component created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
90 | /// depending on whether the media has frame packing or not.
91 | var component: VideoPlayerComponent {
| `- note: add '@available' attribute to enclosing property
92 | var component: VideoPlayerComponent
93 | if let renderer {
94 | component = VideoPlayerComponent(videoRenderer: renderer)
| |- error: 'init(videoRenderer:)' is only available in macOS 15.0 or newer
| `- note: add 'if #available' version check
95 | } else {
96 | component = VideoPlayerComponent(avPlayer: player)
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift:96:25: error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
76 | }
77 |
78 | public extension VideoPlayer {
| `- note: add '@available' attribute to enclosing extension
79 | /// A RealityKit video material created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
80 | /// depending on whether the media has frame packing or not.
:
89 | /// A RealityKit video player component created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
90 | /// depending on whether the media has frame packing or not.
91 | var component: VideoPlayerComponent {
| `- note: add '@available' attribute to enclosing property
92 | var component: VideoPlayerComponent
93 | if let renderer {
94 | component = VideoPlayerComponent(videoRenderer: renderer)
95 | } else {
96 | component = VideoPlayerComponent(avPlayer: player)
| |- error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
| `- note: add 'if #available' version check
97 | }
98 | component.desiredViewingMode = .stereo
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift:98:19: error: 'desiredViewingMode' is only available in macOS 15.0 or newer
76 | }
77 |
78 | public extension VideoPlayer {
| `- note: add '@available' attribute to enclosing extension
79 | /// A RealityKit video material created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
80 | /// depending on whether the media has frame packing or not.
:
89 | /// A RealityKit video player component created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
90 | /// depending on whether the media has frame packing or not.
91 | var component: VideoPlayerComponent {
| `- note: add '@available' attribute to enclosing property
92 | var component: VideoPlayerComponent
93 | if let renderer {
:
96 | component = VideoPlayerComponent(avPlayer: player)
97 | }
98 | component.desiredViewingMode = .stereo
| |- error: 'desiredViewingMode' is only available in macOS 15.0 or newer
| `- note: add 'if #available' version check
99 | component.desiredImmersiveViewingMode = .full
100 | return component
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift:98:41: error: 'stereo' is unavailable in macOS
96 | component = VideoPlayerComponent(avPlayer: player)
97 | }
98 | component.desiredViewingMode = .stereo
| `- error: 'stereo' is unavailable in macOS
99 | component.desiredImmersiveViewingMode = .full
100 | return component
RealityKit.VideoPlaybackController.ViewingMode.stereo:7:10: note: 'stereo' has been explicitly marked unavailable here
5 | @available(iOS, unavailable)
6 | @available(tvOS, unavailable)
7 | case stereo }
| `- note: 'stereo' has been explicitly marked unavailable here
8 | }
9 |
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift:99:19: error: 'desiredImmersiveViewingMode' is unavailable in macOS
97 | }
98 | component.desiredViewingMode = .stereo
99 | component.desiredImmersiveViewingMode = .full
| `- error: 'desiredImmersiveViewingMode' is unavailable in macOS
100 | return component
101 | }
RealityKit.VideoPlayerComponent.desiredImmersiveViewingMode:8:14: note: 'desiredImmersiveViewingMode' has been explicitly marked unavailable here
6 | @available(watchOS, unavailable)
7 | @available(macCatalyst, unavailable)
8 | public var desiredImmersiveViewingMode: VideoPlayerComponent.ImmersiveViewingMode { get set }}
| `- note: 'desiredImmersiveViewingMode' has been explicitly marked unavailable here
9 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift:22:27: error: 'AVSampleBufferVideoRenderer' is only available in macOS 14.0 or newer
11 |
12 | /// Injects APMP metadata into frames to render stereo frame-packed media efficiently.
13 | public class APMPInjector {
| `- note: add '@available' attribute to enclosing class
14 | /// Errors specific to APMP Injector.
15 | public enum APMPInjectorError: Error {
:
20 | /// The renderer to use for enqueueing. Expose this so callers can
21 | /// associate it with a display layer or RealityKit component.
22 | public let renderer = AVSampleBufferVideoRenderer()
| `- error: 'AVSampleBufferVideoRenderer' is only available in macOS 14.0 or newer
23 | /// The source media's frame packing type, must be .sideBySide or .overUnder.
24 | private let packing: VideoItem.FramePacking
/Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift:118:87: error: 'ViewPackingKind' is only available in macOS 26.0 or newer
11 |
12 | /// Injects APMP metadata into frames to render stereo frame-packed media efficiently.
13 | public class APMPInjector {
| `- note: add '@available' attribute to enclosing class
14 | /// Errors specific to APMP Injector.
15 | public enum APMPInjectorError: Error {
:
110 | /// - pixelBuffer: The video pixel buffer of the current frame.
111 | /// - Returns: The CoreMedia format description object with APMP tags.
112 | private func createAPMPFormatDescription(
| `- note: add '@available' attribute to enclosing instance method
113 | for pixelBuffer: CVPixelBuffer
114 | ) throws -> CMFormatDescription {
:
116 | var extensions = baseFormat.extensions
117 |
118 | let (packingKind, baseline, disparity): (CMFormatDescription.Extensions.Value.ViewPackingKind, Float?, Float?)
| |- error: 'ViewPackingKind' is only available in macOS 26.0 or newer
| `- note: add 'if #available' version check
119 | (packingKind, baseline, disparity) = switch packing {
120 | case .none: (.sideBySide, nil, nil) // unreachable
/Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift:125:21: error: 'viewPackingKind' is only available in macOS 26.0 or newer
11 |
12 | /// Injects APMP metadata into frames to render stereo frame-packed media efficiently.
13 | public class APMPInjector {
| `- note: add '@available' attribute to enclosing class
14 | /// Errors specific to APMP Injector.
15 | public enum APMPInjectorError: Error {
:
110 | /// - pixelBuffer: The video pixel buffer of the current frame.
111 | /// - Returns: The CoreMedia format description object with APMP tags.
112 | private func createAPMPFormatDescription(
| `- note: add '@available' attribute to enclosing instance method
113 | for pixelBuffer: CVPixelBuffer
114 | ) throws -> CMFormatDescription {
:
123 | }
124 |
125 | extensions[.viewPackingKind] = .viewPackingKind(packingKind)
| |- error: 'viewPackingKind' is only available in macOS 26.0 or newer
| `- note: add 'if #available' version check
126 | if let baseline {
127 | // multiply by 1000 to go from mm to µm
/Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift:125:41: error: 'viewPackingKind' is only available in macOS 26.0 or newer
11 |
12 | /// Injects APMP metadata into frames to render stereo frame-packed media efficiently.
13 | public class APMPInjector {
| `- note: add '@available' attribute to enclosing class
14 | /// Errors specific to APMP Injector.
15 | public enum APMPInjectorError: Error {
:
110 | /// - pixelBuffer: The video pixel buffer of the current frame.
111 | /// - Returns: The CoreMedia format description object with APMP tags.
112 | private func createAPMPFormatDescription(
| `- note: add '@available' attribute to enclosing instance method
113 | for pixelBuffer: CVPixelBuffer
114 | ) throws -> CMFormatDescription {
:
123 | }
124 |
125 | extensions[.viewPackingKind] = .viewPackingKind(packingKind)
| |- error: 'viewPackingKind' is only available in macOS 26.0 or newer
| `- note: add 'if #available' version check
126 | if let baseline {
127 | // multiply by 1000 to go from mm to µm
/Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift:128:25: error: 'stereoCameraBaseline' is only available in macOS 14.0 or newer
11 |
12 | /// Injects APMP metadata into frames to render stereo frame-packed media efficiently.
13 | public class APMPInjector {
| `- note: add '@available' attribute to enclosing class
14 | /// Errors specific to APMP Injector.
15 | public enum APMPInjectorError: Error {
:
110 | /// - pixelBuffer: The video pixel buffer of the current frame.
111 | /// - Returns: The CoreMedia format description object with APMP tags.
112 | private func createAPMPFormatDescription(
| `- note: add '@available' attribute to enclosing instance method
113 | for pixelBuffer: CVPixelBuffer
114 | ) throws -> CMFormatDescription {
:
126 | if let baseline {
127 | // multiply by 1000 to go from mm to µm
128 | extensions[.stereoCameraBaseline] = .number(UInt32(baseline * 1000))
| |- error: 'stereoCameraBaseline' is only available in macOS 14.0 or newer
| `- note: add 'if #available' version check
129 | }
130 | if let disparity {
/Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift:132:25: error: 'horizontalDisparityAdjustment' is only available in macOS 14.0 or newer
11 |
12 | /// Injects APMP metadata into frames to render stereo frame-packed media efficiently.
13 | public class APMPInjector {
| `- note: add '@available' attribute to enclosing class
14 | /// Errors specific to APMP Injector.
15 | public enum APMPInjectorError: Error {
:
110 | /// - pixelBuffer: The video pixel buffer of the current frame.
111 | /// - Returns: The CoreMedia format description object with APMP tags.
112 | private func createAPMPFormatDescription(
| `- note: add '@available' attribute to enclosing instance method
113 | for pixelBuffer: CVPixelBuffer
114 | ) throws -> CMFormatDescription {
:
130 | if let disparity {
131 | // clamp from [-1.0, 1.0] and multiply by 10,000 to go in tenths of thousandth of the uniform range
132 | extensions[.horizontalDisparityAdjustment] = .number(Int32(min(max(disparity, -1.0), 1.0) * 10000))
| |- error: 'horizontalDisparityAdjustment' is only available in macOS 14.0 or newer
| `- note: add 'if #available' version check
133 | }
134 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift:135:82: error: 'ProjectionKind' is only available in macOS 26.0 or newer
11 |
12 | /// Injects APMP metadata into frames to render stereo frame-packed media efficiently.
13 | public class APMPInjector {
| `- note: add '@available' attribute to enclosing class
14 | /// Errors specific to APMP Injector.
15 | public enum APMPInjectorError: Error {
:
110 | /// - pixelBuffer: The video pixel buffer of the current frame.
111 | /// - Returns: The CoreMedia format description object with APMP tags.
112 | private func createAPMPFormatDescription(
| `- note: add '@available' attribute to enclosing instance method
113 | for pixelBuffer: CVPixelBuffer
114 | ) throws -> CMFormatDescription {
:
133 | }
134 |
135 | let (projectionKind, fieldOfView): (CMFormatDescription.Extensions.Value.ProjectionKind, Float)
| |- error: 'ProjectionKind' is only available in macOS 26.0 or newer
| `- note: add 'if #available' version check
136 | (projectionKind, fieldOfView) = switch projection {
137 | case .equirectangular(let fieldOfView, let _): (fieldOfView > 180 ? .equirectangular : .halfEquirectangular, fieldOfView)
/Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift:137:48: warning: 'let' pattern has no effect; sub-pattern didn't bind any variables
135 | let (projectionKind, fieldOfView): (CMFormatDescription.Extensions.Value.ProjectionKind, Float)
136 | (projectionKind, fieldOfView) = switch projection {
137 | case .equirectangular(let fieldOfView, let _): (fieldOfView > 180 ? .equirectangular : .halfEquirectangular, fieldOfView)
| `- warning: 'let' pattern has no effect; sub-pattern didn't bind any variables
138 | case .rectangular: (.rectilinear, 65.0) // hard-coded typical spatial video field of view
139 | case .appleImmersive: (.appleImmersiveVideo, 180.0)
/Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift:142:21: error: 'projectionKind' is only available in macOS 15.0 or newer
11 |
12 | /// Injects APMP metadata into frames to render stereo frame-packed media efficiently.
13 | public class APMPInjector {
| `- note: add '@available' attribute to enclosing class
14 | /// Errors specific to APMP Injector.
15 | public enum APMPInjectorError: Error {
:
110 | /// - pixelBuffer: The video pixel buffer of the current frame.
111 | /// - Returns: The CoreMedia format description object with APMP tags.
112 | private func createAPMPFormatDescription(
| `- note: add '@available' attribute to enclosing instance method
113 | for pixelBuffer: CVPixelBuffer
114 | ) throws -> CMFormatDescription {
:
140 | }
141 |
142 | extensions[.projectionKind] = .projectionKind(projectionKind)
| |- error: 'projectionKind' is only available in macOS 15.0 or newer
| `- note: add 'if #available' version check
143 | // multiply by 1000 to go from degrees to thousandth of degrees
144 | extensions[.horizontalFieldOfView] = .number(UInt32(fieldOfView * 1000))
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift (in target 'OpenImmersive' from project 'OpenImmersive')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile VideoScreen.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift (in target 'OpenImmersive' from project 'OpenImmersive')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile APMPInjector.swift
SwiftCompile normal arm64 Compiling\ Closures.swift,\ Config.swift /Users/admin/builder/spi-builder-workspace/Sources/Utils/Closures.swift /Users/admin/builder/spi-builder-workspace/Sources/Utils/Config.swift (in target 'OpenImmersive' from project 'OpenImmersive')
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Utils/Closures.swift (in target 'OpenImmersive' from project 'OpenImmersive')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile Closures.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Utils/Config.swift (in target 'OpenImmersive' from project 'OpenImmersive')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile Config.swift
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:13:2: error: 'Observable()' is only available in macOS 14.0 or newer
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- error: 'Observable()' is only available in macOS 14.0 or newer
14 | public class VideoPlayer: Sendable {
15 | //MARK: Video Player and Video Renderer
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Closures.swift:19:29: error: cannot find type 'simd_quatf' in scope
17 | public var body: CustomViewBuilder
18 | public var position: SIMD3<Float>
19 | public var orientation: simd_quatf
| `- error: cannot find type 'simd_quatf' in scope
20 | public var relativeToControlPanel: Bool
21 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Closures.swift:22:101: error: cannot find type 'simd_quatf' in scope
20 | public var relativeToControlPanel: Bool
21 |
22 | public init(id: String, body: @escaping CustomViewBuilder, position: SIMD3<Float>, orientation: simd_quatf, relativeToControlPanel: Bool) {
| `- error: cannot find type 'simd_quatf' in scope
23 | self.id = id
24 | self.body = body
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Config.swift:91:27: error: 'Regex' is only available in macOS 13.0 or newer
10 |
11 | /// Fetches custom values in the application's openimmersive.plist
12 | public final class Config: Sendable {
| `- note: add '@available' attribute to enclosing class
13 | /// URL scheme to substitute to http/https for loading HLS playlists (String): this is needed for selecting bandwidth or audio.
14 | public let customHttpUrlScheme: String
:
87 | /// - colorString: text to be parsed, expected to be a hex color literal in the #RRGGBB or #RRGGBBAA format.
88 | /// - Returns: the corresponding Color, if the string is well formatted, otherwise nil.
89 | private static func color(from colorString: String) -> Color? {
| `- note: add '@available' attribute to enclosing static method
90 | let trimmedString = colorString.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
91 | let colorSearch = /#(?<red>[0-9A-F]{2})(?<green>[0-9A-F]{2})(?<blue>[0-9A-F]{2})(?<alpha>[0-9A-F]{2})?/
| |- error: 'Regex' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
92 |
93 | guard let color = try? colorSearch.firstMatch(in: trimmedString),
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Config.swift:93:44: error: 'firstMatch(in:)' is only available in macOS 13.0 or newer
10 |
11 | /// Fetches custom values in the application's openimmersive.plist
12 | public final class Config: Sendable {
| `- note: add '@available' attribute to enclosing class
13 | /// URL scheme to substitute to http/https for loading HLS playlists (String): this is needed for selecting bandwidth or audio.
14 | public let customHttpUrlScheme: String
:
87 | /// - colorString: text to be parsed, expected to be a hex color literal in the #RRGGBB or #RRGGBBAA format.
88 | /// - Returns: the corresponding Color, if the string is well formatted, otherwise nil.
89 | private static func color(from colorString: String) -> Color? {
| `- note: add '@available' attribute to enclosing static method
90 | let trimmedString = colorString.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
91 | let colorSearch = /#(?<red>[0-9A-F]{2})(?<green>[0-9A-F]{2})(?<blue>[0-9A-F]{2})(?<alpha>[0-9A-F]{2})?/
92 |
93 | guard let color = try? colorSearch.firstMatch(in: trimmedString),
| |- error: 'firstMatch(in:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
94 | let red256 = Int(color.red, radix: 16),
95 | let green256 = Int(color.green, radix: 16),
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Config.swift:94:32: error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
10 |
11 | /// Fetches custom values in the application's openimmersive.plist
12 | public final class Config: Sendable {
| `- note: add '@available' attribute to enclosing class
13 | /// URL scheme to substitute to http/https for loading HLS playlists (String): this is needed for selecting bandwidth or audio.
14 | public let customHttpUrlScheme: String
:
87 | /// - colorString: text to be parsed, expected to be a hex color literal in the #RRGGBB or #RRGGBBAA format.
88 | /// - Returns: the corresponding Color, if the string is well formatted, otherwise nil.
89 | private static func color(from colorString: String) -> Color? {
| `- note: add '@available' attribute to enclosing static method
90 | let trimmedString = colorString.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
91 | let colorSearch = /#(?<red>[0-9A-F]{2})(?<green>[0-9A-F]{2})(?<blue>[0-9A-F]{2})(?<alpha>[0-9A-F]{2})?/
92 |
93 | guard let color = try? colorSearch.firstMatch(in: trimmedString),
94 | let red256 = Int(color.red, radix: 16),
| |- error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
95 | let green256 = Int(color.green, radix: 16),
96 | let blue256 = Int(color.blue, radix: 16) else {
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Config.swift:95:34: error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
10 |
11 | /// Fetches custom values in the application's openimmersive.plist
12 | public final class Config: Sendable {
| `- note: add '@available' attribute to enclosing class
13 | /// URL scheme to substitute to http/https for loading HLS playlists (String): this is needed for selecting bandwidth or audio.
14 | public let customHttpUrlScheme: String
:
87 | /// - colorString: text to be parsed, expected to be a hex color literal in the #RRGGBB or #RRGGBBAA format.
88 | /// - Returns: the corresponding Color, if the string is well formatted, otherwise nil.
89 | private static func color(from colorString: String) -> Color? {
| `- note: add '@available' attribute to enclosing static method
90 | let trimmedString = colorString.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
91 | let colorSearch = /#(?<red>[0-9A-F]{2})(?<green>[0-9A-F]{2})(?<blue>[0-9A-F]{2})(?<alpha>[0-9A-F]{2})?/
:
93 | guard let color = try? colorSearch.firstMatch(in: trimmedString),
94 | let red256 = Int(color.red, radix: 16),
95 | let green256 = Int(color.green, radix: 16),
| |- error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
96 | let blue256 = Int(color.blue, radix: 16) else {
97 | print("OpenImmersive could not parse the color: \(colorString). Accepted formats: #RRGGBB or #RRGGBBAA")
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Config.swift:96:33: error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
10 |
11 | /// Fetches custom values in the application's openimmersive.plist
12 | public final class Config: Sendable {
| `- note: add '@available' attribute to enclosing class
13 | /// URL scheme to substitute to http/https for loading HLS playlists (String): this is needed for selecting bandwidth or audio.
14 | public let customHttpUrlScheme: String
:
87 | /// - colorString: text to be parsed, expected to be a hex color literal in the #RRGGBB or #RRGGBBAA format.
88 | /// - Returns: the corresponding Color, if the string is well formatted, otherwise nil.
89 | private static func color(from colorString: String) -> Color? {
| `- note: add '@available' attribute to enclosing static method
90 | let trimmedString = colorString.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
91 | let colorSearch = /#(?<red>[0-9A-F]{2})(?<green>[0-9A-F]{2})(?<blue>[0-9A-F]{2})(?<alpha>[0-9A-F]{2})?/
:
94 | let red256 = Int(color.red, radix: 16),
95 | let green256 = Int(color.green, radix: 16),
96 | let blue256 = Int(color.blue, radix: 16) else {
| |- error: 'subscript(dynamicMember:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
97 | print("OpenImmersive could not parse the color: \(colorString). Accepted formats: #RRGGBB or #RRGGBBAA")
98 | return nil
SwiftEmitModule normal arm64 Emitting\ module\ for\ OpenImmersive (in target 'OpenImmersive' from project 'OpenImmersive')
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/HeadTracker.swift:36:27: error: 'ARKitSession' is only available in macOS 26.0 or newer
11 |
12 | /// Provides a convenience interface to obtain head pose transforms and subscribing a closure to handle pose update events.
13 | public class HeadTracker {
| `- note: add '@available' attribute to enclosing class
14 | public enum State {
15 | /// Head tracking is stopped.
:
34 | }
35 |
36 | private let session = ARKitSession()
| `- error: 'ARKitSession' is only available in macOS 26.0 or newer
37 | private let worldTracking = WorldTrackingProvider()
38 | private var subscription: EventSubscription?
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/HeadTracker.swift:36:27: error: 'init()' is unavailable in macOS
34 | }
35 |
36 | private let session = ARKitSession()
| `- error: 'init()' is unavailable in macOS
37 | private let worldTracking = WorldTrackingProvider()
38 | private var subscription: EventSubscription?
ARKit.ARKitSession.init:3:22: note: 'init()' has been explicitly marked unavailable here
1 | class ARKitSession {
2 | @available(macOS, unavailable)
3 | public convenience init()}
| `- note: 'init()' has been explicitly marked unavailable here
4 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/HeadTracker.swift:37:33: error: 'WorldTrackingProvider' is only available in macOS 26.0 or newer
11 |
12 | /// Provides a convenience interface to obtain head pose transforms and subscribing a closure to handle pose update events.
13 | public class HeadTracker {
| `- note: add '@available' attribute to enclosing class
14 | public enum State {
15 | /// Head tracking is stopped.
:
35 |
36 | private let session = ARKitSession()
37 | private let worldTracking = WorldTrackingProvider()
| `- error: 'WorldTrackingProvider' is only available in macOS 26.0 or newer
38 | private var subscription: EventSubscription?
39 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/HeadTracker.swift:38:31: error: 'EventSubscription' is only available in macOS 15.0 or newer
11 |
12 | /// Provides a convenience interface to obtain head pose transforms and subscribing a closure to handle pose update events.
13 | public class HeadTracker {
| `- note: add '@available' attribute to enclosing class
14 | public enum State {
15 | /// Head tracking is stopped.
:
36 | private let session = ARKitSession()
37 | private let worldTracking = WorldTrackingProvider()
38 | private var subscription: EventSubscription?
| `- error: 'EventSubscription' is only available in macOS 15.0 or newer
39 |
40 | /// Starts head tracking by starting the underlying `ARKitSession` and subscribes to pose update events.
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/HeadTracker.swift:44:32: error: cannot find type 'RealityViewContent' in scope
42 | /// - content: The `RealityViewContent` provided by the `RealityView`'s `body` closure.
43 | /// - handler: A closure that runs when the head pose update occurs.
44 | public func start(content: RealityViewContent, _ handler: @escaping (SceneEvents.Update) -> Void) {
| `- error: cannot find type 'RealityViewContent' in scope
45 | guard state == .stopped else { return }
46 | state = .starting
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:13:2: error: 'Observable()' is only available in macOS 14.0 or newer
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- error: 'Observable()' is only available in macOS 14.0 or newer
14 | public class VideoPlayer: Sendable {
15 | //MARK: Video Player and Video Renderer
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:19:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'injector' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
17 | public let player = AVPlayer()
18 | /// The APMP tag injector used in video streams that are frame-packed side by side or over under.
19 | private var injector: APMPInjector?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
20 | /// The video renderer to use for media that are frame-packed side by side or over under.
21 | public var renderer: AVSampleBufferVideoRenderer? {
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:27:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'title' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
25 | //MARK: Variables accessible to the UI
26 | /// The title of the current video (empty string if none).
27 | private(set) public var title: String = ""
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
28 | /// A short description of the current video, displayed under the title (empty string if none).
29 | private(set) public var description: String = ""
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:29:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'description' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
27 | private(set) public var title: String = ""
28 | /// A short description of the current video, displayed under the title (empty string if none).
29 | private(set) public var description: String = ""
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
30 | /// The url of the current video.
31 | private(set) public var url: URL?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:31:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'url' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
29 | private(set) public var description: String = ""
30 | /// The url of the current video.
31 | private(set) public var url: URL?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
32 | /// The AVFoundation metadata of the current video.
33 | private(set) public var metadata: [AVMetadataIdentifier: String] = [:]
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:33:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'metadata' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
31 | private(set) public var url: URL?
32 | /// The AVFoundation metadata of the current video.
33 | private(set) public var metadata: [AVMetadataIdentifier: String] = [:]
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
34 | /// The frame packing type of the video media, if any.
35 | private(set) public var framePacking: VideoItem.FramePacking = .none
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:35:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'framePacking' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
33 | private(set) public var metadata: [AVMetadataIdentifier: String] = [:]
34 | /// The frame packing type of the video media, if any.
35 | private(set) public var framePacking: VideoItem.FramePacking = .none
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
36 | /// The projection type of the video media, defaults to VR180.
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:37:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'projection' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
35 | private(set) public var framePacking: VideoItem.FramePacking = .none
36 | /// The projection type of the video media, defaults to VR180.
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
38 | /// A playback error, if any.
39 | private(set) public var error: Error?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:39:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'error' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
38 | /// A playback error, if any.
39 | private(set) public var error: Error?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:41:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'duration' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
39 | private(set) public var error: Error?
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
42 | /// `true` if playback is currently paused, or if playback has completed.
43 | private(set) public var paused: Bool = false
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:43:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'paused' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
41 | private(set) public var duration: Double = 0
42 | /// `true` if playback is currently paused, or if playback has completed.
43 | private(set) public var paused: Bool = false
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
44 | /// `true` if playback is waiting to load the media.
45 | private(set) public var loading: Bool = false
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:45:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'loading' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
43 | private(set) public var paused: Bool = false
44 | /// `true` if playback is waiting to load the media.
45 | private(set) public var loading: Bool = false
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
46 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
47 | private(set) public var buffering: Bool = false
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:47:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'buffering' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
45 | private(set) public var loading: Bool = false
46 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
47 | private(set) public var buffering: Bool = false
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
48 | /// `true` if playback reached the end of the video and is no longer playing.
49 | private(set) public var hasReachedEnd: Bool = false
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:49:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'hasReachedEnd' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
47 | private(set) public var buffering: Bool = false
48 | /// `true` if playback reached the end of the video and is no longer playing.
49 | private(set) public var hasReachedEnd: Bool = false
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
50 | /// The callback to execute when playback reaches the end of the video.
51 | public var playbackEndedAction: CustomAction?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:51:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'playbackEndedAction' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
49 | private(set) public var hasReachedEnd: Bool = false
50 | /// The callback to execute when playback reaches the end of the video.
51 | public var playbackEndedAction: CustomAction?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
52 | /// The aspect ratio of the current media (width / height) (equirectangular projection only).
53 | private(set) public var aspectRatio: Float?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:53:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'aspectRatio' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
51 | public var playbackEndedAction: CustomAction?
52 | /// The aspect ratio of the current media (width / height) (equirectangular projection only).
53 | private(set) public var aspectRatio: Float?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
54 | /// The horizontal field of view for the current media (equirectangular projection only).
55 | private(set) public var horizontalFieldOfView: Float = 180.0
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:55:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'horizontalFieldOfView' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
53 | private(set) public var aspectRatio: Float?
54 | /// The horizontal field of view for the current media (equirectangular projection only).
55 | private(set) public var horizontalFieldOfView: Float = 180.0
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
56 | /// The vertical field of view for the current media (equirectangular projection only).
57 | public var verticalFieldOfView: Float {
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:66:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'bitrate' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
64 | }
65 | /// The bitrate of the current video stream (0 if none), only available if streaming from a HLS server (m3u8).
66 | private(set) public var bitrate: Double = 0
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:68:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'bitrateLadder' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
66 | private(set) public var bitrate: Double = 0
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
69 | /// The currently selected bitrate rung index, if any. Only available if streaming from a HLS server (m3u8).
70 | private(set) public var selectedBitrateRungIndex: Int = -1
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:70:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'selectedBitrateRungIndex' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
68 | private(set) public var bitrateLadder: [BitrateRung] = []
69 | /// The currently selected bitrate rung index, if any. Only available if streaming from a HLS server (m3u8).
70 | private(set) public var selectedBitrateRungIndex: Int = -1
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
71 | /// Audio options available for the video stream, only available if streaming from a HLS server (m3u8) and with separate audio playlists.
72 | private(set) public var audioOptions: [AudioOption] = []
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:72:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'audioOptions' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
70 | private(set) public var selectedBitrateRungIndex: Int = -1
71 | /// Audio options available for the video stream, only available if streaming from a HLS server (m3u8) and with separate audio playlists.
72 | private(set) public var audioOptions: [AudioOption] = []
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
73 | /// The currently selected audio index, if any. Only available if streaming from a HLS server (m3u8).
74 | private(set) public var selectedAudioIndex: Int = -1
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:74:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'selectedAudioIndex' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
72 | private(set) public var audioOptions: [AudioOption] = []
73 | /// The currently selected audio index, if any. Only available if streaming from a HLS server (m3u8).
74 | private(set) public var selectedAudioIndex: Int = -1
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
75 | /// `true` if the control panel should be visible to the user.
76 | private(set) public var shouldShowControlPanel: Bool = true
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:76:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'shouldShowControlPanel' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
74 | private(set) public var selectedAudioIndex: Int = -1
75 | /// `true` if the control panel should be visible to the user.
76 | private(set) public var shouldShowControlPanel: Bool = true
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
77 | /// `true` if the control panel should present resolution & audio options to the user.
78 | private(set) public var shouldShowPlaybackOptions: Bool = false
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:78:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'shouldShowPlaybackOptions' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
76 | private(set) public var shouldShowControlPanel: Bool = true
77 | /// `true` if the control panel should present resolution & audio options to the user.
78 | private(set) public var shouldShowPlaybackOptions: Bool = false
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
79 | /// `true` if the HLS stream has a bitrate ladder with at least 2 rungs and the custom configuration doesn't prevent user selection.
80 | public var canChooseResolution: Bool {
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:99:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'currentTime' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
97 | ///
98 | /// This variable is updated by video playback but can be overwritten by a scrubber, in conjunction with `scrubState`.
99 | public var currentTime: Double = 0
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
100 | public enum ScrubState {
101 | /// The scrubber is not active and reflects the video's current playback time.
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:109:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'scrubState' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
107 | }
108 | /// The current state of the scrubber.
109 | public var scrubState: ScrubState = .notScrubbing {
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
110 | didSet {
111 | switch scrubState {
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:133:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'displayLink' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
131 |
132 | //MARK: Private variables
133 | private var displayLink: CADisplayLink?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:134:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'videoOutput' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
132 | //MARK: Private variables
133 | private var displayLink: CADisplayLink?
134 | private var videoOutput: AVPlayerItemVideoOutput?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
135 | private var timeObserver: Any?
136 | private var durationObserver: NSKeyValueObservation?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:135:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'timeObserver' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
133 | private var displayLink: CADisplayLink?
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
136 | private var durationObserver: NSKeyValueObservation?
137 | private var mediaStatusObserver: NSKeyValueObservation?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:136:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'durationObserver' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
136 | private var durationObserver: NSKeyValueObservation?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:137:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'mediaStatusObserver' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
135 | private var timeObserver: Any?
136 | private var durationObserver: NSKeyValueObservation?
137 | private var mediaStatusObserver: NSKeyValueObservation?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:138:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'bufferingObserver' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
136 | private var durationObserver: NSKeyValueObservation?
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
139 | private var dismissControlPanelTask: Task<Void, Never>?
140 | private var playlistReader: PlaylistReader?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:139:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'dismissControlPanelTask' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
140 | private var playlistReader: PlaylistReader?
141 | private var delegate: PlaylistLoaderDelegate?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:140:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'playlistReader' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
140 | private var playlistReader: PlaylistReader?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
141 | private var delegate: PlaylistLoaderDelegate?
142 |
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:141:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'delegate' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
139 | private var dismissControlPanelTask: Task<Void, Never>?
140 | private var playlistReader: PlaylistReader?
141 | private var delegate: PlaylistLoaderDelegate?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
142 |
143 | //MARK: Public methods
macro expansion @Observable:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:639:1: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on class 'VideoPlayer' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
637 | dismissControlPanelTask = nil
638 | }
639 | }
+--- macro expansion @Observable -----------------------------------
| 1 | @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar()
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
| 2 |
| 3 | internal nonisolated func access<$s13OpenImmersive11VideoPlayer10ObservablefMm_6MemberfMu_>(
+-------------------------------------------------------------------
640 |
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:19:40: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
17 | public let player = AVPlayer()
18 | /// The APMP tag injector used in video streams that are frame-packed side by side or over under.
19 | private var injector: APMPInjector?
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The APMP tag injector used in video streams that are frame-packed side by side or over under.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _injector: APMPInjector?
+-------------------------------------------------------------------
20 | /// The video renderer to use for media that are frame-packed side by side or over under.
21 | public var renderer: AVSampleBufferVideoRenderer? {
macro expansion @ObservationTracked:4:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:27:47: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
25 | //MARK: Variables accessible to the UI
26 | /// The title of the current video (empty string if none).
27 | private(set) public var title: String = ""
+--- macro expansion @ObservationTracked ---------------------------
|2 | /// The title of the current video (empty string if none).
|3 |
|4 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|5 | private var _title: String = ""
+-------------------------------------------------------------------
28 | /// A short description of the current video, displayed under the title (empty string if none).
29 | private(set) public var description: String = ""
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:29:53: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
27 | private(set) public var title: String = ""
28 | /// A short description of the current video, displayed under the title (empty string if none).
29 | private(set) public var description: String = ""
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// A short description of the current video, displayed under the title (empty string if none).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _description: String = ""
+-------------------------------------------------------------------
30 | /// The url of the current video.
31 | private(set) public var url: URL?
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:31:38: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
29 | private(set) public var description: String = ""
30 | /// The url of the current video.
31 | private(set) public var url: URL?
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The url of the current video.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _url: URL?
+-------------------------------------------------------------------
32 | /// The AVFoundation metadata of the current video.
33 | private(set) public var metadata: [AVMetadataIdentifier: String] = [:]
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:33:75: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
31 | private(set) public var url: URL?
32 | /// The AVFoundation metadata of the current video.
33 | private(set) public var metadata: [AVMetadataIdentifier: String] = [:]
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The AVFoundation metadata of the current video.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _metadata: [AVMetadataIdentifier: String] = [:]
+-------------------------------------------------------------------
34 | /// The frame packing type of the video media, if any.
35 | private(set) public var framePacking: VideoItem.FramePacking = .none
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:35:73: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
33 | private(set) public var metadata: [AVMetadataIdentifier: String] = [:]
34 | /// The frame packing type of the video media, if any.
35 | private(set) public var framePacking: VideoItem.FramePacking = .none
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The frame packing type of the video media, if any.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _framePacking: VideoItem.FramePacking = .none
+-------------------------------------------------------------------
36 | /// The projection type of the video media, defaults to VR180.
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:37:98: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
35 | private(set) public var framePacking: VideoItem.FramePacking = .none
36 | /// The projection type of the video media, defaults to VR180.
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The projection type of the video media, defaults to VR180.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
+-------------------------------------------------------------------
38 | /// A playback error, if any.
39 | private(set) public var error: Error?
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:39:42: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
38 | /// A playback error, if any.
39 | private(set) public var error: Error?
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// A playback error, if any.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _error: Error?
+-------------------------------------------------------------------
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:41:49: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
39 | private(set) public var error: Error?
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The duration in seconds of the current video (0 if none).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _duration: Double = 0
+-------------------------------------------------------------------
42 | /// `true` if playback is currently paused, or if playback has completed.
43 | private(set) public var paused: Bool = false
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:43:49: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
41 | private(set) public var duration: Double = 0
42 | /// `true` if playback is currently paused, or if playback has completed.
43 | private(set) public var paused: Bool = false
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// `true` if playback is currently paused, or if playback has completed.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _paused: Bool = false
+-------------------------------------------------------------------
44 | /// `true` if playback is waiting to load the media.
45 | private(set) public var loading: Bool = false
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:45:50: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
43 | private(set) public var paused: Bool = false
44 | /// `true` if playback is waiting to load the media.
45 | private(set) public var loading: Bool = false
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// `true` if playback is waiting to load the media.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _loading: Bool = false
+-------------------------------------------------------------------
46 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
47 | private(set) public var buffering: Bool = false
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:47:52: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
45 | private(set) public var loading: Bool = false
46 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
47 | private(set) public var buffering: Bool = false
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _buffering: Bool = false
+-------------------------------------------------------------------
48 | /// `true` if playback reached the end of the video and is no longer playing.
49 | private(set) public var hasReachedEnd: Bool = false
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:49:56: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
47 | private(set) public var buffering: Bool = false
48 | /// `true` if playback reached the end of the video and is no longer playing.
49 | private(set) public var hasReachedEnd: Bool = false
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// `true` if playback reached the end of the video and is no longer playing.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _hasReachedEnd: Bool = false
+-------------------------------------------------------------------
50 | /// The callback to execute when playback reaches the end of the video.
51 | public var playbackEndedAction: CustomAction?
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:51:50: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
49 | private(set) public var hasReachedEnd: Bool = false
50 | /// The callback to execute when playback reaches the end of the video.
51 | public var playbackEndedAction: CustomAction?
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The callback to execute when playback reaches the end of the video.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _playbackEndedAction: CustomAction?
+-------------------------------------------------------------------
52 | /// The aspect ratio of the current media (width / height) (equirectangular projection only).
53 | private(set) public var aspectRatio: Float?
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:53:48: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
51 | public var playbackEndedAction: CustomAction?
52 | /// The aspect ratio of the current media (width / height) (equirectangular projection only).
53 | private(set) public var aspectRatio: Float?
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The aspect ratio of the current media (width / height) (equirectangular projection only).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _aspectRatio: Float?
+-------------------------------------------------------------------
54 | /// The horizontal field of view for the current media (equirectangular projection only).
55 | private(set) public var horizontalFieldOfView: Float = 180.0
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:55:65: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
53 | private(set) public var aspectRatio: Float?
54 | /// The horizontal field of view for the current media (equirectangular projection only).
55 | private(set) public var horizontalFieldOfView: Float = 180.0
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The horizontal field of view for the current media (equirectangular projection only).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _horizontalFieldOfView: Float = 180.0
+-------------------------------------------------------------------
56 | /// The vertical field of view for the current media (equirectangular projection only).
57 | public var verticalFieldOfView: Float {
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:66:48: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
64 | }
65 | /// The bitrate of the current video stream (0 if none), only available if streaming from a HLS server (m3u8).
66 | private(set) public var bitrate: Double = 0
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The bitrate of the current video stream (0 if none), only available if streaming from a HLS server (m3u8).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _bitrate: Double = 0
+-------------------------------------------------------------------
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:68:62: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
66 | private(set) public var bitrate: Double = 0
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _bitrateLadder: [BitrateRung] = []
+-------------------------------------------------------------------
69 | /// The currently selected bitrate rung index, if any. Only available if streaming from a HLS server (m3u8).
70 | private(set) public var selectedBitrateRungIndex: Int = -1
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:70:63: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
68 | private(set) public var bitrateLadder: [BitrateRung] = []
69 | /// The currently selected bitrate rung index, if any. Only available if streaming from a HLS server (m3u8).
70 | private(set) public var selectedBitrateRungIndex: Int = -1
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The currently selected bitrate rung index, if any. Only available if streaming from a HLS server (m3u8).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _selectedBitrateRungIndex: Int = -1
+-------------------------------------------------------------------
71 | /// Audio options available for the video stream, only available if streaming from a HLS server (m3u8) and with separate audio playlists.
72 | private(set) public var audioOptions: [AudioOption] = []
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:72:61: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
70 | private(set) public var selectedBitrateRungIndex: Int = -1
71 | /// Audio options available for the video stream, only available if streaming from a HLS server (m3u8) and with separate audio playlists.
72 | private(set) public var audioOptions: [AudioOption] = []
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// Audio options available for the video stream, only available if streaming from a HLS server (m3u8) and with separate audio playlists.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _audioOptions: [AudioOption] = []
+-------------------------------------------------------------------
73 | /// The currently selected audio index, if any. Only available if streaming from a HLS server (m3u8).
74 | private(set) public var selectedAudioIndex: Int = -1
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:74:57: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
72 | private(set) public var audioOptions: [AudioOption] = []
73 | /// The currently selected audio index, if any. Only available if streaming from a HLS server (m3u8).
74 | private(set) public var selectedAudioIndex: Int = -1
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The currently selected audio index, if any. Only available if streaming from a HLS server (m3u8).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _selectedAudioIndex: Int = -1
+-------------------------------------------------------------------
75 | /// `true` if the control panel should be visible to the user.
76 | private(set) public var shouldShowControlPanel: Bool = true
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:76:64: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
74 | private(set) public var selectedAudioIndex: Int = -1
75 | /// `true` if the control panel should be visible to the user.
76 | private(set) public var shouldShowControlPanel: Bool = true
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// `true` if the control panel should be visible to the user.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _shouldShowControlPanel: Bool = true
+-------------------------------------------------------------------
77 | /// `true` if the control panel should present resolution & audio options to the user.
78 | private(set) public var shouldShowPlaybackOptions: Bool = false
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:78:68: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
76 | private(set) public var shouldShowControlPanel: Bool = true
77 | /// `true` if the control panel should present resolution & audio options to the user.
78 | private(set) public var shouldShowPlaybackOptions: Bool = false
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// `true` if the control panel should present resolution & audio options to the user.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _shouldShowPlaybackOptions: Bool = false
+-------------------------------------------------------------------
79 | /// `true` if the HLS stream has a bitrate ladder with at least 2 rungs and the custom configuration doesn't prevent user selection.
80 | public var canChooseResolution: Bool {
macro expansion @ObservationTracked:5:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:99:39: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
97 | ///
98 | /// This variable is updated by video playback but can be overwritten by a scrubber, in conjunction with `scrubState`.
99 | public var currentTime: Double = 0
+--- macro expansion @ObservationTracked ---------------------------
|3 | /// This variable is updated by video playback but can be overwritten by a scrubber, in conjunction with `scrubState`.
|4 |
|5 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|6 | private var _currentTime: Double = 0
+-------------------------------------------------------------------
100 | public enum ScrubState {
101 | /// The scrubber is not active and reflects the video's current playback time.
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:130:6: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
128 | }
129 | }
130 | }
+--- macro expansion @ObservationTracked ---------------------------
| 1 | /// The current state of the scrubber.
| 2 |
| 3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
| 4 | private var _scrubState: ScrubState = .notScrubbing {
| 5 |
+-------------------------------------------------------------------
131 |
132 | //MARK: Private variables
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:133:44: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
131 |
132 | //MARK: Private variables
133 | private var displayLink: CADisplayLink?
+--- macro expansion @ObservationTracked ---------------------------
|1 | //MARK: Private variables
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _displayLink: CADisplayLink?
+-------------------------------------------------------------------
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:134:54: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
132 | //MARK: Private variables
133 | private var displayLink: CADisplayLink?
134 | private var videoOutput: AVPlayerItemVideoOutput?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _videoOutput: AVPlayerItemVideoOutput?
+-------------------------------------------------------------------
135 | private var timeObserver: Any?
136 | private var durationObserver: NSKeyValueObservation?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:135:35: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
133 | private var displayLink: CADisplayLink?
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _timeObserver: Any?
+-------------------------------------------------------------------
136 | private var durationObserver: NSKeyValueObservation?
137 | private var mediaStatusObserver: NSKeyValueObservation?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:136:57: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
136 | private var durationObserver: NSKeyValueObservation?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _durationObserver: NSKeyValueObservation?
+-------------------------------------------------------------------
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:137:60: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
135 | private var timeObserver: Any?
136 | private var durationObserver: NSKeyValueObservation?
137 | private var mediaStatusObserver: NSKeyValueObservation?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _mediaStatusObserver: NSKeyValueObservation?
+-------------------------------------------------------------------
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:138:58: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
136 | private var durationObserver: NSKeyValueObservation?
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _bufferingObserver: NSKeyValueObservation?
+-------------------------------------------------------------------
139 | private var dismissControlPanelTask: Task<Void, Never>?
140 | private var playlistReader: PlaylistReader?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:139:60: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _dismissControlPanelTask: Task<Void, Never>?
+-------------------------------------------------------------------
140 | private var playlistReader: PlaylistReader?
141 | private var delegate: PlaylistLoaderDelegate?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:140:48: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
140 | private var playlistReader: PlaylistReader?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _playlistReader: PlaylistReader?
+-------------------------------------------------------------------
141 | private var delegate: PlaylistLoaderDelegate?
142 |
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:141:50: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
139 | private var dismissControlPanelTask: Task<Void, Never>?
140 | private var playlistReader: PlaylistReader?
141 | private var delegate: PlaylistLoaderDelegate?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _delegate: PlaylistLoaderDelegate?
+-------------------------------------------------------------------
142 |
143 | //MARK: Public methods
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:21:26: error: 'AVSampleBufferVideoRenderer' is only available in macOS 14.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
19 | private var injector: APMPInjector?
20 | /// The video renderer to use for media that are frame-packed side by side or over under.
21 | public var renderer: AVSampleBufferVideoRenderer? {
| | `- error: 'AVSampleBufferVideoRenderer' is only available in macOS 14.0 or newer
| `- note: add '@available' attribute to enclosing property
22 | injector?.renderer
23 | }
OpenImmersive/VideoPlayer.swift:123:36: warning: main actor-isolated property 'renderer' can not be referenced from a Sendable closure
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:130:6: note: expanded code originates here
19 | private var injector: APMPInjector?
20 | /// The video renderer to use for media that are frame-packed side by side or over under.
21 | public var renderer: AVSampleBufferVideoRenderer? {
| `- note: property declared here
22 | injector?.renderer
23 | }
:
128 | }
129 | }
130 | }
+--- macro expansion @ObservationTracked ---------------------------
|18 | return
|19 | }
|20 | self?.renderer?.flush()
| | `- warning: main actor-isolated property 'renderer' can not be referenced from a Sendable closure
|21 | self?.scrubState = .notScrubbing
|22 | self?.restartControlPanelTask()
+-------------------------------------------------------------------
131 |
132 | //MARK: Private variables
OpenImmersive/VideoPlayer.swift:124:36: warning: main actor-isolated property 'scrubState' can not be mutated from a Sendable closure
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:130:6: note: expanded code originates here
107 | }
108 | /// The current state of the scrubber.
109 | public var scrubState: ScrubState = .notScrubbing {
| `- note: mutation of this property is only permitted within the actor
110 | didSet {
111 | switch scrubState {
:
128 | }
129 | }
130 | }
+--- macro expansion @ObservationTracked ---------------------------
|19 | }
|20 | self?.renderer?.flush()
|21 | self?.scrubState = .notScrubbing
| | `- warning: main actor-isolated property 'scrubState' can not be mutated from a Sendable closure
|22 | self?.restartControlPanelTask()
|23 | }
+-------------------------------------------------------------------
131 |
132 | //MARK: Private variables
OpenImmersive/VideoPlayer.swift:125:36: warning: call to main actor-isolated instance method 'restartControlPanelTask()' in a synchronous nonisolated context [#ActorIsolatedCall]
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:130:6: note: expanded code originates here
128 | }
129 | }
130 | }
+--- macro expansion @ObservationTracked ---------------------------
|20 | self?.renderer?.flush()
|21 | self?.scrubState = .notScrubbing
|22 | self?.restartControlPanelTask()
| | `- warning: call to main actor-isolated instance method 'restartControlPanelTask()' in a synchronous nonisolated context [#ActorIsolatedCall]
|23 | }
|24 | hasReachedEnd = false
+-------------------------------------------------------------------
131 |
132 | //MARK: Private variables
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: calls to instance method 'restartControlPanelTask()' from outside of its actor context are implicitly asynchronous
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:133:30: error: 'CADisplayLink' is only available in macOS 14.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
131 |
132 | //MARK: Private variables
133 | private var displayLink: CADisplayLink?
| | `- error: 'CADisplayLink' is only available in macOS 14.0 or newer
| `- note: add '@available' attribute to enclosing property
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
macro expansion @ObservationTracked:4:28: error: 'CADisplayLink' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:133:44: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
131 |
132 | //MARK: Private variables
133 | private var displayLink: CADisplayLink?
+--- macro expansion @ObservationTracked ---------------------------
|2 |
|3 | @ObservationIgnored
|4 | private var _displayLink: CADisplayLink?
| | `- error: 'CADisplayLink' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:493:37: error: 'CADisplayLink' is only available in macOS 14.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
491 |
492 | /// Callback from the display link. This will execute for each display frame, which may be a different rate from the video.
493 | @objc private func tick(_ link: CADisplayLink) {
| | `- error: 'CADisplayLink' is only available in macOS 14.0 or newer
| `- note: add '@available' attribute to enclosing instance method
494 | guard framePacking != .none, let videoOutput, let injector else {
495 | return
macro expansion @Observable:1:70: error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:639:1: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on class 'VideoPlayer' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
637 | dismissControlPanelTask = nil
638 | }
639 | }
+--- macro expansion @Observable -----------------------------------
| 1 | @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar()
| | `- error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
| 2 |
| 3 | internal nonisolated func access<$s13OpenImmersive11VideoPlayer10ObservablefMm_6MemberfMu_>(
+-------------------------------------------------------------------
640 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:13:2: error: 'Observable()' is only available in macOS 14.0 or newer
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- error: 'Observable()' is only available in macOS 14.0 or newer
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
/Users/admin/builder/spi-builder-workspace/Sources/Extensions/AVMetadataIdentifier+Codable.swift:11:1: warning: extension declares a conformance of imported type 'AVMetadataIdentifier' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'AVFoundation' introduce this conformance in the future
9 |
10 | /// Codable extension of AVMetadataIdentifier so it can be used in VideoItem
11 | extension AVMetadataIdentifier: Codable {
| |- warning: extension declares a conformance of imported type 'AVMetadataIdentifier' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'AVFoundation' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
12 | public typealias RawValue = String
13 |
/Users/admin/builder/spi-builder-workspace/Sources/Models/SpatialVideoTransferable.swift:19:52: error: 'TransferRepresentation' is only available in macOS 13.0 or newer
10 |
11 | /// A representation for a spatial or immersive video selected from the Photos API or dragged and dropped onto the app
12 | public struct SpatialVideo: Transferable {
| `- note: add '@available' attribute to enclosing struct
13 | public enum Status: Sendable {
14 | case failed, ready
:
17 | public let url: URL
18 |
19 | public static var transferRepresentation: some TransferRepresentation {
| | `- error: 'TransferRepresentation' is only available in macOS 13.0 or newer
| `- note: add '@available' attribute to enclosing static property
20 | FileRepresentation(contentType: .audiovisualContent) { file in
21 | SentTransferredFile(file.url)
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift:91:20: error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
76 | }
77 |
78 | public extension VideoPlayer {
| `- note: add '@available' attribute to enclosing extension
79 | /// A RealityKit video material created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
80 | /// depending on whether the media has frame packing or not.
:
89 | /// A RealityKit video player component created from the underlying AVPlayer or AVSampleBufferVideoRenderer,
90 | /// depending on whether the media has frame packing or not.
91 | var component: VideoPlayerComponent {
| | `- error: 'VideoPlayerComponent' is only available in macOS 15.0 or newer
| `- note: add '@available' attribute to enclosing property
92 | var component: VideoPlayerComponent
93 | if let renderer {
/Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift:22:27: error: 'AVSampleBufferVideoRenderer' is only available in macOS 14.0 or newer
11 |
12 | /// Injects APMP metadata into frames to render stereo frame-packed media efficiently.
13 | public class APMPInjector {
| `- note: add '@available' attribute to enclosing class
14 | /// Errors specific to APMP Injector.
15 | public enum APMPInjectorError: Error {
:
20 | /// The renderer to use for enqueueing. Expose this so callers can
21 | /// associate it with a display layer or RealityKit component.
22 | public let renderer = AVSampleBufferVideoRenderer()
| `- error: 'AVSampleBufferVideoRenderer' is only available in macOS 14.0 or newer
23 | /// The source media's frame packing type, must be .sideBySide or .overUnder.
24 | private let packing: VideoItem.FramePacking
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Closures.swift:19:29: error: cannot find type 'simd_quatf' in scope
17 | public var body: CustomViewBuilder
18 | public var position: SIMD3<Float>
19 | public var orientation: simd_quatf
| `- error: cannot find type 'simd_quatf' in scope
20 | public var relativeToControlPanel: Bool
21 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Closures.swift:22:101: error: cannot find type 'simd_quatf' in scope
20 | public var relativeToControlPanel: Bool
21 |
22 | public init(id: String, body: @escaping CustomViewBuilder, position: SIMD3<Float>, orientation: simd_quatf, relativeToControlPanel: Bool) {
| `- error: cannot find type 'simd_quatf' in scope
23 | self.id = id
24 | self.body = body
/Users/admin/builder/spi-builder-workspace/Sources/Views/ControlPanel.swift:498:9: error: cannot find 'Attachment' in scope
496 | }
497 | } attachments: {
498 | Attachment(id: "ControlPanel") {
| `- error: cannot find 'Attachment' in scope
499 | ControlPanel(videoPlayer: .constant(VideoPlayer()))
500 | }
/Users/admin/builder/spi-builder-workspace/Sources/Views/ControlPanel.swift:497:20: error: extra trailing closure passed in call
495 | content.add(entity)
496 | }
497 | } attachments: {
| `- error: extra trailing closure passed in call
498 | Attachment(id: "ControlPanel") {
499 | ControlPanel(videoPlayer: .constant(VideoPlayer()))
/Users/admin/builder/spi-builder-workspace/Sources/Views/ControlPanel.swift:493:19: error: contextual closure type '@MainActor @Sendable (inout RealityViewCameraContent) async -> Void' expects 1 argument, but 2 were used in closure body
491 |
492 | #Preview {
493 | RealityView { content, attachments in
| `- error: contextual closure type '@MainActor @Sendable (inout RealityViewCameraContent) async -> Void' expects 1 argument, but 2 were used in closure body
494 | if let entity = attachments.entity(for: "ControlPanel") {
495 | content.add(entity)
/Users/admin/builder/spi-builder-workspace/Sources/Views/DropTarget.swift:74:9: error: extraneous argument label 'windowStyle:' in macro expansion
72 | }
73 |
74 | #Preview(windowStyle: .automatic) {
| `- error: extraneous argument label 'windowStyle:' in macro expansion
75 | DropTarget() {
76 | Color.clear
/Users/admin/builder/spi-builder-workspace/Sources/Views/DropTarget.swift:74:24: error: type 'String?' has no member 'automatic'
72 | }
73 |
74 | #Preview(windowStyle: .automatic) {
| `- error: type 'String?' has no member 'automatic'
75 | DropTarget() {
76 | Color.clear
/Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:14:38: error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
| | `- error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
| `- note: add '@available' attribute to enclosing property
15 |
16 | /// Whether the picker should show spatial videos only.
macro expansion @State:2:24: error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:14:55: note: expanded code originates here
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
| `- note: in expansion of macro 'State' on property 'selectedItem' here
+--- macro expansion @State -----------------------------------------
| 1 | private var __selectedItem = SwiftUICore.State._makeStorage(({
| 2 | let value: PhotosPickerItem? = nil
| | `- error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
| 3 | return value
| 4 | }))
+--------------------------------------------------------------------
15 |
16 | /// Whether the picker should show spatial videos only.
macro expansion @State:8:27: error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:14:55: note: expanded code originates here
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
| `- note: in expansion of macro 'State' on property 'selectedItem' here
+--- macro expansion @State -----------------------------------------
| 6 | @SwiftUICore._StatePropertyWrapperStorage(initialValue: "JHMxM09wZW5JbW1lcnNpdmUxOEdhbGxlcnlWaWRlb1BpY2tlclYxMnNlbGVjdGVkSXRlbTMzXzVERDM3RDgzNjlBNUQwMzJCOTE4NTk3MDAxRTQxMEJBTEw1U3RhdGVmTXBfMjBfaW5pdGlhbFN0b3JlZFZhbHVlX2ZNdV8=")
| 7 | private var _selectedItem: SwiftUICore.State<_>! = SwiftUICore._stateNil(of: {
| 8 | SwiftUICore.State<PhotosPickerItem?>(initialValue: nil)
| | `- error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
| 9 | })
|10 |
+--------------------------------------------------------------------
15 |
16 | /// Whether the picker should show spatial videos only.
macro expansion @State:12:47: error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:14:55: note: expanded code originates here
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
| `- note: in expansion of macro 'State' on property 'selectedItem' here
+--- macro expansion @State -----------------------------------------
|10 |
|11 | @SwiftUICore._StateProjectedValue
|12 | private var $selectedItem = SwiftUICore.State<PhotosPickerItem?>(initialValue: nil).projectedValue
| | `- error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
|13 |
|14 | @SwiftUICore._StateInitialStoredValue("U3dpZnRVSUNvcmUuU3RhdGUuX21ha2VTdG9yYWdlKGluaXRpYWxWYWx1ZTogeyBsZXQgeDogUGhvdG9zUGlja2VySXRlbT8gPSBuaWwKcmV0dXJuIHggfSgpKQ==")
+--------------------------------------------------------------------
15 |
16 | /// Whether the picker should show spatial videos only.
macro expansion @State:16:20: error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:14:55: note: expanded code originates here
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
| `- note: in expansion of macro 'State' on property 'selectedItem' here
+--- macro expansion @State -----------------------------------------
|14 | @SwiftUICore._StateInitialStoredValue("U3dpZnRVSUNvcmUuU3RhdGUuX21ha2VTdG9yYWdlKGluaXRpYWxWYWx1ZTogeyBsZXQgeDogUGhvdG9zUGlja2VySXRlbT8gPSBuaWwKcmV0dXJuIHggfSgpKQ==")
|15 | private static var $s13OpenImmersive18GalleryVideoPickerV12selectedItem33_5DD37D8369A5D032B918597001E410BALL5StatefMp_20_initialStoredValue_fMu_ = (SwiftUICore.State._makeStorage(initialValue: {
|16 | let x: PhotosPickerItem? = nil
| | `- error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
|17 | return x
|18 | }()))
+--------------------------------------------------------------------
15 |
16 | /// Whether the picker should show spatial videos only.
/Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:23:24: error: 'PHPickerFilter' is only available in macOS 13.0 or newer
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
:
21 |
22 | /// The Photos picker filter to use based on `spatialVideosOnly`.
23 | public var filter: PHPickerFilter {
| | `- error: 'PHPickerFilter' is only available in macOS 13.0 or newer
| `- note: add '@available' attribute to enclosing property
24 | spatialVideosOnly ? .all(of: [.spatialMedia, .not(.images)]) : .videos
25 | }
[#ActorIsolatedCall]: <https://docs.swift.org/compiler/documentation/diagnostics/actor-isolated-call>
Failed frontend command:
/Applications/Xcode-27.0.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -emit-module -experimental-skip-non-inlinable-function-bodies-without-types /Users/admin/builder/spi-builder-workspace/Sources/Controllers/HeadTracker.swift /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift /Users/admin/builder/spi-builder-workspace/Sources/Extensions/AVMetadataIdentifier+Codable.swift /Users/admin/builder/spi-builder-workspace/Sources/Models/AudioOption.swift /Users/admin/builder/spi-builder-workspace/Sources/Models/BitrateRung.swift /Users/admin/builder/spi-builder-workspace/Sources/Models/SpatialVideoTransferable.swift /Users/admin/builder/spi-builder-workspace/Sources/Models/VideoItem.swift /Users/admin/builder/spi-builder-workspace/Sources/Models/VideoScreen.swift /Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift /Users/admin/builder/spi-builder-workspace/Sources/Utils/Closures.swift /Users/admin/builder/spi-builder-workspace/Sources/Utils/Config.swift /Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistLoaderDelegate.swift /Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistReader.swift /Users/admin/builder/spi-builder-workspace/Sources/Utils/PlaylistWriter.swift /Users/admin/builder/spi-builder-workspace/Sources/Utils/VideoTools.swift /Users/admin/builder/spi-builder-workspace/Sources/Views/ControlPanel.swift /Users/admin/builder/spi-builder-workspace/Sources/Views/DropTarget.swift /Users/admin/builder/spi-builder-workspace/Sources/Views/FilePicker.swift /Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift /Users/admin/builder/spi-builder-workspace/Sources/Views/ImmersivePlayer.swift /Users/admin/builder/spi-builder-workspace/Sources/Views/StreamUrlInput.swift -target arm64-apple-macos12.0 -disable-cross-import-overlay-search -swift-module-cross-import ARKit /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ARKit.framework/Modules/ARKit.swiftcrossimport/SwiftUI.swiftoverlay -swift-module-cross-import PhotosUI /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/PhotosUI.framework/Modules/PhotosUI.swiftcrossimport/SwiftUI.swiftoverlay -swift-module-cross-import PhotosUI /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/PhotosUI.framework/Modules/PhotosUI.swiftcrossimport/WidgetKit.swiftoverlay -swift-module-cross-import PhotosUI /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/PhotosUI.framework/Modules/PhotosUI.swiftcrossimport/SwiftUI.swiftoverlay -swift-module-cross-import PhotosUI /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/PhotosUI.framework/Modules/PhotosUI.swiftcrossimport/WidgetKit.swiftoverlay -swift-module-cross-import RealityKit /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/RealityKit.framework/Modules/RealityKit.swiftcrossimport/ComputeGraph.swiftoverlay -swift-module-cross-import RealityKit /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/RealityKit.framework/Modules/RealityKit.swiftcrossimport/SwiftUI.swiftoverlay -load-resolved-plugin /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib/swift/host/plugins/libFoundationMacros.dylib\#/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/swift-plugin-server\#FoundationMacros -load-resolved-plugin /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib/swift/host/plugins/libObservationMacros.dylib\#/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/swift-plugin-server\#ObservationMacros -load-resolved-plugin /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib/swift/host/plugins/libPreviewsMacros.dylib\#/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/swift-plugin-server\#PreviewsMacros -load-resolved-plugin /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib/swift/host/plugins/libSwiftMacros.dylib\#/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/swift-plugin-server\#SwiftMacros -load-resolved-plugin /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib/swift/host/plugins/libSwiftUIMacros.dylib\#/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/swift-plugin-server\#SwiftUIMacros -disable-implicit-swift-modules -Xcc -fno-implicit-modules -Xcc -fno-implicit-module-maps -explicit-swift-module-map-file /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/OpenImmersive.build/Debug/OpenImmersive-t.build/Objects-normal/arm64/OpenImmersive-dependencies-1.json -Xllvm -aarch64-use-tbi -enable-objc-interop -stack-check -sdk /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk -I /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug -Isystem /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -F /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug -F /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -module-cache-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -no-color-diagnostics -Xcc -fno-color-diagnostics -enable-testing -g -debug-info-format\=dwarf -dwarf-version\=4 -swift-version 6 -Onone -D SWIFT_PACKAGE -D DEBUG -D SWIFT_MODULE_RESOURCE_BUNDLE_UNAVAILABLE -D Xcode -serialize-debugging-options -enable-experimental-feature DebugDescriptionMacro -default-isolation MainActor -empty-abi-descriptor -validate-clang-modules-once -clang-build-session-file /Users/admin/builder/spi-builder-workspace/.derivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -working-directory -Xcc /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode -enable-anonymous-context-mangled-names -file-compilation-dir /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -Xcc -ivfsstatcache -Xcc /Users/admin/builder/spi-builder-workspace/.derivedData/SDKStatCaches.noindex/macosx27.0-26A425-e829b21a6f8c9b70876ba0858053c04489db99fe7804849a4777d653a8cfc1be.sdkstatcache -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/include -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/OpenImmersive.build/Debug/OpenImmersive-t.build/DerivedSources-normal/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/OpenImmersive.build/Debug/OpenImmersive-t.build/DerivedSources/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/OpenImmersive.build/Debug/OpenImmersive-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -no-auto-bridging-header-chaining -module-name OpenImmersive -package-name spi_builder_workspace -const-gather-protocols-file /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/OpenImmersive.build/Debug/OpenImmersive-t.build/Objects-normal/arm64/OpenImmersive_const_extract_protocols.json -disable-clang-spi -clang-target arm64-apple-macos27.0 -target-sdk-version 27.0 -target-sdk-name macosx27.0 -in-process-plugin-server-path /Applications/Xcode-27.0.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/libSwiftInProcPluginServer.dylib -emit-module-doc-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/OpenImmersive.build/Debug/OpenImmersive-t.build/Objects-normal/arm64/OpenImmersive.swiftdoc -emit-module-source-info-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/OpenImmersive.build/Debug/OpenImmersive-t.build/Objects-normal/arm64/OpenImmersive.swiftsourceinfo -emit-objc-header-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/OpenImmersive.build/Debug/OpenImmersive-t.build/Objects-normal/arm64/OpenImmersive-Swift.h -serialize-diagnostics-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/OpenImmersive.build/Debug/OpenImmersive-t.build/Objects-normal/arm64/OpenImmersive-primary-emit-module.dia -emit-dependencies-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/OpenImmersive.build/Debug/OpenImmersive-t.build/Objects-normal/arm64/OpenImmersive-primary-emit-module.d -parse-as-library -o /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/OpenImmersive.build/Debug/OpenImmersive-t.build/Objects-normal/arm64/OpenImmersive.swiftmodule -emit-abi-descriptor-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/OpenImmersive.build/Debug/OpenImmersive-t.build/Objects-normal/arm64/OpenImmersive.abi.json
SwiftCompile normal arm64 (in target 'OpenImmersive' from project 'OpenImmersive')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
SwiftCompile normal arm64 Compiling\ FilePicker.swift,\ GalleryVideoPicker.swift /Users/admin/builder/spi-builder-workspace/Sources/Views/FilePicker.swift /Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift (in target 'OpenImmersive' from project 'OpenImmersive')
/Users/admin/builder/spi-builder-workspace/Sources/Views/ControlPanel.swift:498:9: error: cannot find 'Attachment' in scope
496 | }
497 | } attachments: {
498 | Attachment(id: "ControlPanel") {
| `- error: cannot find 'Attachment' in scope
499 | ControlPanel(videoPlayer: .constant(VideoPlayer()))
500 | }
/Users/admin/builder/spi-builder-workspace/Sources/Views/ControlPanel.swift:497:20: error: extra trailing closure passed in call
495 | content.add(entity)
496 | }
497 | } attachments: {
| `- error: extra trailing closure passed in call
498 | Attachment(id: "ControlPanel") {
499 | ControlPanel(videoPlayer: .constant(VideoPlayer()))
/Users/admin/builder/spi-builder-workspace/Sources/Views/ControlPanel.swift:493:19: error: contextual closure type '@MainActor @Sendable (inout RealityViewCameraContent) async -> Void' expects 1 argument, but 2 were used in closure body
491 |
492 | #Preview {
493 | RealityView { content, attachments in
| `- error: contextual closure type '@MainActor @Sendable (inout RealityViewCameraContent) async -> Void' expects 1 argument, but 2 were used in closure body
494 | if let entity = attachments.entity(for: "ControlPanel") {
495 | content.add(entity)
/Users/admin/builder/spi-builder-workspace/Sources/Views/DropTarget.swift:74:9: error: extraneous argument label 'windowStyle:' in macro expansion
72 | }
73 |
74 | #Preview(windowStyle: .automatic) {
| `- error: extraneous argument label 'windowStyle:' in macro expansion
75 | DropTarget() {
76 | Color.clear
/Users/admin/builder/spi-builder-workspace/Sources/Views/DropTarget.swift:74:24: error: type 'String?' has no member 'automatic'
72 | }
73 |
74 | #Preview(windowStyle: .automatic) {
| `- error: type 'String?' has no member 'automatic'
75 | DropTarget() {
76 | Color.clear
/Users/admin/builder/spi-builder-workspace/Sources/Views/FilePicker.swift:38:21: warning: result of call to 'startAccessingSecurityScopedResource()' is unused [#NoUsage]
36 | // Hack: this should be mirrored by url.stopAccessingSecurityScopedResource(),
37 | // but it would prevent playing the same file twice.
38 | url.startAccessingSecurityScopedResource()
| `- warning: result of call to 'startAccessingSecurityScopedResource()' is unused [#NoUsage]
39 |
40 | let isAivuFile = url.lastPathComponent.hasSuffix(".aivu")
/Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:14:38: error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
| | `- error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
| `- note: add '@available' attribute to enclosing property
15 |
16 | /// Whether the picker should show spatial videos only.
macro expansion @State:2:24: error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:14:55: note: expanded code originates here
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
| `- note: in expansion of macro 'State' on property 'selectedItem' here
+--- macro expansion @State -----------------------------------------
| 1 | private var __selectedItem = SwiftUICore.State._makeStorage(({
| 2 | let value: PhotosPickerItem? = nil
| | `- error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
| 3 | return value
| 4 | }))
+--------------------------------------------------------------------
15 |
16 | /// Whether the picker should show spatial videos only.
macro expansion @State:8:27: error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:14:55: note: expanded code originates here
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
| `- note: in expansion of macro 'State' on property 'selectedItem' here
+--- macro expansion @State -----------------------------------------
| 6 | @SwiftUICore._StatePropertyWrapperStorage(initialValue: "JHMxM09wZW5JbW1lcnNpdmUxOEdhbGxlcnlWaWRlb1BpY2tlclYxMnNlbGVjdGVkSXRlbTMzXzVERDM3RDgzNjlBNUQwMzJCOTE4NTk3MDAxRTQxMEJBTEw1U3RhdGVmTXBfMjBfaW5pdGlhbFN0b3JlZFZhbHVlX2ZNdV8=")
| 7 | private var _selectedItem: SwiftUICore.State<_>! = SwiftUICore._stateNil(of: {
| 8 | SwiftUICore.State<PhotosPickerItem?>(initialValue: nil)
| | `- error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
| 9 | })
|10 |
+--------------------------------------------------------------------
15 |
16 | /// Whether the picker should show spatial videos only.
macro expansion @State:12:47: error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:14:55: note: expanded code originates here
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
| `- note: in expansion of macro 'State' on property 'selectedItem' here
+--- macro expansion @State -----------------------------------------
|10 |
|11 | @SwiftUICore._StateProjectedValue
|12 | private var $selectedItem = SwiftUICore.State<PhotosPickerItem?>(initialValue: nil).projectedValue
| | `- error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
|13 |
|14 | @SwiftUICore._StateInitialStoredValue("U3dpZnRVSUNvcmUuU3RhdGUuX21ha2VTdG9yYWdlKGluaXRpYWxWYWx1ZTogeyBsZXQgeDogUGhvdG9zUGlja2VySXRlbT8gPSBuaWwKcmV0dXJuIHggfSgpKQ==")
+--------------------------------------------------------------------
15 |
16 | /// Whether the picker should show spatial videos only.
macro expansion @State:16:20: error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:14:55: note: expanded code originates here
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
| `- note: in expansion of macro 'State' on property 'selectedItem' here
+--- macro expansion @State -----------------------------------------
|14 | @SwiftUICore._StateInitialStoredValue("U3dpZnRVSUNvcmUuU3RhdGUuX21ha2VTdG9yYWdlKGluaXRpYWxWYWx1ZTogeyBsZXQgeDogUGhvdG9zUGlja2VySXRlbT8gPSBuaWwKcmV0dXJuIHggfSgpKQ==")
|15 | private static var $s13OpenImmersive18GalleryVideoPickerV12selectedItem33_5DD37D8369A5D032B918597001E410BALL5StatefMp_20_initialStoredValue_fMu_ = (SwiftUICore.State._makeStorage(initialValue: {
|16 | let x: PhotosPickerItem? = nil
| | `- error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
|17 | return x
|18 | }()))
+--------------------------------------------------------------------
15 |
16 | /// Whether the picker should show spatial videos only.
/Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:23:24: error: 'PHPickerFilter' is only available in macOS 13.0 or newer
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
:
21 |
22 | /// The Photos picker filter to use based on `spatialVideosOnly`.
23 | public var filter: PHPickerFilter {
| | `- error: 'PHPickerFilter' is only available in macOS 13.0 or newer
| `- note: add '@available' attribute to enclosing property
24 | spatialVideosOnly ? .all(of: [.spatialMedia, .not(.images)]) : .videos
25 | }
macro expansion @_StateInitialStoredValue:4:24: error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:14:55: note: expanded code originates here
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
| |- note: in expansion of macro 'State' on property 'selectedItem' here
| |- note: in expansion of macro 'State' on property 'selectedItem' here
| `- note: in expansion of macro 'State' on property 'selectedItem' here
+--- macro expansion @State -----------------------------------------
|12 | private var $selectedItem = SwiftUICore.State<PhotosPickerItem?>(initialValue: nil).projectedValue
|13 |
|14 | @SwiftUICore._StateInitialStoredValue("U3dpZnRVSUNvcmUuU3RhdGUuX21ha2VTdG9yYWdlKGluaXRpYWxWYWx1ZTogeyBsZXQgeDogUGhvdG9zUGlja2VySXRlbT8gPSBuaWwKcmV0dXJuIHggfSgpKQ==")
| | |- note: in expansion of macro '_StateInitialStoredValue' on static property '$s13OpenImmersive18GalleryVideoPickerV12selectedItem33_5DD37D8369A5D032B918597001E410BALL5StatefMp_20_initialStoredValue_fMu_' here
| | `- note: in expansion of macro '_StateInitialStoredValue' on static property '$s13OpenImmersive18GalleryVideoPickerV12selectedItem33_5DD37D8369A5D032B918597001E410BALL5StatefMp_20_initialStoredValue_fMu_' here
|15 | private static var $s13OpenImmersive18GalleryVideoPickerV12selectedItem33_5DD37D8369A5D032B918597001E410BALL5StatefMp_20_initialStoredValue_fMu_ = (SwiftUICore.State._makeStorage(initialValue: {
| | `- note: add '@available' attribute to enclosing static property
|16 | let x: PhotosPickerItem? = nil
|17 | return x
|18 | }()))
| +--- macro expansion @_StateInitialStoredValue ------------------
| |2 | get {
| |3 | SwiftUICore.State._makeStorage(initialValue: {
| |4 | let x: PhotosPickerItem? = nil
| | | |- error: 'PhotosPickerItem' is only available in macOS 13.0 or newer
| | | `- note: add 'if #available' version check
| |5 | return x
| |6 | }())
| +----------------------------------------------------------------
+--------------------------------------------------------------------
15 |
16 | /// Whether the picker should show spatial videos only.
/Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:24:40: error: 'spatialMedia' is only available in macOS 15.0 or newer
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
:
21 |
22 | /// The Photos picker filter to use based on `spatialVideosOnly`.
23 | public var filter: PHPickerFilter {
| `- note: add '@available' attribute to enclosing property
24 | spatialVideosOnly ? .all(of: [.spatialMedia, .not(.images)]) : .videos
| |- error: 'spatialMedia' is only available in macOS 15.0 or newer
| `- note: add 'if #available' version check
25 | }
26 |
/Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:37:9: error: 'PhotosPicker' is only available in macOS 13.0 or newer
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
:
34 | }
35 |
36 | public var body: some View {
| `- note: add '@available' attribute to enclosing property
37 | PhotosPicker(
| |- error: 'PhotosPicker' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
38 | selection: $selectedItem,
39 | matching: filter,
/Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:44:10: error: 'photosPickerDisabledCapabilities' is only available in macOS 14.0 or newer
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
:
34 | }
35 |
36 | public var body: some View {
| `- note: add '@available' attribute to enclosing property
37 | PhotosPicker(
38 | selection: $selectedItem,
:
42 | Label("Open from Gallery", systemImage: "photo.on.rectangle.angled.fill")
43 | }
44 | .photosPickerDisabledCapabilities([.search, .collectionNavigation])
| |- error: 'photosPickerDisabledCapabilities' is only available in macOS 14.0 or newer
| `- note: add 'if #available' version check
45 | .photosPickerStyle(.presentation)
46 | .onChange(of: selectedItem) { _, _ in
/Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift:45:10: error: 'photosPickerStyle' is only available in macOS 14.0 or newer
10 |
11 | /// A button revealing a `PhotosPicker` configured to only show videos or spatial videos.
12 | public struct GalleryVideoPicker: View {
| `- note: add '@available' attribute to enclosing struct
13 | /// The currently selected item, if any.
14 | @State private var selectedItem: PhotosPickerItem?
:
34 | }
35 |
36 | public var body: some View {
| `- note: add '@available' attribute to enclosing property
37 | PhotosPicker(
38 | selection: $selectedItem,
:
43 | }
44 | .photosPickerDisabledCapabilities([.search, .collectionNavigation])
45 | .photosPickerStyle(.presentation)
| |- error: 'photosPickerStyle' is only available in macOS 14.0 or newer
| `- note: add 'if #available' version check
46 | .onChange(of: selectedItem) { _, _ in
47 | Task {
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Views/FilePicker.swift (in target 'OpenImmersive' from project 'OpenImmersive')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile FilePicker.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Views/GalleryVideoPicker.swift (in target 'OpenImmersive' from project 'OpenImmersive')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile GalleryVideoPicker.swift
SwiftCompile normal arm64 Compiling\ ImmersivePlayer.swift,\ StreamUrlInput.swift /Users/admin/builder/spi-builder-workspace/Sources/Views/ImmersivePlayer.swift /Users/admin/builder/spi-builder-workspace/Sources/Views/StreamUrlInput.swift (in target 'OpenImmersive' from project 'OpenImmersive')
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Views/ImmersivePlayer.swift (in target 'OpenImmersive' from project 'OpenImmersive')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile ImmersivePlayer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Views/StreamUrlInput.swift (in target 'OpenImmersive' from project 'OpenImmersive')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile StreamUrlInput.swift
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/SDKExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/ExplicitPrecompiledModules
2026-10-09 02:32:42.812 xcodebuild[785:4640] [MT] IDERunDestination: Supported platforms for the buildables in the current scheme is empty.
--- xcodebuild: WARNING: Using the first of multiple matching destinations:
{ platform:macOS, arch:arm64, id:8ac9d5983ff2efbb24a01e2f982e46b6480755bc, name:My Mac }
{ platform:macOS, arch:arm64, variant:Mac Catalyst, id:8ac9d5983ff2efbb24a01e2f982e46b6480755bc, name:My Mac }
{ platform:macOS, arch:arm64, variant:DriverKit, id:8ac9d5983ff2efbb24a01e2f982e46b6480755bc, name:My Mac }
{ platform:macOS, arch:arm64, variant:Designed for [iPad,iPhone], id:8ac9d5983ff2efbb24a01e2f982e46b6480755bc, name:My Mac }
** BUILD FAILED **
The following build commands failed:
SwiftEmitModule normal arm64 Emitting\ module\ for\ OpenImmersive (in target 'OpenImmersive' from project 'OpenImmersive')
SwiftCompile normal arm64 (in target 'OpenImmersive' from project 'OpenImmersive')
Building workspace OpenImmersive with scheme OpenImmersive
(3 failures)
BUILD FAILURE 6.4 macosXcodebuild