Add task completion animations, subscription trials, and quiet debug console

- Completion animations: play user-selected animation on task card after completing,
  with DataManager guard to prevent race condition during animation playback.
  Works in both AllTasksView and ResidenceDetailView. Animation preference
  persisted via @AppStorage and configurable from Settings.
- Subscription: add trial fields (trialStart, trialEnd, trialActive) and
  subscriptionSource to model, cross-platform purchase guard, trial banner
  in upgrade prompt, and platform-aware subscription management in profile.
- Analytics: disable PostHog SDK debug logging and remove console print
  statements to reduce debug console noise.
- Documents: remove redundant nested do-catch blocks in ViewModel wrapper.
- Widgets: add debounced timeline reloads and thread-safe file I/O queue.
- Onboarding: fix animation leak on disappear, remove unused state vars.
- Remove unused files (ContentView, StateFlowExtensions, CustomView).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-03-05 11:35:08 -06:00
parent c5f2bee83f
commit 98dbacdea0
73 changed files with 1770 additions and 529 deletions
+41 -6
View File
@@ -137,8 +137,15 @@
"4.9" : {
},
"7-day free trial, then %@" : {
"7-day free trial, then %@%@" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "7-day free trial, then %1$@%2$@"
}
}
}
},
"ABC123" : {
@@ -171,10 +178,6 @@
"comment" : "A link that directs users to log in if they already have an account.",
"isCommentAutoGenerated" : true
},
"Animation Testing" : {
"comment" : "The title of a view that tests different animations.",
"isCommentAutoGenerated" : true
},
"Animation Type" : {
"comment" : "A label above the picker for selecting an animation type.",
"isCommentAutoGenerated" : true
@@ -5251,6 +5254,10 @@
"comment" : "A button label that says \"Complete Task\".",
"isCommentAutoGenerated" : true
},
"Completion Animation" : {
"comment" : "The title of the view.",
"isCommentAutoGenerated" : true
},
"Completion Photos" : {
"comment" : "The title for the view that shows a user's photo submissions.",
"isCommentAutoGenerated" : true
@@ -17334,6 +17341,9 @@
"Free" : {
"comment" : "A label indicating a free feature.",
"isCommentAutoGenerated" : true
},
"Free trial ends %@" : {
},
"Generate Code" : {
"comment" : "A button label that generates a new invitation code.",
@@ -17430,6 +17440,16 @@
},
"Logging in..." : {
},
"Manage at casera.app" : {
},
"Manage your subscription at casera.app" : {
"comment" : "A text instruction that directs them to manage their subscription on casera.app.",
"isCommentAutoGenerated" : true
},
"Manage your subscription on your Android device" : {
},
"Mark Task In Progress" : {
"comment" : "A button label that says \"Mark Task In Progress\".",
@@ -17490,6 +17510,10 @@
"comment" : "A button that dismisses the success dialog.",
"isCommentAutoGenerated" : true
},
"Open casera.app" : {
"comment" : "A button label that opens the casera.app settings page.",
"isCommentAutoGenerated" : true
},
"or" : {
},
@@ -30112,6 +30136,10 @@
},
"You're all set up!" : {
},
"You're already subscribed" : {
"comment" : "A message displayed when a user is already subscribed to the app.",
"isCommentAutoGenerated" : true
},
"Your data will be synced across devices" : {
@@ -30123,6 +30151,13 @@
"Your home maintenance companion" : {
"comment" : "The tagline for the app, describing its purpose.",
"isCommentAutoGenerated" : true
},
"Your subscription is managed on another platform." : {
"comment" : "A description of a user's subscription on an unspecified platform.",
"isCommentAutoGenerated" : true
},
"Your subscription is managed through Google Play on your Android device." : {
}
},
"version" : "1.1"