Sign the macOS app and keep its state in SwiftData with iCloud sync

This commit is contained in:
Ian Gulliver
2026-10-17 10:13:26 -07:00
parent d21215b442
commit 1808ca8be6
11 changed files with 195 additions and 36 deletions
+15 -5
View File
@@ -1,11 +1,11 @@
import Foundation
import Observation
import SwiftData
let taskTabs: [TaskTab] = [.transcript, .changes, .files, .terminal, .inbox, .reviews, .workflow, .project]
private let historyPage = 1000
private let leadPage = 50
private let visitsKey = "byre.visits"
struct TaskState {
enum Kind {
@@ -360,16 +360,26 @@ final class Store {
}
func lastVisits() -> [String: Double] {
UserDefaults.standard.dictionary(forKey: visitsKey) as? [String: Double] ?? [:]
fetchRecords(FetchDescriptor<VisitRecord>()).reduce(into: [:]) { visits, v in
visits[v.taskId] = max(visits[v.taskId] ?? 0, v.at)
}
}
private func markVisited(_ taskId: String?) {
guard let taskId else {
return
}
var visits = lastVisits()
visits[taskId] = Date().timeIntervalSince1970 * 1000
UserDefaults.standard.set(visits, forKey: visitsKey)
let at = Date().timeIntervalSince1970 * 1000
let records = fetchRecords(FetchDescriptor<VisitRecord>(predicate: #Predicate { $0.taskId == taskId }))
if records.isEmpty {
persistence.insert(VisitRecord(taskId: taskId, at: at))
} else {
records[0].at = at
for record in records.dropFirst() {
persistence.delete(record)
}
}
saveRecords()
}
func loadSummaryReads() async throws {