Memory optimization: - Add onDisappear cleanup for repeatForever animations in LockScreenView - Add onDisappear cleanup for animations in FeelsSubscriptionStoreView - Add onDisappear cleanup in AddMoodHeaderView and PaywallPreviewSettingsView Debug improvements: - Add test data and clear data buttons to Settings (debug builds only) TipKit changes: - Remove ControlCenterTip (unused) - Add TipKit-Tips.md documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.6 KiB
TipKit Tips Documentation
This document describes all TipKit tips implemented in the Feels app, including their display conditions and locations.
Overview
Tips are managed by TipsManager (singleton) and configured with:
- Display Frequency: Daily
- Datastore Location: Application default
Tips
1. CustomizeLayoutTip
Title: "Personalize Your Experience"
Message: "Tap here to customize mood icons, colors, and layouts."
Icon: paintbrush
Display Conditions: Always eligible (no rules)
Location: CustomizeContentView (top of the Customize tab in Settings)
2. AIInsightsTip
Title: "Discover AI Insights"
Message: "Get personalized insights about your mood patterns powered by Apple Intelligence."
Icon: brain
Display Conditions:
- User has logged at least 7 moods
Parameter: hasLoggedMoods: Int (incremented via TipsManager.shared.onMoodLogged())
Location: InsightsView
3. SiriShortcutTip
Title: "Use Siri to Log Moods"
Message: "Say 'Hey Siri, log my mood as great in Feels' for hands-free logging."
Icon: mic.fill
Display Conditions:
- User has logged at least 3 moods
Parameter: moodLogCount: Int (incremented via TipsManager.shared.onMoodLogged())
Location: SettingsContentView (Features section header, via .siriShortcutTip())
4. HealthKitSyncTip
Title: "Sync with Apple Health"
Message: "Connect to Apple Health to see your mood data alongside sleep, exercise, and more."
Icon: heart.fill
Display Conditions:
- User has viewed the Settings screen
Parameter: hasSeenSettings: Bool (set via TipsManager.shared.onSettingsViewed())
Location: SettingsContentView (Health Kit toggle, via .healthKitSyncTip())
5. WidgetVotingTip
Title: "Vote from Your Home Screen"
Message: "Add the Mood Vote widget to quickly log your mood without opening the app."
Icon: square.grid.2x2
Display Conditions:
- User has been using the app for at least 2 days
Parameter: daysUsingApp: Int (updated via TipsManager.shared.updateDaysUsingApp(_:))
Location: DayView
6. TimeViewTip
Title: "View Your History"
Message: "Switch between Day, Month, and Year views to see your mood patterns over time."
Icon: calendar
Display Conditions: Always eligible (no rules)
Location: DayView
7. MoodStreakTip
Title: "Build Your Streak!"
Message: "Log your mood daily to build a streak. Consistency helps you understand your patterns."
Icon: flame.fill
Display Conditions:
- User has a current streak of at least 3 days
Parameter: currentStreak: Int (updated via TipsManager.shared.updateStreak(_:))
Location: DayView
TipsManager API
// Configure tips (call on app launch)
TipsManager.shared.configure()
// Reset all tips (for testing)
TipsManager.shared.resetAllTips()
// Update parameters
TipsManager.shared.onMoodLogged() // Increments mood log count
TipsManager.shared.onSettingsViewed() // Marks settings as viewed
TipsManager.shared.updateDaysUsingApp(_:) // Updates days using app
TipsManager.shared.updateStreak(_:) // Updates current streak
View Modifiers
Tips can be attached to views using these convenience modifiers:
.customizeLayoutTip()
.aiInsightsTip()
.siriShortcutTip()
.healthKitSyncTip()
.widgetVotingTip()
.timeViewTip()
.moodStreakTip()
Files
- Definition:
Shared/FeelsTips.swift - Manager:
TipsManagerclass in same file - Configuration: Called in
FeelsApp.swift