The Swift Package Index logo.Swift Package Index

Build Information

Failed to build AVCaptureViewModel, reference main (e0e6a9), with Swift 6.4 for tvOS using Xcode 27.0 on 20 Sep 2026 11:40:06 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 AVCaptureViewModel -destination generic/platform=tvOS

Build Log

153 |             .handleEvents(receiveCancel: {
154 |                 UIDevice.current.endGeneratingDeviceOrientationNotifications()
    |                                  `- error: 'endGeneratingDeviceOrientationNotifications()' is unavailable in tvOS
155 |             })
156 |             .compactMap { $0.object as? UIDevice }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIDevice.h:50:1: note: 'endGeneratingDeviceOrientationNotifications()' has been explicitly marked unavailable here
48 | @property(nonatomic,readonly,getter=isGeneratingDeviceOrientationNotifications) BOOL generatesDeviceOrientationNotifications API_UNAVAILABLE(tvos, visionos);
49 | - (void)beginGeneratingDeviceOrientationNotifications API_UNAVAILABLE(tvos, visionos);      // nestable
50 | - (void)endGeneratingDeviceOrientationNotifications API_UNAVAILABLE(tvos, visionos);
   | `- note: 'endGeneratingDeviceOrientationNotifications()' has been explicitly marked unavailable here
51 |
52 | @property(nonatomic,getter=isBatteryMonitoringEnabled) BOOL batteryMonitoringEnabled API_AVAILABLE(ios(3.0)) API_UNAVAILABLE(tvos);  // default is NO
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:157:20: error: 'orientation' is unavailable in tvOS
155 |             })
156 |             .compactMap { $0.object as? UIDevice }
157 |             .map(\.orientation)
    |                    `- error: 'orientation' is unavailable in tvOS
158 |             .receive(on: DispatchQueue.main)
159 |
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIDevice.h:44:51: note: 'orientation' has been explicitly marked unavailable here
42 | @property(nonatomic,readonly,strong) NSString    *systemName;        // e.g. @"iOS"
43 | @property(nonatomic,readonly,strong) NSString    *systemVersion;     // e.g. @"4.0"
44 | @property(nonatomic,readonly) UIDeviceOrientation orientation API_UNAVAILABLE(tvos, visionos);       // return current device orientation.  this will return UIDeviceOrientationUnknown unless device orientation notifications are being generated.
   |                                                   `- note: 'orientation' has been explicitly marked unavailable here
