From 2f72d3d0736a6fac306d4e5d9406cb33b08bc2a0 Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Fri, 17 Jul 2026 16:41:52 -0500 Subject: Add persistence, multi-repo watch list, and background polling Closes #1-#5 (milestones 0.2.0, 0.3.0). - Flat JSON persistence (PersistedState/PersistenceStore) in Application Support, chosen over SwiftData since the dataset is small and the existing model types are plain Codable value types passed across actor boundaries. - Repo watch list, per-event seen-state, and last-fetch timestamps are now persisted instead of living only in memory. - Configurable minimum severity filter, applied from a cached raw fetch so changing it doesn't require a network round-trip. - Multi-repo support: SecurityEventStore now loops over a persisted watch list instead of one hardcoded repo, with an in-popover UI (gear button) to add/remove repos. - Background polling every 15 minutes, layered on top of the existing refresh-on-open and manual refresh, so the feed stays fresh even while the popover is closed. --- octosentry/SecurityEventSeverity.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'octosentry/SecurityEventSeverity.swift') diff --git a/octosentry/SecurityEventSeverity.swift b/octosentry/SecurityEventSeverity.swift index f975639..102c14b 100644 --- a/octosentry/SecurityEventSeverity.swift +++ b/octosentry/SecurityEventSeverity.swift @@ -5,7 +5,7 @@ import SwiftUI -enum SecurityEventSeverity: Int, Codable, Comparable, CaseIterable { +nonisolated enum SecurityEventSeverity: Int, Codable, Comparable, CaseIterable, Hashable { case low case medium case high -- cgit v1.2.3