The Swift Package Index logo.Swift Package Index

Build Information

Failed to build XMPPChatSwift, reference v1.0.0 (ff6f24), with Swift 6.2 for macOS (SPM) on 29 Jun 2026 04:22:22 UTC.

Build Command

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

Build Log

 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
386 |
387 |     /// Clear edit action
388 |     public func clearEditAction() {
    |                 `- note: add '@available' attribute to enclosing instance method
389 |         editAction = nil
    |         |- error: setter for 'editAction' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
390 |     }
391 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:398:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
393 |
394 |     /// Set last viewed timestamp for a room
395 |     public func setLastViewedTimestamp(roomJID: String, timestamp: Int64) {
    |                 `- note: add '@available' attribute to enclosing instance method
396 |         guard var room = rooms[roomJID] else { return }
397 |         room.lastViewedTimestamp = timestamp
398 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
399 |         saveToCache()
400 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:408:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
403 |
404 |     /// Update unread count for a room
405 |     public func updateUnreadCount(roomJID: String, count: Int) {
    |                 `- note: add '@available' attribute to enclosing instance method
406 |         guard var room = rooms[roomJID] else { return }
407 |         room.unreadMessages = count
408 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
409 |         saveToCache()
410 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:430:17: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
421 |     /// list view models don't always eagerly hydrate `room.messages` from
422 |     /// cache, but the cache itself is always up to date.
423 |     public func recomputeUnreadForRoom(jid: String, currentUserLocal: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
424 |         guard var room = rooms[jid] else { return }
425 |
    :
428 |             if room.unreadMessages != 0 {
429 |                 room.unreadMessages = 0
430 |                 rooms[jid] = room
    |                 |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |                 `- note: add 'if #available' version check
431 |                 saveToCache()
432 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:489:13: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
421 |     /// list view models don't always eagerly hydrate `room.messages` from
422 |     /// cache, but the cache itself is always up to date.
423 |     public func recomputeUnreadForRoom(jid: String, currentUserLocal: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
424 |         guard var room = rooms[jid] else { return }
425 |
    :
487 |         if room.unreadMessages != unread {
488 |             room.unreadMessages = unread
489 |             rooms[jid] = room
    |             |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
490 |             saveToCache()
491 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:557:13: error: setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
552 |     }
553 |
554 |     private func loadFromCache() {
    |                  `- note: add '@available' attribute to enclosing instance method
555 |         if let data = UserDefaults.standard.data(forKey: "ethora_room_store"),
556 |            let decoded = try? JSONDecoder().decode([String: Room].self, from: data) {
557 |             rooms = decoded
    |             |- error: setter for 'rooms' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
558 |         }
559 |         if let hiddenData = UserDefaults.standard.data(forKey: "ethora_room_store_hidden"),
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:561:13: error: setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
552 |     }
553 |
554 |     private func loadFromCache() {
    |                  `- note: add '@available' attribute to enclosing instance method
555 |         if let data = UserDefaults.standard.data(forKey: "ethora_room_store"),
556 |            let decoded = try? JSONDecoder().decode([String: Room].self, from: data) {
    :
559 |         if let hiddenData = UserDefaults.standard.data(forKey: "ethora_room_store_hidden"),
560 |            let decodedHidden = try? JSONDecoder().decode(Set<String>.self, from: hiddenData) {
561 |             hiddenRoomJIDs = decodedHidden
    |             |- error: setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
562 |         }
563 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:567:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
568 |         activeRoomJID = nil
569 |         editAction = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:568:9: error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
    |         |- error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
569 |         editAction = nil
570 |         usersSet.removeAll()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:569:9: error: setter for 'editAction' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
569 |         editAction = nil
    |         |- error: setter for 'editAction' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
570 |         usersSet.removeAll()
571 |         reportRoom = ReportRoomState()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:570:9: error: cannot pass as inout because setter for 'usersSet' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
569 |         editAction = nil
570 |         usersSet.removeAll()
    |         |- error: cannot pass as inout because setter for 'usersSet' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
571 |         reportRoom = ReportRoomState()
572 |         hiddenRoomJIDs.removeAll()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:571:9: error: setter for 'reportRoom' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
569 |         editAction = nil
570 |         usersSet.removeAll()
571 |         reportRoom = ReportRoomState()
    |         |- error: setter for 'reportRoom' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
572 |         hiddenRoomJIDs.removeAll()
573 |         UserDefaults.standard.removeObject(forKey: "ethora_room_store")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:572:9: error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
    :
570 |         usersSet.removeAll()
571 |         reportRoom = ReportRoomState()
572 |         hiddenRoomJIDs.removeAll()
    |         |- error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
573 |         UserDefaults.standard.removeObject(forKey: "ethora_room_store")
574 |         UserDefaults.standard.removeObject(forKey: "ethora_room_store_hidden")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:15:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
 15 |     @Published public var currentUser: User?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 16 |     @Published public var token: String?
 17 |     @Published public var refreshToken: String?
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:16:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
 15 |     @Published public var currentUser: User?
 16 |     @Published public var token: String?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 17 |     @Published public var refreshToken: String?
 18 |     @Published public var isAuthenticated: Bool = false
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:17:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
 15 |     @Published public var currentUser: User?
 16 |     @Published public var token: String?
 17 |     @Published public var refreshToken: String?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:18:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 16 |     @Published public var token: String?
 17 |     @Published public var refreshToken: String?
 18 |     @Published public var isAuthenticated: Bool = false
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 19 |
 20 |     private init() {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:12:25: error: 'ObservableObject' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              |          `- error: 'ObservableObject' is only available in macOS 10.15 or newer
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
<unknown>:0: error: cannot convert value of type 'KeyPath<UserStore, User?>' to expected argument type 'ReferenceWritableKeyPath<UserStore, User?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<UserStore, String?>' to expected argument type 'ReferenceWritableKeyPath<UserStore, String?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<UserStore, String?>' to expected argument type 'ReferenceWritableKeyPath<UserStore, String?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<UserStore, Bool>' to expected argument type 'ReferenceWritableKeyPath<UserStore, Bool>'
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:26:13: error: setter for 'token' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
 20 |     private init() {
    |             `- note: add '@available' attribute to enclosing initializer
 21 |         // Load from defaults if available
 22 |         if let savedToken = UserDefaults.standard.string(forKey: "ethora_user_token"),
    :
 24 |            let savedUserData = UserDefaults.standard.data(forKey: "ethora_user_data"),
 25 |            let user = try? JSONDecoder().decode(User.self, from: savedUserData) {
 26 |             self.token = savedToken
    |             |- error: setter for 'token' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 27 |             self.refreshToken = savedRefreshToken
 28 |             self.currentUser = user
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:27:13: error: setter for 'refreshToken' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
 20 |     private init() {
    |             `- note: add '@available' attribute to enclosing initializer
 21 |         // Load from defaults if available
 22 |         if let savedToken = UserDefaults.standard.string(forKey: "ethora_user_token"),
    :
 25 |            let user = try? JSONDecoder().decode(User.self, from: savedUserData) {
 26 |             self.token = savedToken
 27 |             self.refreshToken = savedRefreshToken
    |             |- error: setter for 'refreshToken' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 28 |             self.currentUser = user
 29 |             self.isAuthenticated = true
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:28:13: error: setter for 'currentUser' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
 20 |     private init() {
    |             `- note: add '@available' attribute to enclosing initializer
 21 |         // Load from defaults if available
 22 |         if let savedToken = UserDefaults.standard.string(forKey: "ethora_user_token"),
    :
 26 |             self.token = savedToken
 27 |             self.refreshToken = savedRefreshToken
 28 |             self.currentUser = user
    |             |- error: setter for 'currentUser' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 29 |             self.isAuthenticated = true
 30 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:29:13: error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
 20 |     private init() {
    |             `- note: add '@available' attribute to enclosing initializer
 21 |         // Load from defaults if available
 22 |         if let savedToken = UserDefaults.standard.string(forKey: "ethora_user_token"),
    :
 27 |             self.refreshToken = savedRefreshToken
 28 |             self.currentUser = user
 29 |             self.isAuthenticated = true
    |             |- error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 30 |         }
 31 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:54:9: error: setter for 'currentUser' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 32 |
 33 |     /// Set user data from login response
 34 |     public func setUser(from loginResponse: AuthAPI.LoginResponse) {
    |                 `- note: add '@available' attribute to enclosing instance method
 35 |         // Convert UserResponse to User
 36 |         let user = User(
    :
 52 |         )
 53 |
 54 |         self.currentUser = user
    |         |- error: setter for 'currentUser' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 55 |         self.token = loginResponse.token
 56 |         self.refreshToken = loginResponse.refreshToken
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:55:9: error: setter for 'token' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 32 |
 33 |     /// Set user data from login response
 34 |     public func setUser(from loginResponse: AuthAPI.LoginResponse) {
    |                 `- note: add '@available' attribute to enclosing instance method
 35 |         // Convert UserResponse to User
 36 |         let user = User(
    :
 53 |
 54 |         self.currentUser = user
 55 |         self.token = loginResponse.token
    |         |- error: setter for 'token' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 56 |         self.refreshToken = loginResponse.refreshToken
 57 |         self.isAuthenticated = true
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:56:9: error: setter for 'refreshToken' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 32 |
 33 |     /// Set user data from login response
 34 |     public func setUser(from loginResponse: AuthAPI.LoginResponse) {
    |                 `- note: add '@available' attribute to enclosing instance method
 35 |         // Convert UserResponse to User
 36 |         let user = User(
    :
 54 |         self.currentUser = user
 55 |         self.token = loginResponse.token
 56 |         self.refreshToken = loginResponse.refreshToken
    |         |- error: setter for 'refreshToken' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 57 |         self.isAuthenticated = true
 58 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:57:9: error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 32 |
 33 |     /// Set user data from login response
 34 |     public func setUser(from loginResponse: AuthAPI.LoginResponse) {
    |                 `- note: add '@available' attribute to enclosing instance method
 35 |         // Convert UserResponse to User
 36 |         let user = User(
    :
 55 |         self.token = loginResponse.token
 56 |         self.refreshToken = loginResponse.refreshToken
 57 |         self.isAuthenticated = true
    |         |- error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 58 |
 59 |         // Persist to UserDefaults
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:71:9: error: setter for 'token' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 68 |
 69 |     /// Update tokens after refresh
 70 |     public func updateTokens(token: String, refreshToken: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
 71 |         self.token = token
    |         |- error: setter for 'token' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 72 |         self.refreshToken = refreshToken
 73 |         UserDefaults.standard.set(token, forKey: "ethora_user_token")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:72:9: error: setter for 'refreshToken' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 68 |
 69 |     /// Update tokens after refresh
 70 |     public func updateTokens(token: String, refreshToken: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
 71 |         self.token = token
 72 |         self.refreshToken = refreshToken
    |         |- error: setter for 'refreshToken' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 73 |         UserDefaults.standard.set(token, forKey: "ethora_user_token")
 74 |         UserDefaults.standard.set(refreshToken, forKey: "ethora_user_refresh_token")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:81:9: error: setter for 'currentUser' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
    |         |- error: setter for 'currentUser' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 82 |         self.token = nil
 83 |         self.refreshToken = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:82:9: error: setter for 'token' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
    |         |- error: setter for 'token' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 83 |         self.refreshToken = nil
 84 |         self.isAuthenticated = false
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:83:9: error: setter for 'refreshToken' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
 83 |         self.refreshToken = nil
    |         |- error: setter for 'refreshToken' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 84 |         self.isAuthenticated = false
 85 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:84:9: error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
 83 |         self.refreshToken = nil
 84 |         self.isAuthenticated = false
    |         |- error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 85 |
 86 |         UserDefaults.standard.removeObject(forKey: "ethora_user_token")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:91:9: error: 'Task' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
    :
 89 |
 90 |         // Clear message cache on logout
 91 |         Task { @MainActor in
    |         |- error: 'Task' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 92 |             MessageCache.shared.clearAll()
 93 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:91:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
    :
 89 |
 90 |         // Clear message cache on logout
 91 |         Task { @MainActor in
    |         |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 92 |             MessageCache.shared.clearAll()
 93 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:132:13: warning: no 'async' operations occur within 'await' expression
130 |
131 |             // Save to UserStore
132 |             await UserStore.shared.setUser(from: loginResponse)
    |             `- warning: no 'async' operations occur within 'await' expression
133 |
134 |             print("✅ JWT autologin complete! User authenticated.")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/FormatHelpers.swift:17:9: warning: variable 'uniqueUsers' was never mutated; consider changing to 'let' constant
15 |
16 | public func extractUniqueMembersFromRooms(_ rooms: [Room]) -> [User] {
17 |     var uniqueUsers: [String: User] = [:]
   |         `- warning: variable 'uniqueUsers' was never mutated; consider changing to 'let' constant
18 |
19 |     for room in rooms {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/FormatHelpers.swift:19:9: warning: immutable value 'room' was never used; consider replacing with '_' or removing it [#no-usage]
17 |     var uniqueUsers: [String: User] = [:]
18 |
19 |     for room in rooms {
   |         `- warning: immutable value 'room' was never used; consider replacing with '_' or removing it [#no-usage]
20 |         // Extract users from room members if available
21 |         // This is a placeholder - actual implementation depends on Room structure
[107/108] Compiling XMPPChatCore ClientRegistry.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:14:6: error: 'Published' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 15 |     @Published public var disconnectReason: String? = nil
 16 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:15:6: error: 'Published' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 16 |
 17 |     public enum ConnectionStatus {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:13:33: error: 'ObservableObject' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              |                  `- error: 'ObservableObject' is only available in macOS 10.15 or newer
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
<unknown>:0: error: cannot convert value of type 'KeyPath<ConnectionManager, ConnectionManager.ConnectionStatus>' to expected argument type 'ReferenceWritableKeyPath<ConnectionManager, ConnectionManager.ConnectionStatus>'
<unknown>:0: error: cannot convert value of type 'KeyPath<ConnectionManager, String?>' to expected argument type 'ReferenceWritableKeyPath<ConnectionManager, String?>'
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:58:13: error: 'Task' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 56 |             }
 57 |
 58 |             Task { @MainActor in
    |             |- error: 'Task' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 59 |                 switch statusString {
 60 |                 case "connected":
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:58:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 56 |             }
 57 |
 58 |             Task { @MainActor in
    |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 59 |                 switch statusString {
 60 |                 case "connected":
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:61:21: error: setter for 'status' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 59 |                 switch statusString {
 60 |                 case "connected":
 61 |                     self.status = .connected
    |                     |- error: setter for 'status' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 62 |                     self.disconnectReason = nil
 63 |                     //print("✅ ConnectionManager: Connected successfully")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:62:21: error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 60 |                 case "connected":
 61 |                     self.status = .connected
 62 |                     self.disconnectReason = nil
    |                     |- error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 63 |                     //print("✅ ConnectionManager: Connected successfully")
 64 |                 case "connecting":
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:65:21: error: setter for 'status' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 63 |                     //print("✅ ConnectionManager: Connected successfully")
 64 |                 case "connecting":
 65 |                     self.status = .connecting
    |                     |- error: setter for 'status' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 66 |                     self.disconnectReason = reason ?? "Connecting to server..."
 67 |                     //print("🔄 ConnectionManager: Connecting...")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:66:21: error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 64 |                 case "connecting":
 65 |                     self.status = .connecting
 66 |                     self.disconnectReason = reason ?? "Connecting to server..."
    |                     |- error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 67 |                     //print("🔄 ConnectionManager: Connecting...")
 68 |                 case "disconnected":
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:69:21: error: setter for 'status' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 67 |                     //print("🔄 ConnectionManager: Connecting...")
 68 |                 case "disconnected":
 69 |                     self.status = .disconnected
    |                     |- error: setter for 'status' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 70 |                     self.disconnectReason = self.formatDisconnectReason(
 71 |                         reason: reason,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:70:21: error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 68 |                 case "disconnected":
 69 |                     self.status = .disconnected
 70 |                     self.disconnectReason = self.formatDisconnectReason(
    |                     |- error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 71 |                         reason: reason,
 72 |                         errorCode: errorCode,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:77:21: error: setter for 'status' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 75 |                     //print("❌ ConnectionManager: Disconnected - \(self.disconnectReason ?? "Unknown reason")")
 76 |                 case "reconnecting":
 77 |                     self.status = .reconnecting
    |                     |- error: setter for 'status' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 78 |                     self.disconnectReason = reason ?? "Reconnecting..."
 79 |                     //print("🔄 ConnectionManager: Reconnecting...")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:78:21: error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 76 |                 case "reconnecting":
 77 |                     self.status = .reconnecting
 78 |                     self.disconnectReason = reason ?? "Reconnecting..."
    |                     |- error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 79 |                     //print("🔄 ConnectionManager: Reconnecting...")
 80 |                 default:
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:48:20: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 46 |             // Log connection status change for debugging
 47 |             //print("🔌 ConnectionManager: Status changed to '\(statusString)'")
 48 |             if let reason = reason {
    |                    `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 49 |                 //print("   Reason: \(reason)")
 50 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:51:20: warning: value 'errorCode' was defined but never used; consider replacing with boolean test [#no-usage]
 49 |                 //print("   Reason: \(reason)")
 50 |             }
 51 |             if let errorCode = errorCode {
    |                    `- warning: value 'errorCode' was defined but never used; consider replacing with boolean test [#no-usage]
 52 |                 //print("   Error Code: \(errorCode)")
 53 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:54:20: warning: value 'errorDescription' was defined but never used; consider replacing with boolean test [#no-usage]
 52 |                 //print("   Error Code: \(errorCode)")
 53 |             }
 54 |             if let errorDescription = errorDescription {
    |                    `- warning: value 'errorDescription' was defined but never used; consider replacing with boolean test [#no-usage]
 55 |                 //print("   Error Description: \(errorDescription)")
 56 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:94:9: error: setter for 'status' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 91 |     }
 92 |
 93 |     public func updateStatus(_ newStatus: ConnectionStatus) {
    |                 `- note: add '@available' attribute to enclosing instance method
 94 |         status = newStatus
    |         |- error: setter for 'status' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 95 |     }
 96 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:13:6: error: 'Published' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
   |      `- error: 'Published' is only available in macOS 10.15 or newer
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
15 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:14:6: error: 'Published' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   |      `- error: 'Published' is only available in macOS 10.15 or newer
15 |
16 |     private let storage = LocalStorage.shared
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:12:32: error: 'ObservableObject' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              |                 `- error: 'ObservableObject' is only available in macOS 10.15 or newer
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
<unknown>:0: error: cannot convert value of type 'KeyPath<MessageHeapState, [String : [Message]]>' to expected argument type 'ReferenceWritableKeyPath<MessageHeapState, [String : [Message]]>'
<unknown>:0: error: cannot convert value of type 'KeyPath<MessageHeapState, [String : Bool]>' to expected argument type 'ReferenceWritableKeyPath<MessageHeapState, [String : Bool]>'
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:24:13: error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
20 |     }
21 |
22 |     public func addMessages(_ messages: [Message], forRoom roomJID: String) {
   |                 `- note: add '@available' attribute to enclosing instance method
23 |         if heap[roomJID] == nil {
24 |             heap[roomJID] = []
   |             |- error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
   |             `- note: add 'if #available' version check
25 |         }
26 |         heap[roomJID]?.append(contentsOf: messages)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:26:9: error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
20 |     }
21 |
22 |     public func addMessages(_ messages: [Message], forRoom roomJID: String) {
   |                 `- note: add '@available' attribute to enclosing instance method
23 |         if heap[roomJID] == nil {
24 |             heap[roomJID] = []
25 |         }
26 |         heap[roomJID]?.append(contentsOf: messages)
   |         |- error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
27 |         saveToStorage()
28 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:31:9: error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
28 |     }
29 |
30 |     public func setMessages(_ messages: [Message], forRoom roomJID: String) {
   |                 `- note: add '@available' attribute to enclosing instance method
31 |         heap[roomJID] = messages
   |         |- error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
32 |         saveToStorage()
33 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:40:9: error: cannot pass as inout because setter for 'heapComplete' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
37 |     }
38 |
39 |     public func markComplete(forRoom roomJID: String) {
   |                 `- note: add '@available' attribute to enclosing instance method
40 |         heapComplete[roomJID] = true
   |         |- error: cannot pass as inout because setter for 'heapComplete' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
41 |         saveToStorage()
42 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:49:9: error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
46 |     }
47 |
48 |     public func clear(forRoom roomJID: String) {
   |                 `- note: add '@available' attribute to enclosing instance method
49 |         heap.removeValue(forKey: roomJID)
   |         |- error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
50 |         heapComplete.removeValue(forKey: roomJID)
51 |         saveToStorage()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:50:9: error: cannot pass as inout because setter for 'heapComplete' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
46 |     }
47 |
48 |     public func clear(forRoom roomJID: String) {
   |                 `- note: add '@available' attribute to enclosing instance method
49 |         heap.removeValue(forKey: roomJID)
50 |         heapComplete.removeValue(forKey: roomJID)
   |         |- error: cannot pass as inout because setter for 'heapComplete' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
51 |         saveToStorage()
52 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:55:9: error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
52 |     }
53 |
54 |     public func clearAll() {
   |                 `- note: add '@available' attribute to enclosing instance method
55 |         heap.removeAll()
   |         |- error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
56 |         heapComplete.removeAll()
57 |         saveToStorage()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:56:9: error: cannot pass as inout because setter for 'heapComplete' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
52 |     }
53 |
54 |     public func clearAll() {
   |                 `- note: add '@available' attribute to enclosing instance method
55 |         heap.removeAll()
56 |         heapComplete.removeAll()
   |         |- error: cannot pass as inout because setter for 'heapComplete' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
57 |         saveToStorage()
58 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:17:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
 15 |     // MARK: - Published Properties
 16 |
 17 |     @Published public var rooms: [String: Room] = [:]
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 18 |     @Published public var activeRoomJID: String?
 19 |     @Published public var isLoading: Bool = false
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:18:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 16 |
 17 |     @Published public var rooms: [String: Room] = [:]
 18 |     @Published public var activeRoomJID: String?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 19 |     @Published public var isLoading: Bool = false
 20 |     @Published public var globalLoading: Bool = false
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:19:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 17 |     @Published public var rooms: [String: Room] = [:]
 18 |     @Published public var activeRoomJID: String?
 19 |     @Published public var isLoading: Bool = false
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 20 |     @Published public var globalLoading: Bool = false
 21 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:20:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 18 |     @Published public var activeRoomJID: String?
 19 |     @Published public var isLoading: Bool = false
 20 |     @Published public var globalLoading: Bool = false
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 21 |
 22 |     /// Bare JIDs of chats the user has left via "Leave" — but the
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:28:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 26 |     /// genuine re-join (see `unhideRoom(jid:)` in the XEP-0249/XEP-0045
 27 |     /// invite handler).
 28 |     @Published public var hiddenRoomJIDs: Set<String> = []
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 29 |
 30 |     // Edit action state
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:31:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 29 |
 30 |     // Edit action state
 31 |     @Published public var editAction: EditAction?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 32 |
 33 |     // Users set (for quick lookup)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:34:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 32 |
 33 |     // Users set (for quick lookup)
 34 |     @Published public var usersSet: [String: RoomMember] = [:]
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 35 |
 36 |     // Report room state
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:37:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 35 |
 36 |     // Report room state
 37 |     @Published public var reportRoom: ReportRoomState = ReportRoomState()
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 38 |
 39 |     // Loading text
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:40:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 38 |
 39 |     // Loading text
 40 |     @Published public var loadingText: String?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 41 |
 42 |     // MARK: - Initialization
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:12:25: error: 'ObservableObject' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              |          `- error: 'ObservableObject' is only available in macOS 10.15 or newer
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, [String : Room]>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, [String : Room]>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, String?>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, String?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, Bool>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, Bool>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, Bool>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, Bool>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, Set<String>>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, Set<String>>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, EditAction?>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, EditAction?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, [String : RoomMember]>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, [String : RoomMember]>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, ReportRoomState>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, ReportRoomState>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, String?>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, String?>'
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:87:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 62 |     ///   Only messages that arrive **after** the app started will bump the
 63 |     ///   badge, which is the behaviour Telegram ships with.
 64 |     public func addRoom(_ room: Room) {
    |                 `- note: add '@available' attribute to enclosing instance method
 65 |         // If the user just left this room — don't bring it back, even
 66 |         // if REST `/chats/my` returned it. The hidden flag is only
    :
 85 |             toStore.lastViewedTimestamp = Int64(Date().timeIntervalSince1970 * 1000)
 86 |         }
 87 |         rooms[room.jid] = toStore
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 88 |         saveToCache()
 89 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:98:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 95 |
 96 |     /// Delete a room
 97 |     public func deleteRoom(jid: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
 98 |         rooms.removeValue(forKey: jid)
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 99 |         if activeRoomJID == jid {
100 |             activeRoomJID = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:100:13: error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 95 |
 96 |     /// Delete a room
 97 |     public func deleteRoom(jid: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
 98 |         rooms.removeValue(forKey: jid)
 99 |         if activeRoomJID == jid {
100 |             activeRoomJID = nil
    |             |- error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
101 |         }
102 |         saveToCache()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:112:9: error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
108 |     /// the swipe-Leave action; cleared via `unhideRoom(jid:)` on
109 |     /// re-invite.
110 |     public func hideRoom(jid: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
111 |         let bareJID = jid.components(separatedBy: "/").first ?? jid
112 |         hiddenRoomJIDs.insert(bareJID)
    |         |- error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
113 |         rooms.removeValue(forKey: bareJID)
114 |         if activeRoomJID == bareJID {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:113:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
108 |     /// the swipe-Leave action; cleared via `unhideRoom(jid:)` on
109 |     /// re-invite.
110 |     public func hideRoom(jid: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
111 |         let bareJID = jid.components(separatedBy: "/").first ?? jid
112 |         hiddenRoomJIDs.insert(bareJID)
113 |         rooms.removeValue(forKey: bareJID)
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
114 |         if activeRoomJID == bareJID {
115 |             activeRoomJID = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:115:13: error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
108 |     /// the swipe-Leave action; cleared via `unhideRoom(jid:)` on
109 |     /// re-invite.
110 |     public func hideRoom(jid: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
111 |         let bareJID = jid.components(separatedBy: "/").first ?? jid
112 |         hiddenRoomJIDs.insert(bareJID)
113 |         rooms.removeValue(forKey: bareJID)
114 |         if activeRoomJID == bareJID {
115 |             activeRoomJID = nil
    |             |- error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
116 |         }
117 |         saveToCache()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:125:12: error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
121 |     /// XMPP broadcasts reach the UI again and the room reappears in
122 |     /// the list.
123 |     public func unhideRoom(jid: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
124 |         let bareJID = jid.components(separatedBy: "/").first ?? jid
125 |         if hiddenRoomJIDs.remove(bareJID) != nil {
    |            |- error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
    |            `- note: add 'if #available' version check
126 |             saveToCache()
127 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:192:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
129 |
130 |     /// Update room
131 |     public func updateRoom(jid: String, updates: PartialRoomUpdate) {
    |                 `- note: add '@available' attribute to enclosing instance method
132 |         guard var room = rooms[jid] else { return }
133 |
    :
190 |         }
191 |
192 |         rooms[jid] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
193 |         saveToCache()
194 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:198:9: error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
195 |
196 |     /// Set active room
197 |     public func setActiveRoom(_ jid: String?) {
    |                 `- note: add '@available' attribute to enclosing instance method
198 |         activeRoomJID = jid
    |         |- error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
199 |         saveToCache()
200 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:234:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
209 |
210 |     /// Add message to room
211 |     public func addMessage(_ message: Message, toRoomJID roomJID: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
212 |         guard var room = rooms[roomJID] else { return }
213 |
    :
232 |         room.lastMessageTimestamp = message.timestamp
233 |
234 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
235 |         saveToCache()
236 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:242:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
237 |
238 |     /// Set room messages
239 |     public func setRoomMessages(roomJID: String, messages: [Message]) {
    |                 `- note: add '@available' attribute to enclosing instance method
240 |         guard var room = rooms[roomJID] else { return }
241 |         room.messages = messages.sorted { ($0.timestamp ?? 0) < ($1.timestamp ?? 0) }
242 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
243 |         saveToCache()
244 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:295:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
252 |     /// reference this id don't dangle. Media-side fields and reactions
253 |     /// are cleared so the placeholder doesn't show stale attachments.
254 |     public func deleteMessage(roomJID: String, messageId: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
255 |         guard var room = rooms[roomJID],
256 |               let index = room.messages.firstIndex(where: { $0.id == messageId }) else {
    :
293 |             wasEdited: original.wasEdited
294 |         )
295 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
296 |         saveToCache()
297 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:342:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
298 |
299 |     /// Update message in room
300 |     public func updateMessage(roomJID: String, messageId: String, updates: PartialMessageUpdate) {
    |                 `- note: add '@available' attribute to enclosing instance method
301 |         guard var room = rooms[roomJID],
302 |               let index = room.messages.firstIndex(where: { $0.id == messageId }) else {
    :
340 |
341 |         room.messages[index] = updatedMessage
342 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
343 |         saveToCache()
344 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:376:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
347 |
348 |     /// Set reactions on a message
349 |     public func setReactions(
    |                 `- note: add '@available' attribute to enclosing instance method
350 |         roomJID: String,
351 |         messageId: String,
    :
374 |
375 |         room.messages[index] = message
376 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
377 |         saveToCache()
378 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:384:9: error: setter for 'editAction' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
381 |
382 |     /// Set edit action
383 |     public func setEditAction(_ action: EditAction?) {
    |                 `- note: add '@available' attribute to enclosing instance method
384 |         editAction = action
    |         |- error: setter for 'editAction' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
385 |     }
386 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:389:9: error: setter for 'editAction' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
386 |
387 |     /// Clear edit action
388 |     public func clearEditAction() {
    |                 `- note: add '@available' attribute to enclosing instance method
389 |         editAction = nil
    |         |- error: setter for 'editAction' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
390 |     }
391 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:398:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
393 |
394 |     /// Set last viewed timestamp for a room
395 |     public func setLastViewedTimestamp(roomJID: String, timestamp: Int64) {
    |                 `- note: add '@available' attribute to enclosing instance method
396 |         guard var room = rooms[roomJID] else { return }
397 |         room.lastViewedTimestamp = timestamp
398 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
399 |         saveToCache()
400 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:408:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
403 |
404 |     /// Update unread count for a room
405 |     public func updateUnreadCount(roomJID: String, count: Int) {
    |                 `- note: add '@available' attribute to enclosing instance method
406 |         guard var room = rooms[roomJID] else { return }
407 |         room.unreadMessages = count
408 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
409 |         saveToCache()
410 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:430:17: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
421 |     /// list view models don't always eagerly hydrate `room.messages` from
422 |     /// cache, but the cache itself is always up to date.
423 |     public func recomputeUnreadForRoom(jid: String, currentUserLocal: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
424 |         guard var room = rooms[jid] else { return }
425 |
    :
428 |             if room.unreadMessages != 0 {
429 |                 room.unreadMessages = 0
430 |                 rooms[jid] = room
    |                 |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |                 `- note: add 'if #available' version check
431 |                 saveToCache()
432 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:489:13: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
421 |     /// list view models don't always eagerly hydrate `room.messages` from
422 |     /// cache, but the cache itself is always up to date.
423 |     public func recomputeUnreadForRoom(jid: String, currentUserLocal: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
424 |         guard var room = rooms[jid] else { return }
425 |
    :
487 |         if room.unreadMessages != unread {
488 |             room.unreadMessages = unread
489 |             rooms[jid] = room
    |             |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
490 |             saveToCache()
491 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:557:13: error: setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
552 |     }
553 |
554 |     private func loadFromCache() {
    |                  `- note: add '@available' attribute to enclosing instance method
555 |         if let data = UserDefaults.standard.data(forKey: "ethora_room_store"),
556 |            let decoded = try? JSONDecoder().decode([String: Room].self, from: data) {
557 |             rooms = decoded
    |             |- error: setter for 'rooms' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
558 |         }
559 |         if let hiddenData = UserDefaults.standard.data(forKey: "ethora_room_store_hidden"),
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:561:13: error: setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
552 |     }
553 |
554 |     private func loadFromCache() {
    |                  `- note: add '@available' attribute to enclosing instance method
555 |         if let data = UserDefaults.standard.data(forKey: "ethora_room_store"),
556 |            let decoded = try? JSONDecoder().decode([String: Room].self, from: data) {
    :
559 |         if let hiddenData = UserDefaults.standard.data(forKey: "ethora_room_store_hidden"),
560 |            let decodedHidden = try? JSONDecoder().decode(Set<String>.self, from: hiddenData) {
561 |             hiddenRoomJIDs = decodedHidden
    |             |- error: setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
562 |         }
563 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:567:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
568 |         activeRoomJID = nil
569 |         editAction = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:568:9: error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
    |         |- error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
569 |         editAction = nil
570 |         usersSet.removeAll()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:569:9: error: setter for 'editAction' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
569 |         editAction = nil
    |         |- error: setter for 'editAction' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
570 |         usersSet.removeAll()
571 |         reportRoom = ReportRoomState()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:570:9: error: cannot pass as inout because setter for 'usersSet' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
569 |         editAction = nil
570 |         usersSet.removeAll()
    |         |- error: cannot pass as inout because setter for 'usersSet' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
571 |         reportRoom = ReportRoomState()
572 |         hiddenRoomJIDs.removeAll()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:571:9: error: setter for 'reportRoom' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
569 |         editAction = nil
570 |         usersSet.removeAll()
571 |         reportRoom = ReportRoomState()
    |         |- error: setter for 'reportRoom' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
572 |         hiddenRoomJIDs.removeAll()
573 |         UserDefaults.standard.removeObject(forKey: "ethora_room_store")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:572:9: error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
    :
570 |         usersSet.removeAll()
571 |         reportRoom = ReportRoomState()
572 |         hiddenRoomJIDs.removeAll()
    |         |- error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
573 |         UserDefaults.standard.removeObject(forKey: "ethora_room_store")
574 |         UserDefaults.standard.removeObject(forKey: "ethora_room_store_hidden")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:15:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
 15 |     @Published public var currentUser: User?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 16 |     @Published public var token: String?
 17 |     @Published public var refreshToken: String?
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:16:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
 15 |     @Published public var currentUser: User?
 16 |     @Published public var token: String?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 17 |     @Published public var refreshToken: String?
 18 |     @Published public var isAuthenticated: Bool = false
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:17:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
 15 |     @Published public var currentUser: User?
 16 |     @Published public var token: String?
 17 |     @Published public var refreshToken: String?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:18:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 16 |     @Published public var token: String?
 17 |     @Published public var refreshToken: String?
 18 |     @Published public var isAuthenticated: Bool = false
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 19 |
 20 |     private init() {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:12:25: error: 'ObservableObject' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              |          `- error: 'ObservableObject' is only available in macOS 10.15 or newer
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
<unknown>:0: error: cannot convert value of type 'KeyPath<UserStore, User?>' to expected argument type 'ReferenceWritableKeyPath<UserStore, User?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<UserStore, String?>' to expected argument type 'ReferenceWritableKeyPath<UserStore, String?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<UserStore, String?>' to expected argument type 'ReferenceWritableKeyPath<UserStore, String?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<UserStore, Bool>' to expected argument type 'ReferenceWritableKeyPath<UserStore, Bool>'
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:26:13: error: setter for 'token' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
 20 |     private init() {
    |             `- note: add '@available' attribute to enclosing initializer
 21 |         // Load from defaults if available
 22 |         if let savedToken = UserDefaults.standard.string(forKey: "ethora_user_token"),
    :
 24 |            let savedUserData = UserDefaults.standard.data(forKey: "ethora_user_data"),
 25 |            let user = try? JSONDecoder().decode(User.self, from: savedUserData) {
 26 |             self.token = savedToken
    |             |- error: setter for 'token' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 27 |             self.refreshToken = savedRefreshToken
 28 |             self.currentUser = user
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:27:13: error: setter for 'refreshToken' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
 20 |     private init() {
    |             `- note: add '@available' attribute to enclosing initializer
 21 |         // Load from defaults if available
 22 |         if let savedToken = UserDefaults.standard.string(forKey: "ethora_user_token"),
    :
 25 |            let user = try? JSONDecoder().decode(User.self, from: savedUserData) {
 26 |             self.token = savedToken
 27 |             self.refreshToken = savedRefreshToken
    |             |- error: setter for 'refreshToken' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 28 |             self.currentUser = user
 29 |             self.isAuthenticated = true
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:28:13: error: setter for 'currentUser' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
 20 |     private init() {
    |             `- note: add '@available' attribute to enclosing initializer
 21 |         // Load from defaults if available
 22 |         if let savedToken = UserDefaults.standard.string(forKey: "ethora_user_token"),
    :
 26 |             self.token = savedToken
 27 |             self.refreshToken = savedRefreshToken
 28 |             self.currentUser = user
    |             |- error: setter for 'currentUser' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 29 |             self.isAuthenticated = true
 30 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:29:13: error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
 20 |     private init() {
    |             `- note: add '@available' attribute to enclosing initializer
 21 |         // Load from defaults if available
 22 |         if let savedToken = UserDefaults.standard.string(forKey: "ethora_user_token"),
    :
 27 |             self.refreshToken = savedRefreshToken
 28 |             self.currentUser = user
 29 |             self.isAuthenticated = true
    |             |- error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 30 |         }
 31 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:54:9: error: setter for 'currentUser' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 32 |
 33 |     /// Set user data from login response
 34 |     public func setUser(from loginResponse: AuthAPI.LoginResponse) {
    |                 `- note: add '@available' attribute to enclosing instance method
 35 |         // Convert UserResponse to User
 36 |         let user = User(
    :
 52 |         )
 53 |
 54 |         self.currentUser = user
    |         |- error: setter for 'currentUser' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 55 |         self.token = loginResponse.token
 56 |         self.refreshToken = loginResponse.refreshToken
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:55:9: error: setter for 'token' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 32 |
 33 |     /// Set user data from login response
 34 |     public func setUser(from loginResponse: AuthAPI.LoginResponse) {
    |                 `- note: add '@available' attribute to enclosing instance method
 35 |         // Convert UserResponse to User
 36 |         let user = User(
    :
 53 |
 54 |         self.currentUser = user
 55 |         self.token = loginResponse.token
    |         |- error: setter for 'token' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 56 |         self.refreshToken = loginResponse.refreshToken
 57 |         self.isAuthenticated = true
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:56:9: error: setter for 'refreshToken' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 32 |
 33 |     /// Set user data from login response
 34 |     public func setUser(from loginResponse: AuthAPI.LoginResponse) {
    |                 `- note: add '@available' attribute to enclosing instance method
 35 |         // Convert UserResponse to User
 36 |         let user = User(
    :
 54 |         self.currentUser = user
 55 |         self.token = loginResponse.token
 56 |         self.refreshToken = loginResponse.refreshToken
    |         |- error: setter for 'refreshToken' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 57 |         self.isAuthenticated = true
 58 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:57:9: error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 32 |
 33 |     /// Set user data from login response
 34 |     public func setUser(from loginResponse: AuthAPI.LoginResponse) {
    |                 `- note: add '@available' attribute to enclosing instance method
 35 |         // Convert UserResponse to User
 36 |         let user = User(
    :
 55 |         self.token = loginResponse.token
 56 |         self.refreshToken = loginResponse.refreshToken
 57 |         self.isAuthenticated = true
    |         |- error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 58 |
 59 |         // Persist to UserDefaults
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:71:9: error: setter for 'token' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 68 |
 69 |     /// Update tokens after refresh
 70 |     public func updateTokens(token: String, refreshToken: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
 71 |         self.token = token
    |         |- error: setter for 'token' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 72 |         self.refreshToken = refreshToken
 73 |         UserDefaults.standard.set(token, forKey: "ethora_user_token")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:72:9: error: setter for 'refreshToken' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 68 |
 69 |     /// Update tokens after refresh
 70 |     public func updateTokens(token: String, refreshToken: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
 71 |         self.token = token
 72 |         self.refreshToken = refreshToken
    |         |- error: setter for 'refreshToken' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 73 |         UserDefaults.standard.set(token, forKey: "ethora_user_token")
 74 |         UserDefaults.standard.set(refreshToken, forKey: "ethora_user_refresh_token")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:81:9: error: setter for 'currentUser' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
    |         |- error: setter for 'currentUser' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 82 |         self.token = nil
 83 |         self.refreshToken = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:82:9: error: setter for 'token' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
    |         |- error: setter for 'token' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 83 |         self.refreshToken = nil
 84 |         self.isAuthenticated = false
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:83:9: error: setter for 'refreshToken' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
 83 |         self.refreshToken = nil
    |         |- error: setter for 'refreshToken' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 84 |         self.isAuthenticated = false
 85 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:84:9: error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
 83 |         self.refreshToken = nil
 84 |         self.isAuthenticated = false
    |         |- error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 85 |
 86 |         UserDefaults.standard.removeObject(forKey: "ethora_user_token")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:91:9: error: 'Task' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
    :
 89 |
 90 |         // Clear message cache on logout
 91 |         Task { @MainActor in
    |         |- error: 'Task' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 92 |             MessageCache.shared.clearAll()
 93 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:91:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
    :
 89 |
 90 |         // Clear message cache on logout
 91 |         Task { @MainActor in
    |         |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 92 |             MessageCache.shared.clearAll()
 93 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:132:13: warning: no 'async' operations occur within 'await' expression
130 |
131 |             // Save to UserStore
132 |             await UserStore.shared.setUser(from: loginResponse)
    |             `- warning: no 'async' operations occur within 'await' expression
133 |
134 |             print("✅ JWT autologin complete! User authenticated.")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/FormatHelpers.swift:17:9: warning: variable 'uniqueUsers' was never mutated; consider changing to 'let' constant
15 |
16 | public func extractUniqueMembersFromRooms(_ rooms: [Room]) -> [User] {
17 |     var uniqueUsers: [String: User] = [:]
   |         `- warning: variable 'uniqueUsers' was never mutated; consider changing to 'let' constant
18 |
19 |     for room in rooms {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/FormatHelpers.swift:19:9: warning: immutable value 'room' was never used; consider replacing with '_' or removing it [#no-usage]
17 |     var uniqueUsers: [String: User] = [:]
18 |
19 |     for room in rooms {
   |         `- warning: immutable value 'room' was never used; consider replacing with '_' or removing it [#no-usage]
20 |         // Extract users from room members if available
21 |         // This is a placeholder - actual implementation depends on Room structure
[108/108] Compiling XMPPChatCore FormatHelpers.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:14:6: error: 'Published' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 15 |     @Published public var disconnectReason: String? = nil
 16 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:15:6: error: 'Published' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 16 |
 17 |     public enum ConnectionStatus {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:13:33: error: 'ObservableObject' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              |                  `- error: 'ObservableObject' is only available in macOS 10.15 or newer
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
<unknown>:0: error: cannot convert value of type 'KeyPath<ConnectionManager, ConnectionManager.ConnectionStatus>' to expected argument type 'ReferenceWritableKeyPath<ConnectionManager, ConnectionManager.ConnectionStatus>'
<unknown>:0: error: cannot convert value of type 'KeyPath<ConnectionManager, String?>' to expected argument type 'ReferenceWritableKeyPath<ConnectionManager, String?>'
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:58:13: error: 'Task' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 56 |             }
 57 |
 58 |             Task { @MainActor in
    |             |- error: 'Task' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 59 |                 switch statusString {
 60 |                 case "connected":
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:58:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 56 |             }
 57 |
 58 |             Task { @MainActor in
    |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 59 |                 switch statusString {
 60 |                 case "connected":
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:61:21: error: setter for 'status' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 59 |                 switch statusString {
 60 |                 case "connected":
 61 |                     self.status = .connected
    |                     |- error: setter for 'status' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 62 |                     self.disconnectReason = nil
 63 |                     //print("✅ ConnectionManager: Connected successfully")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:62:21: error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 60 |                 case "connected":
 61 |                     self.status = .connected
 62 |                     self.disconnectReason = nil
    |                     |- error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 63 |                     //print("✅ ConnectionManager: Connected successfully")
 64 |                 case "connecting":
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:65:21: error: setter for 'status' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 63 |                     //print("✅ ConnectionManager: Connected successfully")
 64 |                 case "connecting":
 65 |                     self.status = .connecting
    |                     |- error: setter for 'status' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 66 |                     self.disconnectReason = reason ?? "Connecting to server..."
 67 |                     //print("🔄 ConnectionManager: Connecting...")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:66:21: error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 64 |                 case "connecting":
 65 |                     self.status = .connecting
 66 |                     self.disconnectReason = reason ?? "Connecting to server..."
    |                     |- error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 67 |                     //print("🔄 ConnectionManager: Connecting...")
 68 |                 case "disconnected":
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:69:21: error: setter for 'status' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 67 |                     //print("🔄 ConnectionManager: Connecting...")
 68 |                 case "disconnected":
 69 |                     self.status = .disconnected
    |                     |- error: setter for 'status' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 70 |                     self.disconnectReason = self.formatDisconnectReason(
 71 |                         reason: reason,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:70:21: error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 68 |                 case "disconnected":
 69 |                     self.status = .disconnected
 70 |                     self.disconnectReason = self.formatDisconnectReason(
    |                     |- error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 71 |                         reason: reason,
 72 |                         errorCode: errorCode,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:77:21: error: setter for 'status' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 75 |                     //print("❌ ConnectionManager: Disconnected - \(self.disconnectReason ?? "Unknown reason")")
 76 |                 case "reconnecting":
 77 |                     self.status = .reconnecting
    |                     |- error: setter for 'status' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 78 |                     self.disconnectReason = reason ?? "Reconnecting..."
 79 |                     //print("🔄 ConnectionManager: Reconnecting...")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:78:21: error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 26 |     private var notificationObserver: NSObjectProtocol?
 27 |
 28 |     public init() {
    |            `- note: add '@available' attribute to enclosing initializer
 29 |         // Listen for XMPP connection status changes
 30 |         notificationObserver = NotificationCenter.default.addObserver(
    :
 76 |                 case "reconnecting":
 77 |                     self.status = .reconnecting
 78 |                     self.disconnectReason = reason ?? "Reconnecting..."
    |                     |- error: setter for 'disconnectReason' is only available in macOS 10.15 or newer
    |                     `- note: add 'if #available' version check
 79 |                     //print("🔄 ConnectionManager: Reconnecting...")
 80 |                 default:
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:48:20: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 46 |             // Log connection status change for debugging
 47 |             //print("🔌 ConnectionManager: Status changed to '\(statusString)'")
 48 |             if let reason = reason {
    |                    `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 49 |                 //print("   Reason: \(reason)")
 50 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:51:20: warning: value 'errorCode' was defined but never used; consider replacing with boolean test [#no-usage]
 49 |                 //print("   Reason: \(reason)")
 50 |             }
 51 |             if let errorCode = errorCode {
    |                    `- warning: value 'errorCode' was defined but never used; consider replacing with boolean test [#no-usage]
 52 |                 //print("   Error Code: \(errorCode)")
 53 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:54:20: warning: value 'errorDescription' was defined but never used; consider replacing with boolean test [#no-usage]
 52 |                 //print("   Error Code: \(errorCode)")
 53 |             }
 54 |             if let errorDescription = errorDescription {
    |                    `- warning: value 'errorDescription' was defined but never used; consider replacing with boolean test [#no-usage]
 55 |                 //print("   Error Description: \(errorDescription)")
 56 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/ConnectionManager.swift:94:9: error: setter for 'status' is only available in macOS 10.15 or newer
 11 | // MARK: - Connection Manager
 12 | @MainActor
 13 | public class ConnectionManager: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 14 |     @Published public var status: ConnectionStatus = .disconnected
 15 |     @Published public var disconnectReason: String? = nil
    :
 91 |     }
 92 |
 93 |     public func updateStatus(_ newStatus: ConnectionStatus) {
    |                 `- note: add '@available' attribute to enclosing instance method
 94 |         status = newStatus
    |         |- error: setter for 'status' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 95 |     }
 96 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:13:6: error: 'Published' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
   |      `- error: 'Published' is only available in macOS 10.15 or newer
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
15 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:14:6: error: 'Published' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   |      `- error: 'Published' is only available in macOS 10.15 or newer
15 |
16 |     private let storage = LocalStorage.shared
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:12:32: error: 'ObservableObject' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              |                 `- error: 'ObservableObject' is only available in macOS 10.15 or newer
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
<unknown>:0: error: cannot convert value of type 'KeyPath<MessageHeapState, [String : [Message]]>' to expected argument type 'ReferenceWritableKeyPath<MessageHeapState, [String : [Message]]>'
<unknown>:0: error: cannot convert value of type 'KeyPath<MessageHeapState, [String : Bool]>' to expected argument type 'ReferenceWritableKeyPath<MessageHeapState, [String : Bool]>'
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:24:13: error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
20 |     }
21 |
22 |     public func addMessages(_ messages: [Message], forRoom roomJID: String) {
   |                 `- note: add '@available' attribute to enclosing instance method
23 |         if heap[roomJID] == nil {
24 |             heap[roomJID] = []
   |             |- error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
   |             `- note: add 'if #available' version check
25 |         }
26 |         heap[roomJID]?.append(contentsOf: messages)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:26:9: error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
20 |     }
21 |
22 |     public func addMessages(_ messages: [Message], forRoom roomJID: String) {
   |                 `- note: add '@available' attribute to enclosing instance method
23 |         if heap[roomJID] == nil {
24 |             heap[roomJID] = []
25 |         }
26 |         heap[roomJID]?.append(contentsOf: messages)
   |         |- error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
27 |         saveToStorage()
28 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:31:9: error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
28 |     }
29 |
30 |     public func setMessages(_ messages: [Message], forRoom roomJID: String) {
   |                 `- note: add '@available' attribute to enclosing instance method
31 |         heap[roomJID] = messages
   |         |- error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
32 |         saveToStorage()
33 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:40:9: error: cannot pass as inout because setter for 'heapComplete' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
37 |     }
38 |
39 |     public func markComplete(forRoom roomJID: String) {
   |                 `- note: add '@available' attribute to enclosing instance method
40 |         heapComplete[roomJID] = true
   |         |- error: cannot pass as inout because setter for 'heapComplete' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
41 |         saveToStorage()
42 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:49:9: error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
46 |     }
47 |
48 |     public func clear(forRoom roomJID: String) {
   |                 `- note: add '@available' attribute to enclosing instance method
49 |         heap.removeValue(forKey: roomJID)
   |         |- error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
50 |         heapComplete.removeValue(forKey: roomJID)
51 |         saveToStorage()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:50:9: error: cannot pass as inout because setter for 'heapComplete' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
46 |     }
47 |
48 |     public func clear(forRoom roomJID: String) {
   |                 `- note: add '@available' attribute to enclosing instance method
49 |         heap.removeValue(forKey: roomJID)
50 |         heapComplete.removeValue(forKey: roomJID)
   |         |- error: cannot pass as inout because setter for 'heapComplete' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
51 |         saveToStorage()
52 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:55:9: error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
52 |     }
53 |
54 |     public func clearAll() {
   |                 `- note: add '@available' attribute to enclosing instance method
55 |         heap.removeAll()
   |         |- error: cannot pass as inout because setter for 'heap' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
56 |         heapComplete.removeAll()
57 |         saveToStorage()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/MessageHeapState.swift:56:9: error: cannot pass as inout because setter for 'heapComplete' is only available in macOS 10.15 or newer
10 |
11 | @MainActor
12 | public class MessageHeapState: ObservableObject {
   |              `- note: add '@available' attribute to enclosing class
13 |     @Published public var heap: [String: [Message]] = [:] // roomJID: [messages]
14 |     @Published public var heapComplete: [String: Bool] = [:] // roomJID: isComplete
   :
52 |     }
53 |
54 |     public func clearAll() {
   |                 `- note: add '@available' attribute to enclosing instance method
55 |         heap.removeAll()
56 |         heapComplete.removeAll()
   |         |- error: cannot pass as inout because setter for 'heapComplete' is only available in macOS 10.15 or newer
   |         `- note: add 'if #available' version check
57 |         saveToStorage()
58 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:17:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
 15 |     // MARK: - Published Properties
 16 |
 17 |     @Published public var rooms: [String: Room] = [:]
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 18 |     @Published public var activeRoomJID: String?
 19 |     @Published public var isLoading: Bool = false
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:18:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 16 |
 17 |     @Published public var rooms: [String: Room] = [:]
 18 |     @Published public var activeRoomJID: String?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 19 |     @Published public var isLoading: Bool = false
 20 |     @Published public var globalLoading: Bool = false
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:19:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 17 |     @Published public var rooms: [String: Room] = [:]
 18 |     @Published public var activeRoomJID: String?
 19 |     @Published public var isLoading: Bool = false
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 20 |     @Published public var globalLoading: Bool = false
 21 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:20:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 18 |     @Published public var activeRoomJID: String?
 19 |     @Published public var isLoading: Bool = false
 20 |     @Published public var globalLoading: Bool = false
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 21 |
 22 |     /// Bare JIDs of chats the user has left via "Leave" — but the
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:28:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 26 |     /// genuine re-join (see `unhideRoom(jid:)` in the XEP-0249/XEP-0045
 27 |     /// invite handler).
 28 |     @Published public var hiddenRoomJIDs: Set<String> = []
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 29 |
 30 |     // Edit action state
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:31:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 29 |
 30 |     // Edit action state
 31 |     @Published public var editAction: EditAction?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 32 |
 33 |     // Users set (for quick lookup)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:34:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 32 |
 33 |     // Users set (for quick lookup)
 34 |     @Published public var usersSet: [String: RoomMember] = [:]
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 35 |
 36 |     // Report room state
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:37:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 35 |
 36 |     // Report room state
 37 |     @Published public var reportRoom: ReportRoomState = ReportRoomState()
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 38 |
 39 |     // Loading text
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:40:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 38 |
 39 |     // Loading text
 40 |     @Published public var loadingText: String?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 41 |
 42 |     // MARK: - Initialization
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:12:25: error: 'ObservableObject' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              |          `- error: 'ObservableObject' is only available in macOS 10.15 or newer
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, [String : Room]>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, [String : Room]>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, String?>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, String?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, Bool>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, Bool>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, Bool>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, Bool>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, Set<String>>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, Set<String>>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, EditAction?>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, EditAction?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, [String : RoomMember]>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, [String : RoomMember]>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, ReportRoomState>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, ReportRoomState>'
<unknown>:0: error: cannot convert value of type 'KeyPath<RoomStore, String?>' to expected argument type 'ReferenceWritableKeyPath<RoomStore, String?>'
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:87:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 62 |     ///   Only messages that arrive **after** the app started will bump the
 63 |     ///   badge, which is the behaviour Telegram ships with.
 64 |     public func addRoom(_ room: Room) {
    |                 `- note: add '@available' attribute to enclosing instance method
 65 |         // If the user just left this room — don't bring it back, even
 66 |         // if REST `/chats/my` returned it. The hidden flag is only
    :
 85 |             toStore.lastViewedTimestamp = Int64(Date().timeIntervalSince1970 * 1000)
 86 |         }
 87 |         rooms[room.jid] = toStore
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 88 |         saveToCache()
 89 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:98:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 95 |
 96 |     /// Delete a room
 97 |     public func deleteRoom(jid: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
 98 |         rooms.removeValue(forKey: jid)
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 99 |         if activeRoomJID == jid {
100 |             activeRoomJID = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:100:13: error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
 95 |
 96 |     /// Delete a room
 97 |     public func deleteRoom(jid: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
 98 |         rooms.removeValue(forKey: jid)
 99 |         if activeRoomJID == jid {
100 |             activeRoomJID = nil
    |             |- error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
101 |         }
102 |         saveToCache()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:112:9: error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
108 |     /// the swipe-Leave action; cleared via `unhideRoom(jid:)` on
109 |     /// re-invite.
110 |     public func hideRoom(jid: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
111 |         let bareJID = jid.components(separatedBy: "/").first ?? jid
112 |         hiddenRoomJIDs.insert(bareJID)
    |         |- error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
113 |         rooms.removeValue(forKey: bareJID)
114 |         if activeRoomJID == bareJID {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:113:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
108 |     /// the swipe-Leave action; cleared via `unhideRoom(jid:)` on
109 |     /// re-invite.
110 |     public func hideRoom(jid: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
111 |         let bareJID = jid.components(separatedBy: "/").first ?? jid
112 |         hiddenRoomJIDs.insert(bareJID)
113 |         rooms.removeValue(forKey: bareJID)
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
114 |         if activeRoomJID == bareJID {
115 |             activeRoomJID = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:115:13: error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
108 |     /// the swipe-Leave action; cleared via `unhideRoom(jid:)` on
109 |     /// re-invite.
110 |     public func hideRoom(jid: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
111 |         let bareJID = jid.components(separatedBy: "/").first ?? jid
112 |         hiddenRoomJIDs.insert(bareJID)
113 |         rooms.removeValue(forKey: bareJID)
114 |         if activeRoomJID == bareJID {
115 |             activeRoomJID = nil
    |             |- error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
116 |         }
117 |         saveToCache()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:125:12: error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
121 |     /// XMPP broadcasts reach the UI again and the room reappears in
122 |     /// the list.
123 |     public func unhideRoom(jid: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
124 |         let bareJID = jid.components(separatedBy: "/").first ?? jid
125 |         if hiddenRoomJIDs.remove(bareJID) != nil {
    |            |- error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
    |            `- note: add 'if #available' version check
126 |             saveToCache()
127 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:192:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
129 |
130 |     /// Update room
131 |     public func updateRoom(jid: String, updates: PartialRoomUpdate) {
    |                 `- note: add '@available' attribute to enclosing instance method
132 |         guard var room = rooms[jid] else { return }
133 |
    :
190 |         }
191 |
192 |         rooms[jid] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
193 |         saveToCache()
194 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:198:9: error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
195 |
196 |     /// Set active room
197 |     public func setActiveRoom(_ jid: String?) {
    |                 `- note: add '@available' attribute to enclosing instance method
198 |         activeRoomJID = jid
    |         |- error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
199 |         saveToCache()
200 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:234:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
209 |
210 |     /// Add message to room
211 |     public func addMessage(_ message: Message, toRoomJID roomJID: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
212 |         guard var room = rooms[roomJID] else { return }
213 |
    :
232 |         room.lastMessageTimestamp = message.timestamp
233 |
234 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
235 |         saveToCache()
236 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:242:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
237 |
238 |     /// Set room messages
239 |     public func setRoomMessages(roomJID: String, messages: [Message]) {
    |                 `- note: add '@available' attribute to enclosing instance method
240 |         guard var room = rooms[roomJID] else { return }
241 |         room.messages = messages.sorted { ($0.timestamp ?? 0) < ($1.timestamp ?? 0) }
242 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
243 |         saveToCache()
244 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:295:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
252 |     /// reference this id don't dangle. Media-side fields and reactions
253 |     /// are cleared so the placeholder doesn't show stale attachments.
254 |     public func deleteMessage(roomJID: String, messageId: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
255 |         guard var room = rooms[roomJID],
256 |               let index = room.messages.firstIndex(where: { $0.id == messageId }) else {
    :
293 |             wasEdited: original.wasEdited
294 |         )
295 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
296 |         saveToCache()
297 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:342:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
298 |
299 |     /// Update message in room
300 |     public func updateMessage(roomJID: String, messageId: String, updates: PartialMessageUpdate) {
    |                 `- note: add '@available' attribute to enclosing instance method
301 |         guard var room = rooms[roomJID],
302 |               let index = room.messages.firstIndex(where: { $0.id == messageId }) else {
    :
340 |
341 |         room.messages[index] = updatedMessage
342 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
343 |         saveToCache()
344 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:376:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
347 |
348 |     /// Set reactions on a message
349 |     public func setReactions(
    |                 `- note: add '@available' attribute to enclosing instance method
350 |         roomJID: String,
351 |         messageId: String,
    :
374 |
375 |         room.messages[index] = message
376 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
377 |         saveToCache()
378 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:384:9: error: setter for 'editAction' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
381 |
382 |     /// Set edit action
383 |     public func setEditAction(_ action: EditAction?) {
    |                 `- note: add '@available' attribute to enclosing instance method
384 |         editAction = action
    |         |- error: setter for 'editAction' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
385 |     }
386 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:389:9: error: setter for 'editAction' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
386 |
387 |     /// Clear edit action
388 |     public func clearEditAction() {
    |                 `- note: add '@available' attribute to enclosing instance method
389 |         editAction = nil
    |         |- error: setter for 'editAction' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
390 |     }
391 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:398:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
393 |
394 |     /// Set last viewed timestamp for a room
395 |     public func setLastViewedTimestamp(roomJID: String, timestamp: Int64) {
    |                 `- note: add '@available' attribute to enclosing instance method
396 |         guard var room = rooms[roomJID] else { return }
397 |         room.lastViewedTimestamp = timestamp
398 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
399 |         saveToCache()
400 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:408:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
403 |
404 |     /// Update unread count for a room
405 |     public func updateUnreadCount(roomJID: String, count: Int) {
    |                 `- note: add '@available' attribute to enclosing instance method
406 |         guard var room = rooms[roomJID] else { return }
407 |         room.unreadMessages = count
408 |         rooms[roomJID] = room
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
409 |         saveToCache()
410 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:430:17: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
421 |     /// list view models don't always eagerly hydrate `room.messages` from
422 |     /// cache, but the cache itself is always up to date.
423 |     public func recomputeUnreadForRoom(jid: String, currentUserLocal: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
424 |         guard var room = rooms[jid] else { return }
425 |
    :
428 |             if room.unreadMessages != 0 {
429 |                 room.unreadMessages = 0
430 |                 rooms[jid] = room
    |                 |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |                 `- note: add 'if #available' version check
431 |                 saveToCache()
432 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:489:13: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
421 |     /// list view models don't always eagerly hydrate `room.messages` from
422 |     /// cache, but the cache itself is always up to date.
423 |     public func recomputeUnreadForRoom(jid: String, currentUserLocal: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
424 |         guard var room = rooms[jid] else { return }
425 |
    :
487 |         if room.unreadMessages != unread {
488 |             room.unreadMessages = unread
489 |             rooms[jid] = room
    |             |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
490 |             saveToCache()
491 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:557:13: error: setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
552 |     }
553 |
554 |     private func loadFromCache() {
    |                  `- note: add '@available' attribute to enclosing instance method
555 |         if let data = UserDefaults.standard.data(forKey: "ethora_room_store"),
556 |            let decoded = try? JSONDecoder().decode([String: Room].self, from: data) {
557 |             rooms = decoded
    |             |- error: setter for 'rooms' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
558 |         }
559 |         if let hiddenData = UserDefaults.standard.data(forKey: "ethora_room_store_hidden"),
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:561:13: error: setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
552 |     }
553 |
554 |     private func loadFromCache() {
    |                  `- note: add '@available' attribute to enclosing instance method
555 |         if let data = UserDefaults.standard.data(forKey: "ethora_room_store"),
556 |            let decoded = try? JSONDecoder().decode([String: Room].self, from: data) {
    :
559 |         if let hiddenData = UserDefaults.standard.data(forKey: "ethora_room_store_hidden"),
560 |            let decodedHidden = try? JSONDecoder().decode(Set<String>.self, from: hiddenData) {
561 |             hiddenRoomJIDs = decodedHidden
    |             |- error: setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
562 |         }
563 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:567:9: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
    |         |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
568 |         activeRoomJID = nil
569 |         editAction = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:568:9: error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
    |         |- error: setter for 'activeRoomJID' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
569 |         editAction = nil
570 |         usersSet.removeAll()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:569:9: error: setter for 'editAction' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
569 |         editAction = nil
    |         |- error: setter for 'editAction' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
570 |         usersSet.removeAll()
571 |         reportRoom = ReportRoomState()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:570:9: error: cannot pass as inout because setter for 'usersSet' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
569 |         editAction = nil
570 |         usersSet.removeAll()
    |         |- error: cannot pass as inout because setter for 'usersSet' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
571 |         reportRoom = ReportRoomState()
572 |         hiddenRoomJIDs.removeAll()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:571:9: error: setter for 'reportRoom' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
569 |         editAction = nil
570 |         usersSet.removeAll()
571 |         reportRoom = ReportRoomState()
    |         |- error: setter for 'reportRoom' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
572 |         hiddenRoomJIDs.removeAll()
573 |         UserDefaults.standard.removeObject(forKey: "ethora_room_store")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/RoomStore.swift:572:9: error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class RoomStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = RoomStore()
 14 |
    :
564 |
565 |     /// Clear all rooms
566 |     public func clearAll() {
    |                 `- note: add '@available' attribute to enclosing instance method
567 |         rooms.removeAll()
568 |         activeRoomJID = nil
    :
570 |         usersSet.removeAll()
571 |         reportRoom = ReportRoomState()
572 |         hiddenRoomJIDs.removeAll()
    |         |- error: cannot pass as inout because setter for 'hiddenRoomJIDs' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
573 |         UserDefaults.standard.removeObject(forKey: "ethora_room_store")
574 |         UserDefaults.standard.removeObject(forKey: "ethora_room_store_hidden")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:15:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
 15 |     @Published public var currentUser: User?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 16 |     @Published public var token: String?
 17 |     @Published public var refreshToken: String?
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:16:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
 15 |     @Published public var currentUser: User?
 16 |     @Published public var token: String?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 17 |     @Published public var refreshToken: String?
 18 |     @Published public var isAuthenticated: Bool = false
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:17:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
 15 |     @Published public var currentUser: User?
 16 |     @Published public var token: String?
 17 |     @Published public var refreshToken: String?
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:18:6: error: 'Published' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 16 |     @Published public var token: String?
 17 |     @Published public var refreshToken: String?
 18 |     @Published public var isAuthenticated: Bool = false
    |      `- error: 'Published' is only available in macOS 10.15 or newer
 19 |
 20 |     private init() {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:12:25: error: 'ObservableObject' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              |          `- error: 'ObservableObject' is only available in macOS 10.15 or newer
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
<unknown>:0: error: cannot convert value of type 'KeyPath<UserStore, User?>' to expected argument type 'ReferenceWritableKeyPath<UserStore, User?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<UserStore, String?>' to expected argument type 'ReferenceWritableKeyPath<UserStore, String?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<UserStore, String?>' to expected argument type 'ReferenceWritableKeyPath<UserStore, String?>'
<unknown>:0: error: cannot convert value of type 'KeyPath<UserStore, Bool>' to expected argument type 'ReferenceWritableKeyPath<UserStore, Bool>'
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:26:13: error: setter for 'token' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
 20 |     private init() {
    |             `- note: add '@available' attribute to enclosing initializer
 21 |         // Load from defaults if available
 22 |         if let savedToken = UserDefaults.standard.string(forKey: "ethora_user_token"),
    :
 24 |            let savedUserData = UserDefaults.standard.data(forKey: "ethora_user_data"),
 25 |            let user = try? JSONDecoder().decode(User.self, from: savedUserData) {
 26 |             self.token = savedToken
    |             |- error: setter for 'token' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 27 |             self.refreshToken = savedRefreshToken
 28 |             self.currentUser = user
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:27:13: error: setter for 'refreshToken' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
 20 |     private init() {
    |             `- note: add '@available' attribute to enclosing initializer
 21 |         // Load from defaults if available
 22 |         if let savedToken = UserDefaults.standard.string(forKey: "ethora_user_token"),
    :
 25 |            let user = try? JSONDecoder().decode(User.self, from: savedUserData) {
 26 |             self.token = savedToken
 27 |             self.refreshToken = savedRefreshToken
    |             |- error: setter for 'refreshToken' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 28 |             self.currentUser = user
 29 |             self.isAuthenticated = true
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:28:13: error: setter for 'currentUser' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
 20 |     private init() {
    |             `- note: add '@available' attribute to enclosing initializer
 21 |         // Load from defaults if available
 22 |         if let savedToken = UserDefaults.standard.string(forKey: "ethora_user_token"),
    :
 26 |             self.token = savedToken
 27 |             self.refreshToken = savedRefreshToken
 28 |             self.currentUser = user
    |             |- error: setter for 'currentUser' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 29 |             self.isAuthenticated = true
 30 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:29:13: error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 18 |     @Published public var isAuthenticated: Bool = false
 19 |
 20 |     private init() {
    |             `- note: add '@available' attribute to enclosing initializer
 21 |         // Load from defaults if available
 22 |         if let savedToken = UserDefaults.standard.string(forKey: "ethora_user_token"),
    :
 27 |             self.refreshToken = savedRefreshToken
 28 |             self.currentUser = user
 29 |             self.isAuthenticated = true
    |             |- error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 30 |         }
 31 |     }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:54:9: error: setter for 'currentUser' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 32 |
 33 |     /// Set user data from login response
 34 |     public func setUser(from loginResponse: AuthAPI.LoginResponse) {
    |                 `- note: add '@available' attribute to enclosing instance method
 35 |         // Convert UserResponse to User
 36 |         let user = User(
    :
 52 |         )
 53 |
 54 |         self.currentUser = user
    |         |- error: setter for 'currentUser' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 55 |         self.token = loginResponse.token
 56 |         self.refreshToken = loginResponse.refreshToken
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:55:9: error: setter for 'token' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 32 |
 33 |     /// Set user data from login response
 34 |     public func setUser(from loginResponse: AuthAPI.LoginResponse) {
    |                 `- note: add '@available' attribute to enclosing instance method
 35 |         // Convert UserResponse to User
 36 |         let user = User(
    :
 53 |
 54 |         self.currentUser = user
 55 |         self.token = loginResponse.token
    |         |- error: setter for 'token' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 56 |         self.refreshToken = loginResponse.refreshToken
 57 |         self.isAuthenticated = true
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:56:9: error: setter for 'refreshToken' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 32 |
 33 |     /// Set user data from login response
 34 |     public func setUser(from loginResponse: AuthAPI.LoginResponse) {
    |                 `- note: add '@available' attribute to enclosing instance method
 35 |         // Convert UserResponse to User
 36 |         let user = User(
    :
 54 |         self.currentUser = user
 55 |         self.token = loginResponse.token
 56 |         self.refreshToken = loginResponse.refreshToken
    |         |- error: setter for 'refreshToken' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 57 |         self.isAuthenticated = true
 58 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:57:9: error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 32 |
 33 |     /// Set user data from login response
 34 |     public func setUser(from loginResponse: AuthAPI.LoginResponse) {
    |                 `- note: add '@available' attribute to enclosing instance method
 35 |         // Convert UserResponse to User
 36 |         let user = User(
    :
 55 |         self.token = loginResponse.token
 56 |         self.refreshToken = loginResponse.refreshToken
 57 |         self.isAuthenticated = true
    |         |- error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 58 |
 59 |         // Persist to UserDefaults
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:71:9: error: setter for 'token' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 68 |
 69 |     /// Update tokens after refresh
 70 |     public func updateTokens(token: String, refreshToken: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
 71 |         self.token = token
    |         |- error: setter for 'token' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 72 |         self.refreshToken = refreshToken
 73 |         UserDefaults.standard.set(token, forKey: "ethora_user_token")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:72:9: error: setter for 'refreshToken' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 68 |
 69 |     /// Update tokens after refresh
 70 |     public func updateTokens(token: String, refreshToken: String) {
    |                 `- note: add '@available' attribute to enclosing instance method
 71 |         self.token = token
 72 |         self.refreshToken = refreshToken
    |         |- error: setter for 'refreshToken' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 73 |         UserDefaults.standard.set(token, forKey: "ethora_user_token")
 74 |         UserDefaults.standard.set(refreshToken, forKey: "ethora_user_refresh_token")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:81:9: error: setter for 'currentUser' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
    |         |- error: setter for 'currentUser' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 82 |         self.token = nil
 83 |         self.refreshToken = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:82:9: error: setter for 'token' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
    |         |- error: setter for 'token' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 83 |         self.refreshToken = nil
 84 |         self.isAuthenticated = false
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:83:9: error: setter for 'refreshToken' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
 83 |         self.refreshToken = nil
    |         |- error: setter for 'refreshToken' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 84 |         self.isAuthenticated = false
 85 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:84:9: error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
 83 |         self.refreshToken = nil
 84 |         self.isAuthenticated = false
    |         |- error: setter for 'isAuthenticated' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 85 |
 86 |         UserDefaults.standard.removeObject(forKey: "ethora_user_token")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:91:9: error: 'Task' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
    :
 89 |
 90 |         // Clear message cache on logout
 91 |         Task { @MainActor in
    |         |- error: 'Task' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 92 |             MessageCache.shared.clearAll()
 93 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:91:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 10 |
 11 | @MainActor
 12 | public class UserStore: ObservableObject {
    |              `- note: add '@available' attribute to enclosing class
 13 |     public static let shared = UserStore()
 14 |
    :
 78 |     /// Clear user data (logout)
 79 |     /// This removes all cached user data and tokens
 80 |     public func clearUser() {
    |                 `- note: add '@available' attribute to enclosing instance method
 81 |         self.currentUser = nil
 82 |         self.token = nil
    :
 89 |
 90 |         // Clear message cache on logout
 91 |         Task { @MainActor in
    |         |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 92 |             MessageCache.shared.clearAll()
 93 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Store/UserStore.swift:132:13: warning: no 'async' operations occur within 'await' expression
130 |
131 |             // Save to UserStore
132 |             await UserStore.shared.setUser(from: loginResponse)
    |             `- warning: no 'async' operations occur within 'await' expression
133 |
134 |             print("✅ JWT autologin complete! User authenticated.")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/FormatHelpers.swift:17:9: warning: variable 'uniqueUsers' was never mutated; consider changing to 'let' constant
15 |
16 | public func extractUniqueMembersFromRooms(_ rooms: [Room]) -> [User] {
17 |     var uniqueUsers: [String: User] = [:]
   |         `- warning: variable 'uniqueUsers' was never mutated; consider changing to 'let' constant
18 |
19 |     for room in rooms {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/FormatHelpers.swift:19:9: warning: immutable value 'room' was never used; consider replacing with '_' or removing it [#no-usage]
17 |     var uniqueUsers: [String: User] = [:]
18 |
19 |     for room in rooms {
   |         `- warning: immutable value 'room' was never used; consider replacing with '_' or removing it [#no-usage]
20 |         // Extract users from room members if available
21 |         // This is a placeholder - actual implementation depends on Room structure
Fetching https://github.com/daltoniam/Starscream.git
[1/5112] Fetching starscream
Fetched https://github.com/daltoniam/Starscream.git from cache (1.28s)
Computing version for https://github.com/daltoniam/Starscream.git
Computed https://github.com/daltoniam/Starscream.git at 4.0.8 (4.01s)
Creating working copy for https://github.com/daltoniam/Starscream.git
Working copy of https://github.com/daltoniam/Starscream.git resolved at 4.0.8
warning: 'starscream': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/admin/builder/spi-builder-workspace/.build/checkouts/Starscream/Sources/Info.plist
BUILD FAILURE 6.2 macosSpm