45 |
46 | @property(nullable, nonatomic,readonly,strong) NSUUID      *identifierForVendor API_AVAILABLE(ios(6.0));      // a UUID that may be used to uniquely identify the device, same across apps from a single vendor.
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:192:16: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
172 |     // TODO: maybe remove this?
173 |     /// Call this function once you're ready to start showing the camera preview.
174 |     public func requestPermissions() {
    |                 `- note: add '@available' attribute to enclosing instance method
175 |         // Request location authorization so photos and videos can be tagged
176 |         // with their location.
    :
190 |         // audio access is optional. If the user denies audio access, AVCam
191 |         // won't record audio during movie recording.
192 |         switch AVCaptureDevice.authorizationStatus(for: .video) {
    |                |- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                `- note: add 'if #available' version check
193 |         case .authorized:
194 |             // The user has previously granted access to the camera.
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:192:32: error: 'authorizationStatus(for:)' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
172 |     // TODO: maybe remove this?
173 |     /// Call this function once you're ready to start showing the camera preview.
174 |     public func requestPermissions() {
    |                 `- note: add '@available' attribute to enclosing instance method
175 |         // Request location authorization so photos and videos can be tagged
176 |         // with their location.
    :
190 |         // audio access is optional. If the user denies audio access, AVCam
191 |         // won't record audio during movie recording.
192 |         switch AVCaptureDevice.authorizationStatus(for: .video) {
    |                                |- error: 'authorizationStatus(for:)' is only available in tvOS 17.0 or newer
    |                                `- note: add 'if #available' version check
193 |         case .authorized:
194 |             // The user has previously granted access to the camera.
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:207:13: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
172 |     // TODO: maybe remove this?
173 |     /// Call this function once you're ready to start showing the camera preview.
174 |     public func requestPermissions() {
    |                 `- note: add '@available' attribute to enclosing instance method
175 |         // Request location authorization so photos and videos can be tagged
176 |         // with their location.
    :
205 |              */
206 |             sessionQueue.suspend()
207 |             AVCaptureDevice.requestAccess(for: .video) { granted in
    |             |- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |             `- note: add 'if #available' version check
208 |                 if !granted {
209 |                     self.setupResult = .notAuthorized
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:207:29: error: 'requestAccess(for:completionHandler:)' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
172 |     // TODO: maybe remove this?
173 |     /// Call this function once you're ready to start showing the camera preview.
174 |     public func requestPermissions() {
    |                 `- note: add '@available' attribute to enclosing instance method
175 |         // Request location authorization so photos and videos can be tagged
176 |         // with their location.
    :
205 |              */
206 |             sessionQueue.suspend()
207 |             AVCaptureDevice.requestAccess(for: .video) { granted in
    |                             |- error: 'requestAccess(for:completionHandler:)' is only available in tvOS 17.0 or newer
    |                             `- note: add 'if #available' version check
208 |                 if !granted {
209 |                     self.setupResult = .notAuthorized
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:251:34: error: 'photo' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
239 |
240 |     // Call this on the session queue.
241 |     private func configureSession() {
    |                  `- note: add '@available' attribute to enclosing instance method
242 |         if ![.success, .initial].contains(setupResult) {
243 |             return
    :
249 |         // because Live Photo is not supported when AVCaptureMovieFileOutput is
250 |         // added to the session.
251 |         session.sessionPreset = .photo
    |                                  |- error: 'photo' is only available in tvOS 17.0 or newer
    |                                  `- note: add 'if #available' version check
252 |
253 |         // Add video input.
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:256:37: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
239 |
240 |     // Call this on the session queue.
241 |     private func configureSession() {
    |                  `- note: add '@available' attribute to enclosing instance method
242 |         if ![.success, .initial].contains(setupResult) {
243 |             return
    :
254 |         do {
255 |             // Handle the situation when the system-preferred camera is nil.
256 |             var defaultVideoDevice: AVCaptureDevice?
    |                                     |- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                                     `- note: add 'if #available' version check
257 | //            if #available(iOS 17.0, *) {
258 | //                defaultVideoDevice = AVCaptureDevice.systemPreferredCamera
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:260:34: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
239 |
240 |     // Call this on the session queue.
241 |     private func configureSession() {
    |                  `- note: add '@available' attribute to enclosing instance method
242 |         if ![.success, .initial].contains(setupResult) {
243 |             return
    :
258 | //                defaultVideoDevice = AVCaptureDevice.systemPreferredCamera
259 | //            } else {
260 |             defaultVideoDevice = AVCaptureDevice.default(for: .video)
    |                                  |- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                                  `- note: add 'if #available' version check
261 | //            }
262 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:265:55: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
239 |
240 |     // Call this on the session queue.
241 |     private func configureSession() {
    |                  `- note: add '@available' attribute to enclosing instance method
242 |         if ![.success, .initial].contains(setupResult) {
243 |             return
    :
263 |             let userDefaults = UserDefaults.standard
264 |             if !userDefaults.bool(forKey: "setInitialUserPreferredCamera") || defaultVideoDevice == nil {
265 |                 let backVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(
    |                                                       |- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                                                       `- note: add 'if #available' version check
266 |                     deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera],
267 |                     mediaType: .video,
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:266:36: error: 'builtInDualCamera' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
239 |
240 |     // Call this on the session queue.
241 |     private func configureSession() {
    |                  `- note: add '@available' attribute to enclosing instance method
242 |         if ![.success, .initial].contains(setupResult) {
243 |             return
    :
264 |             if !userDefaults.bool(forKey: "setInitialUserPreferredCamera") || defaultVideoDevice == nil {
265 |                 let backVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(
266 |                     deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera],
    |                                    |- error: 'builtInDualCamera' is only available in tvOS 17.0 or newer
    |                                    `- note: add 'if #available' version check
267 |                     mediaType: .video,
268 |                     position: .back
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:266:56: error: 'builtInWideAngleCamera' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
239 |
240 |     // Call this on the session queue.
241 |     private func configureSession() {
    |                  `- note: add '@available' attribute to enclosing instance method
242 |         if ![.success, .initial].contains(setupResult) {
243 |             return
    :
264 |             if !userDefaults.bool(forKey: "setInitialUserPreferredCamera") || defaultVideoDevice == nil {
265 |                 let backVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(
266 |                     deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera],
    |                                                        |- error: 'builtInWideAngleCamera' is only available in tvOS 17.0 or newer
    |                                                        `- note: add 'if #available' version check
267 |                     mediaType: .video,
268 |                     position: .back
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:285:40: error: 'AVCaptureDeviceInput' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
239 |
240 |     // Call this on the session queue.
241 |     private func configureSession() {
    |                  `- note: add '@available' attribute to enclosing instance method
242 |         if ![.success, .initial].contains(setupResult) {
243 |             return
    :
283 |                 return
284 |             }
285 |             let videoDeviceInput = try AVCaptureDeviceInput(device: videoDevice)
    |                                        |- error: 'AVCaptureDeviceInput' is only available in tvOS 17.0 or newer
    |                                        `- note: add 'if #available' version check
286 |
287 |             // TODO: after updating to Xcode 15, figure out which KVO observer pattern works
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary\ Types/AVCaptureViewModel.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile AVCaptureViewModel.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+CapturingPhotos.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile AVCaptureViewModel+CapturingPhotos.swift
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:326:34: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
239 |
240 |     // Call this on the session queue.
241 |     private func configureSession() {
    |                  `- note: add '@available' attribute to enclosing instance method
242 |         if ![.success, .initial].contains(setupResult) {
243 |             return
    :
324 |         // Add an audio input device.
325 |         do {
326 |             if let audioDevice = AVCaptureDevice.default(for: .audio) {
    |                                  |- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                                  `- note: add 'if #available' version check
327 |                 let audioDeviceInput = try AVCaptureDeviceInput(device: audioDevice)
328 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:327:44: error: 'AVCaptureDeviceInput' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
239 |
240 |     // Call this on the session queue.
241 |     private func configureSession() {
    |                  `- note: add '@available' attribute to enclosing instance method
242 |         if ![.success, .initial].contains(setupResult) {
243 |             return
    :
325 |         do {
326 |             if let audioDevice = AVCaptureDevice.default(for: .audio) {
327 |                 let audioDeviceInput = try AVCaptureDeviceInput(device: audioDevice)
    |                                            |- error: 'AVCaptureDeviceInput' is only available in tvOS 17.0 or newer
    |                                            `- note: add 'if #available' version check
328 |
329 |                 if session.canAddInput(audioDeviceInput) {
SwiftCompile normal arm64 Compiling\ AVCaptureViewModelSettings.swift,\ CameraSessionState.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper\ Types/AVCaptureViewModelSettings.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper\ Types/CameraSessionState.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper\ Types/AVCaptureViewModelSettings.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile AVCaptureViewModelSettings.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper\ Types/CameraSessionState.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile CameraSessionState.swift
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/AVCaptureViewModelSettings.swift:51:75: error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
10 |
11 | extension AVCaptureViewModel {
12 |     public struct Settings {
   |                   `- note: add '@available' attribute to enclosing struct
13 |         /// Dictates if the device's currently location should be attached to captures.
14 |         ///
   :
49 |         ///
50 |         /// - Note: This callback is called on the main thread.
51 |         public var photoCaptureScreenFlashCallback: (_ videoPreviewLayer: AVCaptureVideoPreviewLayer) -> Void = { videoPreviewLayer in
   |                                                                           `- error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
52 |             videoPreviewLayer.opacity = 0
53 |             UIView.animate(withDuration: 0.25) {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/AVCaptureViewModelSettings.swift:77:73: error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
 9 | import AVFoundation
10 |
11 | extension AVCaptureViewModel {
   | `- note: add '@available' attribute to enclosing extension
12 |     public struct Settings {
13 |         /// Dictates if the device's currently location should be attached to captures.
   :
75 |
76 |     /// Convenience getter/setter for ``settings``'s ``Settings/photoCaptureScreenFlashCallback``.
77 |     internal var photoCaptureScreenFlashCallback: (_ videoPreviewLayer: AVCaptureVideoPreviewLayer) -> Void {
   |                  |                                                      `- error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
   |                  `- note: add '@available' attribute to enclosing property
78 |         get {
79 |             settings.photoCaptureScreenFlashCallback
SwiftCompile normal arm64 Compiling\ AVCaptureViewModel+KVO.swift,\ AVCaptureViewModel+PinchAndZoom.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+KVO.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+PinchAndZoom.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:36:39: error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
 34 |     /// - term SwiftUI: ``CameraPreview/session`` must be set to this via ``CameraPreview/init(videoPreviewLayer:session:)``.
 35 |     /// - term UIKit: ``CameraPreviewView/session`` must be set to this directly.
 36 |     public private(set) var session = AVCaptureSession()
    |                                       `- error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
 37 |
 38 |     /// The linked view preview `CALayer`.
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:457:32: error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
455 |     @Published public var lastPhotoCaptured: Data? = nil
456 |
457 |     internal let photoOutput = AVCapturePhotoOutput()
    |                                `- error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
458 |
459 | //    @available(iOS 17.0, *)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+KVO.swift:36:58: error: 'AVCaptureDeviceSubjectAreaDidChange' is only available in tvOS 17.0 or newer
 13 | // MARK: - Adding/Removing Observers
 14 |
 15 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 16 |     /// - Tag: ObserveInterruption
 17 |     internal func addKVOObservers() {
    |                   `- note: add '@available' attribute to enclosing instance method
 18 |         // TODO: Once the commented-out code is removed, zipping in `.isLivePhotoCaptureEnabled` can be removed too
 19 |         session.publisher(for: \.isRunning, options: .new)
    :
 34 |
 35 |         // Adding it this way so it can be removed the same way and readded in `AVCaptureViewModel+DeviceConfig/changeCamera(_:isUserSelection:completion:)`
 36 |         NotificationCenter.default.addObserver(forName: .AVCaptureDeviceSubjectAreaDidChange, object: videoDeviceInput.device, queue: nil, using: subjectAreaDidChange(notification:))
    |                                                          |- error: 'AVCaptureDeviceSubjectAreaDidChange' is only available in tvOS 17.0 or newer
    |                                                          `- note: add 'if #available' version check
 37 | //        NotificationCenter.default.addObserver(self,
 38 | //                                               selector: #selector(subjectAreaDidChange),
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+KVO.swift:42:52: error: 'AVCaptureSessionRuntimeError' is only available in tvOS 17.0 or newer
 13 | // MARK: - Adding/Removing Observers
 14 |
 15 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 16 |     /// - Tag: ObserveInterruption
 17 |     internal func addKVOObservers() {
    |                   `- note: add '@available' attribute to enclosing instance method
 18 |         // TODO: Once the commented-out code is removed, zipping in `.isLivePhotoCaptureEnabled` can be removed too
 19 |         session.publisher(for: \.isRunning, options: .new)
    :
 40 | //                                               object: videoDeviceInput.device)
 41 |
 42 |         NotificationCenter.default.publisher(for: .AVCaptureSessionRuntimeError, object: session)
    |                                                    |- error: 'AVCaptureSessionRuntimeError' is only available in tvOS 17.0 or newer
    |                                                    `- note: add 'if #available' version check
 43 |             .receive(on: sessionQueue)
 44 |             .sink(receiveValue: sessionRuntimeError(notification:))
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+KVO.swift:57:52: error: 'AVCaptureSessionWasInterrupted' is only available in tvOS 17.0 or newer
 13 | // MARK: - Adding/Removing Observers
 14 |
 15 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 16 |     /// - Tag: ObserveInterruption
 17 |     internal func addKVOObservers() {
    |                   `- note: add '@available' attribute to enclosing instance method
 18 |         // TODO: Once the commented-out code is removed, zipping in `.isLivePhotoCaptureEnabled` can be removed too
 19 |         session.publisher(for: \.isRunning, options: .new)
    :
 55 |         // message. See `AVCaptureSessionWasInterruptedNotification` for other
 56 |         // interruption reasons.
 57 |         NotificationCenter.default.publisher(for: .AVCaptureSessionWasInterrupted, object: session)
    |                                                    |- error: 'AVCaptureSessionWasInterrupted' is only available in tvOS 17.0 or newer
    |                                                    `- note: add 'if #available' version check
 58 |             .sink(receiveValue: sessionWasInterrupted(notification:))
 59 |             .store(in: &observers)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+KVO.swift:65:52: error: 'AVCaptureSessionInterruptionEnded' is only available in tvOS 17.0 or newer
 13 | // MARK: - Adding/Removing Observers
 14 |
 15 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 16 |     /// - Tag: ObserveInterruption
 17 |     internal func addKVOObservers() {
    |                   `- note: add '@available' attribute to enclosing instance method
 18 |         // TODO: Once the commented-out code is removed, zipping in `.isLivePhotoCaptureEnabled` can be removed too
 19 |         session.publisher(for: \.isRunning, options: .new)
    :
 63 | //                                               object: session)
 64 |
 65 |         NotificationCenter.default.publisher(for: .AVCaptureSessionInterruptionEnded, object: session)
    |                                                    |- error: 'AVCaptureSessionInterruptionEnded' is only available in tvOS 17.0 or newer
    |                                                    `- note: add 'if #available' version check
 66 |             .sink(receiveValue: sessionInterruptionEnded(notification:))
 67 |             .store(in: &observers)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+KVO.swift:112:50: error: 'AVCaptureSessionErrorKey' is only available in tvOS 17.0 or newer
 81 | // MARK: - KVO-Related Functions
 82 |
 83 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 84 |     // systemPreferredCameraContext is used in `observeValue`
 85 | //    private var systemPreferredCameraContext = 0
    :
109 |
110 |     /// - Tag: HandleRuntimeError
111 |     internal func sessionRuntimeError(notification: Notification) {
    |                   `- note: add '@available' attribute to enclosing instance method
112 |         guard let error = notification.userInfo?[AVCaptureSessionErrorKey] as? AVError else { return }
    |                                                  |- error: 'AVCaptureSessionErrorKey' is only available in tvOS 17.0 or newer
    |                                                  `- note: add 'if #available' version check
113 |
114 |         print("Capture session runtime error: \(error)")
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+KVO.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile AVCaptureViewModel+KVO.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+PinchAndZoom.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile AVCaptureViewModel+PinchAndZoom.swift
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+KVO.swift:141:60: error: 'AVCaptureSessionInterruptionReasonKey' is only available in tvOS 17.0 or newer
 81 | // MARK: - KVO-Related Functions
 82 |
 83 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 84 |     // systemPreferredCameraContext is used in `observeValue`
 85 | //    private var systemPreferredCameraContext = 0
    :
131 |
132 |     /// - Tag: HandleInterruption
133 |     internal func sessionWasInterrupted(notification: Notification) {
    |                   `- note: add '@available' attribute to enclosing instance method
134 |         // In some scenarios you want to enable the user to resume the session.
135 |         // For example, if music playback is initiated from Control Center while
    :
139 |         // that it's not always possible to resume, see
140 |         // `resumeInterruptedSession(_:)`.
141 |         if let reasonIntegerValue = notification.userInfo?[AVCaptureSessionInterruptionReasonKey] as? Int,
    |                                                            |- error: 'AVCaptureSessionInterruptionReasonKey' is only available in tvOS 17.0 or newer
    |                                                            `- note: add 'if #available' version check
142 |            let reason = AVCaptureSession.InterruptionReason(rawValue: reasonIntegerValue) {
143 |             print("Capture session was interrupted with reason \(reason)")
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+KVO.swift:142:25: error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
 81 | // MARK: - KVO-Related Functions
 82 |
 83 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 84 |     // systemPreferredCameraContext is used in `observeValue`
 85 | //    private var systemPreferredCameraContext = 0
    :
131 |
132 |     /// - Tag: HandleInterruption
133 |     internal func sessionWasInterrupted(notification: Notification) {
    |                   `- note: add '@available' attribute to enclosing instance method
134 |         // In some scenarios you want to enable the user to resume the session.
135 |         // For example, if music playback is initiated from Control Center while
    :
140 |         // `resumeInterruptedSession(_:)`.
141 |         if let reasonIntegerValue = notification.userInfo?[AVCaptureSessionInterruptionReasonKey] as? Int,
142 |            let reason = AVCaptureSession.InterruptionReason(rawValue: reasonIntegerValue) {
    |                         |- error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
    |                         `- note: add 'if #available' version check
143 |             print("Capture session was interrupted with reason \(reason)")
144 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+PinchAndZoom.swift:16:9: error: 'MagnificationGesture' is unavailable in tvOS
14 |     /// Internally, it calls ``zoom(_:)``.
15 |     public var zoomGesture: some Gesture {
16 |         MagnificationGesture()
   |         `- error: 'MagnificationGesture' is unavailable in tvOS
17 |             .onChanged(zoom(_:))
18 |     }
SwiftUI.MagnificationGesture:6:27: note: 'MagnificationGesture' has been explicitly marked unavailable here
 4 | @available(tvOS, unavailable)
 5 | @available(visionOS, introduced: 1.0, deprecated: 100000.0, renamed: "MagnifyGesture")
 6 | nonisolated public struct MagnificationGesture : Gesture, ~Sendable {
   |                           `- note: 'MagnificationGesture' has been explicitly marked unavailable here
 7 |     public var minimumScaleDelta: CGFloat
 8 |     nonisolated public init(minimumScaleDelta: CGFloat = 0.01)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+PinchAndZoom.swift:36:48: error: 'activeFormat' is only available in tvOS 17.0 or newer
 9 | import AVFoundation
10 |
11 | extension AVCaptureViewModel {
   | `- note: add '@available' attribute to enclosing extension
12 |     /// A [`MagnificationGesture`](https://developer.apple.com/documentation/swiftui/magnificationgesture) ready to plug into a [`.gesture(_:including:)`](https://developer.apple.com/documentation/swiftui/view/gesture(_:including:)) view modifier.
13 |     ///
   :
31 |     /// ```
32 |     /// - Parameter scale: The scale factor of the zoom.
33 |     public func zoom(_ scale: CGFloat) {
   |                 `- note: add '@available' attribute to enclosing instance method
34 |         // Limit the factor to be at least 1
35 |         let device = self.videoDeviceInput.device
36 |         let factor = min(max(scale, 1), device.activeFormat.videoMaxZoomFactor)
   |                                                |- error: 'activeFormat' is only available in tvOS 17.0 or newer
   |                                                `- note: add 'if #available' version check
37 |
38 |         do {
SwiftCompile normal arm64 Compiling\ CameraPreview.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreview.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreview.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile CameraPreview.swift
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreview.swift:15:44: error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
11 | /// A SwiftUI `UIViewRepresentable` wrapper of ``CameraPreviewView``.
12 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color, but it will still register taps and gestures on the empty space.
13 | public struct CameraPreview: UIViewRepresentable {
   |               `- note: add '@available' attribute to enclosing struct
14 |     /// The view preview `CALayer` from ``CameraPreviewView``'s ``CameraPreviewView/videoPreviewLayer``, that is shared with ``AVCaptureViewModel/AVCaptureViewModel``'s ``AVCaptureViewModel/AVCaptureViewModel/videoPreviewLayer``.
15 |     @Binding public var videoPreviewLayer: AVCaptureVideoPreviewLayer!
   |                                            `- error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
16 |
17 |     /// The preview layer's capture session from ``AVCaptureViewModel/AVCaptureViewModel/session`` that is passed to ``CameraPreviewView``.
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreview.swift:18:25: error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
11 | /// A SwiftUI `UIViewRepresentable` wrapper of ``CameraPreviewView``.
12 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color, but it will still register taps and gestures on the empty space.
13 | public struct CameraPreview: UIViewRepresentable {
   |               `- note: add '@available' attribute to enclosing struct
14 |     /// The view preview `CALayer` from ``CameraPreviewView``'s ``CameraPreviewView/videoPreviewLayer``, that is shared with ``AVCaptureViewModel/AVCaptureViewModel``'s ``AVCaptureViewModel/AVCaptureViewModel/videoPreviewLayer``.
15 |     @Binding public var videoPreviewLayer: AVCaptureVideoPreviewLayer!
16 |
17 |     /// The preview layer's capture session from ``AVCaptureViewModel/AVCaptureViewModel/session`` that is passed to ``CameraPreviewView``.
18 |     public var session: AVCaptureSession?
   |                         `- error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
19 |
20 |     public init(videoPreviewLayer: Binding<AVCaptureVideoPreviewLayer?>, session: AVCaptureSession?) {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreview.swift:20:44: error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
11 | /// A SwiftUI `UIViewRepresentable` wrapper of ``CameraPreviewView``.
12 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color, but it will still register taps and gestures on the empty space.
13 | public struct CameraPreview: UIViewRepresentable {
   |               `- note: add '@available' attribute to enclosing struct
14 |     /// The view preview `CALayer` from ``CameraPreviewView``'s ``CameraPreviewView/videoPreviewLayer``, that is shared with ``AVCaptureViewModel/AVCaptureViewModel``'s ``AVCaptureViewModel/AVCaptureViewModel/videoPreviewLayer``.
15 |     @Binding public var videoPreviewLayer: AVCaptureVideoPreviewLayer!
   :
18 |     public var session: AVCaptureSession?
19 |
20 |     public init(videoPreviewLayer: Binding<AVCaptureVideoPreviewLayer?>, session: AVCaptureSession?) {
   |            |                               `- error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
   |            `- note: add '@available' attribute to enclosing initializer
21 |         self._videoPreviewLayer = videoPreviewLayer
22 |         self.session = session
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreview.swift:20:83: error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
11 | /// A SwiftUI `UIViewRepresentable` wrapper of ``CameraPreviewView``.
12 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color, but it will still register taps and gestures on the empty space.
13 | public struct CameraPreview: UIViewRepresentable {
   |               `- note: add '@available' attribute to enclosing struct
14 |     /// The view preview `CALayer` from ``CameraPreviewView``'s ``CameraPreviewView/videoPreviewLayer``, that is shared with ``AVCaptureViewModel/AVCaptureViewModel``'s ``AVCaptureViewModel/AVCaptureViewModel/videoPreviewLayer``.
15 |     @Binding public var videoPreviewLayer: AVCaptureVideoPreviewLayer!
   :
18 |     public var session: AVCaptureSession?
19 |
20 |     public init(videoPreviewLayer: Binding<AVCaptureVideoPreviewLayer?>, session: AVCaptureSession?) {
   |            |                                                                      `- error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
   |            `- note: add '@available' attribute to enclosing initializer
21 |         self._videoPreviewLayer = videoPreviewLayer
22 |         self.session = session
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreview.swift:41:44: error: 'layerPointConverted(fromCaptureDevicePoint:)' is only available in tvOS 17.0 or newer
36 | }
37 |
38 | extension CameraPreview {
   | `- note: add '@available' attribute to enclosing extension
39 |     private var videoPreviewRect: CGRect? {
   |                 `- note: add '@available' attribute to enclosing property
40 |         guard let videoPreviewLayer else { return nil }
41 |         let topLeading = videoPreviewLayer.layerPointConverted(fromCaptureDevicePoint: CGPoint(x: 0, y: 1))
   |                                            |- error: 'layerPointConverted(fromCaptureDevicePoint:)' is only available in tvOS 17.0 or newer
   |                                            `- note: add 'if #available' version check
42 |         let topTrailing = videoPreviewLayer.layerPointConverted(fromCaptureDevicePoint: CGPoint(x: 0, y: 0))
43 |         let bottomLeading = videoPreviewLayer.layerPointConverted(fromCaptureDevicePoint: CGPoint(x: 1, y: 1))
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreview.swift:42:45: error: 'layerPointConverted(fromCaptureDevicePoint:)' is only available in tvOS 17.0 or newer
36 | }
37 |
38 | extension CameraPreview {
   | `- note: add '@available' attribute to enclosing extension
39 |     private var videoPreviewRect: CGRect? {
   |                 `- note: add '@available' attribute to enclosing property
40 |         guard let videoPreviewLayer else { return nil }
41 |         let topLeading = videoPreviewLayer.layerPointConverted(fromCaptureDevicePoint: CGPoint(x: 0, y: 1))
42 |         let topTrailing = videoPreviewLayer.layerPointConverted(fromCaptureDevicePoint: CGPoint(x: 0, y: 0))
   |                                             |- error: 'layerPointConverted(fromCaptureDevicePoint:)' is only available in tvOS 17.0 or newer
   |                                             `- note: add 'if #available' version check
43 |         let bottomLeading = videoPreviewLayer.layerPointConverted(fromCaptureDevicePoint: CGPoint(x: 1, y: 1))
44 |         return CGRect(origin: topLeading, size: CGSize(width: topTrailing.x - topLeading.x, height: bottomLeading.y - topLeading.y))
SwiftCompile normal arm64 Compiling\ AVCaptureViewModel+RecordingMovies.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile AVCaptureViewModel+RecordingMovies.swift
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift:85:38: error: 'AVCaptureFileOutput' is only available in tvOS 17.0 or newer
 12 | // MARK: Recording Movies
 13 |
 14 | extension AVCaptureViewModel: AVCaptureFileOutputRecordingDelegate {
    | `- note: add '@available' attribute to enclosing extension
 15 |     /// Starts/stops video capture recording video.
 16 |     ///
    :
 83 |
 84 |     /// - Tag: DidStartRecording
 85 |     public func fileOutput(_ output: AVCaptureFileOutput, didStartRecordingTo fileURL: URL, from connections: [AVCaptureConnection]) {
    |                 |                    `- error: 'AVCaptureFileOutput' is only available in tvOS 17.0 or newer
    |                 `- note: add '@available' attribute to enclosing instance method
 86 |         capturedMovieURLs.insert(fileURL)
 87 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift:85:112: error: 'AVCaptureConnection' is only available in tvOS 17.0 or newer
 12 | // MARK: Recording Movies
 13 |
 14 | extension AVCaptureViewModel: AVCaptureFileOutputRecordingDelegate {
    | `- note: add '@available' attribute to enclosing extension
 15 |     /// Starts/stops video capture recording video.
 16 |     ///
    :
 83 |
 84 |     /// - Tag: DidStartRecording
 85 |     public func fileOutput(_ output: AVCaptureFileOutput, didStartRecordingTo fileURL: URL, from connections: [AVCaptureConnection]) {
    |                 |                                                                                              `- error: 'AVCaptureConnection' is only available in tvOS 17.0 or newer
    |                 `- note: add '@available' attribute to enclosing instance method
 86 |         capturedMovieURLs.insert(fileURL)
 87 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift:98:38: error: 'AVCaptureFileOutput' is only available in tvOS 17.0 or newer
 12 | // MARK: Recording Movies
 13 |
 14 | extension AVCaptureViewModel: AVCaptureFileOutputRecordingDelegate {
    | `- note: add '@available' attribute to enclosing extension
 15 |     /// Starts/stops video capture recording video.
 16 |     ///
    :
 96 |
 97 |     /// - Tag: DidFinishRecording
 98 |     public func fileOutput(_ output: AVCaptureFileOutput,
    |                 |                    `- error: 'AVCaptureFileOutput' is only available in tvOS 17.0 or newer
    |                 `- note: add '@available' attribute to enclosing instance method
 99 |                            didFinishRecordingTo outputFileURL: URL,
100 |                            from connections: [AVCaptureConnection],
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift:100:47: error: 'AVCaptureConnection' is only available in tvOS 17.0 or newer
 12 | // MARK: Recording Movies
 13 |
 14 | extension AVCaptureViewModel: AVCaptureFileOutputRecordingDelegate {
    | `- note: add '@available' attribute to enclosing extension
 15 |     /// Starts/stops video capture recording video.
 16 |     ///
    :
 96 |
 97 |     /// - Tag: DidFinishRecording
 98 |     public func fileOutput(_ output: AVCaptureFileOutput,
    |                 `- note: add '@available' attribute to enclosing instance method
 99 |                            didFinishRecordingTo outputFileURL: URL,
100 |                            from connections: [AVCaptureConnection],
    |                                               `- error: 'AVCaptureConnection' is only available in tvOS 17.0 or newer
101 |                            error: Error?) {
102 |         let cleanUp = { (url: URL) -> Void in
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift:49:65: error: 'connection(with:)' is only available in tvOS 17.0 or newer
 12 | // MARK: Recording Movies
 13 |
 14 | extension AVCaptureViewModel: AVCaptureFileOutputRecordingDelegate {
    | `- note: add '@available' attribute to enclosing extension
 15 |     /// Starts/stops video capture recording video.
 16 |     ///
 17 |     /// - Note: Because a unique file path is used for each recording, a new recording won't overwrite a recording mid-save.
 18 |     public func toggleMovieRecording() {
    |                 `- note: add '@available' attribute to enclosing instance method
 19 |         guard let movieFileOutput = self.movieFileOutput else {
 20 |             return
    :
 47 |                 }
 48 |
 49 |                 let movieFileOutputConnection = movieFileOutput.connection(with: .video)
    |                                                                 |- error: 'connection(with:)' is only available in tvOS 17.0 or newer
    |                                                                 `- note: add 'if #available' version check
 50 |
 51 |                 // Update the orientation on the movie file output video
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift:60:57: error: 'isVideoOrientationSupported' is unavailable in tvOS
 58 |                         // TODO: add use of isVideoRotationAngleSupported(videoRotationAngle) on photoOutputConnection
 59 | //                        movieFileOutputConnection?.videoRotationAngle = videoRotationAngle
 60 |                     } else if movieFileOutputConnection.isVideoOrientationSupported {
    |                                                         `- error: 'isVideoOrientationSupported' is unavailable in tvOS
 61 |                         movieFileOutputConnection.videoOrientation = captureOrientation
 62 |                     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSession.h:1101:73: note: 'isVideoOrientationSupported' has been explicitly marked unavailable here
1099 |     This property is deprecated. Use -isVideoRotationAngleSupported: instead.
1100 |  */
1101 | @property(nonatomic, readonly, getter=isVideoOrientationSupported) BOOL supportsVideoOrientation API_DEPRECATED("Use -isVideoRotationAngleSupported: instead", macos(10.7, 14.0), ios(4.0, 17.0), macCatalyst(14.0, 17.0)) API_UNAVAILABLE(tvos, visionos);
     |                                                                         `- note: 'isVideoOrientationSupported' has been explicitly marked unavailable here
1102 |
1103 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift:61:51: error: 'videoOrientation' is unavailable in tvOS
 59 | //                        movieFileOutputConnection?.videoRotationAngle = videoRotationAngle
 60 |                     } else if movieFileOutputConnection.isVideoOrientationSupported {
 61 |                         movieFileOutputConnection.videoOrientation = captureOrientation
    |                                                   `- error: 'videoOrientation' is unavailable in tvOS
 62 |                     }
 63 |
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSession.h:1111:48: note: 'videoOrientation' has been explicitly marked unavailable here
1109 |     This property is deprecated. Use -videoRotationAngle instead. This property may only be set if -isVideoOrientationSupported returns YES, otherwise an NSInvalidArgumentException is thrown.
1110 |  */
1111 | @property(nonatomic) AVCaptureVideoOrientation videoOrientation API_DEPRECATED("Use -videoRotationAngle instead", macos(10.7, 14.0), ios(4.0, 17.0), macCatalyst(14.0, 17.0)) API_UNAVAILABLE(tvos, visionos);
     |                                                `- note: 'videoOrientation' has been explicitly marked unavailable here
1112 |
1113 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift:66:68: error: 'availableVideoCodecTypes' is only available in tvOS 17.0 or newer
 12 | // MARK: Recording Movies
 13 |
 14 | extension AVCaptureViewModel: AVCaptureFileOutputRecordingDelegate {
    | `- note: add '@available' attribute to enclosing extension
 15 |     /// Starts/stops video capture recording video.
 16 |     ///
 17 |     /// - Note: Because a unique file path is used for each recording, a new recording won't overwrite a recording mid-save.
 18 |     public func toggleMovieRecording() {
    |                 `- note: add '@available' attribute to enclosing instance method
 19 |         guard let movieFileOutput = self.movieFileOutput else {
 20 |             return
    :
 64 |                     // TODO: if making this a package, make sure to make this an option
 65 |                     // Sets output settings to .hevc if device supports. We need to keep it with jpeg
 66 |                     let availableVideoCodecTypes = movieFileOutput.availableVideoCodecTypes
    |                                                                    |- error: 'availableVideoCodecTypes' is only available in tvOS 17.0 or newer
    |                                                                    `- note: add 'if #available' version check
 67 |                     if availableVideoCodecTypes.contains(.hevc) {
 68 |                         movieFileOutput.setOutputSettings([AVVideoCodecKey: AVVideoCodecType.hevc], for: movieFileOutputConnection)
SwiftEmitModule normal arm64 Emitting\ module\ for\ AVCaptureViewModel (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/AVCaptureViewModelSettings.swift:51:75: error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
10 |
11 | extension AVCaptureViewModel {
12 |     public struct Settings {
   |                   `- note: add '@available' attribute to enclosing struct
13 |         /// Dictates if the device's currently location should be attached to captures.
14 |         ///
   :
49 |         ///
50 |         /// - Note: This callback is called on the main thread.
51 |         public var photoCaptureScreenFlashCallback: (_ videoPreviewLayer: AVCaptureVideoPreviewLayer) -> Void = { videoPreviewLayer in
   |                                                                           `- error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
52 |             videoPreviewLayer.opacity = 0
53 |             UIView.animate(withDuration: 0.25) {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/AVCaptureViewModelSettings.swift:77:73: error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
 9 | import AVFoundation
10 |
11 | extension AVCaptureViewModel {
   | `- note: add '@available' attribute to enclosing extension
12 |     public struct Settings {
13 |         /// Dictates if the device's currently location should be attached to captures.
   :
75 |
76 |     /// Convenience getter/setter for ``settings``'s ``Settings/photoCaptureScreenFlashCallback``.
77 |     internal var photoCaptureScreenFlashCallback: (_ videoPreviewLayer: AVCaptureVideoPreviewLayer) -> Void {
   |                  |                                                      `- error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
   |                  `- note: add '@available' attribute to enclosing property
78 |         get {
79 |             settings.photoCaptureScreenFlashCallback
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/CameraSessionState.swift:18:59: error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
11 | // TODO: More states?
12 |
13 | enum CameraSessionState {
   |      `- note: add '@available' attribute to enclosing enum
14 |     case awaitingSetUp
15 |
16 |     case sessionRuntimeError(error: AVError)
17 |     // unresumable means camera unavailable
18 |     case sessionWasInterrupted(isResumable: Bool, reason: AVCaptureSession.InterruptionReason)
   |                                                           `- error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
19 |     case sessionIsUnableToResume
20 |     case sessionInterruptionEnded
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:12:46: error: 'AVCapturePhotoSettings' is only available in tvOS 17.0 or newer
  9 | import Photos
 10 |
 11 | class PhotoCaptureProcessor: NSObject {
    |       `- note: add '@available' attribute to enclosing class
 12 |     private(set) var requestedPhotoSettings: AVCapturePhotoSettings
    |                                              `- error: 'AVCapturePhotoSettings' is only available in tvOS 17.0 or newer
 13 |
 14 |     internal var tagLocationInCaptures: Bool
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:33:39: error: 'AVCapturePhotoSettings' is only available in tvOS 17.0 or newer
  9 | import Photos
 10 |
 11 | class PhotoCaptureProcessor: NSObject {
    |       `- note: add '@available' attribute to enclosing class
 12 |     private(set) var requestedPhotoSettings: AVCapturePhotoSettings
 13 |
    :
 31 |     var location: CLLocation?
 32 |
 33 |     init(with requestedPhotoSettings: AVCapturePhotoSettings,
    |     |                                 `- error: 'AVCapturePhotoSettings' is only available in tvOS 17.0 or newer
    |     `- note: add '@available' attribute to enclosing initializer
 34 |          tagLocationInCaptures: Bool,
 35 |          shouldSaveCapturesToLibrary: Bool,
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:65:32: error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
 61 |
 62 | /// This extension adopts all of the AVCapturePhotoCaptureDelegate protocol methods.
 63 | extension PhotoCaptureProcessor: AVCapturePhotoCaptureDelegate {
    | `- note: add '@available' attribute to enclosing extension
 64 |     /// - Tag: WillBeginCapture
 65 |     func photoOutput(_ output: AVCapturePhotoOutput, willBeginCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    |          |                     `- error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 66 |         if resolvedSettings.livePhotoMovieDimensions.width > 0 && resolvedSettings.livePhotoMovieDimensions.height > 0 {
 67 |             livePhotoCaptureHandler(true)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:65:92: error: 'AVCaptureResolvedPhotoSettings' is only available in tvOS 17.0 or newer
 61 |
 62 | /// This extension adopts all of the AVCapturePhotoCaptureDelegate protocol methods.
 63 | extension PhotoCaptureProcessor: AVCapturePhotoCaptureDelegate {
    | `- note: add '@available' attribute to enclosing extension
 64 |     /// - Tag: WillBeginCapture
 65 |     func photoOutput(_ output: AVCapturePhotoOutput, willBeginCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    |          |                                                                                 `- error: 'AVCaptureResolvedPhotoSettings' is only available in tvOS 17.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 66 |         if resolvedSettings.livePhotoMovieDimensions.width > 0 && resolvedSettings.livePhotoMovieDimensions.height > 0 {
 67 |             livePhotoCaptureHandler(true)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:72:32: error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
 61 |
 62 | /// This extension adopts all of the AVCapturePhotoCaptureDelegate protocol methods.
 63 | extension PhotoCaptureProcessor: AVCapturePhotoCaptureDelegate {
    | `- note: add '@available' attribute to enclosing extension
 64 |     /// - Tag: WillBeginCapture
 65 |     func photoOutput(_ output: AVCapturePhotoOutput, willBeginCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    :
 70 |
 71 |     /// - Tag: WillCapturePhoto
 72 |     func photoOutput(_ output: AVCapturePhotoOutput, willCapturePhotoFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    |          |                     `- error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 73 |         willCapturePhotoAnimation()
 74 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:72:92: error: 'AVCaptureResolvedPhotoSettings' is only available in tvOS 17.0 or newer
 61 |
 62 | /// This extension adopts all of the AVCapturePhotoCaptureDelegate protocol methods.
 63 | extension PhotoCaptureProcessor: AVCapturePhotoCaptureDelegate {
    | `- note: add '@available' attribute to enclosing extension
 64 |     /// - Tag: WillBeginCapture
 65 |     func photoOutput(_ output: AVCapturePhotoOutput, willBeginCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    :
 70 |
 71 |     /// - Tag: WillCapturePhoto
 72 |     func photoOutput(_ output: AVCapturePhotoOutput, willCapturePhotoFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    |          |                                                                                 `- error: 'AVCaptureResolvedPhotoSettings' is only available in tvOS 17.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 73 |         willCapturePhotoAnimation()
 74 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:77:32: error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
 61 |
 62 | /// This extension adopts all of the AVCapturePhotoCaptureDelegate protocol methods.
 63 | extension PhotoCaptureProcessor: AVCapturePhotoCaptureDelegate {
    | `- note: add '@available' attribute to enclosing extension
 64 |     /// - Tag: WillBeginCapture
 65 |     func photoOutput(_ output: AVCapturePhotoOutput, willBeginCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    :
 75 |
 76 |     /// - Tag: DidFinishProcessingPhoto
 77 |     func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
    |          |                     `- error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 78 |
 79 |         if let error = error {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:77:86: error: 'AVCapturePhoto' is only available in tvOS 17.0 or newer
 61 |
 62 | /// This extension adopts all of the AVCapturePhotoCaptureDelegate protocol methods.
 63 | extension PhotoCaptureProcessor: AVCapturePhotoCaptureDelegate {
    | `- note: add '@available' attribute to enclosing extension
 64 |     /// - Tag: WillBeginCapture
 65 |     func photoOutput(_ output: AVCapturePhotoOutput, willBeginCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    :
 75 |
 76 |     /// - Tag: DidFinishProcessingPhoto
 77 |     func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
    |          |                                                                           `- error: 'AVCapturePhoto' is only available in tvOS 17.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 78 |
 79 |         if let error = error {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:98:32: error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
 61 |
 62 | /// This extension adopts all of the AVCapturePhotoCaptureDelegate protocol methods.
 63 | extension PhotoCaptureProcessor: AVCapturePhotoCaptureDelegate {
    | `- note: add '@available' attribute to enclosing extension
 64 |     /// - Tag: WillBeginCapture
 65 |     func photoOutput(_ output: AVCapturePhotoOutput, willBeginCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    :
 96 |
 97 |     /// - Tag: DidFinishRecordingLive
 98 |     func photoOutput(_ output: AVCapturePhotoOutput, didFinishRecordingLivePhotoMovieForEventualFileAt outputFileURL: URL, resolvedSettings: AVCaptureResolvedPhotoSettings) {
    |          |                     `- error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 99 |         livePhotoCaptureHandler(false)
100 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:98:142: error: 'AVCaptureResolvedPhotoSettings' is only available in tvOS 17.0 or newer
 61 |
 62 | /// This extension adopts all of the AVCapturePhotoCaptureDelegate protocol methods.
 63 | extension PhotoCaptureProcessor: AVCapturePhotoCaptureDelegate {
    | `- note: add '@available' attribute to enclosing extension
 64 |     /// - Tag: WillBeginCapture
 65 |     func photoOutput(_ output: AVCapturePhotoOutput, willBeginCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    :
 96 |
 97 |     /// - Tag: DidFinishRecordingLive
 98 |     func photoOutput(_ output: AVCapturePhotoOutput, didFinishRecordingLivePhotoMovieForEventualFileAt outputFileURL: URL, resolvedSettings: AVCaptureResolvedPhotoSettings) {
    |          |                                                                                                                                   `- error: 'AVCaptureResolvedPhotoSettings' is only available in tvOS 17.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 99 |         livePhotoCaptureHandler(false)
100 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:103:32: error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
 61 |
 62 | /// This extension adopts all of the AVCapturePhotoCaptureDelegate protocol methods.
 63 | extension PhotoCaptureProcessor: AVCapturePhotoCaptureDelegate {
    | `- note: add '@available' attribute to enclosing extension
 64 |     /// - Tag: WillBeginCapture
 65 |     func photoOutput(_ output: AVCapturePhotoOutput, willBeginCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    :
101 |
102 |     /// - Tag: DidFinishProcessingLive
103 |     func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingLivePhotoToMovieFileAt outputFileURL: URL, duration: CMTime, photoDisplayTime: CMTime, resolvedSettings: AVCaptureResolvedPhotoSettings, error: Error?) {
    |          |                     `- error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
104 |         if error != nil {
105 |             print("Error processing Live Photo companion movie: \(String(describing: error))")
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:103:178: error: 'AVCaptureResolvedPhotoSettings' is only available in tvOS 17.0 or newer
 61 |
 62 | /// This extension adopts all of the AVCapturePhotoCaptureDelegate protocol methods.
 63 | extension PhotoCaptureProcessor: AVCapturePhotoCaptureDelegate {
    | `- note: add '@available' attribute to enclosing extension
 64 |     /// - Tag: WillBeginCapture
 65 |     func photoOutput(_ output: AVCapturePhotoOutput, willBeginCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    :
101 |
102 |     /// - Tag: DidFinishProcessingLive
103 |     func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingLivePhotoToMovieFileAt outputFileURL: URL, duration: CMTime, photoDisplayTime: CMTime, resolvedSettings: AVCaptureResolvedPhotoSettings, error: Error?) {
    |          |                                                                                                                                                                       `- error: 'AVCaptureResolvedPhotoSettings' is only available in tvOS 17.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
104 |         if error != nil {
105 |             print("Error processing Live Photo companion movie: \(String(describing: error))")
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:112:32: error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
 61 |
 62 | /// This extension adopts all of the AVCapturePhotoCaptureDelegate protocol methods.
 63 | extension PhotoCaptureProcessor: AVCapturePhotoCaptureDelegate {
    | `- note: add '@available' attribute to enclosing extension
 64 |     /// - Tag: WillBeginCapture
 65 |     func photoOutput(_ output: AVCapturePhotoOutput, willBeginCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    :
110 |
111 |     /// - Tag: DidFinishCapture
112 |     func photoOutput(_ output: AVCapturePhotoOutput, didFinishCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings, error: Error?) {
    |          |                     `- error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
113 |         if let error = error {
114 |             print("Error capturing photo: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper Types/PhotoCaptureProcessor.swift:112:92: error: 'AVCaptureResolvedPhotoSettings' is only available in tvOS 17.0 or newer
 61 |
 62 | /// This extension adopts all of the AVCapturePhotoCaptureDelegate protocol methods.
 63 | extension PhotoCaptureProcessor: AVCapturePhotoCaptureDelegate {
    | `- note: add '@available' attribute to enclosing extension
 64 |     /// - Tag: WillBeginCapture
 65 |     func photoOutput(_ output: AVCapturePhotoOutput, willBeginCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    :
110 |
111 |     /// - Tag: DidFinishCapture
112 |     func photoOutput(_ output: AVCapturePhotoOutput, didFinishCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings, error: Error?) {
    |          |                                                                                 `- error: 'AVCaptureResolvedPhotoSettings' is only available in tvOS 17.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
113 |         if let error = error {
114 |             print("Error capturing photo: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Misc Extensions/AVCaptureDeviceDiscoverySession+Extension.swift:11:11: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 9 | import AVFoundation
10 |
11 | extension AVCaptureDevice.DiscoverySession {
   | |         `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
   | `- note: add '@available' attribute to enclosing extension
12 |     internal var uniqueDevicePositionsCount: Int {
13 |         var uniqueDevicePositions = [AVCaptureDevice.Position]()
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:36:39: error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
 34 |     /// - term SwiftUI: ``CameraPreview/session`` must be set to this via ``CameraPreview/init(videoPreviewLayer:session:)``.
 35 |     /// - term UIKit: ``CameraPreviewView/session`` must be set to this directly.
 36 |     public private(set) var session = AVCaptureSession()
    |                                       `- error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
 37 |
 38 |     /// The linked view preview `CALayer`.
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:43:35: error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
 41 |     /// - term SwiftUI: This must be set to ``CameraPreview/videoPreviewLayer`` via ``CameraPreview/init(videoPreviewLayer:session:)``.
 42 |     /// - term UIKit: This must be set to ``CameraPreviewView/videoPreviewLayer`` directly.
 43 |     public var videoPreviewLayer: AVCaptureVideoPreviewLayer! {
    |                                   `- error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
 44 |         didSet {
 45 |             guard videoPreviewLayer != nil else { return }
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:236:36: error: 'AVCaptureDeviceInput' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
234 |     @Published internal var setupResult: SessionSetupResult = .initial
235 |
236 |     internal var videoDeviceInput: AVCaptureDeviceInput!
    |                                    `- error: 'AVCaptureDeviceInput' is only available in tvOS 17.0 or newer
237 |
238 |     // MARK: - configureSession()
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:412:48: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
410 |     }
411 |
412 |     internal let videoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(
    |                                                `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
413 |         deviceTypes: [.builtInWideAngleCamera, .builtInDualCamera, .builtInTrueDepthCamera],
414 |         mediaType: .video,
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:413:24: error: 'builtInWideAngleCamera' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
411 |
412 |     internal let videoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(
413 |         deviceTypes: [.builtInWideAngleCamera, .builtInDualCamera, .builtInTrueDepthCamera],
    |                        `- error: 'builtInWideAngleCamera' is only available in tvOS 17.0 or newer
414 |         mediaType: .video,
415 |         position: .unspecified
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:413:49: error: 'builtInDualCamera' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
411 |
412 |     internal let videoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(
413 |         deviceTypes: [.builtInWideAngleCamera, .builtInDualCamera, .builtInTrueDepthCamera],
    |                                                 `- error: 'builtInDualCamera' is only available in tvOS 17.0 or newer
414 |         mediaType: .video,
415 |         position: .unspecified
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:413:69: error: 'builtInTrueDepthCamera' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
411 |
412 |     internal let videoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(
413 |         deviceTypes: [.builtInWideAngleCamera, .builtInDualCamera, .builtInTrueDepthCamera],
    |                                                                     `- error: 'builtInTrueDepthCamera' is only available in tvOS 17.0 or newer
414 |         mediaType: .video,
415 |         position: .unspecified
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:424:53: error: 'UIDeviceOrientation' is unavailable in tvOS
422 |     ///
423 |     /// This updated automatically and can be subscribed to.
424 |     @Published public var currentDeviceOrientation: UIDeviceOrientation = .unknown
    |                                                     `- error: 'UIDeviceOrientation' is unavailable in tvOS
425 |     internal var captureOrientation: AVCaptureVideoOrientation {
426 |         switch currentDeviceOrientation {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIOrientation.h:13:28: note: 'UIDeviceOrientation' has been explicitly marked unavailable here
11 | NS_HEADER_AUDIT_BEGIN(nullability, sendability)
12 |
13 | typedef NS_ENUM(NSInteger, UIDeviceOrientation) {
   |                            `- note: 'UIDeviceOrientation' has been explicitly marked unavailable here
14 |     UIDeviceOrientationUnknown,
15 |     UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:425:38: error: 'AVCaptureVideoOrientation' is unavailable in tvOS
423 |     /// This updated automatically and can be subscribed to.
424 |     @Published public var currentDeviceOrientation: UIDeviceOrientation = .unknown
425 |     internal var captureOrientation: AVCaptureVideoOrientation {
    |                                      `- error: 'AVCaptureVideoOrientation' is unavailable in tvOS
426 |         switch currentDeviceOrientation {
427 |         case .portrait:
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h:104:28: note: 'AVCaptureVideoOrientation' has been explicitly marked unavailable here
 102 |
 103 | /// Constants indicating video orientation, for use with AVCaptureDeviceRotationCoordinator.
 104 | typedef NS_ENUM(NSInteger, AVCaptureVideoOrientation) {
     |                            `- note: 'AVCaptureVideoOrientation' has been explicitly marked unavailable here
 105 |     /// Indicates that video should be oriented vertically, port on the bottom.
 106 |     AVCaptureVideoOrientationPortrait           = 1,
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:457:32: error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
455 |     @Published public var lastPhotoCaptured: Data? = nil
456 |
457 |     internal let photoOutput = AVCapturePhotoOutput()
    |                                `- error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
458 |
459 | //    @available(iOS 17.0, *)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:462:33: error: 'AVCapturePhotoSettings' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
460 | //    internal var photoOutputReadinessCoordinator: AVCapturePhotoOutputReadinessCoordinator!
461 |
462 |     internal var photoSettings: AVCapturePhotoSettings!
    |                                 `- error: 'AVCapturePhotoSettings' is only available in tvOS 17.0 or newer
463 |
464 |     internal var inProgressPhotoCaptureDelegates = [Int64: PhotoCaptureProcessor]()
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:473:38: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
471 |     ///
472 |     /// > See More: [`flashMode`](https://developer.apple.com/documentation/avfoundation/avcapturephotosettings/1648760-flashmode).
473 |     @Published public var flashMode: AVCaptureDevice.FlashMode = .auto
    |                                      `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
474 |
475 |     /// Whether the active session is capturing Live Photos.
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:487:59: error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
485 |     ///
486 |     /// For more info, see [`AVCapturePhotoSettings.photoQualityPrioritization`](https://developer.apple.com/documentation/avfoundation/avcapturephotosettings/3183000-photoqualityprioritization).
487 |     @Published public var photoQualityPrioritizationMode: AVCapturePhotoOutput.QualityPrioritization = .balanced
    |                                                           `- error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
488 |
489 |     // TODO: add Published properties for state/processingPhoto (or isCapturingPhoto) and isCapturingVideo or events (maybe via a subject)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:491:54: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
489 |     // TODO: add Published properties for state/processingPhoto (or isCapturingPhoto) and isCapturingVideo or events (maybe via a subject)
490 |
491 |     internal var selectedMovieMode10BitDeviceFormat: AVCaptureDevice.Format?
    |                                                      `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
492 |
493 |     /// Whether the active session is capturing HDR video.
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:521:35: error: 'AVCaptureMovieFileOutput' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
519 |     internal var capturedMovieURLs: Set<URL> = []
520 |
521 |     internal var movieFileOutput: AVCaptureMovieFileOutput?
    |                                   `- error: 'AVCaptureMovieFileOutput' is only available in tvOS 17.0 or newer
522 |
523 |     internal var backgroundRecordingID: UIBackgroundTaskIdentifier?
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+CapturingPhotos.swift:97:43: error: 'AVCapturePhotoSettings' is only available in tvOS 17.0 or newer
 11 | // MARK: Capturing Photos
 12 |
 13 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 14 |     /// Captures a photo.
 15 |     ///
    :
 95 |     }
 96 |
 97 |     internal func setUpPhotoSettings() -> AVCapturePhotoSettings {
    |                   |                       `- error: 'AVCapturePhotoSettings' is only available in tvOS 17.0 or newer
    |                   `- note: add '@available' attribute to enclosing instance method
 98 |         var photoSettings = AVCapturePhotoSettings()
 99 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+CapturingPhotos.swift:132:55: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 11 | // MARK: Capturing Photos
 12 |
 13 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 14 |     /// Captures a photo.
 15 |     ///
    :
130 |     }
131 |
132 |     internal func tenBitVariantOfFormat(activeFormat: AVCaptureDevice.Format) -> AVCaptureDevice.Format? {
    |                   |                                   `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                   `- note: add '@available' attribute to enclosing instance method
133 |         let formats = self.videoDeviceInput.device.formats
134 |         let formatIndex = formats.firstIndex(of: activeFormat)!
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+CapturingPhotos.swift:132:82: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 11 | // MARK: Capturing Photos
 12 |
 13 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 14 |     /// Captures a photo.
 15 |     ///
    :
130 |     }
131 |
132 |     internal func tenBitVariantOfFormat(activeFormat: AVCaptureDevice.Format) -> AVCaptureDevice.Format? {
    |                   |                                                              `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                   `- note: add '@available' attribute to enclosing instance method
133 |         let formats = self.videoDeviceInput.device.formats
134 |         let formatIndex = formats.firstIndex(of: activeFormat)!
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:27:46: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  |                           `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift:85:38: error: 'AVCaptureFileOutput' is only available in tvOS 17.0 or newer
 12 | // MARK: Recording Movies
 13 |
 14 | extension AVCaptureViewModel: AVCaptureFileOutputRecordingDelegate {
    | `- note: add '@available' attribute to enclosing extension
 15 |     /// Starts/stops video capture recording video.
 16 |     ///
    :
 83 |
 84 |     /// - Tag: DidStartRecording
 85 |     public func fileOutput(_ output: AVCaptureFileOutput, didStartRecordingTo fileURL: URL, from connections: [AVCaptureConnection]) {
    |                 |                    `- error: 'AVCaptureFileOutput' is only available in tvOS 17.0 or newer
    |                 `- note: add '@available' attribute to enclosing instance method
 86 |         capturedMovieURLs.insert(fileURL)
 87 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift:85:112: error: 'AVCaptureConnection' is only available in tvOS 17.0 or newer
 12 | // MARK: Recording Movies
 13 |
 14 | extension AVCaptureViewModel: AVCaptureFileOutputRecordingDelegate {
    | `- note: add '@available' attribute to enclosing extension
 15 |     /// Starts/stops video capture recording video.
 16 |     ///
    :
 83 |
 84 |     /// - Tag: DidStartRecording
 85 |     public func fileOutput(_ output: AVCaptureFileOutput, didStartRecordingTo fileURL: URL, from connections: [AVCaptureConnection]) {
    |                 |                                                                                              `- error: 'AVCaptureConnection' is only available in tvOS 17.0 or newer
    |                 `- note: add '@available' attribute to enclosing instance method
 86 |         capturedMovieURLs.insert(fileURL)
 87 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift:98:38: error: 'AVCaptureFileOutput' is only available in tvOS 17.0 or newer
 12 | // MARK: Recording Movies
 13 |
 14 | extension AVCaptureViewModel: AVCaptureFileOutputRecordingDelegate {
    | `- note: add '@available' attribute to enclosing extension
 15 |     /// Starts/stops video capture recording video.
 16 |     ///
    :
 96 |
 97 |     /// - Tag: DidFinishRecording
 98 |     public func fileOutput(_ output: AVCaptureFileOutput,
    |                 |                    `- error: 'AVCaptureFileOutput' is only available in tvOS 17.0 or newer
    |                 `- note: add '@available' attribute to enclosing instance method
 99 |                            didFinishRecordingTo outputFileURL: URL,
100 |                            from connections: [AVCaptureConnection],
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift:100:47: error: 'AVCaptureConnection' is only available in tvOS 17.0 or newer
 12 | // MARK: Recording Movies
 13 |
 14 | extension AVCaptureViewModel: AVCaptureFileOutputRecordingDelegate {
    | `- note: add '@available' attribute to enclosing extension
 15 |     /// Starts/stops video capture recording video.
 16 |     ///
    :
 96 |
 97 |     /// - Tag: DidFinishRecording
 98 |     public func fileOutput(_ output: AVCaptureFileOutput,
    |                 `- note: add '@available' attribute to enclosing instance method
 99 |                            didFinishRecordingTo outputFileURL: URL,
100 |                            from connections: [AVCaptureConnection],
    |                                               `- error: 'AVCaptureConnection' is only available in tvOS 17.0 or newer
101 |                            error: Error?) {
102 |         let cleanUp = { (url: URL) -> Void in
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift:50:39: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Focuses and exposes the camera from a SwiftUI tap on a ``CameraPreview``.
 13 |     ///
    :
 48 |     /// }
 49 |     /// ```
 50 |     public func focus(with focusMode: AVCaptureDevice.FocusMode,
    |                 |                     `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                 `- note: add '@available' attribute to enclosing instance method
 51 |                       exposureMode: AVCaptureDevice.ExposureMode,
 52 |                       at touchPosition: CGPoint) {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift:51:37: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Focuses and exposes the camera from a SwiftUI tap on a ``CameraPreview``.
 13 |     ///
    :
 48 |     /// }
 49 |     /// ```
 50 |     public func focus(with focusMode: AVCaptureDevice.FocusMode,
    |                 `- note: add '@available' attribute to enclosing instance method
 51 |                       exposureMode: AVCaptureDevice.ExposureMode,
    |                                     `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 52 |                       at touchPosition: CGPoint) {
 53 |         let devicePoint = videoPreviewLayer.captureDevicePointConverted(fromLayerPoint: touchPosition)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift:79:39: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Focuses and exposes the camera from a SwiftUI tap on a ``CameraPreview``.
 13 |     ///
    :
 77 |     ///
 78 |     /// To use this functionality, call this function from an `@IBAction` outlet function, passing in the `UITapGestureRecognizer` parameter.
 79 |     public func focus(with focusMode: AVCaptureDevice.FocusMode,
    |                 |                     `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                 `- note: add '@available' attribute to enclosing instance method
 80 |                       exposureMode: AVCaptureDevice.ExposureMode,
 81 |                       gestureRecognizer: UITapGestureRecognizer) {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift:80:37: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Focuses and exposes the camera from a SwiftUI tap on a ``CameraPreview``.
 13 |     ///
    :
 77 |     ///
 78 |     /// To use this functionality, call this function from an `@IBAction` outlet function, passing in the `UITapGestureRecognizer` parameter.
 79 |     public func focus(with focusMode: AVCaptureDevice.FocusMode,
    |                 `- note: add '@available' attribute to enclosing instance method
 80 |                       exposureMode: AVCaptureDevice.ExposureMode,
    |                                     `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 81 |                       gestureRecognizer: UITapGestureRecognizer) {
 82 |         focus(with: focusMode, exposureMode: exposureMode, at: gestureRecognizer.location(in: gestureRecognizer.view), monitorSubjectAreaChange: true)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift:88:41: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 84 | }
 85 |
 86 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 87 |     /// Internally used as the backend for ``focusAndExposeTap(gesturePosition:)``, ``focusAndExposeTap(gestureRecognizer:)``, ``focus(with:exposureMode:at:)``, and ``focus(with:exposureMode:gestureRecognizer:)``.
 88 |     internal func focus(with focusMode: AVCaptureDevice.FocusMode,
    |                   |                     `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                   `- note: add '@available' attribute to enclosing instance method
 89 |                         exposureMode: AVCaptureDevice.ExposureMode,
 90 |                         at previewPoint: CGPoint,
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift:89:39: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 84 | }
 85 |
 86 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 87 |     /// Internally used as the backend for ``focusAndExposeTap(gesturePosition:)``, ``focusAndExposeTap(gestureRecognizer:)``, ``focus(with:exposureMode:at:)``, and ``focus(with:exposureMode:gestureRecognizer:)``.
 88 |     internal func focus(with focusMode: AVCaptureDevice.FocusMode,
    |                   `- note: add '@available' attribute to enclosing instance method
 89 |                         exposureMode: AVCaptureDevice.ExposureMode,
    |                                       `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 90 |                         at previewPoint: CGPoint,
 91 |                         monitorSubjectAreaChange: Bool) {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreview.swift:15:44: error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
11 | /// A SwiftUI `UIViewRepresentable` wrapper of ``CameraPreviewView``.
12 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color, but it will still register taps and gestures on the empty space.
13 | public struct CameraPreview: UIViewRepresentable {
   |               `- note: add '@available' attribute to enclosing struct
14 |     /// The view preview `CALayer` from ``CameraPreviewView``'s ``CameraPreviewView/videoPreviewLayer``, that is shared with ``AVCaptureViewModel/AVCaptureViewModel``'s ``AVCaptureViewModel/AVCaptureViewModel/videoPreviewLayer``.
15 |     @Binding public var videoPreviewLayer: AVCaptureVideoPreviewLayer!
   |                                            `- error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
16 |
17 |     /// The preview layer's capture session from ``AVCaptureViewModel/AVCaptureViewModel/session`` that is passed to ``CameraPreviewView``.
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreview.swift:18:25: error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
11 | /// A SwiftUI `UIViewRepresentable` wrapper of ``CameraPreviewView``.
12 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color, but it will still register taps and gestures on the empty space.
13 | public struct CameraPreview: UIViewRepresentable {
   |               `- note: add '@available' attribute to enclosing struct
14 |     /// The view preview `CALayer` from ``CameraPreviewView``'s ``CameraPreviewView/videoPreviewLayer``, that is shared with ``AVCaptureViewModel/AVCaptureViewModel``'s ``AVCaptureViewModel/AVCaptureViewModel/videoPreviewLayer``.
15 |     @Binding public var videoPreviewLayer: AVCaptureVideoPreviewLayer!
16 |
17 |     /// The preview layer's capture session from ``AVCaptureViewModel/AVCaptureViewModel/session`` that is passed to ``CameraPreviewView``.
18 |     public var session: AVCaptureSession?
   |                         `- error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
19 |
20 |     public init(videoPreviewLayer: Binding<AVCaptureVideoPreviewLayer?>, session: AVCaptureSession?) {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreview.swift:20:44: error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
11 | /// A SwiftUI `UIViewRepresentable` wrapper of ``CameraPreviewView``.
12 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color, but it will still register taps and gestures on the empty space.
13 | public struct CameraPreview: UIViewRepresentable {
   |               `- note: add '@available' attribute to enclosing struct
14 |     /// The view preview `CALayer` from ``CameraPreviewView``'s ``CameraPreviewView/videoPreviewLayer``, that is shared with ``AVCaptureViewModel/AVCaptureViewModel``'s ``AVCaptureViewModel/AVCaptureViewModel/videoPreviewLayer``.
15 |     @Binding public var videoPreviewLayer: AVCaptureVideoPreviewLayer!
   :
18 |     public var session: AVCaptureSession?
19 |
20 |     public init(videoPreviewLayer: Binding<AVCaptureVideoPreviewLayer?>, session: AVCaptureSession?) {
   |            |                               `- error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
   |            `- note: add '@available' attribute to enclosing initializer
21 |         self._videoPreviewLayer = videoPreviewLayer
22 |         self.session = session
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreview.swift:20:83: error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
11 | /// A SwiftUI `UIViewRepresentable` wrapper of ``CameraPreviewView``.
12 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color, but it will still register taps and gestures on the empty space.
13 | public struct CameraPreview: UIViewRepresentable {
   |               `- note: add '@available' attribute to enclosing struct
14 |     /// The view preview `CALayer` from ``CameraPreviewView``'s ``CameraPreviewView/videoPreviewLayer``, that is shared with ``AVCaptureViewModel/AVCaptureViewModel``'s ``AVCaptureViewModel/AVCaptureViewModel/videoPreviewLayer``.
15 |     @Binding public var videoPreviewLayer: AVCaptureVideoPreviewLayer!
   :
18 |     public var session: AVCaptureSession?
19 |
20 |     public init(videoPreviewLayer: Binding<AVCaptureVideoPreviewLayer?>, session: AVCaptureSession?) {
   |            |                                                                      `- error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
   |            `- note: add '@available' attribute to enclosing initializer
21 |         self._videoPreviewLayer = videoPreviewLayer
22 |         self.session = session
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreviewView.swift:64:35: error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
 12 | /// An encapsulated view containing the [`AVCaptureVideoPreviewLayer`](https://developer.apple.com/documentation/avfoundation/avcapturevideopreviewlayer).
 13 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color (``backgroundColor``) or place other views behind it, but it will still register taps and gestures on the empty space.
 14 | public class CameraPreviewView: UIView {
    |              `- note: add '@available' attribute to enclosing class
 15 | //    #warning("what to do with this and stuff at the bottom of file?")
 16 | //    public var allowGesturesOutsidePreview: Bool = false
    :
 62 |
 63 |     /// The view preview `CALayer`.
 64 |     public var videoPreviewLayer: AVCaptureVideoPreviewLayer {
    |                |                  `- error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
    |                `- note: add '@available' attribute to enclosing property
 65 |         guard let layer = layer as? AVCaptureVideoPreviewLayer else {
 66 |             fatalError("Expected `AVCaptureVideoPreviewLayer` type for layer. Check CameraPreviewView.layerClass implementation.")
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreviewView.swift:72:25: error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
 12 | /// An encapsulated view containing the [`AVCaptureVideoPreviewLayer`](https://developer.apple.com/documentation/avfoundation/avcapturevideopreviewlayer).
 13 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color (``backgroundColor``) or place other views behind it, but it will still register taps and gestures on the empty space.
 14 | public class CameraPreviewView: UIView {
    |              `- note: add '@available' attribute to enclosing class
 15 | //    #warning("what to do with this and stuff at the bottom of file?")
 16 | //    public var allowGesturesOutsidePreview: Bool = false
    :
 70 |
 71 |     /// The preview layer's capture session that is created by the ``AVCaptureViewModel/AVCaptureViewModel``.
 72 |     public var session: AVCaptureSession? {
    |                |        `- error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
    |                `- note: add '@available' attribute to enclosing property
 73 |         get {
 74 |             return videoPreviewLayer.session
Failed frontend command:
/Applications/Xcode-27.0.0-Release.Candidate.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/AVCaptureViewModel/Helper\ Types/AVCaptureViewModelSettings.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper\ Types/CameraSessionState.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper\ Types/PhotoCaptureProcessor.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Misc\ Extensions/AVCaptureDeviceDiscoverySession+Extension.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary\ Types/AVCaptureViewModel.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+CapturingPhotos.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+KVO.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+PinchAndZoom.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+Readiness.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+RecordingMovies.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreview.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreviewView.swift -target arm64-apple-tvos15.0 -disable-cross-import-overlay-search -swift-module-cross-import Photos /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Photos.framework/Modules/Photos.swiftcrossimport/AppIntents.swiftoverlay -swift-module-cross-import Photos /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/Photos.framework/Modules/Photos.swiftcrossimport/AppIntents.swiftoverlay -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/lib/swift/host/plugins/libFoundationMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/bin/swift-plugin-server\#FoundationMacros -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/lib/swift/host/plugins/libObservationMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/bin/swift-plugin-server\#ObservationMacros -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/lib/swift/host/plugins/libPreviewsMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/bin/swift-plugin-server\#PreviewsMacros -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/lib/swift/host/plugins/libSwiftMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/bin/swift-plugin-server\#SwiftMacros -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/lib/swift/host/plugins/libSwiftUIMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.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/AVCaptureViewModel.build/Debug-appletvos/AVCaptureViewModel-t.build/Objects-normal/arm64/AVCaptureViewModel-dependencies-1.json -Xllvm -aarch64-use-tbi -enable-objc-interop -stack-check -sdk /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk -I /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-appletvos -Isystem /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/lib -F /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-appletvos -F /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/Library/Frameworks -F /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/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 -profile-generate -profile-coverage-mapping -swift-version 5 -Onone -D SWIFT_PACKAGE -D DEBUG -D SWIFT_MODULE_RESOURCE_BUNDLE_UNAVAILABLE -D Xcode -serialize-debugging-options -enable-experimental-feature DebugDescriptionMacro -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/appletvos27.0-24J360-e829b21a6f8c9b70876ba0858053c044b32bfd8d43560033f8d89884cdb90028.sdkstatcache -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-appletvos/include -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/AVCaptureViewModel.build/Debug-appletvos/AVCaptureViewModel-t.build/DerivedSources-normal/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/AVCaptureViewModel.build/Debug-appletvos/AVCaptureViewModel-t.build/DerivedSources/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/AVCaptureViewModel.build/Debug-appletvos/AVCaptureViewModel-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -no-auto-bridging-header-chaining -module-name AVCaptureViewModel -const-gather-protocols-file /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/AVCaptureViewModel.build/Debug-appletvos/AVCaptureViewModel-t.build/Objects-normal/arm64/AVCaptureViewModel_const_extract_protocols.json -disable-clang-spi -clang-target arm64-apple-tvos27.0 -target-sdk-version 27.0 -target-sdk-name appletvos27.0 -in-process-plugin-server-path /Applications/Xcode-27.0.0-Release.Candidate.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/AVCaptureViewModel.build/Debug-appletvos/AVCaptureViewModel-t.build/Objects-normal/arm64/AVCaptureViewModel.swiftdoc -emit-module-source-info-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/AVCaptureViewModel.build/Debug-appletvos/AVCaptureViewModel-t.build/Objects-normal/arm64/AVCaptureViewModel.swiftsourceinfo -emit-objc-header-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/AVCaptureViewModel.build/Debug-appletvos/AVCaptureViewModel-t.build/Objects-normal/arm64/AVCaptureViewModel-Swift.h -serialize-diagnostics-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/AVCaptureViewModel.build/Debug-appletvos/AVCaptureViewModel-t.build/Objects-normal/arm64/AVCaptureViewModel-primary-emit-module.dia -emit-dependencies-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/AVCaptureViewModel.build/Debug-appletvos/AVCaptureViewModel-t.build/Objects-normal/arm64/AVCaptureViewModel-primary-emit-module.d -parse-as-library -o /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/AVCaptureViewModel.build/Debug-appletvos/AVCaptureViewModel-t.build/Objects-normal/arm64/AVCaptureViewModel.swiftmodule -emit-abi-descriptor-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/AVCaptureViewModel.build/Debug-appletvos/AVCaptureViewModel-t.build/Objects-normal/arm64/AVCaptureViewModel.abi.json
SwiftCompile normal arm64 (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode

SwiftCompile normal arm64 Compiling\ AVCaptureViewModel+DeviceConfig.swift,\ AVCaptureViewModel+InputCallbacks.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:27:46: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  |                           `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:36:39: error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
 34 |     /// - term SwiftUI: ``CameraPreview/session`` must be set to this via ``CameraPreview/init(videoPreviewLayer:session:)``.
 35 |     /// - term UIKit: ``CameraPreviewView/session`` must be set to this directly.
 36 |     public private(set) var session = AVCaptureSession()
    |                                       `- error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
 37 |
 38 |     /// The linked view preview `CALayer`.
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:30:33: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
 30 |             let newVideoDevice: AVCaptureDevice?
    |                                 |- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                                 `- note: add 'if #available' version check
 31 |
 32 |             if let videoDevice = videoDevice {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:42:58: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 40 |                                                                                         mediaType: .video, position: .front)
 41 |
 42 |                 let externalVideoDeviceDiscoverySession: AVCaptureDevice.DiscoverySession? = nil
    |                                                          |- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                                                          `- note: add 'if #available' version check
 43 | //                if #available(iOS 17, *) {
 44 | //                    externalVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.external],
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:37:55: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 35 |                 let currentPosition = currentVideoDevice.position
 36 |
 37 |                 let backVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera],
    |                                                       |- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                                                       `- note: add 'if #available' version check
 38 |                                                                                        mediaType: .video, position: .back)
 39 |                 let frontVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInTrueDepthCamera, .builtInWideAngleCamera],
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:37:103: error: 'builtInDualCamera' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 35 |                 let currentPosition = currentVideoDevice.position
 36 |
 37 |                 let backVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera],
    |                                                                                                       |- error: 'builtInDualCamera' is only available in tvOS 17.0 or newer
    |                                                                                                       `- note: add 'if #available' version check
 38 |                                                                                        mediaType: .video, position: .back)
 39 |                 let frontVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInTrueDepthCamera, .builtInWideAngleCamera],
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:37:123: error: 'builtInWideAngleCamera' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 35 |                 let currentPosition = currentVideoDevice.position
 36 |
 37 |                 let backVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera],
    |                                                                                                                           |- error: 'builtInWideAngleCamera' is only available in tvOS 17.0 or newer
    |                                                                                                                           `- note: add 'if #available' version check
 38 |                                                                                        mediaType: .video, position: .back)
 39 |                 let frontVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInTrueDepthCamera, .builtInWideAngleCamera],
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:39:56: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 37 |                 let backVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera],
 38 |                                                                                        mediaType: .video, position: .back)
 39 |                 let frontVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInTrueDepthCamera, .builtInWideAngleCamera],
    |                                                        |- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                                                        `- note: add 'if #available' version check
 40 |                                                                                         mediaType: .video, position: .front)
 41 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:39:104: error: 'builtInTrueDepthCamera' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 37 |                 let backVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera],
 38 |                                                                                        mediaType: .video, position: .back)
 39 |                 let frontVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInTrueDepthCamera, .builtInWideAngleCamera],
    |                                                                                                        |- error: 'builtInTrueDepthCamera' is only available in tvOS 17.0 or newer
    |                                                                                                        `- note: add 'if #available' version check
 40 |                                                                                         mediaType: .video, position: .front)
 41 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:39:129: error: 'builtInWideAngleCamera' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 37 |                 let backVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera],
 38 |                                                                                        mediaType: .video, position: .back)
 39 |                 let frontVideoDeviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInTrueDepthCamera, .builtInWideAngleCamera],
    |                                                                                                                                 |- error: 'builtInWideAngleCamera' is only available in tvOS 17.0 or newer
    |                                                                                                                                 `- note: add 'if #available' version check
 40 |                                                                                         mediaType: .video, position: .front)
 41 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:63:38: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 61 |                 @unknown default:
 62 |                     print("Unknown capture position. Defaulting to back, dual-camera.")
 63 |                     newVideoDevice = AVCaptureDevice.default(.builtInDualCamera, for: .video, position: .back)
    |                                      |- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                                      `- note: add 'if #available' version check
 64 |                 }
 65 |             }
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:63:54: error: 'default(_:for:position:)' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 61 |                 @unknown default:
 62 |                     print("Unknown capture position. Defaulting to back, dual-camera.")
 63 |                     newVideoDevice = AVCaptureDevice.default(.builtInDualCamera, for: .video, position: .back)
    |                                                      |- error: 'default(_:for:position:)' is only available in tvOS 17.0 or newer
    |                                                      `- note: add 'if #available' version check
 64 |                 }
 65 |             }
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:63:63: error: 'builtInDualCamera' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 61 |                 @unknown default:
 62 |                     print("Unknown capture position. Defaulting to back, dual-camera.")
 63 |                     newVideoDevice = AVCaptureDevice.default(.builtInDualCamera, for: .video, position: .back)
    |                                                               |- error: 'builtInDualCamera' is only available in tvOS 17.0 or newer
    |                                                               `- note: add 'if #available' version check
 64 |                 }
 65 |             }
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:69:48: error: 'AVCaptureDeviceInput' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 67 |             if let videoDevice = newVideoDevice {
 68 |                 do {
 69 |                     let videoDeviceInput = try AVCaptureDeviceInput(device: videoDevice)
    |                                                |- error: 'AVCaptureDeviceInput' is only available in tvOS 17.0 or newer
    |                                                `- note: add 'if #available' version check
 70 |
 71 |                     self.session.beginConfiguration()
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:79:80: error: 'AVCaptureDeviceSubjectAreaDidChange' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 77 |
 78 |                     if self.session.canAddInput(videoDeviceInput) {
 79 |                         NotificationCenter.default.removeObserver(self, name: .AVCaptureDeviceSubjectAreaDidChange, object: currentVideoDevice)
    |                                                                                |- error: 'AVCaptureDeviceSubjectAreaDidChange' is only available in tvOS 17.0 or newer
    |                                                                                `- note: add 'if #available' version check
 80 |                         NotificationCenter.default.addObserver(forName: .AVCaptureDeviceSubjectAreaDidChange, object: videoDeviceInput.device, queue: nil, using: self.subjectAreaDidChange(notification:))
 81 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:80:74: error: 'AVCaptureDeviceSubjectAreaDidChange' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 78 |                     if self.session.canAddInput(videoDeviceInput) {
 79 |                         NotificationCenter.default.removeObserver(self, name: .AVCaptureDeviceSubjectAreaDidChange, object: currentVideoDevice)
 80 |                         NotificationCenter.default.addObserver(forName: .AVCaptureDeviceSubjectAreaDidChange, object: videoDeviceInput.device, queue: nil, using: self.subjectAreaDidChange(notification:))
    |                                                                          |- error: 'AVCaptureDeviceSubjectAreaDidChange' is only available in tvOS 17.0 or newer
    |                                                                          `- note: add 'if #available' version check
 81 |
 82 |                         self.session.addInput(videoDeviceInput)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:97:63: error: 'connection(with:)' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 95 |                         self.session.addInput(self.videoDeviceInput)
 96 |                     }
 97 |                     if let connection = self.movieFileOutput?.connection(with: .video) {
    |                                                               |- error: 'connection(with:)' is only available in tvOS 17.0 or newer
    |                                                               `- note: add 'if #available' version check
 98 |                         self.session.sessionPreset = .high
 99 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:98:55: error: 'high' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 96 |                     }
 97 |                     if let connection = self.movieFileOutput?.connection(with: .video) {
 98 |                         self.session.sessionPreset = .high
    |                                                       |- error: 'high' is only available in tvOS 17.0 or newer
    |                                                       `- note: add 'if #available' version check
 99 |
100 |                         self.selectedMovieMode10BitDeviceFormat = self.tenBitVariantOfFormat(activeFormat: self.videoDeviceInput.device.activeFormat)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:100:137: error: 'activeFormat' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
 98 |                         self.session.sessionPreset = .high
 99 |
100 |                         self.selectedMovieMode10BitDeviceFormat = self.tenBitVariantOfFormat(activeFormat: self.videoDeviceInput.device.activeFormat)
    |                                                                                                                                         |- error: 'activeFormat' is only available in tvOS 17.0 or newer
    |                                                                                                                                         `- note: add 'if #available' version check
101 |
102 |                         if self.selectedMovieMode10BitDeviceFormat != nil {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:107:66: error: 'activeFormat' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
105 |                                     try self.videoDeviceInput.device.lockForConfiguration()
106 |
107 |                                     self.videoDeviceInput.device.activeFormat = self.selectedMovieMode10BitDeviceFormat!
    |                                                                  |- error: 'activeFormat' is only available in tvOS 17.0 or newer
    |                                                                  `- note: add 'if #available' version check
108 |                                     print("Setting 'x420' format \(String(describing: self.selectedMovieMode10BitDeviceFormat)) for video recording")
109 |                                     self.videoDeviceInput.device.unlockForConfiguration()
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:116:39: error: 'isVideoStabilizationSupported' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
114 |                         }
115 |
116 |                         if connection.isVideoStabilizationSupported {
    |                                       |- error: 'isVideoStabilizationSupported' is only available in tvOS 17.0 or newer
    |                                       `- note: add 'if #available' version check
117 |                             connection.preferredVideoStabilizationMode = .auto
118 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift:117:40: error: 'preferredVideoStabilizationMode' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // TODO: what to do with these state changes? view modifier callbacks?
 13 |
    :
 25 |     }
 26 |
 27 |     private func changeCamera(_ videoDevice: AVCaptureDevice?, isUserSelection: Bool, completion: (() -> Void)? = nil) {
    |                  `- note: add '@available' attribute to enclosing instance method
 28 |         sessionQueue.async {
 29 |             let currentVideoDevice = self.videoDeviceInput.device
    :
115 |
116 |                         if connection.isVideoStabilizationSupported {
117 |                             connection.preferredVideoStabilizationMode = .auto
    |                                        |- error: 'preferredVideoStabilizationMode' is only available in tvOS 17.0 or newer
    |                                        `- note: add 'if #available' version check
118 |                         }
119 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift:65:47: error: 'photo' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // MARK: Resuming an Interrupted Session
 13 |
    :
 48 |     }
 49 |
 50 |     internal func captureModeHasChanged(_ newMode: CaptureMode) {
    |                   `- note: add '@available' attribute to enclosing instance method
 51 |         switch newMode {
 52 |         case .photo:
    :
 63 |                     self.session.removeOutput(movieFileOutput)
 64 |                 }
 65 |                 self.session.sessionPreset = .photo
    |                                               |- error: 'photo' is only available in tvOS 17.0 or newer
    |                                               `- note: add 'if #available' version check
 66 |
 67 | //                DispatchQueue.main.async {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift:90:39: error: 'AVCaptureMovieFileOutput' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // MARK: Resuming an Interrupted Session
 13 |
    :
 48 |     }
 49 |
 50 |     internal func captureModeHasChanged(_ newMode: CaptureMode) {
    |                   `- note: add '@available' attribute to enclosing instance method
 51 |         switch newMode {
 52 |         case .photo:
    :
 88 |
 89 |             sessionQueue.async {
 90 |                 let movieFileOutput = AVCaptureMovieFileOutput()
    |                                       |- error: 'AVCaptureMovieFileOutput' is only available in tvOS 17.0 or newer
    |                                       `- note: add 'if #available' version check
 91 |
 92 |                 if self.session.canAddOutput(movieFileOutput) {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift:95:51: error: 'high' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // MARK: Resuming an Interrupted Session
 13 |
    :
 48 |     }
 49 |
 50 |     internal func captureModeHasChanged(_ newMode: CaptureMode) {
    |                   `- note: add '@available' attribute to enclosing instance method
 51 |         switch newMode {
 52 |         case .photo:
    :
 93 |                     self.session.beginConfiguration()
 94 |                     self.session.addOutput(movieFileOutput)
 95 |                     self.session.sessionPreset = .high
    |                                                   |- error: 'high' is only available in tvOS 17.0 or newer
    |                                                   `- note: add 'if #available' version check
 96 |
 97 |                     self.selectedMovieMode10BitDeviceFormat = self.tenBitVariantOfFormat(activeFormat: self.videoDeviceInput.device.activeFormat)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift:97:133: error: 'activeFormat' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // MARK: Resuming an Interrupted Session
 13 |
    :
 48 |     }
 49 |
 50 |     internal func captureModeHasChanged(_ newMode: CaptureMode) {
    |                   `- note: add '@available' attribute to enclosing instance method
 51 |         switch newMode {
 52 |         case .photo:
    :
 95 |                     self.session.sessionPreset = .high
 96 |
 97 |                     self.selectedMovieMode10BitDeviceFormat = self.tenBitVariantOfFormat(activeFormat: self.videoDeviceInput.device.activeFormat)
    |                                                                                                                                     |- error: 'activeFormat' is only available in tvOS 17.0 or newer
    |                                                                                                                                     `- note: add 'if #available' version check
 98 |
 99 |                     if self.selectedMovieMode10BitDeviceFormat != nil {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift:108:62: error: 'activeFormat' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // MARK: Resuming an Interrupted Session
 13 |
    :
 48 |     }
 49 |
 50 |     internal func captureModeHasChanged(_ newMode: CaptureMode) {
    |                   `- note: add '@available' attribute to enclosing instance method
 51 |         switch newMode {
 52 |         case .photo:
    :
106 |                             do {
107 |                                 try self.videoDeviceInput.device.lockForConfiguration()
108 |                                 self.videoDeviceInput.device.activeFormat = self.selectedMovieMode10BitDeviceFormat!
    |                                                              |- error: 'activeFormat' is only available in tvOS 17.0 or newer
    |                                                              `- note: add 'if #available' version check
109 |                                 print("Setting 'x420' format \(String(describing: self.selectedMovieMode10BitDeviceFormat)) for video recording")
110 |                                 self.videoDeviceInput.device.unlockForConfiguration()
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift:117:57: error: 'connection(with:)' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // MARK: Resuming an Interrupted Session
 13 |
    :
 48 |     }
 49 |
 50 |     internal func captureModeHasChanged(_ newMode: CaptureMode) {
    |                   `- note: add '@available' attribute to enclosing instance method
 51 |         switch newMode {
 52 |         case .photo:
    :
115 |                     }
116 |
117 |                     if let connection = movieFileOutput.connection(with: .video) {
    |                                                         |- error: 'connection(with:)' is only available in tvOS 17.0 or newer
    |                                                         `- note: add 'if #available' version check
118 |                         if connection.isVideoStabilizationSupported {
119 |                             connection.preferredVideoStabilizationMode = .auto
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift:118:39: error: 'isVideoStabilizationSupported' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // MARK: Resuming an Interrupted Session
 13 |
    :
 48 |     }
 49 |
 50 |     internal func captureModeHasChanged(_ newMode: CaptureMode) {
    |                   `- note: add '@available' attribute to enclosing instance method
 51 |         switch newMode {
 52 |         case .photo:
    :
116 |
117 |                     if let connection = movieFileOutput.connection(with: .video) {
118 |                         if connection.isVideoStabilizationSupported {
    |                                       |- error: 'isVideoStabilizationSupported' is only available in tvOS 17.0 or newer
    |                                       `- note: add 'if #available' version check
119 |                             connection.preferredVideoStabilizationMode = .auto
120 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift:119:40: error: 'preferredVideoStabilizationMode' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // MARK: Resuming an Interrupted Session
 13 |
    :
 48 |     }
 49 |
 50 |     internal func captureModeHasChanged(_ newMode: CaptureMode) {
    |                   `- note: add '@available' attribute to enclosing instance method
 51 |         switch newMode {
 52 |         case .photo:
    :
117 |                     if let connection = movieFileOutput.connection(with: .video) {
118 |                         if connection.isVideoStabilizationSupported {
119 |                             connection.preferredVideoStabilizationMode = .auto
    |                                        |- error: 'preferredVideoStabilizationMode' is only available in tvOS 17.0 or newer
    |                                        `- note: add 'if #available' version check
120 |                         }
121 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift:146:76: error: 'activeFormat' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // MARK: Resuming an Interrupted Session
 13 |
    :
142 |     }
143 |
144 |     internal func configurePhotoOutput() {
    |                   `- note: add '@available' attribute to enclosing instance method
145 |         if #available(iOS 16.0, *) {
146 |             let supportedMaxPhotoDimensions = self.videoDeviceInput.device.activeFormat.supportedMaxPhotoDimensions
    |                                                                            |- error: 'activeFormat' is only available in tvOS 17.0 or newer
    |                                                                            `- note: add 'if #available' version check
147 |             let largestDimesnion = supportedMaxPhotoDimensions.last
148 |             self.photoOutput.maxPhotoDimensions = largestDimesnion!
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift:146:89: error: 'supportedMaxPhotoDimensions' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // MARK: Resuming an Interrupted Session
 13 |
    :
142 |     }
143 |
144 |     internal func configurePhotoOutput() {
    |                   `- note: add '@available' attribute to enclosing instance method
145 |         if #available(iOS 16.0, *) {
146 |             let supportedMaxPhotoDimensions = self.videoDeviceInput.device.activeFormat.supportedMaxPhotoDimensions
    |                                                                                         |- error: 'supportedMaxPhotoDimensions' is only available in tvOS 17.0 or newer
    |                                                                                         `- note: add 'if #available' version check
147 |             let largestDimesnion = supportedMaxPhotoDimensions.last
148 |             self.photoOutput.maxPhotoDimensions = largestDimesnion!
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Primary Types/AVCaptureViewModel.swift:457:32: error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
 17 | ///
 18 | /// > Important: While it's not always necessary request permissions for current location (``settings-swift.property``.``Settings-swift.struct/tagLocationInCaptures`` can be set to `false`), camera permissions are required ([`NSCameraUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription)). Additionally, microphone permissions are optional, but recommended, as it's needed to capture audio for Live Photos and movies ([`NSMicrophoneUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription)).
 19 | public class AVCaptureViewModel: NSObject, ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 20 |     // MARK: Private/Internal Properties
 21 |
    :
455 |     @Published public var lastPhotoCaptured: Data? = nil
456 |
457 |     internal let photoOutput = AVCapturePhotoOutput()
    |                                `- error: 'AVCapturePhotoOutput' is only available in tvOS 17.0 or newer
458 |
459 | //    @available(iOS 17.0, *)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift:148:30: error: 'maxPhotoDimensions' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     // MARK: Resuming an Interrupted Session
 13 |
    :
142 |     }
143 |
144 |     internal func configurePhotoOutput() {
    |                   `- note: add '@available' attribute to enclosing instance method
145 |         if #available(iOS 16.0, *) {
146 |             let supportedMaxPhotoDimensions = self.videoDeviceInput.device.activeFormat.supportedMaxPhotoDimensions
147 |             let largestDimesnion = supportedMaxPhotoDimensions.last
148 |             self.photoOutput.maxPhotoDimensions = largestDimesnion!
    |                              |- error: 'maxPhotoDimensions' is only available in tvOS 17.0 or newer
    |                              `- note: add 'if #available' version check
149 |         }
150 |
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+DeviceConfig.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile AVCaptureViewModel+DeviceConfig.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+InputCallbacks.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile AVCaptureViewModel+InputCallbacks.swift
SwiftCompile normal arm64 Compiling\ CameraPreviewView.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreviewView.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreviewView.swift:64:35: error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
 12 | /// An encapsulated view containing the [`AVCaptureVideoPreviewLayer`](https://developer.apple.com/documentation/avfoundation/avcapturevideopreviewlayer).
 13 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color (``backgroundColor``) or place other views behind it, but it will still register taps and gestures on the empty space.
 14 | public class CameraPreviewView: UIView {
    |              `- note: add '@available' attribute to enclosing class
 15 | //    #warning("what to do with this and stuff at the bottom of file?")
 16 | //    public var allowGesturesOutsidePreview: Bool = false
    :
 62 |
 63 |     /// The view preview `CALayer`.
 64 |     public var videoPreviewLayer: AVCaptureVideoPreviewLayer {
    |                |                  `- error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
    |                `- note: add '@available' attribute to enclosing property
 65 |         guard let layer = layer as? AVCaptureVideoPreviewLayer else {
 66 |             fatalError("Expected `AVCaptureVideoPreviewLayer` type for layer. Check CameraPreviewView.layerClass implementation.")
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreviewView.swift:72:25: error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
 12 | /// An encapsulated view containing the [`AVCaptureVideoPreviewLayer`](https://developer.apple.com/documentation/avfoundation/avcapturevideopreviewlayer).
 13 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color (``backgroundColor``) or place other views behind it, but it will still register taps and gestures on the empty space.
 14 | public class CameraPreviewView: UIView {
    |              `- note: add '@available' attribute to enclosing class
 15 | //    #warning("what to do with this and stuff at the bottom of file?")
 16 | //    public var allowGesturesOutsidePreview: Bool = false
    :
 70 |
 71 |     /// The preview layer's capture session that is created by the ``AVCaptureViewModel/AVCaptureViewModel``.
 72 |     public var session: AVCaptureSession? {
    |                |        `- error: 'AVCaptureSession' is only available in tvOS 17.0 or newer
    |                `- note: add '@available' attribute to enclosing property
 73 |         get {
 74 |             return videoPreviewLayer.session
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreviewView.swift:65:37: error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
 12 | /// An encapsulated view containing the [`AVCaptureVideoPreviewLayer`](https://developer.apple.com/documentation/avfoundation/avcapturevideopreviewlayer).
 13 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color (``backgroundColor``) or place other views behind it, but it will still register taps and gestures on the empty space.
 14 | public class CameraPreviewView: UIView {
    |              `- note: add '@available' attribute to enclosing class
 15 | //    #warning("what to do with this and stuff at the bottom of file?")
 16 | //    public var allowGesturesOutsidePreview: Bool = false
    :
 62 |
 63 |     /// The view preview `CALayer`.
 64 |     public var videoPreviewLayer: AVCaptureVideoPreviewLayer {
    |                `- note: add '@available' attribute to enclosing property
 65 |         guard let layer = layer as? AVCaptureVideoPreviewLayer else {
    |                                     |- error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
    |                                     `- note: add 'if #available' version check
 66 |             fatalError("Expected `AVCaptureVideoPreviewLayer` type for layer. Check CameraPreviewView.layerClass implementation.")
 67 |         }
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreviewView.swift:81:16: error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
 12 | /// An encapsulated view containing the [`AVCaptureVideoPreviewLayer`](https://developer.apple.com/documentation/avfoundation/avcapturevideopreviewlayer).
 13 | /// > Important: Even when there is empty space around the preview, it's part of the view. It's transparent, so you can set a background color (``backgroundColor``) or place other views behind it, but it will still register taps and gestures on the empty space.
 14 | public class CameraPreviewView: UIView {
    |              `- note: add '@available' attribute to enclosing class
 15 | //    #warning("what to do with this and stuff at the bottom of file?")
 16 | //    public var allowGesturesOutsidePreview: Bool = false
    :
 78 |     }
 79 |
 80 |     public override class var layerClass: AnyClass {
    |                               `- note: add '@available' attribute to enclosing class property
 81 |         return AVCaptureVideoPreviewLayer.self
    |                |- error: 'AVCaptureVideoPreviewLayer' is only available in tvOS 17.0 or newer
    |                `- note: add 'if #available' version check
 82 |     }
 83 |
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreviewView.swift:99:44: error: 'layerPointConverted(fromCaptureDevicePoint:)' is only available in tvOS 17.0 or newer
 95 | }
 96 |
 97 | extension CameraPreviewView {
    | `- note: add '@available' attribute to enclosing extension
 98 |     private var videoPreviewRect: CGRect {
    |                 `- note: add '@available' attribute to enclosing property
 99 |         let topLeading = videoPreviewLayer.layerPointConverted(fromCaptureDevicePoint: CGPoint(x: 0, y: 1))
    |                                            |- error: 'layerPointConverted(fromCaptureDevicePoint:)' is only available in tvOS 17.0 or newer
    |                                            `- note: add 'if #available' version check
100 |         let topTrailing = videoPreviewLayer.layerPointConverted(fromCaptureDevicePoint: CGPoint(x: 0, y: 0))
101 |         let bottomLeading = videoPreviewLayer.layerPointConverted(fromCaptureDevicePoint: CGPoint(x: 1, y: 1))
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreviewView.swift:100:45: error: 'layerPointConverted(fromCaptureDevicePoint:)' is only available in tvOS 17.0 or newer
 95 | }
 96 |
 97 | extension CameraPreviewView {
    | `- note: add '@available' attribute to enclosing extension
 98 |     private var videoPreviewRect: CGRect {
    |                 `- note: add '@available' attribute to enclosing property
 99 |         let topLeading = videoPreviewLayer.layerPointConverted(fromCaptureDevicePoint: CGPoint(x: 0, y: 1))
100 |         let topTrailing = videoPreviewLayer.layerPointConverted(fromCaptureDevicePoint: CGPoint(x: 0, y: 0))
    |                                             |- error: 'layerPointConverted(fromCaptureDevicePoint:)' is only available in tvOS 17.0 or newer
    |                                             `- note: add 'if #available' version check
101 |         let bottomLeading = videoPreviewLayer.layerPointConverted(fromCaptureDevicePoint: CGPoint(x: 1, y: 1))
102 |         return CGRect(origin: topLeading, size: CGSize(width: topTrailing.x - topLeading.x, height: bottomLeading.y - topLeading.y))
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Views/CameraPreviewView.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile CameraPreviewView.swift
SwiftCompile normal arm64 Compiling\ AVCaptureViewModel+TapAndFocus.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift:50:39: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Focuses and exposes the camera from a SwiftUI tap on a ``CameraPreview``.
 13 |     ///
    :
 48 |     /// }
 49 |     /// ```
 50 |     public func focus(with focusMode: AVCaptureDevice.FocusMode,
    |                 |                     `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                 `- note: add '@available' attribute to enclosing instance method
 51 |                       exposureMode: AVCaptureDevice.ExposureMode,
 52 |                       at touchPosition: CGPoint) {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift:51:37: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Focuses and exposes the camera from a SwiftUI tap on a ``CameraPreview``.
 13 |     ///
    :
 48 |     /// }
 49 |     /// ```
 50 |     public func focus(with focusMode: AVCaptureDevice.FocusMode,
    |                 `- note: add '@available' attribute to enclosing instance method
 51 |                       exposureMode: AVCaptureDevice.ExposureMode,
    |                                     `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 52 |                       at touchPosition: CGPoint) {
 53 |         let devicePoint = videoPreviewLayer.captureDevicePointConverted(fromLayerPoint: touchPosition)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift:79:39: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Focuses and exposes the camera from a SwiftUI tap on a ``CameraPreview``.
 13 |     ///
    :
 77 |     ///
 78 |     /// To use this functionality, call this function from an `@IBAction` outlet function, passing in the `UITapGestureRecognizer` parameter.
 79 |     public func focus(with focusMode: AVCaptureDevice.FocusMode,
    |                 |                     `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                 `- note: add '@available' attribute to enclosing instance method
 80 |                       exposureMode: AVCaptureDevice.ExposureMode,
 81 |                       gestureRecognizer: UITapGestureRecognizer) {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift:80:37: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Focuses and exposes the camera from a SwiftUI tap on a ``CameraPreview``.
 13 |     ///
    :
 77 |     ///
 78 |     /// To use this functionality, call this function from an `@IBAction` outlet function, passing in the `UITapGestureRecognizer` parameter.
 79 |     public func focus(with focusMode: AVCaptureDevice.FocusMode,
    |                 `- note: add '@available' attribute to enclosing instance method
 80 |                       exposureMode: AVCaptureDevice.ExposureMode,
    |                                     `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 81 |                       gestureRecognizer: UITapGestureRecognizer) {
 82 |         focus(with: focusMode, exposureMode: exposureMode, at: gestureRecognizer.location(in: gestureRecognizer.view), monitorSubjectAreaChange: true)
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift:88:41: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 84 | }
 85 |
 86 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 87 |     /// Internally used as the backend for ``focusAndExposeTap(gesturePosition:)``, ``focusAndExposeTap(gestureRecognizer:)``, ``focus(with:exposureMode:at:)``, and ``focus(with:exposureMode:gestureRecognizer:)``.
 88 |     internal func focus(with focusMode: AVCaptureDevice.FocusMode,
    |                   |                     `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
    |                   `- note: add '@available' attribute to enclosing instance method
 89 |                         exposureMode: AVCaptureDevice.ExposureMode,
 90 |                         at previewPoint: CGPoint,
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift:89:39: error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 84 | }
 85 |
 86 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 87 |     /// Internally used as the backend for ``focusAndExposeTap(gesturePosition:)``, ``focusAndExposeTap(gestureRecognizer:)``, ``focus(with:exposureMode:at:)``, and ``focus(with:exposureMode:gestureRecognizer:)``.
 88 |     internal func focus(with focusMode: AVCaptureDevice.FocusMode,
    |                   `- note: add '@available' attribute to enclosing instance method
 89 |                         exposureMode: AVCaptureDevice.ExposureMode,
    |                                       `- error: 'AVCaptureDevice' is only available in tvOS 17.0 or newer
 90 |                         at previewPoint: CGPoint,
 91 |                         monitorSubjectAreaChange: Bool) {
/Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift:53:45: error: 'captureDevicePointConverted(fromLayerPoint:)' is only available in tvOS 17.0 or newer
  9 | import AVFoundation
 10 |
 11 | extension AVCaptureViewModel {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Focuses and exposes the camera from a SwiftUI tap on a ``CameraPreview``.
 13 |     ///
    :
 48 |     /// }
 49 |     /// ```
 50 |     public func focus(with focusMode: AVCaptureDevice.FocusMode,
    |                 `- note: add '@available' attribute to enclosing instance method
 51 |                       exposureMode: AVCaptureDevice.ExposureMode,
 52 |                       at touchPosition: CGPoint) {
 53 |         let devicePoint = videoPreviewLayer.captureDevicePointConverted(fromLayerPoint: touchPosition)
    |                                             |- error: 'captureDevicePointConverted(fromLayerPoint:)' is only available in tvOS 17.0 or newer
    |                                             `- note: add 'if #available' version check
 54 |         focus(with: focusMode, exposureMode: exposureMode, at: devicePoint, monitorSubjectAreaChange: true)
 55 |     }
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+TapAndFocus.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile AVCaptureViewModel+TapAndFocus.swift
SwiftCompile normal arm64 Compiling\ AVCaptureViewModel+Readiness.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+Readiness.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/ViewModel+Extensions/AVCaptureViewModel+Readiness.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile AVCaptureViewModel+Readiness.swift
SwiftCompile normal arm64 Compiling\ PhotoCaptureProcessor.swift,\ AVCaptureDeviceDiscoverySession+Extension.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper\ Types/PhotoCaptureProcessor.swift /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Misc\ Extensions/AVCaptureDeviceDiscoverySession+Extension.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Helper\ Types/PhotoCaptureProcessor.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile PhotoCaptureProcessor.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/AVCaptureViewModel/Misc\ Extensions/AVCaptureDeviceDiscoverySession+Extension.swift (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile AVCaptureDeviceDiscoverySession+Extension.swift
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/ExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/SDKExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules
2026-09-20 07:40:05.466 xcodebuild[755:4589] [MT] IDERunDestination: Supported platforms for the buildables in the current scheme is empty.
** BUILD FAILED **
The following build commands failed:
	SwiftEmitModule normal arm64 Emitting\ module\ for\ AVCaptureViewModel (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
	SwiftCompile normal arm64 (in target 'AVCaptureViewModel' from project 'AVCaptureViewModel')
	Building workspace AVCaptureViewModel with scheme AVCaptureViewModel
(3 failures)
BUILD FAILURE 6.4 tvOS