Rename iFeels to Feels across entire codebase

- Bundle IDs: com.tt.ifeel* → com.tt.feels*
- App Groups: group.com.tt.ifeel* → group.com.tt.feels*
- iCloud containers: iCloud.com.tt.ifeel* → iCloud.com.tt.feels*
- IAP product IDs: com.tt.ifeel.IAP.* → com.tt.feels.IAP.*
- URLs: ifeels.app → feels.app
- Logger subsystems and dispatch queues
- Product names and display names

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-01-01 11:57:44 -06:00
parent fa937793d9
commit e5656f47fd
27 changed files with 12693 additions and 12677 deletions

View File

@@ -9,7 +9,7 @@ import Foundation
import BackgroundTasks
class BGTask {
static let updateDBMissingID = "com.tt.ifeel.dbUpdateMissing"
static let updateDBMissingID = "com.tt.feels.dbUpdateMissing"
@MainActor
class func runFillInMissingDatesTask(task: BGProcessingTask) {

View File

@@ -14,7 +14,7 @@ class HealthKitManager: ObservableObject {
static let shared = HealthKitManager()
private let healthStore = HKHealthStore()
private let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "com.tt.ifeel", category: "HealthKit")
private let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "com.tt.feels", category: "HealthKit")
@Published var isAuthorized = false
@Published var authorizationError: Error?

View File

@@ -45,8 +45,8 @@ class IAPManager: ObservableObject {
static let subscriptionGroupID = "2CFE4C4F"
private let productIdentifiers: Set<String> = [
"com.tt.ifeel.IAP.subscriptions.monthly",
"com.tt.ifeel.IAP.subscriptions.yearly"
"com.tt.feels.IAP.subscriptions.monthly",
"com.tt.feels.IAP.subscriptions.yearly"
]
private let trialDays = 30

View File

@@ -15,7 +15,7 @@ import os.log
final class MoodLogger {
static let shared = MoodLogger()
private static let logger = Logger(subsystem: "com.tt.ifeel", category: "MoodLogger")
private static let logger = Logger(subsystem: "com.tt.feels", category: "MoodLogger")
/// Key for tracking the last date side effects were applied
private static let lastSideEffectsDateKey = "lastSideEffectsAppliedDate"

View File

@@ -11,7 +11,7 @@ import os.log
@MainActor
final class DataController: ObservableObject {
private static let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "com.tt.ifeel", category: "DataController")
private static let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "com.tt.feels", category: "DataController")
static let shared = DataController()
private(set) var container: ModelContainer

View File

@@ -20,7 +20,7 @@ final class ExtensionDataProvider {
static let shared = ExtensionDataProvider()
private static let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "com.tt.ifeel", category: "ExtensionDataProvider")
private static let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "com.tt.feels", category: "ExtensionDataProvider")
private var _container: ModelContainer?

View File

@@ -25,7 +25,7 @@ enum SharedModelContainerError: LocalizedError {
}
enum SharedModelContainer {
private static let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "com.tt.ifeel", category: "SharedModelContainer")
private static let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "com.tt.feels", category: "SharedModelContainer")
/// Creates a ModelContainer with the appropriate configuration for app group sharing
/// - Parameter useCloudKit: Whether to enable CloudKit sync (defaults to true)
@@ -107,9 +107,9 @@ enum SharedModelContainer {
/// CloudKit container identifier based on build configuration
static var cloudKitContainerID: String {
#if DEBUG
return "iCloud.com.tt.ifeelDebug"
return "iCloud.com.tt.feelsDebug"
#else
return "iCloud.com.tt.ifeel"
return "iCloud.com.tt.feels"
#endif
}

View File

@@ -10,8 +10,8 @@ import SwiftUI
import SwiftData
struct Constants {
static let groupShareId = "group.com.tt.ifeel"
static let groupShareIdDebug = "group.com.tt.ifeelDebug"
static let groupShareId = "group.com.tt.feels"
static let groupShareIdDebug = "group.com.tt.feelsDebug"
static var currentGroupShareId: String {
#if DEBUG

View File

@@ -29,6 +29,6 @@ enum AppLogger {
// MARK: - Private
private static var subsystem: String {
Bundle.main.bundleIdentifier ?? "com.tt.ifeel"
Bundle.main.bundleIdentifier ?? "com.tt.feels"
}
}

View File

@@ -13,7 +13,7 @@ final class ImageCache {
static let shared = ImageCache()
private let cache = NSCache<NSString, UIImage>()
private let queue = DispatchQueue(label: "com.tt.ifeel.imagecache", qos: .userInitiated)
private let queue = DispatchQueue(label: "com.tt.feels.imagecache", qos: .userInitiated)
private init() {
// Configure cache limits

View File

@@ -17,7 +17,7 @@ final class WatchConnectivityManager: NSObject, ObservableObject {
static let shared = WatchConnectivityManager()
private static let logger = Logger(subsystem: "com.tt.ifeel", category: "WatchConnectivity")
private static let logger = Logger(subsystem: "com.tt.feels", category: "WatchConnectivity")
private var session: WCSession?

View File

@@ -72,7 +72,7 @@ extension VoteMoodIntent: ForegroundContinuableIntent {}
#if WIDGET_EXTENSION
enum WidgetMoodSaver {
private static let logger = Logger(subsystem: "com.tt.ifeel.widget", category: "WidgetMoodSaver")
private static let logger = Logger(subsystem: "com.tt.feels.widget", category: "WidgetMoodSaver")
@MainActor
static func save(mood: Mood, date: Date) {

View File

@@ -683,7 +683,7 @@ struct SettingsContentView: View {
theme.currentTheme.secondaryBGColor
Button(action: {
EventLogger.log(event: "show_eula")
if let url = URL(string: "https://ifeels.app/eula.html") {
if let url = URL(string: "https://feels.app/eula.html") {
UIApplication.shared.open(url)
}
}, label: {
@@ -702,7 +702,7 @@ struct SettingsContentView: View {
theme.currentTheme.secondaryBGColor
Button(action: {
EventLogger.log(event: "show_privacy")
if let url = URL(string: "https://ifeels.app/privacy.html") {
if let url = URL(string: "https://feels.app/privacy.html") {
UIApplication.shared.open(url)
}
}, label: {
@@ -1367,7 +1367,7 @@ struct SettingsView: View {
theme.currentTheme.secondaryBGColor
Button(action: {
EventLogger.log(event: "show_eula")
openURL(URL(string: "https://ifeels.app/eula.html")!)
openURL(URL(string: "https://feels.app/eula.html")!)
}, label: {
Text(String(localized: "settings_view_show_eula"))
.foregroundColor(textColor)
@@ -1383,7 +1383,7 @@ struct SettingsView: View {
theme.currentTheme.secondaryBGColor
Button(action: {
EventLogger.log(event: "show_privacy")
openURL(URL(string: "https://ifeels.app/privacy.html")!)
openURL(URL(string: "https://feels.app/privacy.html")!)
}, label: {
Text(String(localized: "settings_view_show_privacy"))
.foregroundColor(textColor)