The Swift Package Index logo.Swift Package Index

Build Information

Failed to build Runestone, reference 0.5.2 (592434), with Swift 6.4 for watchOS using Xcode 27.0 on 24 Sep 2026 13:02:46 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 Runestone -destination generic/platform=watchOS

Build Log

    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift:1517:89: error: 'UITextRange' is unavailable in watchOS
1515 |     }
1516 |
1517 |     func textRange(from fromPosition: UITextPosition, to toPosition: UITextPosition) -> UITextRange? {
     |                                                                                         `- error: 'UITextRange' is unavailable in watchOS
1518 |         guard let fromIndexedPosition = fromPosition as? IndexedPosition, let toIndexedPosition = toPosition as? IndexedPosition else {
1519 |             return nil
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift:1525:34: error: 'UITextPosition' is unavailable in watchOS
1523 |     }
1524 |
1525 |     func position(from position: UITextPosition, offset: Int) -> UITextPosition? {
     |                                  `- error: 'UITextPosition' is unavailable in watchOS
1526 |         guard let indexedPosition = position as? IndexedPosition else {
1527 |             return nil
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift:1525:66: error: 'UITextPosition' is unavailable in watchOS
1523 |     }
1524 |
1525 |     func position(from position: UITextPosition, offset: Int) -> UITextPosition? {
     |                                                                  `- error: 'UITextPosition' is unavailable in watchOS
1526 |         guard let indexedPosition = position as? IndexedPosition else {
1527 |             return nil
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift:1536:30: error: 'UITextPosition' is unavailable in watchOS
1534 |     }
1535 |
1536 |     func compare(_ position: UITextPosition, to other: UITextPosition) -> ComparisonResult {
     |                              `- error: 'UITextPosition' is unavailable in watchOS
1537 |         guard let indexedPosition = position as? IndexedPosition, let otherIndexedPosition = other as? IndexedPosition else {
1538 |             #if targetEnvironment(macCatalyst)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift:1536:56: error: 'UITextPosition' is unavailable in watchOS
1534 |     }
1535 |
1536 |     func compare(_ position: UITextPosition, to other: UITextPosition) -> ComparisonResult {
     |                                                        `- error: 'UITextPosition' is unavailable in watchOS
1537 |         guard let indexedPosition = position as? IndexedPosition, let otherIndexedPosition = other as? IndexedPosition else {
1538 |             #if targetEnvironment(macCatalyst)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift:1554:23: error: 'UITextPosition' is unavailable in watchOS
1552 |     }
1553 |
1554 |     func offset(from: UITextPosition, to toPosition: UITextPosition) -> Int {
     |                       `- error: 'UITextPosition' is unavailable in watchOS
1555 |         if let fromPosition = from as? IndexedPosition, let toPosition = toPosition as? IndexedPosition {
1556 |             return toPosition.index - fromPosition.index
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift:1554:54: error: 'UITextPosition' is unavailable in watchOS
1552 |     }
1553 |
1554 |     func offset(from: UITextPosition, to toPosition: UITextPosition) -> Int {
     |                                                      `- error: 'UITextPosition' is unavailable in watchOS
1555 |         if let fromPosition = from as? IndexedPosition, let toPosition = toPosition as? IndexedPosition {
1556 |             return toPosition.index - fromPosition.index
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift:1565:45: error: 'UITextPosition' is unavailable in watchOS
1563 | // MARK: - Writing Direction
1564 | extension TextInputView {
1565 |     func baseWritingDirection(for position: UITextPosition, in direction: UITextStorageDirection) -> NSWritingDirection {
     |                                             `- error: 'UITextPosition' is unavailable in watchOS
1566 |         .natural
1567 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift:1565:75: error: 'UITextStorageDirection' is unavailable in watchOS
1563 | // MARK: - Writing Direction
1564 | extension TextInputView {
1565 |     func baseWritingDirection(for position: UITextPosition, in direction: UITextStorageDirection) -> NSWritingDirection {
     |                                                                           `- error: 'UITextStorageDirection' is unavailable in watchOS
1566 |         .natural
1567 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:55:28: note: 'UITextStorageDirection' has been explicitly marked unavailable here
 53 | @protocol UIEditMenuInteractionAnimating;
 54 |
 55 | typedef NS_ENUM(NSInteger, UITextStorageDirection) {
    |                            `- note: 'UITextStorageDirection' has been explicitly marked unavailable here
 56 |     UITextStorageDirectionForward = 0,
 57 |     UITextStorageDirectionBackward
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift:1569:85: error: 'UITextRange' is unavailable in watchOS
1567 |     }
1568 |
1569 |     func setBaseWritingDirection(_ writingDirection: NSWritingDirection, for range: UITextRange) {}
     |                                                                                     `- error: 'UITextRange' is unavailable in watchOS
1570 | }
1571 |
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift:1574:34: error: 'UITextRange' is unavailable in watchOS
1572 | // MARK: - UIEditMenuInteraction
1573 | extension TextInputView {
1574 |     func editMenu(for textRange: UITextRange, suggestedActions: [UIMenuElement]) -> UIMenu? {
     |                                  `- error: 'UITextRange' is unavailable in watchOS
1575 |         editMenuController.editMenu(for: textRange, suggestedActions: suggestedActions)
1576 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift:1574:66: error: 'UIMenuElement' is unavailable in watchOS
1572 | // MARK: - UIEditMenuInteraction
1573 | extension TextInputView {
1574 |     func editMenu(for textRange: UITextRange, suggestedActions: [UIMenuElement]) -> UIMenu? {
     |                                                                  `- error: 'UIMenuElement' is unavailable in watchOS
1575 |         editMenuController.editMenu(for: textRange, suggestedActions: suggestedActions)
1576 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIMenuElement.h:56:12: note: 'UIMenuElement' has been explicitly marked unavailable here
54 |
55 | UIKIT_EXTERN API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
56 | @interface UIMenuElement : NSObject <NSCopying, NSSecureCoding>
   |            `- note: 'UIMenuElement' has been explicitly marked unavailable here
57 |
58 | /// The element's title.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift:1574:85: error: 'UIMenu' is unavailable in watchOS
1572 | // MARK: - UIEditMenuInteraction
1573 | extension TextInputView {
1574 |     func editMenu(for textRange: UITextRange, suggestedActions: [UIMenuElement]) -> UIMenu? {
     |                                                                                     `- error: 'UIMenu' is unavailable in watchOS
1575 |         editMenuController.editMenu(for: textRange, suggestedActions: suggestedActions)
1576 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIMenu.h:43:12: note: 'UIMenu' has been explicitly marked unavailable here
 41 |
 42 | UIKIT_EXTERN API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
 43 | @interface UIMenu : UIMenuElement
    |            `- note: 'UIMenu' has been explicitly marked unavailable here
 44 |
 45 | /// Unique identifier.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:66:36: error: 'UITextAutocorrectionType' is unavailable in watchOS
  64 |     }
  65 |     /// The autocorrection style for the text view.
  66 |     public var autocorrectionType: UITextAutocorrectionType {
     |                                    `- error: 'UITextAutocorrectionType' is unavailable in watchOS
  67 |         get {
  68 |             textInputView.autocorrectionType
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h:37:28: note: 'UITextAutocorrectionType' has been explicitly marked unavailable here
 35 | // cases, these values are ignored by the keyboard/input method implementation.
 36 | //
 37 | typedef NS_ENUM(NSInteger, UITextAutocorrectionType) {
    |                            `- note: 'UITextAutocorrectionType' has been explicitly marked unavailable here
 38 |     UITextAutocorrectionTypeDefault,
 39 |     UITextAutocorrectionTypeNo,
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:75:40: error: 'UITextAutocapitalizationType' is unavailable in watchOS
  73 |     }
  74 |     /// The autocapitalization style for the text view.
  75 |     public var autocapitalizationType: UITextAutocapitalizationType {
     |                                        `- error: 'UITextAutocapitalizationType' is unavailable in watchOS
  76 |         get {
  77 |             textInputView.autocapitalizationType
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h:22:28: note: 'UITextAutocapitalizationType' has been explicitly marked unavailable here
 20 | // cases, these values are ignored by the keyboard/input method implementation.
 21 | //
 22 | typedef NS_ENUM(NSInteger, UITextAutocapitalizationType) {
    |                            `- note: 'UITextAutocapitalizationType' has been explicitly marked unavailable here
 23 |     UITextAutocapitalizationTypeNone,
 24 |     UITextAutocapitalizationTypeWords,
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:84:33: error: 'UITextSmartQuotesType' is unavailable in watchOS
  82 |     }
  83 |     /// The spell-checking style for the text view.
  84 |     public var smartQuotesType: UITextSmartQuotesType {
     |                                 `- error: 'UITextSmartQuotesType' is unavailable in watchOS
  85 |         get {
  86 |             textInputView.smartQuotesType
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h:58:28: note: 'UITextSmartQuotesType' has been explicitly marked unavailable here
 56 | //
 57 | // Controls the automatic conversion of typographic quote characters for a text widget.
 58 | typedef NS_ENUM(NSInteger, UITextSmartQuotesType) {
    |                            `- note: 'UITextSmartQuotesType' has been explicitly marked unavailable here
 59 |     UITextSmartQuotesTypeDefault,
 60 |     UITextSmartQuotesTypeNo,
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:93:33: error: 'UITextSmartDashesType' is unavailable in watchOS
  91 |     }
  92 |     /// The configuration state for smart dashes.
  93 |     public var smartDashesType: UITextSmartDashesType {
     |                                 `- error: 'UITextSmartDashesType' is unavailable in watchOS
  94 |         get {
  95 |             textInputView.smartDashesType
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h:68:28: note: 'UITextSmartDashesType' has been explicitly marked unavailable here
 66 | //
 67 | // Controls the automatic conversion of hyphens into en/em-dashes for a text widget.
 68 | typedef NS_ENUM(NSInteger, UITextSmartDashesType) {
    |                            `- note: 'UITextSmartDashesType' has been explicitly marked unavailable here
 69 |     UITextSmartDashesTypeDefault,
 70 |     UITextSmartDashesTypeNo,
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:102:39: error: 'UITextSmartInsertDeleteType' is unavailable in watchOS
 100 |     }
 101 |     /// The configuration state for the smart insertion and deletion of space characters.
 102 |     public var smartInsertDeleteType: UITextSmartInsertDeleteType {
     |                                       `- error: 'UITextSmartInsertDeleteType' is unavailable in watchOS
 103 |         get {
 104 |             textInputView.smartInsertDeleteType
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h:78:28: note: 'UITextSmartInsertDeleteType' has been explicitly marked unavailable here
 76 | //
 77 | // Controls the automatic insertion/removal of spaces for a text widget.
 78 | typedef NS_ENUM(NSInteger, UITextSmartInsertDeleteType) {
    |                            `- note: 'UITextSmartInsertDeleteType' has been explicitly marked unavailable here
 79 |     UITextSmartInsertDeleteTypeDefault,
 80 |     UITextSmartInsertDeleteTypeNo,
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:111:35: error: 'UITextSpellCheckingType' is unavailable in watchOS
 109 |     }
 110 |     /// The spell-checking style for the text object.
 111 |     public var spellCheckingType: UITextSpellCheckingType {
     |                                   `- error: 'UITextSpellCheckingType' is unavailable in watchOS
 112 |         get {
 113 |             textInputView.spellCheckingType
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h:48:28: note: 'UITextSpellCheckingType' has been explicitly marked unavailable here
 46 | // Controls the annotation of misspelled words for a text widget.
 47 | // Note: Some input methods do not support spell checking.
 48 | typedef NS_ENUM(NSInteger, UITextSpellCheckingType) {
    |                            `- note: 'UITextSpellCheckingType' has been explicitly marked unavailable here
 49 |     UITextSpellCheckingTypeDefault,
 50 |     UITextSpellCheckingTypeNo,
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:120:30: error: 'UIKeyboardType' is unavailable in watchOS
 118 |     }
 119 |     /// The keyboard type for the text view.
 120 |     public var keyboardType: UIKeyboardType {
     |                              `- error: 'UIKeyboardType' is unavailable in watchOS
 121 |         get {
 122 |             textInputView.keyboardType
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h:127:28: note: 'UIKeyboardType' has been explicitly marked unavailable here
125 | // type if UIKeyboardTypeNumberPad is not supported).
126 | //
127 | typedef NS_ENUM(NSInteger, UIKeyboardType) {
    |                            `- note: 'UIKeyboardType' has been explicitly marked unavailable here
128 |     UIKeyboardTypeDefault,                // Default type for the current input method.
129 |     UIKeyboardTypeASCIICapable,           // Displays a keyboard which can enter ASCII characters
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:129:36: error: 'UIKeyboardAppearance' is unavailable in watchOS
 127 |     }
 128 |     /// The appearance style of the keyboard for the text view.
 129 |     public var keyboardAppearance: UIKeyboardAppearance {
     |                                    `- error: 'UIKeyboardAppearance' is unavailable in watchOS
 130 |         get {
 131 |             textInputView.keyboardAppearance
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h:154:28: note: 'UIKeyboardAppearance' has been explicitly marked unavailable here
152 | // match to the requested type.
153 | //
154 | typedef NS_ENUM(NSInteger, UIKeyboardAppearance) {
    |                            `- note: 'UIKeyboardAppearance' has been explicitly marked unavailable here
155 |     UIKeyboardAppearanceDefault,          // Default appearance for the current input method.
156 |     UIKeyboardAppearanceDark API_AVAILABLE(ios(7.0)),
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:138:31: error: 'UIReturnKeyType' is unavailable in watchOS
 136 |     }
 137 |     /// The display of the return key.
 138 |     public var returnKeyType: UIReturnKeyType {
     |                               `- error: 'UIReturnKeyType' is unavailable in watchOS
 139 |         get {
 140 |             textInputView.returnKeyType
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h:169:28: note: 'UIReturnKeyType' has been explicitly marked unavailable here
167 | // different implementation.
168 | //
169 | typedef NS_ENUM(NSInteger, UIReturnKeyType) {
    |                            `- note: 'UIReturnKeyType' has been explicitly marked unavailable here
170 |     UIReturnKeyDefault,
171 |     UIReturnKeyGo,
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:192:35: error: 'UITextRange' is unavailable in watchOS
 190 |     }
 191 |     /// The current selection range of the text view as a UITextRange.
 192 |     public var selectedTextRange: UITextRange? {
     |                                   `- error: 'UITextRange' is unavailable in watchOS
 193 |         get {
 194 |             textInputView.selectedTextRange
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:202:45: error: 'UIView' is unavailable in watchOS
 200 |     #if compiler(<5.9) || !os(visionOS)
 201 |     /// The custom input accessory view to display when the receiver becomes the first responder.
 202 |     override public var inputAccessoryView: UIView? {
     |                                             `- error: 'UIView' is unavailable in watchOS
 203 |         get {
 204 |             if isInputAccessoryViewEnabled {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:152:12: note: 'UIView' has been explicitly marked unavailable here
150 |
151 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
152 | @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, UIFocusItemContainer, CALayerDelegate>
    |            `- note: 'UIView' has been explicitly marked unavailable here
153 |
154 | @property(class, nonatomic, readonly) Class layerClass;                        // default is [CALayer class]. Used when creating the underlying layer for the view.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:217:25: error: cannot override 'inputAssistantItem' which has been marked unavailable
 215 |     #if compiler(<5.9) || !os(visionOS)
 216 |     /// The input assistant to use when configuring the keyboard's shortcuts bar.
 217 |     override public var inputAssistantItem: UITextInputAssistantItem {
     |                         |- error: cannot override 'inputAssistantItem' which has been marked unavailable
     |                         `- note: remove 'override' modifier to declare a new 'inputAssistantItem'
 218 |         textInputView.inputAssistantItem
 219 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIResponder.h:162:76: note: 'inputAssistantItem' has been explicitly marked unavailable here
160 | /// Modifications made to the returned UITextInputAssistantItem are reflected automatically.
161 | /// This method should not be overridden. Goes up the responder chain.
162 | @property (nonnull, nonatomic, readonly, strong) UITextInputAssistantItem *inputAssistantItem API_AVAILABLE(ios(9.0), visionos(2.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos);
    |                                                                            `- note: 'inputAssistantItem' has been explicitly marked unavailable here
163 |
164 | // For viewController equivalents of -inputView and -inputAccessoryView
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:217:45: error: 'UITextInputAssistantItem' is unavailable in watchOS
 215 |     #if compiler(<5.9) || !os(visionOS)
 216 |     /// The input assistant to use when configuring the keyboard's shortcuts bar.
 217 |     override public var inputAssistantItem: UITextInputAssistantItem {
     |                                             `- error: 'UITextInputAssistantItem' is unavailable in watchOS
 218 |         textInputView.inputAssistantItem
 219 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:94:12: note: 'UITextInputAssistantItem' has been explicitly marked unavailable here
 92 |
 93 | UIKIT_EXTERN API_AVAILABLE(ios(9.0), visionos(2.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
 94 | @interface UITextInputAssistantItem : NSObject
    |            `- note: 'UITextInputAssistantItem' has been explicitly marked unavailable here
 95 |
 96 | /// Default is YES, controls if the user is allowed to hide the shortcuts bar. Does not influence the built in auto-hiding logic.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:589:33: error: 'UIFindInteraction' is unavailable in watchOS
 587 |     /// Call [`presentFindNavigator(showingReplace:)`](https://developer.apple.com/documentation/uikit/uifindinteraction/3975832-presentfindnavigator) on the UIFindInteraction object to invoke the find interaction and display the find panel.
 588 |     @available(iOS 16, *)
 589 |     public var findInteraction: UIFindInteraction? {
     |                                 `- error: 'UIFindInteraction' is unavailable in watchOS
 590 |         textSearchingHelper.findInteraction
 591 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindInteraction.h:39:12: note: 'UIFindInteraction' has been explicitly marked unavailable here
37 |
38 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
39 | @interface UIFindInteraction : NSObject <UIInteraction>
   |            `- note: 'UIFindInteraction' has been explicitly marked unavailable here
40 |
41 | /// Returns YES if the find navigator panel is currently visible.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:594:43: error: 'UITextInteraction' is unavailable in watchOS
 592 |
 593 |     private let textInputView: TextInputView
 594 |     private let editableTextInteraction = UITextInteraction(for: .editable)
     |                                           `- error: 'UITextInteraction' is unavailable in watchOS
 595 |     private let nonEditableTextInteraction = UITextInteraction(for: .nonEditable)
 596 |     @available(iOS 16.0, *)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInteraction.h:31:12: note: 'UITextInteraction' has been explicitly marked unavailable here
29 |
30 | UIKIT_EXTERN API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos) NS_SWIFT_UI_ACTOR
31 | @interface UITextInteraction : NSObject <UIInteraction>
   |            `- note: 'UITextInteraction' has been explicitly marked unavailable here
32 |
33 | @property (nonatomic, weak) id <UITextInteractionDelegate> delegate;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:595:46: error: 'UITextInteraction' is unavailable in watchOS
 593 |     private let textInputView: TextInputView
 594 |     private let editableTextInteraction = UITextInteraction(for: .editable)
 595 |     private let nonEditableTextInteraction = UITextInteraction(for: .nonEditable)
     |                                              `- error: 'UITextInteraction' is unavailable in watchOS
 596 |     @available(iOS 16.0, *)
 597 |     private var editMenuInteraction: UIEditMenuInteraction? {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInteraction.h:31:12: note: 'UITextInteraction' has been explicitly marked unavailable here
29 |
30 | UIKIT_EXTERN API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos) NS_SWIFT_UI_ACTOR
31 | @interface UITextInteraction : NSObject <UIInteraction>
   |            `- note: 'UITextInteraction' has been explicitly marked unavailable here
32 |
33 | @property (nonatomic, weak) id <UITextInteractionDelegate> delegate;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:597:38: error: 'UIEditMenuInteraction' is unavailable in watchOS
 595 |     private let nonEditableTextInteraction = UITextInteraction(for: .nonEditable)
 596 |     @available(iOS 16.0, *)
 597 |     private var editMenuInteraction: UIEditMenuInteraction? {
     |                                      `- error: 'UIEditMenuInteraction' is unavailable in watchOS
 598 |         _editMenuInteraction as? UIEditMenuInteraction
 599 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIEditMenuInteraction.h:51:12: note: 'UIEditMenuInteraction' has been explicitly marked unavailable here
 49 |
 50 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
 51 | @interface UIEditMenuInteraction : NSObject <UIInteraction>
    |            `- note: 'UIEditMenuInteraction' has been explicitly marked unavailable here
 52 |
 53 | /// The object that defines the delegate of the interaction.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:602:38: error: 'UIView' is unavailable in watchOS
 600 |     private var _editMenuInteraction: Any?
 601 |     private let tapGestureRecognizer = QuickTapGestureRecognizer()
 602 |     private var _inputAccessoryView: UIView?
     |                                      `- error: 'UIView' is unavailable in watchOS
 603 |     private var isPerformingNonEditableTextInteraction = false
 604 |     private var delegateAllowsEditingToBegin: Bool {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:152:12: note: 'UIView' has been explicitly marked unavailable here
150 |
151 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
152 | @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, UIFocusItemContainer, CALayerDelegate>
    |            `- note: 'UIView' has been explicitly marked unavailable here
153 |
154 | @property(class, nonatomic, readonly) Class layerClass;                        // default is [CALayer class]. Used when creating the underlying layer for the view.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:630:60: error: 'UIGestureRecognizer' is unavailable in watchOS
 628 |     // The approach is based on the one described in Steve Shephard's blog post "Adventures with UITextInteraction".
 629 |     // https://steveshepard.com/blog/adventures-with-uitextinteraction/
 630 |     private var textRangeAdjustmentGestureRecognizers: Set<UIGestureRecognizer> = []
     |                                                            `- error: 'UIGestureRecognizer' is unavailable in watchOS
 631 |     private var previousSelectedRangeDuringGestureHandling: NSRange?
 632 |     private var preferredContentSize: CGSize {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIGestureRecognizer.h:35:12: note: 'UIGestureRecognizer' has been explicitly marked unavailable here
 33 |
 34 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
 35 | @interface UIGestureRecognizer : NSObject
    |            `- note: 'UIGestureRecognizer' has been explicitly marked unavailable here
 36 |
 37 | // Valid action method signatures:
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:641:35: error: 'UIView' is unavailable in watchOS
 639 |     }
 640 |     @available(iOS 26.0, *)
 641 |     private var scrollPocketView: UIView? {
     |                                   `- error: 'UIView' is unavailable in watchOS
 642 |         if let _scrollPocketView = _scrollPocketView {
 643 |             return _scrollPocketView
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:152:12: note: 'UIView' has been explicitly marked unavailable here
150 |
151 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
152 | @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, UIFocusItemContainer, CALayerDelegate>
    |            `- note: 'UIView' has been explicitly marked unavailable here
153 |
154 | @property(class, nonatomic, readonly) Class layerClass;                        // default is [CALayer class]. Used when creating the underlying layer for the view.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:653:36: error: 'UIView' is unavailable in watchOS
 651 |         }
 652 |     }
 653 |     private var _scrollPocketView: UIView?
     |                                    `- error: 'UIView' is unavailable in watchOS
 654 |
 655 |     /// Create a new text view.
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:152:12: note: 'UIView' has been explicitly marked unavailable here
150 |
151 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
152 | @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, UIFocusItemContainer, CALayerDelegate>
    |            `- note: 'UIView' has been explicitly marked unavailable here
153 |
154 | @property(class, nonatomic, readonly) Class layerClass;                        // default is [CALayer class]. Used when creating the underlying layer for the view.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:697:24: error: cannot override 'safeAreaInsetsDidChange' which has been marked unavailable
 695 |
 696 |     /// Called when the safe area of the view changes.
 697 |     override open func safeAreaInsetsDidChange() {
     |                        |- error: cannot override 'safeAreaInsetsDidChange' which has been marked unavailable
     |                        `- note: remove 'override' modifier to declare a new 'safeAreaInsetsDidChange'
 698 |         super.safeAreaInsetsDidChange()
 699 |         textInputView.scrollViewSafeAreaInsets = safeAreaInsets
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:294:1: note: 'safeAreaInsetsDidChange()' has been explicitly marked unavailable here
292 |
293 | @property (nonatomic,readonly) UIEdgeInsets safeAreaInsets API_AVAILABLE(ios(11.0), tvos(11.0)) API_UNAVAILABLE(watchos);
294 | - (void)safeAreaInsetsDidChange API_AVAILABLE(ios(11.0), tvos(11.0)) API_UNAVAILABLE(watchos);
    | `- note: 'safeAreaInsetsDidChange()' has been explicitly marked unavailable here
295 |
296 | /* The edges of this guide are constrained to equal the edges of the view inset by the layoutMargins
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:794:32: error: 'UITextRange' is unavailable in watchOS
 792 |     ///   - range: A range of text in the document.
 793 |     ///   - text: A string to replace the text in range.
 794 |     open func replace(_ range: UITextRange, withText text: String) {
     |                                `- error: 'UITextRange' is unavailable in watchOS
 795 |         textInputView.inputDelegate?.selectionWillChange(textInputView)
 796 |         textInputView.replace(range, withText: text)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:13:22: error: 'UIScrollView' is unavailable in watchOS
  11 | /// When initially configuring the `TextView` with a theme, a language and the text to be shown, it is recommended to use the ``setState(_:addUndoAction:)`` function.
  12 | /// The function takes an instance of ``TextViewState`` as input which can be created on a background queue to avoid blocking the main queue while doing the initial parse of a text.
  13 | open class TextView: UIScrollView {
     |                      `- error: 'UIScrollView' is unavailable in watchOS
  14 |     /// Delegate to receive callbacks for events triggered by the editor.
  15 |     public weak var editorDelegate: TextViewDelegate?
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIScrollView.h:87:12: note: 'UIScrollView' has been explicitly marked unavailable here
 85 |
 86 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
 87 | @interface UIScrollView : UIView <NSCoding, UIFocusItemScrollableContainer>
    |            `- note: 'UIScrollView' has been explicitly marked unavailable here
 88 |
 89 | @property(nonatomic)         CGPoint                      contentOffset;                  // default CGPointZero
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:984:33: error: 'UITextRange' is unavailable in watchOS
 982 | extension TextView {
 983 |     /// The range of currently marked text in a document.
 984 |     public var markedTextRange: UITextRange? {
     |                                 `- error: 'UITextRange' is unavailable in watchOS
 985 |         textInputView.markedTextRange
 986 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:989:37: error: 'UITextPosition' is unavailable in watchOS
 987 |
 988 |     /// The text position for the beginning of a document.
 989 |     public var beginningOfDocument: UITextPosition {
     |                                     `- error: 'UITextPosition' is unavailable in watchOS
 990 |         textInputView.beginningOfDocument
 991 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:994:31: error: 'UITextPosition' is unavailable in watchOS
 992 |
 993 |     /// The text position for the end of a document.
 994 |     public var endOfDocument: UITextPosition {
     |                               `- error: 'UITextPosition' is unavailable in watchOS
 995 |         textInputView.endOfDocument
 996 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1003:46: error: 'UITextPosition' is unavailable in watchOS
1001 |     ///   - toPosition: An object that represents another location in a document.
1002 |     /// - Returns: An object that represents the range between fromPosition and toPosition.
1003 |     public func textRange(from fromPosition: UITextPosition, to toPosition: UITextPosition) -> UITextRange? {
     |                                              `- error: 'UITextPosition' is unavailable in watchOS
1004 |         textInputView.textRange(from: fromPosition, to: toPosition)
1005 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1003:77: error: 'UITextPosition' is unavailable in watchOS
1001 |     ///   - toPosition: An object that represents another location in a document.
1002 |     /// - Returns: An object that represents the range between fromPosition and toPosition.
1003 |     public func textRange(from fromPosition: UITextPosition, to toPosition: UITextPosition) -> UITextRange? {
     |                                                                             `- error: 'UITextPosition' is unavailable in watchOS
1004 |         textInputView.textRange(from: fromPosition, to: toPosition)
1005 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1003:96: error: 'UITextRange' is unavailable in watchOS
1001 |     ///   - toPosition: An object that represents another location in a document.
1002 |     /// - Returns: An object that represents the range between fromPosition and toPosition.
1003 |     public func textRange(from fromPosition: UITextPosition, to toPosition: UITextPosition) -> UITextRange? {
     |                                                                                                `- error: 'UITextRange' is unavailable in watchOS
1004 |         textInputView.textRange(from: fromPosition, to: toPosition)
1005 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1012:41: error: 'UITextPosition' is unavailable in watchOS
1010 |     ///   - offset: A character offset from position. It can be a positive or negative value.
1011 |     /// - Returns: A custom UITextPosition object that represents the location in a document that is at the specified offset from position. Returns nil if the computed text position is less than 0 or greater than the length of the backing string.
1012 |     public func position(from position: UITextPosition, offset: Int) -> UITextPosition? {
     |                                         `- error: 'UITextPosition' is unavailable in watchOS
1013 |         textInputView.position(from: position, offset: offset)
1014 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1012:73: error: 'UITextPosition' is unavailable in watchOS
1010 |     ///   - offset: A character offset from position. It can be a positive or negative value.
1011 |     /// - Returns: A custom UITextPosition object that represents the location in a document that is at the specified offset from position. Returns nil if the computed text position is less than 0 or greater than the length of the backing string.
1012 |     public func position(from position: UITextPosition, offset: Int) -> UITextPosition? {
     |                                                                         `- error: 'UITextPosition' is unavailable in watchOS
1013 |         textInputView.position(from: position, offset: offset)
1014 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1022:41: error: 'UITextPosition' is unavailable in watchOS
1020 |     ///   - offset: A character offset from position.
1021 |     /// - Returns: Returns the text position at a specified offset in a specified direction from another text position. Returns nil if the computed text position is less than 0 or greater than the length of the backing string.
1022 |     public func position(from position: UITextPosition, in direction: UITextLayoutDirection, offset: Int) -> UITextPosition? {
     |                                         `- error: 'UITextPosition' is unavailable in watchOS
1023 |         textInputView.position(from: position, in: direction, offset: offset)
1024 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1022:71: error: 'UITextLayoutDirection' is unavailable in watchOS
1020 |     ///   - offset: A character offset from position.
1021 |     /// - Returns: Returns the text position at a specified offset in a specified direction from another text position. Returns nil if the computed text position is less than 0 or greater than the length of the backing string.
1022 |     public func position(from position: UITextPosition, in direction: UITextLayoutDirection, offset: Int) -> UITextPosition? {
     |                                                                       `- error: 'UITextLayoutDirection' is unavailable in watchOS
1023 |         textInputView.position(from: position, in: direction, offset: offset)
1024 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:60:28: note: 'UITextLayoutDirection' has been explicitly marked unavailable here
 58 | } API_UNAVAILABLE(watchos);
 59 |
 60 | typedef NS_ENUM(NSInteger, UITextLayoutDirection) {
    |                            `- note: 'UITextLayoutDirection' has been explicitly marked unavailable here
 61 |     UITextLayoutDirectionRight = 2,
 62 |     UITextLayoutDirectionLeft,
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1022:110: error: 'UITextPosition' is unavailable in watchOS
1020 |     ///   - offset: A character offset from position.
1021 |     /// - Returns: Returns the text position at a specified offset in a specified direction from another text position. Returns nil if the computed text position is less than 0 or greater than the length of the backing string.
1022 |     public func position(from position: UITextPosition, in direction: UITextLayoutDirection, offset: Int) -> UITextPosition? {
     |                                                                                                              `- error: 'UITextPosition' is unavailable in watchOS
1023 |         textInputView.position(from: position, in: direction, offset: offset)
1024 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1031:37: error: 'UITextPosition' is unavailable in watchOS
1029 |     ///   - other: A custom object that represents another location within a document.
1030 |     /// - Returns: A value that indicates whether the two text positions are identical or whether one is before the other.
1031 |     public func compare(_ position: UITextPosition, to other: UITextPosition) -> ComparisonResult {
     |                                     `- error: 'UITextPosition' is unavailable in watchOS
1032 |         textInputView.compare(position, to: other)
1033 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1031:63: error: 'UITextPosition' is unavailable in watchOS
1029 |     ///   - other: A custom object that represents another location within a document.
1030 |     /// - Returns: A value that indicates whether the two text positions are identical or whether one is before the other.
1031 |     public func compare(_ position: UITextPosition, to other: UITextPosition) -> ComparisonResult {
     |                                                               `- error: 'UITextPosition' is unavailable in watchOS
1032 |         textInputView.compare(position, to: other)
1033 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1040:30: error: 'UITextPosition' is unavailable in watchOS
1038 |     ///   - toPosition: A custom object that represents another location within document.
1039 |     /// - Returns: The number of UTF-16 characters between fromPosition and toPosition.
1040 |     public func offset(from: UITextPosition, to toPosition: UITextPosition) -> Int {
     |                              `- error: 'UITextPosition' is unavailable in watchOS
1041 |         textInputView.offset(from: from, to: toPosition)
1042 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1040:61: error: 'UITextPosition' is unavailable in watchOS
1038 |     ///   - toPosition: A custom object that represents another location within document.
1039 |     /// - Returns: The number of UTF-16 characters between fromPosition and toPosition.
1040 |     public func offset(from: UITextPosition, to toPosition: UITextPosition) -> Int {
     |                                                             `- error: 'UITextPosition' is unavailable in watchOS
1041 |         textInputView.offset(from: from, to: toPosition)
1042 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1045:27: error: 'UITextInputTokenizer' is unavailable in watchOS
1043 |
1044 |     /// An input tokenizer that provides information about the granularity of text units.
1045 |     public var tokenizer: UITextInputTokenizer {
     |                           `- error: 'UITextInputTokenizer' is unavailable in watchOS
1046 |         textInputView.tokenizer
1047 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:350:11: note: 'UITextInputTokenizer' has been explicitly marked unavailable here
348 | /* A tokenizer allows the text input system to evaluate text units of varying granularity. */
349 | API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
350 | @protocol UITextInputTokenizer <NSObject>
    |           `- note: 'UITextInputTokenizer' has been explicitly marked unavailable here
351 |
352 | @required
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1054:40: error: 'UITextRange' is unavailable in watchOS
1052 |     ///   - direction: A constant that indicates a direction of layout (right, left, up, down).
1053 |     /// - Returns: A text-position object that identifies a location in the visible text.
1054 |     public func position(within range: UITextRange, farthestIn direction: UITextLayoutDirection) -> UITextPosition? {
     |                                        `- error: 'UITextRange' is unavailable in watchOS
1055 |         textInputView.position(within: range, farthestIn: direction)
1056 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1054:75: error: 'UITextLayoutDirection' is unavailable in watchOS
1052 |     ///   - direction: A constant that indicates a direction of layout (right, left, up, down).
1053 |     /// - Returns: A text-position object that identifies a location in the visible text.
1054 |     public func position(within range: UITextRange, farthestIn direction: UITextLayoutDirection) -> UITextPosition? {
     |                                                                           `- error: 'UITextLayoutDirection' is unavailable in watchOS
1055 |         textInputView.position(within: range, farthestIn: direction)
1056 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:60:28: note: 'UITextLayoutDirection' has been explicitly marked unavailable here
 58 | } API_UNAVAILABLE(watchos);
 59 |
 60 | typedef NS_ENUM(NSInteger, UITextLayoutDirection) {
    |                            `- note: 'UITextLayoutDirection' has been explicitly marked unavailable here
 61 |     UITextLayoutDirectionRight = 2,
 62 |     UITextLayoutDirectionLeft,
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1054:101: error: 'UITextPosition' is unavailable in watchOS
1052 |     ///   - direction: A constant that indicates a direction of layout (right, left, up, down).
1053 |     /// - Returns: A text-position object that identifies a location in the visible text.
1054 |     public func position(within range: UITextRange, farthestIn direction: UITextLayoutDirection) -> UITextPosition? {
     |                                                                                                     `- error: 'UITextPosition' is unavailable in watchOS
1055 |         textInputView.position(within: range, farthestIn: direction)
1056 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1063:54: error: 'UITextPosition' is unavailable in watchOS
1061 |     ///   - direction: A constant that indicates a direction of layout (right, left, up, down).
1062 |     /// - Returns: A text-range object that represents the distance from position to the farthest extent in direction.
1063 |     public func characterRange(byExtending position: UITextPosition, in direction: UITextLayoutDirection) -> UITextRange? {
     |                                                      `- error: 'UITextPosition' is unavailable in watchOS
1064 |         textInputView.characterRange(byExtending: position, in: direction)
1065 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1063:84: error: 'UITextLayoutDirection' is unavailable in watchOS
1061 |     ///   - direction: A constant that indicates a direction of layout (right, left, up, down).
1062 |     /// - Returns: A text-range object that represents the distance from position to the farthest extent in direction.
1063 |     public func characterRange(byExtending position: UITextPosition, in direction: UITextLayoutDirection) -> UITextRange? {
     |                                                                                    `- error: 'UITextLayoutDirection' is unavailable in watchOS
1064 |         textInputView.characterRange(byExtending: position, in: direction)
1065 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:60:28: note: 'UITextLayoutDirection' has been explicitly marked unavailable here
 58 | } API_UNAVAILABLE(watchos);
 59 |
 60 | typedef NS_ENUM(NSInteger, UITextLayoutDirection) {
    |                            `- note: 'UITextLayoutDirection' has been explicitly marked unavailable here
 61 |     UITextLayoutDirectionRight = 2,
 62 |     UITextLayoutDirectionLeft,
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1063:110: error: 'UITextRange' is unavailable in watchOS
1061 |     ///   - direction: A constant that indicates a direction of layout (right, left, up, down).
1062 |     /// - Returns: A text-range object that represents the distance from position to the farthest extent in direction.
1063 |     public func characterRange(byExtending position: UITextPosition, in direction: UITextLayoutDirection) -> UITextRange? {
     |                                                                                                              `- error: 'UITextRange' is unavailable in watchOS
1064 |         textInputView.characterRange(byExtending: position, in: direction)
1065 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1070:38: error: 'UITextRange' is unavailable in watchOS
1068 |     /// - Parameter range: An object that represents a range of text in a document.
1069 |     /// - Returns: The first rectangle in a range of text. You might use this rectangle to draw a correction rectangle. The “first” in the name refers the rectangle enclosing the first line when the range encompasses multiple lines of text.
1070 |     public func firstRect(for range: UITextRange) -> CGRect {
     |                                      `- error: 'UITextRange' is unavailable in watchOS
1071 |         textInputView.firstRect(for: range)
1072 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1077:41: error: 'UITextPosition' is unavailable in watchOS
1075 |     /// - Parameter position: An object that identifies a location in a text input area.
1076 |     /// - Returns: A rectangle that defines the area for drawing the caret.
1077 |     public func caretRect(for position: UITextPosition) -> CGRect {
     |                                         `- error: 'UITextPosition' is unavailable in watchOS
1078 |         textInputView.caretRect(for: position)
1079 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1084:43: error: 'UITextRange' is unavailable in watchOS
1082 |     /// - Parameter range: An object representing a range in a document’s text.
1083 |     /// - Returns: An array of UITextSelectionRect objects that encompass the selection.
1084 |     public func selectionRects(for range: UITextRange) -> [UITextSelectionRect] {
     |                                           `- error: 'UITextRange' is unavailable in watchOS
1085 |         textInputView.selectionRects(for: range)
1086 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1084:60: error: 'UITextSelectionRect' is unavailable in watchOS
1082 |     /// - Parameter range: An object representing a range in a document’s text.
1083 |     /// - Returns: An array of UITextSelectionRect objects that encompass the selection.
1084 |     public func selectionRects(for range: UITextRange) -> [UITextSelectionRect] {
     |                                                            `- error: 'UITextSelectionRect' is unavailable in watchOS
1085 |         textInputView.selectionRects(for: range)
1086 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:319:12: note: 'UITextSelectionRect' has been explicitly marked unavailable here
317 |  * provided to be subclassed when adopting UITextInput */
318 | UIKIT_EXTERN API_AVAILABLE(ios(6.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
319 | @interface UITextSelectionRect : NSObject
    |            `- note: 'UITextSelectionRect' has been explicitly marked unavailable here
320 |
321 | @property (nonatomic, readonly) CGRect rect;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1091:55: error: 'UITextPosition' is unavailable in watchOS
1089 |     /// - Parameter point: A point in the view that is drawing a document’s text.
1090 |     /// - Returns: An object locating a position in a document that is closest to point.
1091 |     public func closestPosition(to point: CGPoint) -> UITextPosition? {
     |                                                       `- error: 'UITextPosition' is unavailable in watchOS
1092 |         textInputView.closestPosition(to: point)
1093 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1100:66: error: 'UITextRange' is unavailable in watchOS
1098 |     ///   - range: An object representing a range in a document’s text.
1099 |     /// - Returns: An object representing the character position in range that is closest to point.
1100 |     public func closestPosition(to point: CGPoint, within range: UITextRange) -> UITextPosition? {
     |                                                                  `- error: 'UITextRange' is unavailable in watchOS
1101 |         textInputView.closestPosition(to: point, within: range)
1102 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1100:82: error: 'UITextPosition' is unavailable in watchOS
1098 |     ///   - range: An object representing a range in a document’s text.
1099 |     /// - Returns: An object representing the character position in range that is closest to point.
1100 |     public func closestPosition(to point: CGPoint, within range: UITextRange) -> UITextPosition? {
     |                                                                                  `- error: 'UITextPosition' is unavailable in watchOS
1101 |         textInputView.closestPosition(to: point, within: range)
1102 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:302:12: note: 'UITextPosition' has been explicitly marked unavailable here
300 |  * classes provided to be subclassed when adopting UITextInput */
301 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
302 | @interface UITextPosition : NSObject
    |            `- note: 'UITextPosition' has been explicitly marked unavailable here
303 |
304 | @end
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1107:54: error: 'UITextRange' is unavailable in watchOS
1105 |     /// - Parameter point: A point in the view that is drawing a document’s text.
1106 |     /// - Returns: An object representing a range that encloses a character (or characters) at point.
1107 |     public func characterRange(at point: CGPoint) -> UITextRange? {
     |                                                      `- error: 'UITextRange' is unavailable in watchOS
1108 |         textInputView.characterRange(at: point)
1109 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1114:32: error: 'UITextRange' is unavailable in watchOS
1112 |     /// - Parameter range: A range of text in a document.
1113 |     /// - Returns: A substring of a document that falls within the specified range.
1114 |     public func text(in range: UITextRange) -> String? {
     |                                `- error: 'UITextRange' is unavailable in watchOS
1115 |         textInputView.text(in: range)
1116 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1136:55: error: 'UITapGestureRecognizer' is unavailable in watchOS
1134 |
1135 | private extension TextView {
1136 |     @objc private func handleTap(_ gestureRecognizer: UITapGestureRecognizer) {
     |                                                       `- error: 'UITapGestureRecognizer' is unavailable in watchOS
1137 |         guard isSelectable else {
1138 |             return
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITapGestureRecognizer.h:23:12: note: 'UITapGestureRecognizer' has been explicitly marked unavailable here
21 |
22 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
23 | @interface UITapGestureRecognizer : UIGestureRecognizer
   |            `- note: 'UITapGestureRecognizer' has been explicitly marked unavailable here
24 |
25 | @property (nonatomic) NSUInteger  numberOfTapsRequired;       // Default is 1. The number of taps required to match
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1152:74: error: 'UIPanGestureRecognizer' is unavailable in watchOS
1150 |     }
1151 |
1152 |     @objc private func handleTextRangeAdjustmentPan(_ gestureRecognizer: UIPanGestureRecognizer) {
     |                                                                          `- error: 'UIPanGestureRecognizer' is unavailable in watchOS
1153 |         // This function scroll the text view when the selected range is adjusted.
1154 |         if gestureRecognizer.state == .began {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPanGestureRecognizer.h:31:12: note: 'UIPanGestureRecognizer' has been explicitly marked unavailable here
29 |
30 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
31 | @interface UIPanGestureRecognizer : UIGestureRecognizer
   |            `- note: 'UIPanGestureRecognizer' has been explicitly marked unavailable here
32 |
33 | @property (nonatomic)          NSUInteger minimumNumberOfTouches API_UNAVAILABLE(tvos);   // default is 1. the minimum number of touches required to match
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1465:76: error: 'UIGestureRecognizer' is unavailable in watchOS
1463 | // MARK: - UIGestureRecognizerDelegate
1464 | extension TextView: UIGestureRecognizerDelegate {
1465 |     override public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
     |                                                                            `- error: 'UIGestureRecognizer' is unavailable in watchOS
1466 |         if gestureRecognizer === tapGestureRecognizer {
1467 |             return !isEditing && !isDragging && !isDecelerating && delegateAllowsEditingToBegin
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIGestureRecognizer.h:35:12: note: 'UIGestureRecognizer' has been explicitly marked unavailable here
 33 |
 34 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
 35 | @interface UIGestureRecognizer : NSObject
    |            `- note: 'UIGestureRecognizer' has been explicitly marked unavailable here
 36 |
 37 | // Valid action method signatures:
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1473:56: error: 'UIGestureRecognizer' is unavailable in watchOS
1471 |     }
1472 |
1473 |     public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
     |                                                        `- error: 'UIGestureRecognizer' is unavailable in watchOS
1474 |                                   shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
1475 |         if let klass = NSClassFromString("UITextRangeAdjustmentGestureRecognizer") {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIGestureRecognizer.h:35:12: note: 'UIGestureRecognizer' has been explicitly marked unavailable here
 33 |
 34 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
 35 | @interface UIGestureRecognizer : NSObject
    |            `- note: 'UIGestureRecognizer' has been explicitly marked unavailable here
 36 |
 37 | // Valid action method signatures:
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1474:93: error: 'UIGestureRecognizer' is unavailable in watchOS
1472 |
1473 |     public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
1474 |                                   shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
     |                                                                                             `- error: 'UIGestureRecognizer' is unavailable in watchOS
1475 |         if let klass = NSClassFromString("UITextRangeAdjustmentGestureRecognizer") {
1476 |             if !textRangeAdjustmentGestureRecognizers.contains(otherGestureRecognizer) && otherGestureRecognizer.isKind(of: klass) {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIGestureRecognizer.h:35:12: note: 'UIGestureRecognizer' has been explicitly marked unavailable here
 33 |
 34 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
 35 | @interface UIGestureRecognizer : NSObject
    |            `- note: 'UIGestureRecognizer' has been explicitly marked unavailable here
 36 |
 37 | // Valid action method signatures:
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1464:21: error: 'UIGestureRecognizerDelegate' is unavailable in watchOS
1462 |
1463 | // MARK: - UIGestureRecognizerDelegate
1464 | extension TextView: UIGestureRecognizerDelegate {
     |                     `- error: 'UIGestureRecognizerDelegate' is unavailable in watchOS
1465 |     override public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
1466 |         if gestureRecognizer === tapGestureRecognizer {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIGestureRecognizer.h:91:11: note: 'UIGestureRecognizerDelegate' has been explicitly marked unavailable here
 89 |
 90 | API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
 91 | @protocol UIGestureRecognizerDelegate <NSObject>
    |           `- note: 'UIGestureRecognizerDelegate' has been explicitly marked unavailable here
 92 | @optional
 93 | // called when a gesture recognizer attempts to transition out of UIGestureRecognizerStatePossible. returning NO causes it to transition to UIGestureRecognizerStateFailed
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1498:55: error: 'UITextInteraction' is unavailable in watchOS
1496 | // MARK: - UITextInteractionDelegate
1497 | extension TextView: UITextInteractionDelegate {
1498 |     public func interactionShouldBegin(_ interaction: UITextInteraction, at point: CGPoint) -> Bool {
     |                                                       `- error: 'UITextInteraction' is unavailable in watchOS
1499 |         if interaction.textInteractionMode == .editable {
1500 |             return isEditable
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInteraction.h:31:12: note: 'UITextInteraction' has been explicitly marked unavailable here
29 |
30 | UIKIT_EXTERN API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos) NS_SWIFT_UI_ACTOR
31 | @interface UITextInteraction : NSObject <UIInteraction>
   |            `- note: 'UITextInteraction' has been explicitly marked unavailable here
32 |
33 | @property (nonatomic, weak) id <UITextInteractionDelegate> delegate;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1509:53: error: 'UITextInteraction' is unavailable in watchOS
1507 |     }
1508 |
1509 |     public func interactionWillBegin(_ interaction: UITextInteraction) {
     |                                                     `- error: 'UITextInteraction' is unavailable in watchOS
1510 |         if interaction.textInteractionMode == .nonEditable {
1511 |             // When long-pressing our instance of UITextInput, the UITextInteraction will make the text input first responder.
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInteraction.h:31:12: note: 'UITextInteraction' has been explicitly marked unavailable here
29 |
30 | UIKIT_EXTERN API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos) NS_SWIFT_UI_ACTOR
31 | @interface UITextInteraction : NSObject <UIInteraction>
   |            `- note: 'UITextInteraction' has been explicitly marked unavailable here
32 |
33 | @property (nonatomic, weak) id <UITextInteractionDelegate> delegate;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1518:50: error: 'UITextInteraction' is unavailable in watchOS
1516 |     }
1517 |
1518 |     public func interactionDidEnd(_ interaction: UITextInteraction) {
     |                                                  `- error: 'UITextInteraction' is unavailable in watchOS
1519 |         if interaction.textInteractionMode == .nonEditable {
1520 |             isPerformingNonEditableTextInteraction = false
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInteraction.h:31:12: note: 'UITextInteraction' has been explicitly marked unavailable here
29 |
30 | UIKIT_EXTERN API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos) NS_SWIFT_UI_ACTOR
31 | @interface UITextInteraction : NSObject <UIInteraction>
   |            `- note: 'UITextInteraction' has been explicitly marked unavailable here
32 |
33 | @property (nonatomic, weak) id <UITextInteractionDelegate> delegate;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift:1497:21: error: 'UITextInteractionDelegate' is unavailable in watchOS
1495 |
1496 | // MARK: - UITextInteractionDelegate
1497 | extension TextView: UITextInteractionDelegate {
     |                     `- error: 'UITextInteractionDelegate' is unavailable in watchOS
1498 |     public func interactionShouldBegin(_ interaction: UITextInteraction, at point: CGPoint) -> Bool {
1499 |         if interaction.textInteractionMode == .editable {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInteraction.h:23:11: note: 'UITextInteractionDelegate' has been explicitly marked unavailable here
21 |
22 | UIKIT_EXTERN API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos) NS_SWIFT_UI_ACTOR
23 | @protocol UITextInteractionDelegate <NSObject>
   |           `- note: 'UITextInteractionDelegate' has been explicitly marked unavailable here
24 | @optional
25 | - (BOOL)interactionShouldBegin:(UITextInteraction *)interaction atPoint:(CGPoint)point;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Gutter/GutterBackgroundView.swift:20:32: error: 'UIView' is unavailable in watchOS
18 |     }
19 |
20 |     private let hairlineView = UIView()
   |                                `- error: 'UIView' is unavailable in watchOS
21 |
22 |     override init(frame: CGRect = .zero) {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:152:12: note: 'UIView' has been explicitly marked unavailable here
150 |
151 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
152 | @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, UIFocusItemContainer, CALayerDelegate>
    |            `- note: 'UIView' has been explicitly marked unavailable here
153 |
154 | @property(class, nonatomic, readonly) Class layerClass;                        // default is [CALayer class]. Used when creating the underlying layer for the view.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Gutter/GutterBackgroundView.swift:20:32: error: 'init()' is unavailable in watchOS
18 |     }
19 |
20 |     private let hairlineView = UIView()
   |                                `- error: 'init()' is unavailable in watchOS
21 |
22 |     override init(frame: CGRect = .zero) {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:158:1: note: 'init()' has been explicitly marked unavailable here
156 | - (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;
157 | - (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
158 | - (instancetype)init API_AVAILABLE(ios(2.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos);
    | `- note: 'init()' has been explicitly marked unavailable here
159 |
160 | @property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled;  // default is YES. if set to NO, user events (touch, keys) are ignored and removed from the event queue.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Gutter/GutterBackgroundView.swift:3:35: error: 'UIView' is unavailable in watchOS
 1 | import UIKit
 2 |
 3 | final class GutterBackgroundView: UIView {
   |                                   `- error: 'UIView' is unavailable in watchOS
 4 |     var hairlineWidth: CGFloat = 1 {
 5 |         didSet {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:152:12: note: 'UIView' has been explicitly marked unavailable here
150 |
151 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
152 | @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, UIFocusItemContainer, CALayerDelegate>
    |            `- note: 'UIView' has been explicitly marked unavailable here
153 |
154 | @property(class, nonatomic, readonly) Class layerClass;                        // default is [CALayer class]. Used when creating the underlying layer for the view.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Gutter/LineNumberView.swift:29:29: error: 'UILabel' is unavailable in watchOS
27 |     }
28 |
29 |     private let titleLabel: UILabel = {
   |                             `- error: 'UILabel' is unavailable in watchOS
30 |         let this = UILabel()
31 |         this.textAlignment = .right
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILabel.h:33:12: note: 'UILabel' has been explicitly marked unavailable here
 31 |
 32 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
 33 | @interface UILabel : UIView <NSCoding, UIContentSizeCategoryAdjusting, UILetterformAwareAdjusting>
    |            `- note: 'UILabel' has been explicitly marked unavailable here
 34 |
 35 | @property(nullable, nonatomic,copy)   NSString           *text; // default is nil
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Gutter/LineNumberView.swift:30:20: error: 'UILabel' is unavailable in watchOS
28 |
29 |     private let titleLabel: UILabel = {
30 |         let this = UILabel()
   |                    `- error: 'UILabel' is unavailable in watchOS
31 |         this.textAlignment = .right
32 |         return this
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILabel.h:33:12: note: 'UILabel' has been explicitly marked unavailable here
 31 |
 32 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
 33 | @interface UILabel : UIView <NSCoding, UIContentSizeCategoryAdjusting, UILetterformAwareAdjusting>
    |            `- note: 'UILabel' has been explicitly marked unavailable here
 34 |
 35 | @property(nullable, nonatomic,copy)   NSString           *text; // default is nil
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Gutter/LineNumberView.swift:30:20: error: 'init()' is unavailable in watchOS
28 |
29 |     private let titleLabel: UILabel = {
30 |         let this = UILabel()
   |                    `- error: 'init()' is unavailable in watchOS
31 |         this.textAlignment = .right
32 |         return this
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:158:1: note: 'init()' has been explicitly marked unavailable here
156 | - (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;
157 | - (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
158 | - (instancetype)init API_AVAILABLE(ios(2.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos);
    | `- note: 'init()' has been explicitly marked unavailable here
159 |
160 | @property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled;  // default is YES. if set to NO, user events (touch, keys) are ignored and removed from the event queue.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Gutter/LineNumberView.swift:3:29: error: 'UIView' is unavailable in watchOS
 1 | import UIKit
 2 |
 3 | final class LineNumberView: UIView, ReusableView {
   |                             `- error: 'UIView' is unavailable in watchOS
 4 |     var textColor: UIColor {
 5 |         get {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:152:12: note: 'UIView' has been explicitly marked unavailable here
150 |
151 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
152 | @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, UIFocusItemContainer, CALayerDelegate>
    |            `- note: 'UIView' has been explicitly marked unavailable here
153 |
154 | @property(class, nonatomic, readonly) Class layerClass;                        // default is [CALayer class]. Used when creating the underlying layer for the view.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/InvisibleCharacters/InvisibleCharacterConfiguration.swift:12:31: error: 'label' is unavailable in watchOS
10 |         }
11 |     }
12 |     var textColor: UIColor = .label
   |                               `- error: 'label' is unavailable in watchOS
13 |     var showTabs = false
14 |     var showSpaces = false
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIInterface.h:171:49: note: 'label' has been explicitly marked unavailable here
169 | /* Foreground colors for static text and related elements.
170 |  */
171 | @property (class, nonatomic, readonly) UIColor *labelColor              API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
    |                                                 `- note: 'label' has been explicitly marked unavailable here
172 | @property (class, nonatomic, readonly) UIColor *secondaryLabelColor     API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
173 | @property (class, nonatomic, readonly) UIColor *tertiaryLabelColor      API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineFragmentRenderer.swift:18:47: error: 'systemFill' is unavailable in watchOS
 16 |     let invisibleCharacterConfiguration: InvisibleCharacterConfiguration
 17 |     var markedRange: NSRange?
 18 |     var markedTextBackgroundColor: UIColor = .systemFill
    |                                               `- error: 'systemFill' is unavailable in watchOS
 19 |     var markedTextBackgroundCornerRadius: CGFloat = 0
 20 |     var highlightedRangeFragments: [HighlightedRangeFragment] = []
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIInterface.h:229:49: note: 'systemFill' has been explicitly marked unavailable here
227 |  * Example: The track of a slider.
228 |  */
229 | @property (class, nonatomic, readonly) UIColor *systemFillColor                         API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    |                                                 `- note: 'systemFill' has been explicitly marked unavailable here
230 |
231 | /* secondarySystemFillColor is appropriate for filling medium-size shapes.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/PageGuide/PageGuideView.swift:20:32: error: 'UIView' is unavailable in watchOS
18 |     }
19 |
20 |     private let hairlineView = UIView()
   |                                `- error: 'UIView' is unavailable in watchOS
21 |
22 |     override init(frame: CGRect) {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:152:12: note: 'UIView' has been explicitly marked unavailable here
150 |
151 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
152 | @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, UIFocusItemContainer, CALayerDelegate>
    |            `- note: 'UIView' has been explicitly marked unavailable here
153 |
154 | @property(class, nonatomic, readonly) Class layerClass;                        // default is [CALayer class]. Used when creating the underlying layer for the view.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/PageGuide/PageGuideView.swift:20:32: error: 'init()' is unavailable in watchOS
18 |     }
19 |
20 |     private let hairlineView = UIView()
   |                                `- error: 'init()' is unavailable in watchOS
21 |
22 |     override init(frame: CGRect) {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:158:1: note: 'init()' has been explicitly marked unavailable here
156 | - (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;
157 | - (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
158 | - (instancetype)init API_AVAILABLE(ios(2.0), tvos(9.0), visionos(1.0)) API_UNAVAILABLE(watchos);
    | `- note: 'init()' has been explicitly marked unavailable here
159 |
160 | @property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled;  // default is YES. if set to NO, user events (touch, keys) are ignored and removed from the event queue.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/PageGuide/PageGuideView.swift:3:28: error: 'UIView' is unavailable in watchOS
 1 | import UIKit
 2 |
 3 | final class PageGuideView: UIView {
   |                            `- error: 'UIView' is unavailable in watchOS
 4 |     var hairlineWidth: CGFloat {
 5 |         didSet {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:152:12: note: 'UIView' has been explicitly marked unavailable here
150 |
151 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
152 | @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, UIFocusItemContainer, CALayerDelegate>
    |            `- note: 'UIView' has been explicitly marked unavailable here
153 |
154 | @property(class, nonatomic, readonly) Class layerClass;                        // default is [CALayer class]. Used when creating the underlying layer for the view.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:17:26: error: 'UIFindInteraction' is unavailable in watchOS
 15 |     }
 16 |     @available(iOS 16, *)
 17 |     var findInteraction: UIFindInteraction? {
    |                          `- error: 'UIFindInteraction' is unavailable in watchOS
 18 |         get {
 19 |             guard let _findInteraction = _findInteraction else {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindInteraction.h:39:12: note: 'UIFindInteraction' has been explicitly marked unavailable here
37 |
38 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
39 | @interface UIFindInteraction : NSObject <UIInteraction>
   |            `- note: 'UIFindInteraction' has been explicitly marked unavailable here
40 |
41 | /// Returns YES if the find navigator panel is currently visible.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:54:34: error: cannot find type 'UITextSearching' in scope
 52 |
 53 | @available(iOS 16, *)
 54 | extension UITextSearchingHelper: UITextSearching {
    |                                  `- error: cannot find type 'UITextSearching' in scope
 55 |     var supportsTextReplacement: Bool {
 56 |         true
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:59:28: error: 'UITextRange' is unavailable in watchOS
 57 |     }
 58 |
 59 |     var selectedTextRange: UITextRange? {
    |                            `- error: 'UITextRange' is unavailable in watchOS
 60 |         _textView.selectedTextRange
 61 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:63:32: error: 'UITextRange' is unavailable in watchOS
 61 |     }
 62 |
 63 |     func compare(_ foundRange: UITextRange, toRange: UITextRange, document: AnyHashable??) -> ComparisonResult {
    |                                `- error: 'UITextRange' is unavailable in watchOS
 64 |         guard let foundRange = foundRange as? IndexedRange, let toRange = toRange as? IndexedRange else {
 65 |             fatalError("Expected indexed ranges.")
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:63:54: error: 'UITextRange' is unavailable in watchOS
 61 |     }
 62 |
 63 |     func compare(_ foundRange: UITextRange, toRange: UITextRange, document: AnyHashable??) -> ComparisonResult {
    |                                                      `- error: 'UITextRange' is unavailable in watchOS
 64 |         guard let foundRange = foundRange as? IndexedRange, let toRange = toRange as? IndexedRange else {
 65 |             fatalError("Expected indexed ranges.")
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:80:97: error: cannot find type 'UITextSearchAggregator' in scope
 78 |     }
 79 |
 80 |     func performTextSearch(queryString: String, options: UITextSearchOptions, resultAggregator: UITextSearchAggregator<AnyHashable?>) {
    |                                                                                                 `- error: cannot find type 'UITextSearchAggregator' in scope
 81 |         performTextSearch(for: queryString, options: options) { searchResults in
 82 |             for searchResult in searchResults {
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:80:58: error: 'UITextSearchOptions' is unavailable in watchOS
 78 |     }
 79 |
 80 |     func performTextSearch(queryString: String, options: UITextSearchOptions, resultAggregator: UITextSearchAggregator<AnyHashable?>) {
    |                                                          `- error: 'UITextSearchOptions' is unavailable in watchOS
 81 |         performTextSearch(for: queryString, options: options) { searchResults in
 82 |             for searchResult in searchResults {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h:40:12: note: 'UITextSearchOptions' has been explicitly marked unavailable here
 38 |
 39 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
 40 | @interface UITextSearchOptions : NSObject
    |            `- note: 'UITextSearchOptions' has been explicitly marked unavailable here
 41 | /// See UITextSearchMatchMethod above.
 42 | @property (nonatomic, readonly) UITextSearchMatchMethod wordMatchMethod;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:90:35: error: 'UITextRange' is unavailable in watchOS
 88 |     }
 89 |
 90 |     func decorate(foundTextRange: UITextRange, document: AnyHashable??, usingStyle style: UITextSearchFoundTextStyle) {
    |                                   `- error: 'UITextRange' is unavailable in watchOS
 91 |         guard let foundTextRange = foundTextRange as? IndexedRange else {
 92 |             return
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:90:91: error: 'UITextSearchFoundTextStyle' is unavailable in watchOS
 88 |     }
 89 |
 90 |     func decorate(foundTextRange: UITextRange, document: AnyHashable??, usingStyle style: UITextSearchFoundTextStyle) {
    |                                                                                           `- error: 'UITextSearchFoundTextStyle' is unavailable in watchOS
 91 |         guard let foundTextRange = foundTextRange as? IndexedRange else {
 92 |             return
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextSearching.h:18:28: note: 'UITextSearchFoundTextStyle' has been explicitly marked unavailable here
 16 | typedef id<NSObject, NSCopying> UITextSearchDocumentIdentifier API_UNAVAILABLE(watchos);
 17 |
 18 | typedef NS_ENUM(NSInteger, UITextSearchFoundTextStyle) {
    |                            `- note: 'UITextSearchFoundTextStyle' has been explicitly marked unavailable here
 19 |     /// No style.
 20 |     UITextSearchFoundTextStyleNormal,
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:104:51: error: 'UITextSearchOptions' is unavailable in watchOS
102 |     }
103 |
104 |     func replaceAll(queryString: String, options: UITextSearchOptions, withText replacementText: String) {
    |                                                   `- error: 'UITextSearchOptions' is unavailable in watchOS
105 |         performTextSearch(for: queryString, options: options) { searchResults in
106 |             let replacements = searchResults.map { BatchReplaceSet.Replacement(range: $0.range, text: replacementText) }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h:40:12: note: 'UITextSearchOptions' has been explicitly marked unavailable here
 38 |
 39 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
 40 | @interface UITextSearchOptions : NSObject
    |            `- note: 'UITextSearchOptions' has been explicitly marked unavailable here
 41 | /// See UITextSearchMatchMethod above.
 42 | @property (nonatomic, readonly) UITextSearchMatchMethod wordMatchMethod;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:114:34: error: 'UITextRange' is unavailable in watchOS
112 |     }
113 |
114 |     func replace(foundTextRange: UITextRange, document: AnyHashable??, withText replacementText: String) {
    |                                  `- error: 'UITextRange' is unavailable in watchOS
115 |         _textView.replace(foundTextRange, withText: replacementText)
116 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:118:40: error: 'UITextRange' is unavailable in watchOS
116 |     }
117 |
118 |     func shouldReplace(foundTextRange: UITextRange, document: AnyHashable??, withText replacementText: String) -> Bool {
    |                                        `- error: 'UITextRange' is unavailable in watchOS
119 |         guard let foundTextRange = foundTextRange as? IndexedRange else {
120 |             // iOS 16 beta 2 will call this function when presenting the find/replace navigator and pass <uninitialized> to foundTextRange. If we return false in this case, the find/replace UI will not be shown, so we need to return true when we can't convert the UITextRange to an IndexedRange.
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:129:40: error: 'UITextRange' is unavailable in watchOS
127 |     }
128 |
129 |     func scrollRangeToVisible(_ range: UITextRange, inDocument: AnyHashable??) {
    |                                        `- error: 'UITextRange' is unavailable in watchOS
130 |         if let indexedRange = range as? IndexedRange {
131 |             _textView.scrollRangeToVisible(indexedRange.range)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:153:70: error: 'UITextSearchOptions' is unavailable in watchOS
151 |
152 |     @available(iOS 16.0, *)
153 |     private func performTextSearch(for queryString: String, options: UITextSearchOptions, completion: @escaping ([SearchResult]) -> Void) {
    |                                                                      `- error: 'UITextSearchOptions' is unavailable in watchOS
154 |         queue.cancelAllOperations()
155 |         let operation = BlockOperation()
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h:40:12: note: 'UITextSearchOptions' has been explicitly marked unavailable here
 38 |
 39 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
 40 | @interface UITextSearchOptions : NSObject
    |            `- note: 'UITextSearchOptions' has been explicitly marked unavailable here
 41 | /// See UITextSearchMatchMethod above.
 42 | @property (nonatomic, readonly) UITextSearchMatchMethod wordMatchMethod;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:170:41: error: 'UIFindInteraction' is unavailable in watchOS
168 | @available(iOS 16, *)
169 | extension UITextSearchingHelper: UIFindInteractionDelegate {
170 |     func findInteraction(_ interaction: UIFindInteraction, sessionFor view: UIView) -> UIFindSession? {
    |                                         `- error: 'UIFindInteraction' is unavailable in watchOS
171 |         UITextSearchingFindSession(searchableObject: self)
172 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindInteraction.h:39:12: note: 'UIFindInteraction' has been explicitly marked unavailable here
37 |
38 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
39 | @interface UIFindInteraction : NSObject <UIInteraction>
   |            `- note: 'UIFindInteraction' has been explicitly marked unavailable here
40 |
41 | /// Returns YES if the find navigator panel is currently visible.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:170:77: error: 'UIView' is unavailable in watchOS
168 | @available(iOS 16, *)
169 | extension UITextSearchingHelper: UIFindInteractionDelegate {
170 |     func findInteraction(_ interaction: UIFindInteraction, sessionFor view: UIView) -> UIFindSession? {
    |                                                                             `- error: 'UIView' is unavailable in watchOS
171 |         UITextSearchingFindSession(searchableObject: self)
172 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:152:12: note: 'UIView' has been explicitly marked unavailable here
150 |
151 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
152 | @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, UIFocusItemContainer, CALayerDelegate>
    |            `- note: 'UIView' has been explicitly marked unavailable here
153 |
154 | @property(class, nonatomic, readonly) Class layerClass;                        // default is [CALayer class]. Used when creating the underlying layer for the view.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:170:88: error: 'UIFindSession' is unavailable in watchOS
168 | @available(iOS 16, *)
169 | extension UITextSearchingHelper: UIFindInteractionDelegate {
170 |     func findInteraction(_ interaction: UIFindInteraction, sessionFor view: UIView) -> UIFindSession? {
    |                                                                                        `- error: 'UIFindSession' is unavailable in watchOS
171 |         UITextSearchingFindSession(searchableObject: self)
172 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h:57:12: note: 'UIFindSession' has been explicitly marked unavailable here
 55 | ///             state of a find session automatically using behavior consistent with the rest of the system.
 56 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
 57 | @interface UIFindSession : NSObject
    |            `- note: 'UIFindSession' has been explicitly marked unavailable here
 58 |
 59 | /// Returns the total number of results.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:169:34: error: 'UIFindInteractionDelegate' is unavailable in watchOS
167 |
168 | @available(iOS 16, *)
169 | extension UITextSearchingHelper: UIFindInteractionDelegate {
    |                                  `- error: 'UIFindInteractionDelegate' is unavailable in watchOS
170 |     func findInteraction(_ interaction: UIFindInteraction, sessionFor view: UIView) -> UIFindSession? {
171 |         UITextSearchingFindSession(searchableObject: self)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindInteraction.h:18:11: note: 'UIFindInteractionDelegate' has been explicitly marked unavailable here
16 |
17 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
18 | @protocol UIFindInteractionDelegate <NSObject>
   |           `- note: 'UIFindInteractionDelegate' has been explicitly marked unavailable here
19 |
20 | /// Called when a find session is requested to begin by the user. Return an instance of a UIFindSession implementation to allow the
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:177:40: error: 'UITextSearchOptions' is unavailable in watchOS
175 | private extension SearchQuery {
176 |     @available(iOS 16, *)
177 |     init(queryString: String, options: UITextSearchOptions) {
    |                                        `- error: 'UITextSearchOptions' is unavailable in watchOS
178 |         let matchMethod = SearchQuery.MatchMethod(options.wordMatchMethod)
179 |         let isCaseSensitive = !options.stringCompareOptions.contains(.caseInsensitive)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h:40:12: note: 'UITextSearchOptions' has been explicitly marked unavailable here
 38 |
 39 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
 40 | @interface UITextSearchOptions : NSObject
    |            `- note: 'UITextSearchOptions' has been explicitly marked unavailable here
 41 | /// See UITextSearchMatchMethod above.
 42 | @property (nonatomic, readonly) UITextSearchMatchMethod wordMatchMethod;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:186:25: error: 'UITextSearchOptions' is unavailable in watchOS
184 | @available(iOS 16, *)
185 | private extension SearchQuery.MatchMethod {
186 |     init(_ matchMethod: UITextSearchOptions.WordMatchMethod) {
    |                         `- error: 'UITextSearchOptions' is unavailable in watchOS
187 |         switch matchMethod {
188 |         case .contains:
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h:40:12: note: 'UITextSearchOptions' has been explicitly marked unavailable here
 38 |
 39 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
 40 | @interface UITextSearchOptions : NSObject
    |            `- note: 'UITextSearchOptions' has been explicitly marked unavailable here
 41 | /// See UITextSearchMatchMethod above.
 42 | @property (nonatomic, readonly) UITextSearchMatchMethod wordMatchMethod;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/TextSelection/TextSelectionRect.swift:3:32: error: 'UITextSelectionRect' is unavailable in watchOS
 1 | import UIKit
 2 |
 3 | final class TextSelectionRect: UITextSelectionRect {
   |                                `- error: 'UITextSelectionRect' is unavailable in watchOS
 4 |     override var rect: CGRect {
 5 |         _rect
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:319:12: note: 'UITextSelectionRect' has been explicitly marked unavailable here
317 |  * provided to be subclassed when adopting UITextInput */
318 | UIKIT_EXTERN API_AVAILABLE(ios(6.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
319 | @interface UITextSelectionRect : NSObject
    |            `- note: 'UITextSelectionRect' has been explicitly marked unavailable here
320 |
321 | @property (nonatomic, readonly) CGRect rect;
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/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/DerivedSources/resource_bundle_accessor.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/ByteCount.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/ByteRange.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/Caret.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/CharacterSet+Helpers.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/DefaultStringAttributes.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/HairlineLength.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/KeyboardObserver.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/L10n.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/LineEndingDetector.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/NSAttributedString+Helpers.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/NSRange+Helpers.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/NSString+Helpers.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/QuickTapGestureRecognizer.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/String+Helpers.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/Symbol.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/TabWidthMeasurer.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/TextChange.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/TextEditHelper.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/TreeSitterTextPoint+Helpers.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/UIFont+Helpers.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/UIScrollView+Helpers.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/UITextInput+Helpers.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/UITextSelectionDisplayInteraction+Helpers.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/Library/ViewReuseQueue.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/LineManager/DocumentLineChildrenUpdater.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/LineManager/DocumentLineNodeData.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/LineManager/LineChangeSet.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/LineManager/LineManager.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/LineManager/LinePosition.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/LineManager/NewLineFinder.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/RedBlackTree/ClosedRangeValueDescriptor.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/RedBlackTree/RedBlackTree.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/RedBlackTree/RedBlackTreeChildrenUpdater.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/RedBlackTree/RedBlackTreeIterator.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/RedBlackTree/RedBlackTreeNode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/RedBlackTree/RedBlackTreeNodeColor.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/RedBlackTree/RedBlackTreeNodePosition.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/RedBlackTree/RedBlackTreeSearchMatch.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/RedBlackTree/RedBlackTreeSearchQuery.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/StringSyntaxHighlighter.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Appearance/DefaultTheme.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Appearance/FontTraits.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Appearance/HighlightName.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Appearance/LineBreakMode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Appearance/LineSelectionDisplayType.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Appearance/Theme.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/CharacterPairs/CharacterPair.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/CharacterPairs/CharacterPairTrailingComponentDeletionMode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/ContentSizeService.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/EditMenuController.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/FloatingCaretView.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/IndexedPosition.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/IndexedRange.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/LayoutManager.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/LineEnding.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/LineFragmentView.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/LineMovementController.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/MoveLinesService.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/StringView.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputStringTokenizer.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextInputView.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextView.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextViewDelegate.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TextViewState.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Core/TimedUndoManager.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Gutter/GutterBackgroundView.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Gutter/GutterWidthService.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Gutter/LineNumberView.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Highlight/HighlightNavigationController.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Highlight/HighlightService.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Highlight/HighlightedRange.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Highlight/HighlightedRangeFragment.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Highlight/HighlightedRangeLoopingMode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Indent/DetectedIndentStrategy.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Indent/IndentController.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Indent/IndentLevelMeasurer.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Indent/IndentStrategy.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/InvisibleCharacters/InvisibleCharacterConfiguration.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineBreak/CharacterLineBreakSuggester.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineBreak/LineBreakSuggester.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineBreak/WordWrappingLineBreakSuggester.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineController.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineControllerFactory.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineControllerStorage.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineFragment.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineFragmentCharacterLocationQuery.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineFragmentController.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineFragmentFrameQuery.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineFragmentNode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineFragmentRenderer.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineFragmentSelectionRect.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineSyntaxHighlighter.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/LineController/LineTypesetter.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Navigation/GoToLineSelection.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/Navigation/TextLocation.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/PageGuide/PageGuideController.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/PageGuide/PageGuideView.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/BatchReplaceSet.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/ParsedReplacementString.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/ReplacementStringParser.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/SearchController.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/SearchQuery.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/SearchReplaceResult.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/SearchResult.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/StringModifier.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/TextPreview.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/InternalLanguageMode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/InternalLanguageModeFactory.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/PlainText/PlainTextInternalLanguageMode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/PlainText/PlainTextSyntaxHighlighter.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterIndentController.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterIndentStrategyDetector.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInjectedLanguage.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInjectedLanguageMapper.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInternalLanguage.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInternalLanguageMode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterLanguageLayer.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterLanguageLayerStore.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterSyntaxHighlightToken.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterSyntaxHighlighter.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterTextPredicatesEvaluator.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/LanguageMode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/PlainText/PlainTextLanguageMode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/SyntaxNode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/TreeSitter/TreeSitterIndentationScopes.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/TreeSitter/TreeSitterLanguage.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/TreeSitter/TreeSitterLanguageMode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/TreeSitter/TreeSitterLanguageProvider.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/TextSelection/CaretRectService.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/TextSelection/SelectionRectService.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/TextSelection/TextSelectionRect.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterCapture.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterInputEdit.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterNode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterParser.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterPredicate.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterPredicateMapper.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterQuery.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterQueryCursor.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterQueryMatch.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTextInput.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTextPoint.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTextPredicate.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTextRange.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTree.swift /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/DerivedSources/GeneratedAssetSymbols.swift -target arm64_32-apple-watchos9.0 -module-can-import-version DeveloperToolsSupport 24.0.24 24.0.24 -module-can-import-version SwiftUI 8.0.84.1 8.0.84 -module-can-import-version UIKit 9127.0.84.1 9127.0.84 -disable-cross-import-overlay-search -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/lib/swift/host/plugins/libFoundationMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/bin/swift-plugin-server\#FoundationMacros -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/lib/swift/host/plugins/libObservationMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/bin/swift-plugin-server\#ObservationMacros -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/lib/swift/host/plugins/libPreviewsMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/bin/swift-plugin-server\#PreviewsMacros -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/lib/swift/host/plugins/libSwiftMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/bin/swift-plugin-server\#SwiftMacros -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/lib/swift/host/plugins/libSwiftUIMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.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/Runestone.build/Debug-watchos/Runestone-t.build/Objects-normal/arm64_32/Runestone-dependencies-2.json -enable-objc-interop -sdk /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk -I /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-watchos -Isystem /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/lib -F /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-watchos/PackageFrameworks -F /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-watchos -F /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/Library/Frameworks -F /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.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_AVAILABLE -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 -fmodule-map-file\=/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/GeneratedModuleMaps-watchos/TreeSitter.modulemap -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -Xcc -ivfsstatcache -Xcc /Users/admin/builder/spi-builder-workspace/.derivedData/SDKStatCaches.noindex/watchos27.0-24R360-e829b21a6f8c9b70876ba0858053c04477534ef55a1706bf4c1112bbb242f0a2.sdkstatcache -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -Xcc -I/Users/admin/builder/spi-builder-workspace/.dependencies/checkouts/tree-sitter/lib/include -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-watchos/include -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/DerivedSources-normal/arm64_32 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/DerivedSources/arm64_32 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -no-auto-bridging-header-chaining -module-name Runestone -const-gather-protocols-file /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/Objects-normal/arm64_32/Runestone_const_extract_protocols.json -disable-clang-spi -clang-target arm64_32-apple-watchos27.0 -target-sdk-version 27.0 -target-sdk-name watchos27.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/Runestone.build/Debug-watchos/Runestone-t.build/Objects-normal/arm64_32/Runestone.swiftdoc -emit-module-source-info-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/Objects-normal/arm64_32/Runestone.swiftsourceinfo -emit-objc-header-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/Objects-normal/arm64_32/Runestone-Swift.h -serialize-diagnostics-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/Objects-normal/arm64_32/Runestone-primary-emit-module.dia -emit-dependencies-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/Objects-normal/arm64_32/Runestone-primary-emit-module.d -parse-as-library -o /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/Objects-normal/arm64_32/Runestone.swiftmodule -emit-abi-descriptor-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/Objects-normal/arm64_32/Runestone.abi.json
SwiftCompile normal arm64_32 (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode

SwiftCompile normal arm64 Compiling\ StringModifier.swift,\ TextPreview.swift,\ UITextSearchingHelper.swift,\ InternalLanguageMode.swift,\ InternalLanguageModeFactory.swift,\ PlainTextInternalLanguageMode.swift,\ PlainTextSyntaxHighlighter.swift,\ TreeSitterIndentController.swift,\ TreeSitterIndentStrategyDetector.swift,\ TreeSitterInjectedLanguage.swift,\ TreeSitterInjectedLanguageMapper.swift,\ TreeSitterInternalLanguage.swift,\ TreeSitterInternalLanguageMode.swift,\ TreeSitterLanguageLayer.swift,\ TreeSitterLanguageLayerStore.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/StringModifier.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/TextPreview.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/InternalLanguageMode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/InternalLanguageModeFactory.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/PlainText/PlainTextInternalLanguageMode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/PlainText/PlainTextSyntaxHighlighter.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterIndentController.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterIndentStrategyDetector.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInjectedLanguage.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInjectedLanguageMapper.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInternalLanguage.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInternalLanguageMode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterLanguageLayer.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterLanguageLayerStore.swift (in target 'Runestone' from project 'Runestone')
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:17:26: error: 'UIFindInteraction' is unavailable in watchOS
 15 |     }
 16 |     @available(iOS 16, *)
 17 |     var findInteraction: UIFindInteraction? {
    |                          `- error: 'UIFindInteraction' is unavailable in watchOS
 18 |         get {
 19 |             guard let _findInteraction = _findInteraction else {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindInteraction.h:39:12: note: 'UIFindInteraction' has been explicitly marked unavailable here
37 |
38 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
39 | @interface UIFindInteraction : NSObject <UIInteraction>
   |            `- note: 'UIFindInteraction' has been explicitly marked unavailable here
40 |
41 | /// Returns YES if the find navigator panel is currently visible.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:54:34: error: cannot find type 'UITextSearching' in scope
 52 |
 53 | @available(iOS 16, *)
 54 | extension UITextSearchingHelper: UITextSearching {
    |                                  `- error: cannot find type 'UITextSearching' in scope
 55 |     var supportsTextReplacement: Bool {
 56 |         true
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:59:28: error: 'UITextRange' is unavailable in watchOS
 57 |     }
 58 |
 59 |     var selectedTextRange: UITextRange? {
    |                            `- error: 'UITextRange' is unavailable in watchOS
 60 |         _textView.selectedTextRange
 61 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:63:32: error: 'UITextRange' is unavailable in watchOS
 61 |     }
 62 |
 63 |     func compare(_ foundRange: UITextRange, toRange: UITextRange, document: AnyHashable??) -> ComparisonResult {
    |                                `- error: 'UITextRange' is unavailable in watchOS
 64 |         guard let foundRange = foundRange as? IndexedRange, let toRange = toRange as? IndexedRange else {
 65 |             fatalError("Expected indexed ranges.")
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:63:54: error: 'UITextRange' is unavailable in watchOS
 61 |     }
 62 |
 63 |     func compare(_ foundRange: UITextRange, toRange: UITextRange, document: AnyHashable??) -> ComparisonResult {
    |                                                      `- error: 'UITextRange' is unavailable in watchOS
 64 |         guard let foundRange = foundRange as? IndexedRange, let toRange = toRange as? IndexedRange else {
 65 |             fatalError("Expected indexed ranges.")
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:80:97: error: cannot find type 'UITextSearchAggregator' in scope
 78 |     }
 79 |
 80 |     func performTextSearch(queryString: String, options: UITextSearchOptions, resultAggregator: UITextSearchAggregator<AnyHashable?>) {
    |                                                                                                 `- error: cannot find type 'UITextSearchAggregator' in scope
 81 |         performTextSearch(for: queryString, options: options) { searchResults in
 82 |             for searchResult in searchResults {
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:80:58: error: 'UITextSearchOptions' is unavailable in watchOS
 78 |     }
 79 |
 80 |     func performTextSearch(queryString: String, options: UITextSearchOptions, resultAggregator: UITextSearchAggregator<AnyHashable?>) {
    |                                                          `- error: 'UITextSearchOptions' is unavailable in watchOS
 81 |         performTextSearch(for: queryString, options: options) { searchResults in
 82 |             for searchResult in searchResults {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h:40:12: note: 'UITextSearchOptions' has been explicitly marked unavailable here
 38 |
 39 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
 40 | @interface UITextSearchOptions : NSObject
    |            `- note: 'UITextSearchOptions' has been explicitly marked unavailable here
 41 | /// See UITextSearchMatchMethod above.
 42 | @property (nonatomic, readonly) UITextSearchMatchMethod wordMatchMethod;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:90:35: error: 'UITextRange' is unavailable in watchOS
 88 |     }
 89 |
 90 |     func decorate(foundTextRange: UITextRange, document: AnyHashable??, usingStyle style: UITextSearchFoundTextStyle) {
    |                                   `- error: 'UITextRange' is unavailable in watchOS
 91 |         guard let foundTextRange = foundTextRange as? IndexedRange else {
 92 |             return
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:90:91: error: 'UITextSearchFoundTextStyle' is unavailable in watchOS
 88 |     }
 89 |
 90 |     func decorate(foundTextRange: UITextRange, document: AnyHashable??, usingStyle style: UITextSearchFoundTextStyle) {
    |                                                                                           `- error: 'UITextSearchFoundTextStyle' is unavailable in watchOS
 91 |         guard let foundTextRange = foundTextRange as? IndexedRange else {
 92 |             return
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextSearching.h:18:28: note: 'UITextSearchFoundTextStyle' has been explicitly marked unavailable here
 16 | typedef id<NSObject, NSCopying> UITextSearchDocumentIdentifier API_UNAVAILABLE(watchos);
 17 |
 18 | typedef NS_ENUM(NSInteger, UITextSearchFoundTextStyle) {
    |                            `- note: 'UITextSearchFoundTextStyle' has been explicitly marked unavailable here
 19 |     /// No style.
 20 |     UITextSearchFoundTextStyleNormal,
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:104:51: error: 'UITextSearchOptions' is unavailable in watchOS
102 |     }
103 |
104 |     func replaceAll(queryString: String, options: UITextSearchOptions, withText replacementText: String) {
    |                                                   `- error: 'UITextSearchOptions' is unavailable in watchOS
105 |         performTextSearch(for: queryString, options: options) { searchResults in
106 |             let replacements = searchResults.map { BatchReplaceSet.Replacement(range: $0.range, text: replacementText) }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h:40:12: note: 'UITextSearchOptions' has been explicitly marked unavailable here
 38 |
 39 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
 40 | @interface UITextSearchOptions : NSObject
    |            `- note: 'UITextSearchOptions' has been explicitly marked unavailable here
 41 | /// See UITextSearchMatchMethod above.
 42 | @property (nonatomic, readonly) UITextSearchMatchMethod wordMatchMethod;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:114:34: error: 'UITextRange' is unavailable in watchOS
112 |     }
113 |
114 |     func replace(foundTextRange: UITextRange, document: AnyHashable??, withText replacementText: String) {
    |                                  `- error: 'UITextRange' is unavailable in watchOS
115 |         _textView.replace(foundTextRange, withText: replacementText)
116 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:118:40: error: 'UITextRange' is unavailable in watchOS
116 |     }
117 |
118 |     func shouldReplace(foundTextRange: UITextRange, document: AnyHashable??, withText replacementText: String) -> Bool {
    |                                        `- error: 'UITextRange' is unavailable in watchOS
119 |         guard let foundTextRange = foundTextRange as? IndexedRange else {
120 |             // iOS 16 beta 2 will call this function when presenting the find/replace navigator and pass <uninitialized> to foundTextRange. If we return false in this case, the find/replace UI will not be shown, so we need to return true when we can't convert the UITextRange to an IndexedRange.
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:129:40: error: 'UITextRange' is unavailable in watchOS
127 |     }
128 |
129 |     func scrollRangeToVisible(_ range: UITextRange, inDocument: AnyHashable??) {
    |                                        `- error: 'UITextRange' is unavailable in watchOS
130 |         if let indexedRange = range as? IndexedRange {
131 |             _textView.scrollRangeToVisible(indexedRange.range)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h:307:12: note: 'UITextRange' has been explicitly marked unavailable here
305 |
306 | UIKIT_EXTERN API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
307 | @interface UITextRange : NSObject
    |            `- note: 'UITextRange' has been explicitly marked unavailable here
308 |
309 | @property (nonatomic, readonly, getter=isEmpty) BOOL empty;     //  Whether the range is zero-length.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:153:70: error: 'UITextSearchOptions' is unavailable in watchOS
151 |
152 |     @available(iOS 16.0, *)
153 |     private func performTextSearch(for queryString: String, options: UITextSearchOptions, completion: @escaping ([SearchResult]) -> Void) {
    |                                                                      `- error: 'UITextSearchOptions' is unavailable in watchOS
154 |         queue.cancelAllOperations()
155 |         let operation = BlockOperation()
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h:40:12: note: 'UITextSearchOptions' has been explicitly marked unavailable here
 38 |
 39 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
 40 | @interface UITextSearchOptions : NSObject
    |            `- note: 'UITextSearchOptions' has been explicitly marked unavailable here
 41 | /// See UITextSearchMatchMethod above.
 42 | @property (nonatomic, readonly) UITextSearchMatchMethod wordMatchMethod;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:170:41: error: 'UIFindInteraction' is unavailable in watchOS
168 | @available(iOS 16, *)
169 | extension UITextSearchingHelper: UIFindInteractionDelegate {
170 |     func findInteraction(_ interaction: UIFindInteraction, sessionFor view: UIView) -> UIFindSession? {
    |                                         `- error: 'UIFindInteraction' is unavailable in watchOS
171 |         UITextSearchingFindSession(searchableObject: self)
172 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindInteraction.h:39:12: note: 'UIFindInteraction' has been explicitly marked unavailable here
37 |
38 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
39 | @interface UIFindInteraction : NSObject <UIInteraction>
   |            `- note: 'UIFindInteraction' has been explicitly marked unavailable here
40 |
41 | /// Returns YES if the find navigator panel is currently visible.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:170:77: error: 'UIView' is unavailable in watchOS
168 | @available(iOS 16, *)
169 | extension UITextSearchingHelper: UIFindInteractionDelegate {
170 |     func findInteraction(_ interaction: UIFindInteraction, sessionFor view: UIView) -> UIFindSession? {
    |                                                                             `- error: 'UIView' is unavailable in watchOS
171 |         UITextSearchingFindSession(searchableObject: self)
172 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:152:12: note: 'UIView' has been explicitly marked unavailable here
150 |
151 | UIKIT_EXTERN API_AVAILABLE(ios(2.0)) API_UNAVAILABLE(watchos) NS_SWIFT_UI_ACTOR
152 | @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, UIFocusItemContainer, CALayerDelegate>
    |            `- note: 'UIView' has been explicitly marked unavailable here
153 |
154 | @property(class, nonatomic, readonly) Class layerClass;                        // default is [CALayer class]. Used when creating the underlying layer for the view.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:170:88: error: 'UIFindSession' is unavailable in watchOS
168 | @available(iOS 16, *)
169 | extension UITextSearchingHelper: UIFindInteractionDelegate {
170 |     func findInteraction(_ interaction: UIFindInteraction, sessionFor view: UIView) -> UIFindSession? {
    |                                                                                        `- error: 'UIFindSession' is unavailable in watchOS
171 |         UITextSearchingFindSession(searchableObject: self)
172 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h:57:12: note: 'UIFindSession' has been explicitly marked unavailable here
 55 | ///             state of a find session automatically using behavior consistent with the rest of the system.
 56 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
 57 | @interface UIFindSession : NSObject
    |            `- note: 'UIFindSession' has been explicitly marked unavailable here
 58 |
 59 | /// Returns the total number of results.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:169:34: error: 'UIFindInteractionDelegate' is unavailable in watchOS
167 |
168 | @available(iOS 16, *)
169 | extension UITextSearchingHelper: UIFindInteractionDelegate {
    |                                  `- error: 'UIFindInteractionDelegate' is unavailable in watchOS
170 |     func findInteraction(_ interaction: UIFindInteraction, sessionFor view: UIView) -> UIFindSession? {
171 |         UITextSearchingFindSession(searchableObject: self)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindInteraction.h:18:11: note: 'UIFindInteractionDelegate' has been explicitly marked unavailable here
16 |
17 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
18 | @protocol UIFindInteractionDelegate <NSObject>
   |           `- note: 'UIFindInteractionDelegate' has been explicitly marked unavailable here
19 |
20 | /// Called when a find session is requested to begin by the user. Return an instance of a UIFindSession implementation to allow the
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:177:40: error: 'UITextSearchOptions' is unavailable in watchOS
175 | private extension SearchQuery {
176 |     @available(iOS 16, *)
177 |     init(queryString: String, options: UITextSearchOptions) {
    |                                        `- error: 'UITextSearchOptions' is unavailable in watchOS
178 |         let matchMethod = SearchQuery.MatchMethod(options.wordMatchMethod)
179 |         let isCaseSensitive = !options.stringCompareOptions.contains(.caseInsensitive)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h:40:12: note: 'UITextSearchOptions' has been explicitly marked unavailable here
 38 |
 39 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
 40 | @interface UITextSearchOptions : NSObject
    |            `- note: 'UITextSearchOptions' has been explicitly marked unavailable here
 41 | /// See UITextSearchMatchMethod above.
 42 | @property (nonatomic, readonly) UITextSearchMatchMethod wordMatchMethod;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:186:25: error: 'UITextSearchOptions' is unavailable in watchOS
184 | @available(iOS 16, *)
185 | private extension SearchQuery.MatchMethod {
186 |     init(_ matchMethod: UITextSearchOptions.WordMatchMethod) {
    |                         `- error: 'UITextSearchOptions' is unavailable in watchOS
187 |         switch matchMethod {
188 |         case .contains:
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h:40:12: note: 'UITextSearchOptions' has been explicitly marked unavailable here
 38 |
 39 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
 40 | @interface UITextSearchOptions : NSObject
    |            `- note: 'UITextSearchOptions' has been explicitly marked unavailable here
 41 | /// See UITextSearchMatchMethod above.
 42 | @property (nonatomic, readonly) UITextSearchMatchMethod wordMatchMethod;
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:22:62: error: 'UIFindInteraction' is unavailable in watchOS
 20 |                 return nil
 21 |             }
 22 |             guard let findInteraction = _findInteraction as? UIFindInteraction else {
    |                                                              `- error: 'UIFindInteraction' is unavailable in watchOS
 23 |                 fatalError("Expected _findInteraction to be of type \(UIFindInteraction.self)")
 24 |             }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindInteraction.h:39:12: note: 'UIFindInteraction' has been explicitly marked unavailable here
37 |
38 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
39 | @interface UIFindInteraction : NSObject <UIInteraction>
   |            `- note: 'UIFindInteraction' has been explicitly marked unavailable here
40 |
41 | /// Returns YES if the find navigator panel is currently visible.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:23:71: error: 'UIFindInteraction' is unavailable in watchOS
 21 |             }
 22 |             guard let findInteraction = _findInteraction as? UIFindInteraction else {
 23 |                 fatalError("Expected _findInteraction to be of type \(UIFindInteraction.self)")
    |                                                                       `- error: 'UIFindInteraction' is unavailable in watchOS
 24 |             }
 25 |             return findInteraction
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindInteraction.h:39:12: note: 'UIFindInteraction' has been explicitly marked unavailable here
37 |
38 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
39 | @interface UIFindInteraction : NSObject <UIInteraction>
   |            `- note: 'UIFindInteraction' has been explicitly marked unavailable here
40 |
41 | /// Returns YES if the find navigator panel is currently visible.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:139:35: error: 'UIFindInteraction' is unavailable in watchOS
137 |     private func addFindInteraction() {
138 |         if #available(iOS 16, *), findInteraction == nil {
139 |             let findInteraction = UIFindInteraction(sessionDelegate: self)
    |                                   `- error: 'UIFindInteraction' is unavailable in watchOS
140 |             self.findInteraction = findInteraction
141 |             _textView.addInteraction(findInteraction)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFindInteraction.h:39:12: note: 'UIFindInteraction' has been explicitly marked unavailable here
37 |
38 | UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
39 | @interface UIFindInteraction : NSObject <UIInteraction>
   |            `- note: 'UIFindInteraction' has been explicitly marked unavailable here
40 |
41 | /// Returns YES if the find navigator panel is currently visible.
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:141:23: error: 'addInteraction' is unavailable in watchOS
139 |             let findInteraction = UIFindInteraction(sessionDelegate: self)
140 |             self.findInteraction = findInteraction
141 |             _textView.addInteraction(findInteraction)
    |                       `- error: 'addInteraction' is unavailable in watchOS
142 |         }
143 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIInteraction.h:26:1: note: 'addInteraction' has been explicitly marked unavailable here
24 | @interface UIView (Interactions)
25 |
26 | - (void)addInteraction:(id<UIInteraction>)interaction API_AVAILABLE(ios(11.0), tvos(13.0)) API_UNAVAILABLE(watchos);
   | `- note: 'addInteraction' has been explicitly marked unavailable here
27 | - (void)removeInteraction:(id<UIInteraction>)interaction API_AVAILABLE(ios(11.0), tvos(13.0)) API_UNAVAILABLE(watchos);
28 |
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:148:23: error: 'removeInteraction' is unavailable in watchOS
146 |         if #available(iOS 16, *), let findInteraction = findInteraction {
147 |             self.findInteraction = nil
148 |             _textView.removeInteraction(findInteraction)
    |                       `- error: 'removeInteraction' is unavailable in watchOS
149 |         }
150 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIInteraction.h:27:1: note: 'removeInteraction' has been explicitly marked unavailable here
25 |
26 | - (void)addInteraction:(id<UIInteraction>)interaction API_AVAILABLE(ios(11.0), tvos(13.0)) API_UNAVAILABLE(watchos);
27 | - (void)removeInteraction:(id<UIInteraction>)interaction API_AVAILABLE(ios(11.0), tvos(13.0)) API_UNAVAILABLE(watchos);
   | `- note: 'removeInteraction' has been explicitly marked unavailable here
28 |
29 | @property (nonatomic, copy) NSArray<id<UIInteraction>> *interactions API_AVAILABLE(ios(11.0), tvos(13.0)) API_UNAVAILABLE(watchos);
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:171:54: error: argument type 'UITextSearchingHelper' does not conform to expected type '__UITextSearching'
169 | extension UITextSearchingHelper: UIFindInteractionDelegate {
170 |     func findInteraction(_ interaction: UIFindInteraction, sessionFor view: UIView) -> UIFindSession? {
171 |         UITextSearchingFindSession(searchableObject: self)
    |                                                      |- error: argument type 'UITextSearchingHelper' does not conform to expected type '__UITextSearching'
    |                                                      `- note: add missing conformance to '__UITextSearching' to class 'UITextSearchingHelper'
172 |     }
173 | }
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:3:13: error: non-'@objc' property 'selectedTextRange' does not satisfy requirement of '@objc' protocol '__UITextSearching'
  1 | import UIKit
  2 |
  3 | final class UITextSearchingHelper: NSObject {
    |             `- error: non-'@objc' property 'selectedTextRange' does not satisfy requirement of '@objc' protocol '__UITextSearching'
  4 |     weak var textView: TextView?
  5 |     var isFindInteractionEnabled = false {
    :
 57 |     }
 58 |
 59 |     var selectedTextRange: UITextRange? {
    |         `- note: add '@objc' to expose this property to Objective-C
 60 |         _textView.selectedTextRange
 61 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextSearching.h:66:45: note: requirement 'selectedTextRange' declared here
 64 |
 65 | /// Overlap from UITextInput: Returns the currently selected text range, if applicable. Nil otherwise.
 66 | @property (nullable, readonly) UITextRange *selectedTextRange;
    |                                             `- note: requirement 'selectedTextRange' declared here
 67 |
 68 | /// Provide a comparison result comparing developer-provided @c fromRange to @c toRange . This is used by
/Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift:3:13: error: non-'@objc' method 'clearAllDecoratedFoundText()' does not satisfy requirement of '@objc' protocol '__UITextSearching'
  1 | import UIKit
  2 |
  3 | final class UITextSearchingHelper: NSObject {
    |             `- error: non-'@objc' method 'clearAllDecoratedFoundText()' does not satisfy requirement of '@objc' protocol '__UITextSearching'
  4 |     weak var textView: TextView?
  5 |     var isFindInteractionEnabled = false {
    :
 98 |     }
 99 |
100 |     func clearAllDecoratedFoundText() {
    |          `- note: add '@objc' to expose this instance method to Objective-C
101 |         _textView.highlightedRanges = []
102 |     }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextSearching.h:104:1: note: requirement 'clearAllDecoratedFoundText()' declared here
102 | /// Called when the current search session has changed or ended, with the expectation that all decorations
103 | /// applied via @c decorateFoundTextRange:usingStyle: are cleared.
104 | - (void)clearAllDecoratedFoundText;
    | `- note: requirement 'clearAllDecoratedFoundText()' declared here
105 |
106 | @optional
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/StringModifier.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile StringModifier.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/TextPreview.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TextPreview.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SearchAndReplace/UITextSearchingHelper.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile UITextSearchingHelper.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/InternalLanguageMode.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile InternalLanguageMode.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/InternalLanguageModeFactory.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile InternalLanguageModeFactory.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/PlainText/PlainTextInternalLanguageMode.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile PlainTextInternalLanguageMode.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/PlainText/PlainTextSyntaxHighlighter.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile PlainTextSyntaxHighlighter.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterIndentController.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterIndentController.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterIndentStrategyDetector.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterIndentStrategyDetector.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInjectedLanguage.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterInjectedLanguage.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInjectedLanguageMapper.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterInjectedLanguageMapper.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInternalLanguage.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterInternalLanguage.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInternalLanguageMode.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterInternalLanguageMode.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterLanguageLayer.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterLanguageLayer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterLanguageLayerStore.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterLanguageLayerStore.swift
SwiftCompile normal arm64_32 Compiling\ TreeSitterInputEdit.swift,\ TreeSitterNode.swift,\ TreeSitterParser.swift,\ TreeSitterPredicate.swift,\ TreeSitterPredicateMapper.swift,\ TreeSitterQuery.swift,\ TreeSitterQueryCursor.swift,\ TreeSitterQueryMatch.swift,\ TreeSitterTextInput.swift,\ TreeSitterTextPoint.swift,\ TreeSitterTextPredicate.swift,\ TreeSitterTextRange.swift,\ TreeSitterTree.swift,\ GeneratedAssetSymbols.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterInputEdit.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterNode.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterParser.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterPredicate.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterPredicateMapper.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterQuery.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterQueryCursor.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterQueryMatch.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTextInput.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTextPoint.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTextPredicate.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTextRange.swift /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTree.swift /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/DerivedSources/GeneratedAssetSymbols.swift (in target 'Runestone' from project 'Runestone')
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterInputEdit.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterInputEdit.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterNode.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterNode.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterParser.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterParser.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterPredicate.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterPredicate.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterPredicateMapper.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterPredicateMapper.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterQuery.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterQuery.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterQueryCursor.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterQueryCursor.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterQueryMatch.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterQueryMatch.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTextInput.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterTextInput.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTextPoint.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterTextPoint.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTextPredicate.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterTextPredicate.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTextRange.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterTextRange.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/Runestone/TreeSitter/TreeSitterTree.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile TreeSitterTree.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Runestone.build/Debug-watchos/Runestone-t.build/DerivedSources/GeneratedAssetSymbols.swift (in target 'Runestone' from project 'Runestone')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile GeneratedAssetSymbols.swift
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/SDKExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/ExplicitPrecompiledModules
2026-09-24 09:02:44.053 xcodebuild[974:5726] [MT] IDERunDestination: Supported platforms for the buildables in the current scheme is empty.
** BUILD FAILED **
The following build commands failed:
	SwiftEmitModule normal arm64_32 Emitting\ module\ for\ Runestone (in target 'Runestone' from project 'Runestone')
	SwiftCompile normal arm64_32 (in target 'Runestone' from project 'Runestone')
	Building workspace Runestone with scheme Runestone
(3 failures)
BUILD FAILURE 6.4 watchOS