Add AI-powered mental wellness features: Reflection Companion, Pattern Tags, Weekly Digest

Three new Foundation Models features to deepen user engagement with mental wellness:

1. AI Reflection Companion — personalized feedback after completing guided reflections,
   referencing the user's actual words with personality-pack-adapted tone
2. Mood Pattern Tags — auto-extracts theme tags (work, family, stress, etc.) from notes
   and reflections, displayed as colored pills on entries
3. Weekly Emotional Digest — BGTask-scheduled Sunday digest with headline, summary,
   highlight, and intention; shown as card in Insights tab with notification

All features: on-device (zero cost), premium-gated, iOS 26+ with graceful degradation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-04-04 00:47:28 -05:00
parent 43ff239781
commit ab8d8fbdc0
18 changed files with 1076 additions and 3 deletions

View File

@@ -24,6 +24,8 @@ struct InsightsView: View {
@EnvironmentObject var iapManager: IAPManager
@State private var showSubscriptionStore = false
@State private var selectedTab: InsightsTab = .insights
@State private var weeklyDigest: WeeklyDigest?
@State private var showDigest = true
var body: some View {
VStack(spacing: 0) {
@@ -94,15 +96,34 @@ struct InsightsView: View {
.onAppear {
AnalyticsManager.shared.trackScreen(.insights)
viewModel.generateInsights()
loadWeeklyDigest()
}
.padding(.top)
}
// MARK: - Insights Content
private func loadWeeklyDigest() {
if #available(iOS 26, *), !iapManager.shouldShowPaywall {
if let digest = FoundationModelsDigestService.shared.loadLatestDigest(),
digest.isFromCurrentWeek,
!WeeklyDigest.isDismissed(for: digest) {
weeklyDigest = digest
showDigest = true
}
}
}
private var insightsContent: some View {
ScrollView {
VStack(spacing: 20) {
// Weekly Digest Card
if showDigest, let digest = weeklyDigest {
WeeklyDigestCardView(digest: digest) {
showDigest = false
}
}
// This Month Section
InsightsSectionView(
title: "This Month",