Update signing configuration to use 88oakapps.feels identifiers

- Update App Group IDs from group.com.tt.feels to group.com.88oakapps.feels
- Update iCloud container IDs from iCloud.com.tt.feels to iCloud.com.88oakapps.feels
- Sync code constants with entitlements across all targets (iOS, Watch, Widget)
- Update documentation in CLAUDE.md and PROJECT_OVERVIEW.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-01-29 10:01:49 -06:00
parent b6290403b0
commit 810ac2d649
28 changed files with 12289 additions and 13332 deletions

View File

@@ -21,6 +21,8 @@ struct SettingsContentView: View {
@State private var showTrialDatePicker = false
@State private var isExportingWidgets = false
@State private var widgetExportPath: URL?
@State private var isDeletingHealthKitData = false
@State private var healthKitDeleteResult: String?
@StateObject private var healthService = HealthService.shared
@AppStorage(UserDefaultsStore.Keys.firstLaunchDate.rawValue, store: GroupUserDefaults.groupDefaults)
@@ -62,6 +64,7 @@ struct SettingsContentView: View {
tipsPreviewButton
testNotificationsButton
exportWidgetsButton
deleteHealthKitDataButton
clearDataButton
#endif
@@ -475,6 +478,58 @@ struct SettingsContentView: View {
.cornerRadius(Constants.viewsCornerRaidus, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
}
private var deleteHealthKitDataButton: some View {
ZStack {
theme.currentTheme.secondaryBGColor
Button {
isDeletingHealthKitData = true
healthKitDeleteResult = nil
Task {
do {
let count = try await HealthKitManager.shared.deleteAllMoods()
healthKitDeleteResult = "✓ Deleted \(count) records"
} catch {
healthKitDeleteResult = "✗ Error: \(error.localizedDescription)"
}
isDeletingHealthKitData = false
}
} label: {
HStack(spacing: 12) {
if isDeletingHealthKitData {
ProgressView()
.frame(width: 32)
} else {
Image(systemName: "heart.slash.fill")
.font(.title2)
.foregroundColor(.red)
.frame(width: 32)
}
VStack(alignment: .leading, spacing: 2) {
Text("Delete HealthKit Data")
.foregroundColor(textColor)
if let result = healthKitDeleteResult {
Text(result)
.font(.caption)
.foregroundColor(result.contains("") ? .green : .red)
} else {
Text("Remove all State of Mind records")
.font(.caption)
.foregroundStyle(.secondary)
}
}
Spacer()
}
.padding()
}
.disabled(isDeletingHealthKitData)
}
.fixedSize(horizontal: false, vertical: true)
.cornerRadius(Constants.viewsCornerRaidus, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
}
private var clearDataButton: some View {
ZStack {
theme.currentTheme.secondaryBGColor