The Swift Package Index logo.Swift Package Index

Build Information

Failed to build WWMarkdownWebViewUI, reference main (38d61b), with Swift 6.3 for macOS (SPM) on 12 Jul 2026 20:07:06 UTC.

Build Command

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

Build Log

========================================
RunAll
========================================
Builder version: undefined version: run 'make version' to update
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/William-Weng/WWMarkdownWebViewUI.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/William-Weng/WWMarkdownWebViewUI
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 38d61b8 - Update ReadMe
Cloned https://github.com/William-Weng/WWMarkdownWebViewUI.git
Revision (git rev-parse @):
38d61b8aa6d21a4c90815d23c4fbf053ba75f292
SUCCESS checkout https://github.com/William-Weng/WWMarkdownWebViewUI.git at main
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "traits": [
    "default"
  ],
  "dependencies": [
    {
      "identity": "wwmarkdownwebviewui",
      "name": "WWMarkdownWebViewUI",
      "url": "https://github.com/William-Weng/WWMarkdownWebViewUI.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/WWMarkdownWebViewUI",
      "traits": [
        "default"
      ],
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/William-Weng/WWMarkdownWebViewUI.git
[1/204] Fetching wwmarkdownwebviewui
Fetched https://github.com/William-Weng/WWMarkdownWebViewUI.git from cache (0.88s)
Creating working copy for https://github.com/William-Weng/WWMarkdownWebViewUI.git
Working copy of https://github.com/William-Weng/WWMarkdownWebViewUI.git resolved at main (38d61b8)
warning: '.resolve-product-dependencies': dependency 'wwmarkdownwebviewui' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.3
Building package at path:  $PWD
https://github.com/William-Weng/WWMarkdownWebViewUI.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.4.0.app xcrun swift build --arch arm64
Building for debugging...
[0/6] Write sources
[1/6] Copying markdown.html
[1/6] Copying github-markdown.css
[2/6] Copying marked.umd.js
[4/6] Copying Privacy
[5/6] Write swift-version--6988338F2F200930.txt
error: emit-module command failed with exit code 1 (use -v to see invocation)
[7/13] Compiling WWMarkdownWebViewUI Handler.swift
[8/13] Compiling WWMarkdownWebViewUI Extension.swift
[9/13] Emitting module WWMarkdownWebViewUI
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:14:6: error: 'Observable()' is only available in macOS 14.0 or newer
10 |
11 | // 管理 WebView 和 JS 結果的 ObservableObject
12 | public extension WWMarkdownWebViewUI {
   |        `- note: add '@available' attribute to enclosing extension
13 |
14 |     @Observable
   |      `- error: 'Observable()' is only available in macOS 14.0 or newer
15 |     final class Manager {
16 |
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:17:9: note: expanded code originates here
12 | public extension WWMarkdownWebViewUI {
13 |
14 |     @Observable
   |     `- note: in expansion of macro 'Observable' on property 'webView' here
15 |     final class Manager {
   |                 |- note: add '@available' attribute to enclosing class
   |                 `- note: add '@available' attribute to enclosing class
16 |
17 |         public var webView: WKWebView?
   +--- macro expansion @Observable ------------------------------------
   |1 | @ObservationTracked
   |  |  `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
   +--------------------------------------------------------------------
18 |
19 |         public init() {}
macro expansion @Observable:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:20:5: note: expanded code originates here
12 | public extension WWMarkdownWebViewUI {
13 |
14 |     @Observable
   |     `- note: in expansion of macro 'Observable' on class 'Manager' here
15 |     final class Manager {
   |                 |- note: add '@available' attribute to enclosing class
   |                 `- note: add '@available' attribute to enclosing class
16 |
17 |         public var webView: WKWebView?
18 |
19 |         public init() {}
20 |     }
   +--- macro expansion @Observable ------------------------------------
   | 1 | @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar()
   |   |  `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
   | 2 |
   | 3 | internal nonisolated func access<$s19WWMarkdownWebViewUIAAV7Manager10ObservablefMm_6MemberfMu_>(
   +--------------------------------------------------------------------
21 | }
22 |
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:17:39: note: expanded code originates here
13 |
14 |     @Observable
15 |     final class Manager {
   |                 |- note: add '@available' attribute to enclosing class
   |                 `- note: add '@available' attribute to enclosing class
16 |
17 |         public var webView: WKWebView?
   +--- macro expansion @ObservationTracked ----------------------------
   |1 | @ObservationIgnored
   |  |  `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
   |2 | private  var _webView: WKWebView?
   +--------------------------------------------------------------------
18 |
19 |         public init() {}
macro expansion @Observable:1:70: error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:20:5: note: expanded code originates here
12 | public extension WWMarkdownWebViewUI {
13 |
14 |     @Observable
   |     `- note: in expansion of macro 'Observable' on class 'Manager' here
15 |     final class Manager {
   |                 `- note: add '@available' attribute to enclosing class
16 |
17 |         public var webView: WKWebView?
18 |
19 |         public init() {}
20 |     }
   +--- macro expansion @Observable ------------------------------------
   | 1 | @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar()
   |   |                                                                      `- error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
   | 2 |
   | 3 | internal nonisolated func access<$s19WWMarkdownWebViewUIAAV7Manager10ObservablefMm_6MemberfMu_>(
   +--------------------------------------------------------------------
21 | }
22 |
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:14:6: error: 'Observable()' is only available in macOS 14.0 or newer
12 | public extension WWMarkdownWebViewUI {
13 |
14 |     @Observable
   |      `- error: 'Observable()' is only available in macOS 14.0 or newer
15 |     final class Manager {
   |                 |- note: add '@available' attribute to enclosing class
   |                 `- note: add '@available' attribute to enclosing class
16 |
17 |         public var webView: WKWebView?
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:20:6: error: 'Binding' is only available in macOS 10.15 or newer
 12 | ///
 13 | /// 內部透過本地 HTML template + JavaScript 將 Markdown 轉成 HTML,並把內容高度回傳給 SwiftUI,方便外部依照內容自動調整高度
 14 | public struct WWMarkdownWebViewUI {
    |               `- note: add '@available' attribute to enclosing struct
 15 |
 16 |     static let contentHeightName = "contentHeight"  // JavaScript 回傳內容高度時使用的 message handler 名稱
    :
 18 |     let markdown: String
 19 |
 20 |     @Binding var height: CGFloat
    |      `- error: 'Binding' is only available in macOS 10.15 or newer
 21 |
 22 |     @State var manager = Manager()
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:22:6: error: 'State' is only available in macOS 10.15 or newer
 12 | ///
 13 | /// 內部透過本地 HTML template + JavaScript 將 Markdown 轉成 HTML,並把內容高度回傳給 SwiftUI,方便外部依照內容自動調整高度
 14 | public struct WWMarkdownWebViewUI {
    |               `- note: add '@available' attribute to enclosing struct
 15 |
 16 |     static let contentHeightName = "contentHeight"  // JavaScript 回傳內容高度時使用的 message handler 名稱
    :
 20 |     @Binding var height: CGFloat
 21 |
 22 |     @State var manager = Manager()
    |      `- error: 'State' is only available in macOS 10.15 or newer
 23 |
 24 |     /// 建立 Markdown WebView
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:30:43: error: 'Binding' is only available in macOS 10.15 or newer
 12 | ///
 13 | /// 內部透過本地 HTML template + JavaScript 將 Markdown 轉成 HTML,並把內容高度回傳給 SwiftUI,方便外部依照內容自動調整高度
 14 | public struct WWMarkdownWebViewUI {
    |               `- note: add '@available' attribute to enclosing struct
 15 |
 16 |     static let contentHeightName = "contentHeight"  // JavaScript 回傳內容高度時使用的 message handler 名稱
    :
 28 |     ///   - dynamicHeight: WebView 實際內容高度,透過 Coordinator 回寫給 SwiftUI
 29 |     ///   - manager: WebView取值管理器
 30 |     public init(markdown: String, height: Binding<CGFloat>, manager: Manager = .init()) {
    |            |                              `- error: 'Binding' is only available in macOS 10.15 or newer
    |            `- note: add '@available' attribute to enclosing initializer
 31 |         self.markdown = markdown
 32 |         self.manager = manager
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:38:32: error: cannot find type 'UIViewRepresentable' in scope
 36 |
 37 | // MARK: - UIViewRepresentable
 38 | extension WWMarkdownWebViewUI: UIViewRepresentable {}
    |                                `- error: cannot find type 'UIViewRepresentable' in scope
 39 | public extension WWMarkdownWebViewUI {
 40 |
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:53:30: error: cannot find type 'Context' in scope
 51 |     /// - 設定 navigationDelegate
 52 |     /// - 載入初始 HTML template
 53 |     func makeUIView(context: Context) -> WKWebView {
    |                              `- error: cannot find type 'Context' in scope
 54 |
 55 |         let webView = makeWebView(coordinator: context.coordinator)
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:66:54: error: cannot find type 'Context' in scope
 64 |     ///
 65 |     /// 這裡不重新建立 WebView,只更新顯示內容
 66 |     func updateUIView(_ webView: WKWebView, context: Context) {
    |                                                      `- error: cannot find type 'Context' in scope
 67 |
 68 |         context.coordinator.parent = self
[10/13] Compiling WWMarkdownWebViewUI resource_bundle_accessor.swift
[11/13] Compiling WWMarkdownWebViewUI Coordinator.swift
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Coordinator.swift:59:9: error: 'Task' is only available in macOS 10.15 or newer
 46 |
 47 | // MARK: - WKNavigationDelegate, WKScriptMessageHandler
 48 | public extension WWMarkdownWebViewUI.Coordinator {
    |        `- note: add '@available' attribute to enclosing extension
 49 |
 50 |     /// 接收 JavaScript 透過 `window.webkit.messageHandlers...postMessage(...)` 傳回的資料
    :
 53 |     ///
 54 |     /// 由於 SwiftUI / UIKit 的畫面狀態更新應在主執行緒進行,這裡使用 `@MainActor` 切回主執行緒更新資料
 55 |     func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
    |          `- note: add '@available' attribute to enclosing instance method
 56 |
 57 |         guard message.name == WWMarkdownWebViewUI.contentHeightName else { return }
 58 |
 59 |         Task { @MainActor in
    |         |- error: 'Task' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 60 |
 61 |             if let height = message.body as? CGFloat { self.parent.height = height; return }
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Coordinator.swift:59:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 46 |
 47 | // MARK: - WKNavigationDelegate, WKScriptMessageHandler
 48 | public extension WWMarkdownWebViewUI.Coordinator {
    |        `- note: add '@available' attribute to enclosing extension
 49 |
 50 |     /// 接收 JavaScript 透過 `window.webkit.messageHandlers...postMessage(...)` 傳回的資料
    :
 53 |     ///
 54 |     /// 由於 SwiftUI / UIKit 的畫面狀態更新應在主執行緒進行,這裡使用 `@MainActor` 切回主執行緒更新資料
 55 |     func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
    |          `- note: add '@available' attribute to enclosing instance method
 56 |
 57 |         guard message.name == WWMarkdownWebViewUI.contentHeightName else { return }
 58 |
 59 |         Task { @MainActor in
    |         |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 60 |
 61 |             if let height = message.body as? CGFloat { self.parent.height = height; return }
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Coordinator.swift:61:56: error: setter for 'height' is only available in macOS 10.15 or newer
 46 |
 47 | // MARK: - WKNavigationDelegate, WKScriptMessageHandler
 48 | public extension WWMarkdownWebViewUI.Coordinator {
    |        `- note: add '@available' attribute to enclosing extension
 49 |
 50 |     /// 接收 JavaScript 透過 `window.webkit.messageHandlers...postMessage(...)` 傳回的資料
    :
 53 |     ///
 54 |     /// 由於 SwiftUI / UIKit 的畫面狀態更新應在主執行緒進行,這裡使用 `@MainActor` 切回主執行緒更新資料
 55 |     func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
    |          `- note: add '@available' attribute to enclosing instance method
 56 |
 57 |         guard message.name == WWMarkdownWebViewUI.contentHeightName else { return }
    :
 59 |         Task { @MainActor in
 60 |
 61 |             if let height = message.body as? CGFloat { self.parent.height = height; return }
    |                                                        |- error: setter for 'height' is only available in macOS 10.15 or newer
    |                                                        `- note: add 'if #available' version check
 62 |             if let height = message.body as? Double { self.parent.height = height; return }
 63 |             if let height = message.body as? Int { self.parent.height = CGFloat(height); return }
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Coordinator.swift:62:55: error: setter for 'height' is only available in macOS 10.15 or newer
 46 |
 47 | // MARK: - WKNavigationDelegate, WKScriptMessageHandler
 48 | public extension WWMarkdownWebViewUI.Coordinator {
    |        `- note: add '@available' attribute to enclosing extension
 49 |
 50 |     /// 接收 JavaScript 透過 `window.webkit.messageHandlers...postMessage(...)` 傳回的資料
    :
 53 |     ///
 54 |     /// 由於 SwiftUI / UIKit 的畫面狀態更新應在主執行緒進行,這裡使用 `@MainActor` 切回主執行緒更新資料
 55 |     func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
    |          `- note: add '@available' attribute to enclosing instance method
 56 |
 57 |         guard message.name == WWMarkdownWebViewUI.contentHeightName else { return }
    :
 60 |
 61 |             if let height = message.body as? CGFloat { self.parent.height = height; return }
 62 |             if let height = message.body as? Double { self.parent.height = height; return }
    |                                                       |- error: setter for 'height' is only available in macOS 10.15 or newer
    |                                                       `- note: add 'if #available' version check
 63 |             if let height = message.body as? Int { self.parent.height = CGFloat(height); return }
 64 |         }
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Coordinator.swift:63:52: error: setter for 'height' is only available in macOS 10.15 or newer
 46 |
 47 | // MARK: - WKNavigationDelegate, WKScriptMessageHandler
 48 | public extension WWMarkdownWebViewUI.Coordinator {
    |        `- note: add '@available' attribute to enclosing extension
 49 |
 50 |     /// 接收 JavaScript 透過 `window.webkit.messageHandlers...postMessage(...)` 傳回的資料
    :
 53 |     ///
 54 |     /// 由於 SwiftUI / UIKit 的畫面狀態更新應在主執行緒進行,這裡使用 `@MainActor` 切回主執行緒更新資料
 55 |     func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
    |          `- note: add '@available' attribute to enclosing instance method
 56 |
 57 |         guard message.name == WWMarkdownWebViewUI.contentHeightName else { return }
    :
 61 |             if let height = message.body as? CGFloat { self.parent.height = height; return }
 62 |             if let height = message.body as? Double { self.parent.height = height; return }
 63 |             if let height = message.body as? Int { self.parent.height = CGFloat(height); return }
    |                                                    |- error: setter for 'height' is only available in macOS 10.15 or newer
    |                                                    `- note: add 'if #available' version check
 64 |         }
 65 |     }
[12/13] Compiling WWMarkdownWebViewUI Manager.swift
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:32:22: warning: 'try' must precede 'await'
30 |         guard let webView = webView else { return nil }
31 |
32 |         let result = await try webView.evaluateJavaScript("getTextContent()")
   |                      `- warning: 'try' must precede 'await'
33 |         return result as? String
34 |     }
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:42:22: warning: 'try' must precede 'await'
40 |         guard let webView = webView else { return nil }
41 |
42 |         let result = await try webView.evaluateJavaScript("getHtmlContent()")
   |                      `- warning: 'try' must precede 'await'
43 |         return result as? String
44 |     }
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:14:6: error: 'Observable()' is only available in macOS 14.0 or newer
10 |
11 | // 管理 WebView 和 JS 結果的 ObservableObject
12 | public extension WWMarkdownWebViewUI {
   |        `- note: add '@available' attribute to enclosing extension
13 |
14 |     @Observable
   |      `- error: 'Observable()' is only available in macOS 14.0 or newer
15 |     final class Manager {
16 |
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:17:9: note: expanded code originates here
12 | public extension WWMarkdownWebViewUI {
13 |
14 |     @Observable
   |     `- note: in expansion of macro 'Observable' on property 'webView' here
15 |     final class Manager {
   |                 |- note: add '@available' attribute to enclosing class
   |                 `- note: add '@available' attribute to enclosing class
16 |
17 |         public var webView: WKWebView?
   +--- macro expansion @Observable ------------------------------------
   |1 | @ObservationTracked
   |  |  `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
   +--------------------------------------------------------------------
18 |
19 |         public init() {}
macro expansion @Observable:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:20:5: note: expanded code originates here
12 | public extension WWMarkdownWebViewUI {
13 |
14 |     @Observable
   |     `- note: in expansion of macro 'Observable' on class 'Manager' here
15 |     final class Manager {
   |                 |- note: add '@available' attribute to enclosing class
   |                 `- note: add '@available' attribute to enclosing class
16 |
17 |         public var webView: WKWebView?
18 |
19 |         public init() {}
20 |     }
   +--- macro expansion @Observable ------------------------------------
   | 1 | @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar()
   |   |  `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
   | 2 |
   | 3 | internal nonisolated func access<$s19WWMarkdownWebViewUIAAV7Manager10ObservablefMm_6MemberfMu_>(
   +--------------------------------------------------------------------
21 | }
22 |
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:17:39: note: expanded code originates here
13 |
14 |     @Observable
15 |     final class Manager {
   |                 |- note: add '@available' attribute to enclosing class
   |                 `- note: add '@available' attribute to enclosing class
16 |
17 |         public var webView: WKWebView?
   +--- macro expansion @ObservationTracked ----------------------------
   |1 | @ObservationIgnored
   |  |  `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
   |2 | private  var _webView: WKWebView?
   +--------------------------------------------------------------------
18 |
19 |         public init() {}
macro expansion @Observable:1:70: error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:20:5: note: expanded code originates here
12 | public extension WWMarkdownWebViewUI {
13 |
14 |     @Observable
   |     `- note: in expansion of macro 'Observable' on class 'Manager' here
15 |     final class Manager {
   |                 `- note: add '@available' attribute to enclosing class
16 |
17 |         public var webView: WKWebView?
18 |
19 |         public init() {}
20 |     }
   +--- macro expansion @Observable ------------------------------------
   | 1 | @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar()
   |   |                                                                      `- error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
   | 2 |
   | 3 | internal nonisolated func access<$s19WWMarkdownWebViewUIAAV7Manager10ObservablefMm_6MemberfMu_>(
   +--------------------------------------------------------------------
21 | }
22 |
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:14:6: error: 'Observable()' is only available in macOS 14.0 or newer
12 | public extension WWMarkdownWebViewUI {
13 |
14 |     @Observable
   |      `- error: 'Observable()' is only available in macOS 14.0 or newer
15 |     final class Manager {
   |                 |- note: add '@available' attribute to enclosing class
   |                 `- note: add '@available' attribute to enclosing class
16 |
17 |         public var webView: WKWebView?
[13/13] Compiling WWMarkdownWebViewUI WWMarkdownWebViewUI.swift
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:14:6: error: 'Observable()' is only available in macOS 14.0 or newer
10 |
11 | // 管理 WebView 和 JS 結果的 ObservableObject
12 | public extension WWMarkdownWebViewUI {
   |        `- note: add '@available' attribute to enclosing extension
13 |
14 |     @Observable
   |      `- error: 'Observable()' is only available in macOS 14.0 or newer
15 |     final class Manager {
16 |
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:20:6: error: 'Binding' is only available in macOS 10.15 or newer
 12 | ///
 13 | /// 內部透過本地 HTML template + JavaScript 將 Markdown 轉成 HTML,並把內容高度回傳給 SwiftUI,方便外部依照內容自動調整高度
 14 | public struct WWMarkdownWebViewUI {
    |               `- note: add '@available' attribute to enclosing struct
 15 |
 16 |     static let contentHeightName = "contentHeight"  // JavaScript 回傳內容高度時使用的 message handler 名稱
    :
 18 |     let markdown: String
 19 |
 20 |     @Binding var height: CGFloat
    |      `- error: 'Binding' is only available in macOS 10.15 or newer
 21 |
 22 |     @State var manager = Manager()
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:22:6: error: 'State' is only available in macOS 10.15 or newer
 12 | ///
 13 | /// 內部透過本地 HTML template + JavaScript 將 Markdown 轉成 HTML,並把內容高度回傳給 SwiftUI,方便外部依照內容自動調整高度
 14 | public struct WWMarkdownWebViewUI {
    |               `- note: add '@available' attribute to enclosing struct
 15 |
 16 |     static let contentHeightName = "contentHeight"  // JavaScript 回傳內容高度時使用的 message handler 名稱
    :
 20 |     @Binding var height: CGFloat
 21 |
 22 |     @State var manager = Manager()
    |      `- error: 'State' is only available in macOS 10.15 or newer
 23 |
 24 |     /// 建立 Markdown WebView
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:30:43: error: 'Binding' is only available in macOS 10.15 or newer
 12 | ///
 13 | /// 內部透過本地 HTML template + JavaScript 將 Markdown 轉成 HTML,並把內容高度回傳給 SwiftUI,方便外部依照內容自動調整高度
 14 | public struct WWMarkdownWebViewUI {
    |               `- note: add '@available' attribute to enclosing struct
 15 |
 16 |     static let contentHeightName = "contentHeight"  // JavaScript 回傳內容高度時使用的 message handler 名稱
    :
 28 |     ///   - dynamicHeight: WebView 實際內容高度,透過 Coordinator 回寫給 SwiftUI
 29 |     ///   - manager: WebView取值管理器
 30 |     public init(markdown: String, height: Binding<CGFloat>, manager: Manager = .init()) {
    |            |                              `- error: 'Binding' is only available in macOS 10.15 or newer
    |            `- note: add '@available' attribute to enclosing initializer
 31 |         self.markdown = markdown
 32 |         self.manager = manager
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:38:32: error: cannot find type 'UIViewRepresentable' in scope
 36 |
 37 | // MARK: - UIViewRepresentable
 38 | extension WWMarkdownWebViewUI: UIViewRepresentable {}
    |                                `- error: cannot find type 'UIViewRepresentable' in scope
 39 | public extension WWMarkdownWebViewUI {
 40 |
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:53:30: error: cannot find type 'Context' in scope
 51 |     /// - 設定 navigationDelegate
 52 |     /// - 載入初始 HTML template
 53 |     func makeUIView(context: Context) -> WKWebView {
    |                              `- error: cannot find type 'Context' in scope
 54 |
 55 |         let webView = makeWebView(coordinator: context.coordinator)
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:66:54: error: cannot find type 'Context' in scope
 64 |     ///
 65 |     /// 這裡不重新建立 WebView,只更新顯示內容
 66 |     func updateUIView(_ webView: WKWebView, context: Context) {
    |                                                      `- error: cannot find type 'Context' in scope
 67 |
 68 |         context.coordinator.parent = self
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:32:9: error: setter for 'manager' is only available in macOS 10.15 or newer
 12 | ///
 13 | /// 內部透過本地 HTML template + JavaScript 將 Markdown 轉成 HTML,並把內容高度回傳給 SwiftUI,方便外部依照內容自動調整高度
 14 | public struct WWMarkdownWebViewUI {
    |               `- note: add '@available' attribute to enclosing struct
 15 |
 16 |     static let contentHeightName = "contentHeight"  // JavaScript 回傳內容高度時使用的 message handler 名稱
    :
 28 |     ///   - dynamicHeight: WebView 實際內容高度,透過 Coordinator 回寫給 SwiftUI
 29 |     ///   - manager: WebView取值管理器
 30 |     public init(markdown: String, height: Binding<CGFloat>, manager: Manager = .init()) {
    |            `- note: add '@available' attribute to enclosing initializer
 31 |         self.markdown = markdown
 32 |         self.manager = manager
    |         |- error: setter for 'manager' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 33 |         _height = height
 34 |     }
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/Utility/Manager.swift:17:9: note: expanded code originates here
12 | public extension WWMarkdownWebViewUI {
13 |
14 |     @Observable
   |     `- note: in expansion of macro 'Observable' on property 'webView' here
15 |     final class Manager {
   |                 |- note: add '@available' attribute to enclosing class
   |                 `- note: add '@available' attribute to enclosing class
16 |
17 |         public var webView: WKWebView?
   +--- macro expansion @Observable ------------------------------------
   |1 | @ObservationTracked
   |  |  `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
   +--------------------------------------------------------------------
18 |
19 |         public init() {}
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:111:23: error: 'defaultWebpagePreferences' is only available in macOS 10.15 or newer
 90 |
 91 | // MARK: - Private
 92 | private extension WWMarkdownWebViewUI {
    |         `- note: add '@available' attribute to enclosing extension
 93 |
 94 |     /// 建立 WKWebView 並完成基礎設定
    :
100 |     /// - 關閉 WebView 自己的捲動,交由外層 SwiftUI 控制
101 |     /// - 載入本地 HTML template
102 |     func makeWebView(coordinator: Coordinator) -> WKWebView {
    |          `- note: add '@available' attribute to enclosing instance method
103 |
104 |         let htmlTemplate = Self.readHtmlTemplate() ?? ""
    :
109 |         let configuration = WKWebViewConfiguration()
110 |         configuration.userContentController = contentController
111 |         configuration.defaultWebpagePreferences.allowsContentJavaScript = true
    |                       |- error: 'defaultWebpagePreferences' is only available in macOS 10.15 or newer
    |                       `- note: add 'if #available' version check
112 |
113 |         let webView = WKWebView(frame: .zero, configuration: configuration)
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:111:49: error: 'allowsContentJavaScript' is only available in macOS 11.0 or newer
 90 |
 91 | // MARK: - Private
 92 | private extension WWMarkdownWebViewUI {
    |         `- note: add '@available' attribute to enclosing extension
 93 |
 94 |     /// 建立 WKWebView 並完成基礎設定
    :
100 |     /// - 關閉 WebView 自己的捲動,交由外層 SwiftUI 控制
101 |     /// - 載入本地 HTML template
102 |     func makeWebView(coordinator: Coordinator) -> WKWebView {
    |          `- note: add '@available' attribute to enclosing instance method
103 |
104 |         let htmlTemplate = Self.readHtmlTemplate() ?? ""
    :
109 |         let configuration = WKWebViewConfiguration()
110 |         configuration.userContentController = contentController
111 |         configuration.defaultWebpagePreferences.allowsContentJavaScript = true
    |                                                 |- error: 'allowsContentJavaScript' is only available in macOS 11.0 or newer
    |                                                 `- note: add 'if #available' version check
112 |
113 |         let webView = WKWebView(frame: .zero, configuration: configuration)
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:115:17: error: cannot assign to property: 'isOpaque' is a get-only property
113 |         let webView = WKWebView(frame: .zero, configuration: configuration)
114 |         webView.navigationDelegate = coordinator
115 |         webView.isOpaque = false
    |                 `- error: cannot assign to property: 'isOpaque' is a get-only property
116 |         webView.backgroundColor = .clear
117 |         webView.scrollView.isScrollEnabled = false
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:116:17: error: value of type 'WKWebView' has no member 'backgroundColor'
114 |         webView.navigationDelegate = coordinator
115 |         webView.isOpaque = false
116 |         webView.backgroundColor = .clear
    |                 `- error: value of type 'WKWebView' has no member 'backgroundColor'
117 |         webView.scrollView.isScrollEnabled = false
118 |         webView.scrollView.backgroundColor = .clear
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:116:36: error: cannot infer contextual base in reference to member 'clear'
114 |         webView.navigationDelegate = coordinator
115 |         webView.isOpaque = false
116 |         webView.backgroundColor = .clear
    |                                    `- error: cannot infer contextual base in reference to member 'clear'
117 |         webView.scrollView.isScrollEnabled = false
118 |         webView.scrollView.backgroundColor = .clear
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:117:17: error: value of type 'WKWebView' has no member 'scrollView'
115 |         webView.isOpaque = false
116 |         webView.backgroundColor = .clear
117 |         webView.scrollView.isScrollEnabled = false
    |                 `- error: value of type 'WKWebView' has no member 'scrollView'
118 |         webView.scrollView.backgroundColor = .clear
119 |         webView.loadHTMLString(htmlTemplate, baseURL: Bundle.module.resourceURL)
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:118:17: error: value of type 'WKWebView' has no member 'scrollView'
116 |         webView.backgroundColor = .clear
117 |         webView.scrollView.isScrollEnabled = false
118 |         webView.scrollView.backgroundColor = .clear
    |                 `- error: value of type 'WKWebView' has no member 'scrollView'
119 |         webView.loadHTMLString(htmlTemplate, baseURL: Bundle.module.resourceURL)
120 |
/Users/admin/builder/spi-builder-workspace/Sources/WWMarkdownWebViewUI/WWMarkdownWebViewUI.swift:118:47: error: cannot infer contextual base in reference to member 'clear'
116 |         webView.backgroundColor = .clear
117 |         webView.scrollView.isScrollEnabled = false
118 |         webView.scrollView.backgroundColor = .clear
    |                                               `- error: cannot infer contextual base in reference to member 'clear'
119 |         webView.loadHTMLString(htmlTemplate, baseURL: Bundle.module.resourceURL)
120 |
BUILD FAILURE 6.3 macosSpm