diff --git a/Jarvis/Models/Models.swift b/Jarvis/Models/Models.swift index aa6fc2f..1b1a64b 100644 --- a/Jarvis/Models/Models.swift +++ b/Jarvis/Models/Models.swift @@ -170,6 +170,9 @@ final class CachedStory { var headline: String var summary: String var topic: String + /// Canonical backend tags, so offline pill filtering stays accurate. + /// Defaulted for lightweight migration of existing cached rows. + var tags: [String] = [] var signalScore: Int var sourceCount: Int var consensus: String? @@ -182,6 +185,7 @@ final class CachedStory { self.headline = summary.headline self.summary = summary.summary self.topic = summary.topic + self.tags = summary.tags ?? [] self.signalScore = summary.signalScore self.sourceCount = summary.sourceCount self.consensus = summary.consensus diff --git a/Jarvis/Views/Home/SignalFeedView.swift b/Jarvis/Views/Home/SignalFeedView.swift index 68a639e..659de7d 100644 --- a/Jarvis/Views/Home/SignalFeedView.swift +++ b/Jarvis/Views/Home/SignalFeedView.swift @@ -466,6 +466,7 @@ struct SignalFeedView: View { if let found = existing?.first { found.signalScore = summary.signalScore found.sourceCount = summary.sourceCount + found.tags = summary.tags ?? [] found.updatedAt = summary.updatedAt } else { modelContext.insert(CachedStory(from: summary)) @@ -483,7 +484,7 @@ extension StorySummary { headline: cached.headline, summary: cached.summary, topic: cached.topic, - tags: nil, + tags: cached.tags, signalScore: cached.signalScore, scoreBreakdown: ScoreBreakdown(sourceAuthority: 0, freshness: 0, localRelevance: 0, crossSourceConfirmation: 0, topicImportance: 0),