Rebrand entire project from Feels to Reflect

Complete rename across all bundle IDs, App Groups, CloudKit containers,
StoreKit product IDs, data store filenames, URL schemes, logger subsystems,
Swift identifiers, user-facing strings (7 languages), file names, directory
names, Xcode project, schemes, assets, and documentation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-02-26 11:47:16 -06:00
parent b1a54d2844
commit 0442eab1f8
380 changed files with 858 additions and 1077 deletions

2
.gitignore vendored
View File

@@ -77,4 +77,4 @@ Secrets.swift
# Screenshots and promo assets # Screenshots and promo assets
/screens/ /screens/
feels-promo/ reflect-promo/

View File

@@ -1,4 +1,4 @@
# Feels Agent Instructions # Reflect Agent Instructions
## XCUITest Workflows (Required) ## XCUITest Workflows (Required)

View File

@@ -1,4 +1,4 @@
# Feels # Reflect
iOS mood tracking app. Users rate their day on a 5-point scale (Horrible to Great) and view patterns via Day, Month, Year, and Insights views. Includes watchOS companion, widgets, Live Activities, and AI-powered insights. iOS mood tracking app. Users rate their day on a 5-point scale (Horrible to Great) and view patterns via Day, Month, Year, and Insights views. Includes watchOS companion, widgets, Live Activities, and AI-powered insights.
@@ -6,16 +6,16 @@ iOS mood tracking app. Users rate their day on a 5-point scale (Horrible to Grea
```bash ```bash
# Build # Build
xcodebuild -project Feels.xcodeproj -scheme "Feels (iOS)" -destination 'platform=iOS Simulator,name=iPhone 16 Pro' build xcodebuild -project Reflect.xcodeproj -scheme "Reflect (iOS)" -destination 'platform=iOS Simulator,name=iPhone 17 Pro' build
# Run all tests # Run all tests
xcodebuild -project Feels.xcodeproj -scheme "Feels (iOS)" -destination 'platform=iOS Simulator,name=iPhone 16 Pro' test xcodebuild -project Reflect.xcodeproj -scheme "Reflect (iOS)" -destination 'platform=iOS Simulator,name=iPhone 17 Pro' test
# Run a single test suite # Run a single test suite
xcodebuild -project Feels.xcodeproj -scheme "Feels (iOS)" -destination 'platform=iOS Simulator,name=iPhone 16 Pro' -only-testing:"Tests iOS/Tests_iOS" test xcodebuild -project Reflect.xcodeproj -scheme "Reflect (iOS)" -destination 'platform=iOS Simulator,name=iPhone 17 Pro' -only-testing:"Tests iOS/Tests_iOS" test
# Run a single test # Run a single test
xcodebuild -project Feels.xcodeproj -scheme "Feels (iOS)" -destination 'platform=iOS Simulator,name=iPhone 16 Pro' -only-testing:"Tests iOS/Tests_iOS/testDatesBetween" test xcodebuild -project Reflect.xcodeproj -scheme "Reflect (iOS)" -destination 'platform=iOS Simulator,name=iPhone 17 Pro' -only-testing:"Tests iOS/Tests_iOS/testDatesBetween" test
``` ```
## Architecture Overview ## Architecture Overview
@@ -236,7 +236,7 @@ DataController.shared.add(mood: .good, forDate: date, entryType: .listView)
### Startup Flow ### Startup Flow
1. `FeelsApp.init()` — Configure `AnalyticsManager`, register `BGTaskScheduler`, reset `FeelsTipsManager`, initialize `LiveActivityScheduler`, initialize `WatchConnectivityManager` 1. `ReflectApp.init()` — Configure `AnalyticsManager`, register `BGTaskScheduler`, reset `ReflectTipsManager`, initialize `LiveActivityScheduler`, initialize `WatchConnectivityManager`
2. `MainTabView` receives `DataController.shared.container` as `modelContainer` 2. `MainTabView` receives `DataController.shared.container` as `modelContainer`
3. `IAPManager`, `BiometricAuthManager`, `HealthKitManager` injected as `@EnvironmentObject` 3. `IAPManager`, `BiometricAuthManager`, `HealthKitManager` injected as `@EnvironmentObject`
4. On `scenePhase` change to `.active``DataController.shared.refreshFromDisk()` picks up widget/watch changes 4. On `scenePhase` change to `.active``DataController.shared.refreshFromDisk()` picks up widget/watch changes
@@ -247,7 +247,9 @@ DataController.shared.add(mood: .good, forDate: date, entryType: .listView)
### Framework & Location ### Framework & Location
- **Framework**: XCTest - **Framework**: XCTest
- **Test directory**: `Tests iOS/` (iOS), `Tests macOS/` (macOS — template only) - **UI test directory**: `Tests iOS/` (XCUITest suites)
- **Unit test directory**: `ReflectTests/` (XCTest unit tests)
- **macOS tests**: `Tests macOS/` (template only)
- **File naming**: `{SuiteName}Tests.swift` - **File naming**: `{SuiteName}Tests.swift`
### UI Test Architecture (XCUITest) ### UI Test Architecture (XCUITest)
@@ -277,10 +279,10 @@ Mandatory UI test rules:
```bash ```bash
# Run one suite # Run one suite
xcodebuild -project Feels.xcodeproj -scheme "Feels (iOS)" -destination 'platform=iOS Simulator,name=iPhone 16 Pro' -only-testing:"Tests iOS/<SuiteName>" test xcodebuild -project Reflect.xcodeproj -scheme "Reflect (iOS)" -destination 'platform=iOS Simulator,name=iPhone 17 Pro' -only-testing:"Tests iOS/<SuiteName>" test
# Run all iOS UI tests # Run all iOS UI tests
xcodebuild -project Feels.xcodeproj -scheme "Feels (iOS)" -destination 'platform=iOS Simulator,name=iPhone 16 Pro' -only-testing:"Tests iOS" test xcodebuild -project Reflect.xcodeproj -scheme "Reflect (iOS)" -destination 'platform=iOS Simulator,name=iPhone 17 Pro' -only-testing:"Tests iOS" test
``` ```
### Unit Test Guidance ### Unit Test Guidance
@@ -343,7 +345,7 @@ When fixing a bug:
| Background Tasks | `BGTask` | System scheduler | System may not run task, task killed by system, insufficient time | | Background Tasks | `BGTask` | System scheduler | System may not run task, task killed by system, insufficient time |
| Apple Foundation Models | `FoundationModelsInsightService` | On-device AI | Model not available on device, generation failure, unexpected output | | Apple Foundation Models | `FoundationModelsInsightService` | On-device AI | Model not available on device, generation failure, unexpected output |
| PostHog | `AnalyticsManager` | Network | analytics.88oakapps.com unreachable, event queue overflow | | PostHog | `AnalyticsManager` | Network | analytics.88oakapps.com unreachable, event queue overflow |
| Deep Links | `FeelsApp.onOpenURL` | URL scheme `feels://` | Malformed URL, unknown host/path | | Deep Links | `ReflectApp.onOpenURL` | URL scheme `reflect://` | Malformed URL, unknown host/path |
| App Shortcuts / Siri | `AppShortcuts.swift` | SiriKit | Intent not recognized, missing parameter | | App Shortcuts / Siri | `AppShortcuts.swift` | SiriKit | Intent not recognized, missing parameter |
## Analytics ## Analytics
@@ -373,13 +375,16 @@ AnalyticsManager.shared.trackScreen(.day)
## Environment Configuration ## Environment Configuration
- **Debug**: Uses `iCloud.com.88oakapps.feels.debug` CloudKit container, `group.com.88oakapps.feels.debug` App Group, `Feels-Debug.store` filename - **Debug**: Uses `iCloud.com.88oakapps.reflect.debug` CloudKit container, `group.com.88oakapps.reflect.debug` App Group, `Reflect-Debug.store` filename
- **Production**: Uses `iCloud.com.88oakapps.feels` CloudKit container, `group.com.88oakapps.feels` App Group, `Feels.store` filename - **Production**: Uses `iCloud.com.88oakapps.reflect` CloudKit container, `group.com.88oakapps.reflect` App Group, `Reflect.store` filename
- **Toggle**: `#if DEBUG` preprocessor directive in `SharedModelContainer` and throughout codebase - **Toggle**: `#if DEBUG` preprocessor directive in `SharedModelContainer` and throughout codebase
- **StoreKit Testing**: `IAPManager.bypassSubscription` flag (DEBUG only) — set to `true` to bypass paywall during development - **StoreKit Testing**: `IAPManager.bypassSubscription` flag (DEBUG only) — set to `true` to bypass paywall during development
- **Subscription Group ID**: `21914363` - **Subscription Group ID**: `21914363`
- **Product IDs**: `com.88oakapps.feels.IAP.subscriptions.monthly`, `com.88oakapps.feels.IAP.subscriptions.yearly` - **Product IDs**: `com.88oakapps.reflect.IAP.subscriptions.monthly`, `com.88oakapps.reflect.IAP.subscriptions.yearly`
- **Trial**: 30-day free trial tracked via `firstLaunchDate` in `GroupUserDefaults` - **Trial**: 30-day free trial tracked via `firstLaunchDate` in `GroupUserDefaults`
- **URL Scheme**: `reflect://` (deep links: `reflect://subscribe`)
- **BGTask ID**: `com.88oakapps.reflect.dbUpdateMissing`
- **Logger Subsystem**: `com.88oakapps.reflect`
## Directory Conventions ## Directory Conventions
@@ -389,9 +394,10 @@ When adding new files:
- New models: `Shared/Models/` - New models: `Shared/Models/`
- New services/managers: `Shared/Services/` - New services/managers: `Shared/Services/`
- New persistence operations: `Shared/Persisence/DataController{OPERATION}.swift` (note directory typo) - New persistence operations: `Shared/Persisence/DataController{OPERATION}.swift` (note directory typo)
- New widget code: `FeelsWidget2/` - New widget code: `ReflectWidget/`
- New watch code: `Feels Watch App/` - New watch code: `Reflect Watch App/`
- New tests: `Tests iOS/` - New UI tests: `Tests iOS/`
- New unit tests: `ReflectTests/`
### Naming Conventions ### Naming Conventions
@@ -404,9 +410,10 @@ When adding new files:
## Localization ## Localization
- English: `en.lproj/Localizable.strings` - **Format**: String Catalogs (`Reflect/Localizable.xcstrings`)
- Spanish: `es.lproj/Localizable.strings` - **Languages**: English (en), German (de), Spanish (es), French (fr), Japanese (ja), Korean (ko), Portuguese-Brazil (pt-BR)
- Use `String(localized:)` for all user-facing strings - Use `String(localized:)` for all user-facing strings
- "Reflect" is a brand name — keep it untranslated in all languages
## Dependencies ## Dependencies

View File

@@ -39,7 +39,7 @@
"localizations" : [ "localizations" : [
], ],
"name" : "Feels Premium", "name" : "Reflect Premium",
"subscriptions" : [ "subscriptions" : [
{ {
"adHocOffers" : [ "adHocOffers" : [
@@ -95,7 +95,7 @@
"locale" : "ko" "locale" : "ko"
} }
], ],
"productID" : "com.88oakapps.feels.IAP.subscriptions.monthly", "productID" : "com.88oakapps.reflect.IAP.subscriptions.monthly",
"recurringSubscriptionPeriod" : "P1M", "recurringSubscriptionPeriod" : "P1M",
"referenceName" : "Monthly", "referenceName" : "Monthly",
"subscriptionGroupID" : "21914363", "subscriptionGroupID" : "21914363",
@@ -158,7 +158,7 @@
"locale" : "ko" "locale" : "ko"
} }
], ],
"productID" : "com.88oakapps.feels.IAP.subscriptions.yearly", "productID" : "com.88oakapps.reflect.IAP.subscriptions.yearly",
"recurringSubscriptionPeriod" : "P1Y", "recurringSubscriptionPeriod" : "P1Y",
"referenceName" : "Yearly", "referenceName" : "Yearly",
"subscriptionGroupID" : "21914363", "subscriptionGroupID" : "21914363",

View File

@@ -1,194 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>Feels (iOS).xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
</dict>
<key>Feels (macOS).xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>2</integer>
</dict>
<key>Feels Watch App.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>3</integer>
</dict>
<key>FeelsWidgetExtension.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
<key>PlaygroundChart (Playground) 1.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>7</integer>
</dict>
<key>PlaygroundChart (Playground) 10.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>13</integer>
</dict>
<key>PlaygroundChart (Playground) 11.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>14</integer>
</dict>
<key>PlaygroundChart (Playground) 12.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>15</integer>
</dict>
<key>PlaygroundChart (Playground) 13.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>16</integer>
</dict>
<key>PlaygroundChart (Playground) 14.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>17</integer>
</dict>
<key>PlaygroundChart (Playground) 2.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>8</integer>
</dict>
<key>PlaygroundChart (Playground) 3.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>7</integer>
</dict>
<key>PlaygroundChart (Playground) 4.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>8</integer>
</dict>
<key>PlaygroundChart (Playground) 5.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>9</integer>
</dict>
<key>PlaygroundChart (Playground) 6.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>2</integer>
</dict>
<key>PlaygroundChart (Playground) 7.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>10</integer>
</dict>
<key>PlaygroundChart (Playground) 8.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>11</integer>
</dict>
<key>PlaygroundChart (Playground) 9.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>12</integer>
</dict>
<key>PlaygroundChart (Playground).xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>6</integer>
</dict>
<key>Promises (Playground) 1.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>4</integer>
</dict>
<key>Promises (Playground) 2.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>5</integer>
</dict>
<key>Promises (Playground) 3.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>9</integer>
</dict>
<key>Promises (Playground) 4.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>10</integer>
</dict>
<key>Promises (Playground) 5.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>11</integer>
</dict>
<key>Promises (Playground).xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>2</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>1CD90AF4278C7DE0001C4FEA</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>1CD90B01278C7DE0001C4FEA</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>1CD90B44278C7E7A001C4FEA</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View File

@@ -1,21 +0,0 @@
//
// WidgetBundle.swift
// FeelsWidget
//
// Main widget bundle that registers all Feels widgets
//
import WidgetKit
import SwiftUI
@main
struct FeelsBundle: WidgetBundle {
var body: some Widget {
FeelsWidget()
// FeelsGraphicWidget()
FeelsIconWidget()
FeelsVoteWidget()
FeelsMoodControlWidget()
MoodStreakLiveActivity()
}
}

View File

@@ -1,8 +1,8 @@
# Feels - iOS Mood Tracking App # Reflect - iOS Mood Tracking App
## Overview ## Overview
**Feels** is a daily mood tracking iOS application that allows users to rate their emotional state each day on a 5-point scale (Horrible, Bad, Average, Good, Great) and visualize patterns over time through multiple view modes. **Reflect** is a daily mood tracking iOS application that allows users to rate their emotional state each day on a 5-point scale (Horrible, Bad, Average, Good, Great) and visualize patterns over time through multiple view modes.
## Core Features ## Core Features
@@ -24,7 +24,7 @@
### Project Structure ### Project Structure
``` ```
Feels/ Reflect/
├── Shared/ # Core app code ├── Shared/ # Core app code
│ ├── Models/ # Data models (Mood, Theme, MoodTintable, etc.) │ ├── Models/ # Data models (Mood, Theme, MoodTintable, etc.)
│ ├── Views/ # SwiftUI views organized by feature │ ├── Views/ # SwiftUI views organized by feature
@@ -36,7 +36,7 @@ Feels/
│ ├── Persisence/ # Core Data persistence layer │ ├── Persisence/ # Core Data persistence layer
│ ├── Onboarding/ # First-run experience │ ├── Onboarding/ # First-run experience
│ └── Protocols/ # Protocol definitions │ └── Protocols/ # Protocol definitions
├── FeelsWidget/ # iOS Widget Extension (3 widget types) ├── ReflectWidget/ # iOS Widget Extension (3 widget types)
├── en.lproj/ # English localization ├── en.lproj/ # English localization
├── es.lproj/ # Spanish localization ├── es.lproj/ # Spanish localization
└── Tests iOS/ # Test targets └── Tests iOS/ # Test targets
@@ -49,12 +49,12 @@ Feels/
### App Entry ### App Entry
| File | Purpose | | File | Purpose |
|------|---------| |------|---------|
| `FeelsApp.swift` | Main app entry, Core Data setup, IAP manager, tab navigation | | `ReflectApp.swift` | Main app entry, Core Data setup, IAP manager, tab navigation |
### Data Layer ### Data Layer
| File | Purpose | | File | Purpose |
|------|---------| |------|---------|
| `Feels.xcdatamodeld` | Core Data model with `MoodEntry` entity | | `Reflect.xcdatamodeld` | Core Data model with `MoodEntry` entity |
| `Persistence.swift` | Core Data stack, App Group container | | `Persistence.swift` | Core Data stack, App Group container |
| `PersistenceGET.swift` | Fetch operations | | `PersistenceGET.swift` | Fetch operations |
| `PersistenceADD.swift` | Create/fill missing entries | | `PersistenceADD.swift` | Create/fill missing entries |
@@ -132,12 +132,12 @@ enum Mood: Int {
## Widget System ## Widget System
Three widget types in `FeelsWidget/`: Three widget types in `ReflectWidget/`:
1. **FeelsWidget**: Small/Medium/Large showing recent moods 1. **ReflectWidget**: Small/Medium/Large showing recent moods
2. **FeelsGraphicWidget**: Small widget with mood graphic 2. **ReflectGraphicWidget**: Small widget with mood graphic
3. **FeelsIconWidget**: Custom icon widget 3. **ReflectIconWidget**: Custom icon widget
Data shared via App Groups: `group.com.88oakapps.feels` Data shared via App Groups: `group.com.88oakapps.reflect`
--- ---
@@ -155,11 +155,11 @@ Data shared via App Groups: `group.com.88oakapps.feels`
## Configuration ## Configuration
### App Groups ### App Groups
- Production: `group.com.88oakapps.feels` - Production: `group.com.88oakapps.reflect`
- Debug: `group.com.88oakapps.feels.debug` - Debug: `group.com.88oakapps.reflect.debug`
### Background Tasks ### Background Tasks
- Identifier: `com.88oak.Feels.dbUpdateMissing` - Identifier: `com.88oak.Reflect.dbUpdateMissing`
### StoreKit Products ### StoreKit Products
- Monthly subscription - Monthly subscription

View File

@@ -12,7 +12,7 @@
</array> </array>
<key>com.apple.developer.icloud-container-identifiers</key> <key>com.apple.developer.icloud-container-identifiers</key>
<array> <array>
<string>iCloud.com.88oakapps.feels</string> <string>iCloud.com.88oakapps.reflect</string>
</array> </array>
<key>com.apple.developer.icloud-services</key> <key>com.apple.developer.icloud-services</key>
<array> <array>
@@ -20,7 +20,7 @@
</array> </array>
<key>com.apple.security.application-groups</key> <key>com.apple.security.application-groups</key>
<array> <array>
<string>group.com.88oakapps.feels</string> <string>group.com.88oakapps.reflect</string>
</array> </array>
</dict> </dict>
</plist> </plist>

View File

@@ -10,7 +10,7 @@
<array/> <array/>
<key>com.apple.developer.icloud-container-identifiers</key> <key>com.apple.developer.icloud-container-identifiers</key>
<array> <array>
<string>iCloud.com.88oakapps.feels.debug</string> <string>iCloud.com.88oakapps.reflect.debug</string>
</array> </array>
<key>com.apple.developer.icloud-services</key> <key>com.apple.developer.icloud-services</key>
<array> <array>
@@ -18,7 +18,7 @@
</array> </array>
<key>com.apple.security.application-groups</key> <key>com.apple.security.application-groups</key>
<array> <array>
<string>group.com.88oakapps.feels.debug</string> <string>group.com.88oakapps.reflect.debug</string>
</array> </array>
</dict> </dict>
</plist> </plist>

View File

Before

Width:  |  Height:  |  Size: 936 KiB

After

Width:  |  Height:  |  Size: 936 KiB

View File

@@ -1,6 +1,6 @@
// //
// ContentView.swift // ContentView.swift
// Feels Watch App // Reflect Watch App
// //
// Main voting interface for logging moods on Apple Watch. // Main voting interface for logging moods on Apple Watch.
// //

View File

@@ -6,7 +6,7 @@
<string>development</string> <string>development</string>
<key>com.apple.developer.icloud-container-identifiers</key> <key>com.apple.developer.icloud-container-identifiers</key>
<array> <array>
<string>iCloud.com.88oakapps.feels</string> <string>iCloud.com.88oakapps.reflect</string>
</array> </array>
<key>com.apple.developer.icloud-services</key> <key>com.apple.developer.icloud-services</key>
<array> <array>
@@ -14,7 +14,7 @@
</array> </array>
<key>com.apple.security.application-groups</key> <key>com.apple.security.application-groups</key>
<array> <array>
<string>group.com.88oakapps.feels</string> <string>group.com.88oakapps.reflect</string>
</array> </array>
</dict> </dict>
</plist> </plist>

View File

@@ -6,7 +6,7 @@
<string>development</string> <string>development</string>
<key>com.apple.developer.icloud-container-identifiers</key> <key>com.apple.developer.icloud-container-identifiers</key>
<array> <array>
<string>iCloud.com.88oakapps.feels.debug</string> <string>iCloud.com.88oakapps.reflect.debug</string>
</array> </array>
<key>com.apple.developer.icloud-services</key> <key>com.apple.developer.icloud-services</key>
<array> <array>
@@ -14,7 +14,7 @@
</array> </array>
<key>com.apple.security.application-groups</key> <key>com.apple.security.application-groups</key>
<array> <array>
<string>group.com.88oakapps.feels.debug</string> <string>group.com.88oakapps.reflect.debug</string>
</array> </array>
</dict> </dict>
</plist> </plist>

View File

@@ -1,6 +1,6 @@
// //
// FeelsComplication.swift // ReflectComplication.swift
// Feels Watch App // Reflect Watch App
// //
// WidgetKit complications for Apple Watch. // WidgetKit complications for Apple Watch.
// //
@@ -10,19 +10,19 @@ import SwiftUI
// MARK: - Timeline Provider // MARK: - Timeline Provider
struct FeelsTimelineProvider: TimelineProvider { struct ReflectTimelineProvider: TimelineProvider {
func placeholder(in context: Context) -> FeelsEntry { func placeholder(in context: Context) -> ReflectEntry {
FeelsEntry(date: Date(), mood: nil, streak: 0) ReflectEntry(date: Date(), mood: nil, streak: 0)
} }
func getSnapshot(in context: Context, completion: @escaping (FeelsEntry) -> Void) { func getSnapshot(in context: Context, completion: @escaping (ReflectEntry) -> Void) {
Task { @MainActor in Task { @MainActor in
let entry = createEntry() let entry = createEntry()
completion(entry) completion(entry)
} }
} }
func getTimeline(in context: Context, completion: @escaping (Timeline<FeelsEntry>) -> Void) { func getTimeline(in context: Context, completion: @escaping (Timeline<ReflectEntry>) -> Void) {
Task { @MainActor in Task { @MainActor in
let entry = createEntry() let entry = createEntry()
@@ -37,11 +37,11 @@ struct FeelsTimelineProvider: TimelineProvider {
} }
@MainActor @MainActor
private func createEntry() -> FeelsEntry { private func createEntry() -> ReflectEntry {
let todayEntry = ExtensionDataProvider.shared.getTodayEntry() let todayEntry = ExtensionDataProvider.shared.getTodayEntry()
let streak = ExtensionDataProvider.shared.getCurrentStreak() let streak = ExtensionDataProvider.shared.getCurrentStreak()
return FeelsEntry( return ReflectEntry(
date: Date(), date: Date(),
mood: todayEntry?.mood, mood: todayEntry?.mood,
streak: streak streak: streak
@@ -51,7 +51,7 @@ struct FeelsTimelineProvider: TimelineProvider {
// MARK: - Timeline Entry // MARK: - Timeline Entry
struct FeelsEntry: TimelineEntry { struct ReflectEntry: TimelineEntry {
let date: Date let date: Date
let mood: Mood? let mood: Mood?
let streak: Int let streak: Int
@@ -59,8 +59,8 @@ struct FeelsEntry: TimelineEntry {
// MARK: - Complication Views // MARK: - Complication Views
struct FeelsComplicationEntryView: View { struct ReflectComplicationEntryView: View {
var entry: FeelsEntry var entry: ReflectEntry
@Environment(\.widgetFamily) var family @Environment(\.widgetFamily) var family
var body: some View { var body: some View {
@@ -82,7 +82,7 @@ struct FeelsComplicationEntryView: View {
// MARK: - Circular Complication // MARK: - Circular Complication
struct CircularView: View { struct CircularView: View {
let entry: FeelsEntry let entry: ReflectEntry
var body: some View { var body: some View {
ZStack { ZStack {
@@ -106,7 +106,7 @@ struct CircularView: View {
// MARK: - Corner Complication // MARK: - Corner Complication
struct CornerView: View { struct CornerView: View {
let entry: FeelsEntry let entry: ReflectEntry
var body: some View { var body: some View {
if let mood = entry.mood { if let mood = entry.mood {
@@ -128,7 +128,7 @@ struct CornerView: View {
// MARK: - Inline Complication // MARK: - Inline Complication
struct InlineView: View { struct InlineView: View {
let entry: FeelsEntry let entry: ReflectEntry
var body: some View { var body: some View {
if entry.streak > 0 { if entry.streak > 0 {
@@ -144,7 +144,7 @@ struct InlineView: View {
// MARK: - Rectangular Complication // MARK: - Rectangular Complication
struct RectangularView: View { struct RectangularView: View {
let entry: FeelsEntry let entry: ReflectEntry
var body: some View { var body: some View {
HStack { HStack {
@@ -170,7 +170,7 @@ struct RectangularView: View {
.font(.system(size: 24)) .font(.system(size: 24))
VStack(alignment: .leading, spacing: 2) { VStack(alignment: .leading, spacing: 2) {
Text("Feels") Text("Reflect")
.font(.system(size: 14, weight: .semibold)) .font(.system(size: 14, weight: .semibold))
Text("Tap to log mood") Text("Tap to log mood")
.font(.system(size: 12)) .font(.system(size: 12))
@@ -185,15 +185,15 @@ struct RectangularView: View {
// MARK: - Widget Configuration // MARK: - Widget Configuration
struct FeelsComplication: Widget { struct ReflectComplication: Widget {
let kind: String = "FeelsComplication" let kind: String = "ReflectComplication"
var body: some WidgetConfiguration { var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: FeelsTimelineProvider()) { entry in StaticConfiguration(kind: kind, provider: ReflectTimelineProvider()) { entry in
FeelsComplicationEntryView(entry: entry) ReflectComplicationEntryView(entry: entry)
.containerBackground(.fill.tertiary, for: .widget) .containerBackground(.fill.tertiary, for: .widget)
} }
.configurationDisplayName("Feels") .configurationDisplayName("Reflect")
.description("See today's mood and streak.") .description("See today's mood and streak.")
.supportedFamilies([ .supportedFamilies([
.accessoryCircular, .accessoryCircular,
@@ -207,26 +207,26 @@ struct FeelsComplication: Widget {
// MARK: - Preview // MARK: - Preview
#Preview("Circular - Mood") { #Preview("Circular - Mood") {
CircularView(entry: FeelsEntry(date: Date(), mood: .great, streak: 5)) CircularView(entry: ReflectEntry(date: Date(), mood: .great, streak: 5))
.previewContext(WidgetPreviewContext(family: .accessoryCircular)) .previewContext(WidgetPreviewContext(family: .accessoryCircular))
} }
#Preview("Circular - Empty") { #Preview("Circular - Empty") {
CircularView(entry: FeelsEntry(date: Date(), mood: nil, streak: 0)) CircularView(entry: ReflectEntry(date: Date(), mood: nil, streak: 0))
.previewContext(WidgetPreviewContext(family: .accessoryCircular)) .previewContext(WidgetPreviewContext(family: .accessoryCircular))
} }
#Preview("Rectangular - Mood") { #Preview("Rectangular - Mood") {
RectangularView(entry: FeelsEntry(date: Date(), mood: .good, streak: 7)) RectangularView(entry: ReflectEntry(date: Date(), mood: .good, streak: 7))
.previewContext(WidgetPreviewContext(family: .accessoryRectangular)) .previewContext(WidgetPreviewContext(family: .accessoryRectangular))
} }
#Preview("Inline - Streak") { #Preview("Inline - Streak") {
InlineView(entry: FeelsEntry(date: Date(), mood: .great, streak: 5)) InlineView(entry: ReflectEntry(date: Date(), mood: .great, streak: 5))
.previewContext(WidgetPreviewContext(family: .accessoryInline)) .previewContext(WidgetPreviewContext(family: .accessoryInline))
} }
#Preview("Corner - Mood") { #Preview("Corner - Mood") {
CornerView(entry: FeelsEntry(date: Date(), mood: .average, streak: 3)) CornerView(entry: ReflectEntry(date: Date(), mood: .average, streak: 3))
.previewContext(WidgetPreviewContext(family: .accessoryCorner)) .previewContext(WidgetPreviewContext(family: .accessoryCorner))
} }

View File

@@ -1,6 +1,6 @@
// //
// FeelsWatchApp.swift // ReflectWatchApp.swift
// Feels Watch App // Reflect Watch App
// //
// Entry point for the Apple Watch companion app. // Entry point for the Apple Watch companion app.
// //
@@ -8,7 +8,7 @@
import SwiftUI import SwiftUI
@main @main
struct FeelsWatchApp: App { struct ReflectWatchApp: App {
init() { init() {
// Initialize Watch Connectivity for cross-device widget updates // Initialize Watch Connectivity for cross-device widget updates

View File

@@ -4,16 +4,16 @@
<dict> <dict>
<key>BGTaskSchedulerPermittedIdentifiers</key> <key>BGTaskSchedulerPermittedIdentifiers</key>
<array> <array>
<string>com.tt.feels.dbUpdateMissing</string> <string>com.88oakapps.reflect.dbUpdateMissing</string>
</array> </array>
<key>CFBundleURLTypes</key> <key>CFBundleURLTypes</key>
<array> <array>
<dict> <dict>
<key>CFBundleURLName</key> <key>CFBundleURLName</key>
<string>com.tt.feels</string> <string>com.88oakapps.reflect</string>
<key>CFBundleURLSchemes</key> <key>CFBundleURLSchemes</key>
<array> <array>
<string>feels</string> <string>reflect</string>
</array> </array>
</dict> </dict>
</array> </array>

View File

@@ -11,8 +11,8 @@
141C5C51CA0658F682E984F5 /* ReduceMotionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C8D04ACF01F539EA572EEB8 /* ReduceMotionTests.swift */; }; 141C5C51CA0658F682E984F5 /* ReduceMotionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C8D04ACF01F539EA572EEB8 /* ReduceMotionTests.swift */; };
19F8D7CA5D384E82A4BB4BCA /* YearViewHeatmapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9475CC3818201762FA57D91 /* YearViewHeatmapTests.swift */; }; 19F8D7CA5D384E82A4BB4BCA /* YearViewHeatmapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9475CC3818201762FA57D91 /* YearViewHeatmapTests.swift */; };
1AB245144C89927264D16645 /* InsightsEmptyStateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6988985985DE9C29CFDFA96 /* InsightsEmptyStateTests.swift */; }; 1AB245144C89927264D16645 /* InsightsEmptyStateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6988985985DE9C29CFDFA96 /* InsightsEmptyStateTests.swift */; };
1C0DAB51279DB0FB003B1F21 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 1C0DAB50279DB0FB003B1F21 /* Localizable.xcstrings */; }; 1C0DAB51279DB0FB003B1F21 /* Reflect/Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 1C0DAB50279DB0FB003B1F21 /* Reflect/Localizable.xcstrings */; };
1C0DAB52279DB0FB003B1F22 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 1C0DAB50279DB0FB003B1F21 /* Localizable.xcstrings */; }; 1C0DAB52279DB0FB003B1F22 /* Reflect/Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 1C0DAB50279DB0FB003B1F21 /* Reflect/Localizable.xcstrings */; };
1C9566442EF8F5F70032E68F /* Algorithms in Frameworks */ = {isa = PBXBuildFile; productRef = 1C9566432EF8F5F70032E68F /* Algorithms */; }; 1C9566442EF8F5F70032E68F /* Algorithms in Frameworks */ = {isa = PBXBuildFile; productRef = 1C9566432EF8F5F70032E68F /* Algorithms */; };
1CB4D0A028787D8A00902A56 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CB4D09F28787D8A00902A56 /* StoreKit.framework */; }; 1CB4D0A028787D8A00902A56 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CB4D09F28787D8A00902A56 /* StoreKit.framework */; };
1CD90B07278C7DE0001C4FEA /* Tests_iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CD90B06278C7DE0001C4FEA /* Tests_iOS.swift */; }; 1CD90B07278C7DE0001C4FEA /* Tests_iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CD90B06278C7DE0001C4FEA /* Tests_iOS.swift */; };
@@ -21,7 +21,7 @@
1CD90B15278C7DE0001C4FEA /* Tests_macOSLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CD90B14278C7DE0001C4FEA /* Tests_macOSLaunchTests.swift */; }; 1CD90B15278C7DE0001C4FEA /* Tests_macOSLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CD90B14278C7DE0001C4FEA /* Tests_macOSLaunchTests.swift */; };
1CD90B48278C7E7A001C4FEA /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD90B47278C7E7A001C4FEA /* WidgetKit.framework */; platformFilter = maccatalyst; }; 1CD90B48278C7E7A001C4FEA /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD90B47278C7E7A001C4FEA /* WidgetKit.framework */; platformFilter = maccatalyst; };
1CD90B4A278C7E7A001C4FEA /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD90B49278C7E7A001C4FEA /* SwiftUI.framework */; platformFilter = maccatalyst; }; 1CD90B4A278C7E7A001C4FEA /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD90B49278C7E7A001C4FEA /* SwiftUI.framework */; platformFilter = maccatalyst; };
1CD90B56278C7E7A001C4FEA /* FeelsWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 1CD90B45278C7E7A001C4FEA /* FeelsWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 1CD90B56278C7E7A001C4FEA /* ReflectWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 1CD90B45278C7E7A001C4FEA /* ReflectWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
1CD90B6C278C7F78001C4FEA /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD90B6B278C7F78001C4FEA /* CloudKit.framework */; }; 1CD90B6C278C7F78001C4FEA /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD90B6B278C7F78001C4FEA /* CloudKit.framework */; };
1CD90B6E278C7F8B001C4FEA /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD90B6B278C7F78001C4FEA /* CloudKit.framework */; }; 1CD90B6E278C7F8B001C4FEA /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD90B6B278C7F78001C4FEA /* CloudKit.framework */; };
1CDE000F2F3BBD26006AE6A1 /* PostHog in Frameworks */ = {isa = PBXBuildFile; productRef = 1CA00002300000000000002A /* PostHog */; }; 1CDE000F2F3BBD26006AE6A1 /* PostHog in Frameworks */ = {isa = PBXBuildFile; productRef = 1CA00002300000000000002A /* PostHog */; };
@@ -96,28 +96,28 @@
containerPortal = 1CD90AE6278C7DDF001C4FEA /* Project object */; containerPortal = 1CD90AE6278C7DDF001C4FEA /* Project object */;
proxyType = 1; proxyType = 1;
remoteGlobalIDString = 1CD90AF4278C7DE0001C4FEA; remoteGlobalIDString = 1CD90AF4278C7DE0001C4FEA;
remoteInfo = "Feels (iOS)"; remoteInfo = "Reflect (iOS)";
}; };
1CD90B0F278C7DE0001C4FEA /* PBXContainerItemProxy */ = { 1CD90B0F278C7DE0001C4FEA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = 1CD90AE6278C7DDF001C4FEA /* Project object */; containerPortal = 1CD90AE6278C7DDF001C4FEA /* Project object */;
proxyType = 1; proxyType = 1;
remoteGlobalIDString = 1CD90AFA278C7DE0001C4FEA; remoteGlobalIDString = 1CD90AFA278C7DE0001C4FEA;
remoteInfo = "Feels (macOS)"; remoteInfo = "Reflect (macOS)";
}; };
1CD90B54278C7E7A001C4FEA /* PBXContainerItemProxy */ = { 1CD90B54278C7E7A001C4FEA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = 1CD90AE6278C7DDF001C4FEA /* Project object */; containerPortal = 1CD90AE6278C7DDF001C4FEA /* Project object */;
proxyType = 1; proxyType = 1;
remoteGlobalIDString = 1CD90B44278C7E7A001C4FEA; remoteGlobalIDString = 1CD90B44278C7E7A001C4FEA;
remoteInfo = FeelsWidgetExtension; remoteInfo = ReflectWidgetExtension;
}; };
A0B973C7674930232515563A /* PBXContainerItemProxy */ = { A0B973C7674930232515563A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = 1CD90AE6278C7DDF001C4FEA /* Project object */; containerPortal = 1CD90AE6278C7DDF001C4FEA /* Project object */;
proxyType = 1; proxyType = 1;
remoteGlobalIDString = 1CD90AF4278C7DE0001C4FEA; remoteGlobalIDString = 1CD90AF4278C7DE0001C4FEA;
remoteInfo = "Feels (iOS)"; remoteInfo = "Reflect (iOS)";
}; };
/* End PBXContainerItemProxy section */ /* End PBXContainerItemProxy section */
@@ -128,7 +128,7 @@
dstPath = ""; dstPath = "";
dstSubfolderSpec = 13; dstSubfolderSpec = 13;
files = ( files = (
1CD90B56278C7E7A001C4FEA /* FeelsWidgetExtension.appex in Embed Foundation Extensions */, 1CD90B56278C7E7A001C4FEA /* ReflectWidgetExtension.appex in Embed Foundation Extensions */,
); );
name = "Embed Foundation Extensions"; name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@@ -139,10 +139,10 @@
0246E9F406F872E5DEEB7269 /* YearViewDisplayTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = YearViewDisplayTests.swift; sourceTree = "<group>"; }; 0246E9F406F872E5DEEB7269 /* YearViewDisplayTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = YearViewDisplayTests.swift; sourceTree = "<group>"; };
0359E1D32D936859E5A0C9F3 /* AppResumeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppResumeTests.swift; sourceTree = "<group>"; }; 0359E1D32D936859E5A0C9F3 /* AppResumeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppResumeTests.swift; sourceTree = "<group>"; };
17DC4C498A1185DC831F4593 /* LocalizationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizationTests.swift; sourceTree = "<group>"; }; 17DC4C498A1185DC831F4593 /* LocalizationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizationTests.swift; sourceTree = "<group>"; };
1C0DAB50279DB0FB003B1F21 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Feels/Localizable.xcstrings; sourceTree = "<group>"; }; 1C0DAB50279DB0FB003B1F21 /* Reflect/Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Reflect/Localizable.xcstrings; sourceTree = "<group>"; };
1CB4D09F28787D8A00902A56 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.5.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; 1CB4D09F28787D8A00902A56 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.5.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; };
1CD90AF5278C7DE0001C4FEA /* Feels.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Feels.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1CD90AF5278C7DE0001C4FEA /* Reflect.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Reflect.app; sourceTree = BUILT_PRODUCTS_DIR; };
1CD90AFB278C7DE0001C4FEA /* Feels.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Feels.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1CD90AFB278C7DE0001C4FEA /* Reflect.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Reflect.app; sourceTree = BUILT_PRODUCTS_DIR; };
1CD90AFD278C7DE0001C4FEA /* macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOS.entitlements; sourceTree = "<group>"; }; 1CD90AFD278C7DE0001C4FEA /* macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOS.entitlements; sourceTree = "<group>"; };
1CD90B02278C7DE0001C4FEA /* Tests iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 1CD90B02278C7DE0001C4FEA /* Tests iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
1CD90B06278C7DE0001C4FEA /* Tests_iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_iOS.swift; sourceTree = "<group>"; }; 1CD90B06278C7DE0001C4FEA /* Tests_iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_iOS.swift; sourceTree = "<group>"; };
@@ -150,17 +150,17 @@
1CD90B0E278C7DE0001C4FEA /* Tests macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 1CD90B0E278C7DE0001C4FEA /* Tests macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
1CD90B12278C7DE0001C4FEA /* Tests_macOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOS.swift; sourceTree = "<group>"; }; 1CD90B12278C7DE0001C4FEA /* Tests_macOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOS.swift; sourceTree = "<group>"; };
1CD90B14278C7DE0001C4FEA /* Tests_macOSLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOSLaunchTests.swift; sourceTree = "<group>"; }; 1CD90B14278C7DE0001C4FEA /* Tests_macOSLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOSLaunchTests.swift; sourceTree = "<group>"; };
1CD90B45278C7E7A001C4FEA /* FeelsWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = FeelsWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 1CD90B45278C7E7A001C4FEA /* ReflectWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ReflectWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
1CD90B47278C7E7A001C4FEA /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; 1CD90B47278C7E7A001C4FEA /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
1CD90B49278C7E7A001C4FEA /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; 1CD90B49278C7E7A001C4FEA /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
1CD90B69278C7F65001C4FEA /* Feels--iOS--Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "Feels--iOS--Info.plist"; sourceTree = "<group>"; }; 1CD90B69278C7F65001C4FEA /* Reflect--iOS--Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "Reflect--iOS--Info.plist"; sourceTree = "<group>"; };
1CD90B6A278C7F75001C4FEA /* Feels (iOS).entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Feels (iOS).entitlements"; sourceTree = "<group>"; }; 1CD90B6A278C7F75001C4FEA /* Reflect (iOS).entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Reflect (iOS).entitlements"; sourceTree = "<group>"; };
1CD90B6B278C7F78001C4FEA /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.2.sdk/System/Library/Frameworks/CloudKit.framework; sourceTree = DEVELOPER_DIR; }; 1CD90B6B278C7F78001C4FEA /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.2.sdk/System/Library/Frameworks/CloudKit.framework; sourceTree = DEVELOPER_DIR; };
1CD90B6D278C7F89001C4FEA /* FeelsWidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = FeelsWidgetExtension.entitlements; sourceTree = "<group>"; }; 1CD90B6D278C7F89001C4FEA /* ReflectWidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ReflectWidgetExtension.entitlements; sourceTree = "<group>"; };
1CD90B6F278C8000001C4FEA /* FeelsWidgetExtensionDev.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = FeelsWidgetExtensionDev.entitlements; sourceTree = "<group>"; }; 1CD90B6F278C8000001C4FEA /* ReflectWidgetExtensionDev.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = ReflectWidgetExtensionDev.entitlements; sourceTree = "<group>"; };
1CD90B70278C8000001C4FEA /* Feels (iOS)Dev.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "Feels (iOS)Dev.entitlements"; sourceTree = "<group>"; }; 1CD90B70278C8000001C4FEA /* Reflect (iOS)Dev.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "Reflect (iOS)Dev.entitlements"; sourceTree = "<group>"; };
1CDEFBBE2F3B8736006AE6A1 /* Configuration.storekit */ = {isa = PBXFileReference; lastKnownFileType = text; path = Configuration.storekit; sourceTree = "<group>"; }; 1CDEFBBE2F3B8736006AE6A1 /* Configuration.storekit */ = {isa = PBXFileReference; lastKnownFileType = text; path = Configuration.storekit; sourceTree = "<group>"; };
1E594AEAB5F046E3B3ED7C47 /* Feels Watch App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Feels Watch App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 1E594AEAB5F046E3B3ED7C47 /* Reflect Watch App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Reflect Watch App.app"; sourceTree = BUILT_PRODUCTS_DIR; };
21CD463209E0909393545D62 /* TrialBannerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrialBannerTests.swift; sourceTree = "<group>"; }; 21CD463209E0909393545D62 /* TrialBannerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrialBannerTests.swift; sourceTree = "<group>"; };
29CE4110A0D8FBBAD7F92BDF /* BaseUITestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseUITestCase.swift; sourceTree = "<group>"; }; 29CE4110A0D8FBBAD7F92BDF /* BaseUITestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseUITestCase.swift; sourceTree = "<group>"; };
29E2A2FC314F88244CA946BF /* StreakTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = StreakTests.swift; sourceTree = "<group>"; }; 29E2A2FC314F88244CA946BF /* StreakTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = StreakTests.swift; sourceTree = "<group>"; };
@@ -191,8 +191,8 @@
B0C1D2E3F4A5B6C7D8E9FA0B /* AllDayViewStylesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllDayViewStylesTests.swift; sourceTree = "<group>"; }; B0C1D2E3F4A5B6C7D8E9FA0B /* AllDayViewStylesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllDayViewStylesTests.swift; sourceTree = "<group>"; };
B2C3D4E5F6A7B8C9D0E1F2A3 /* CustomizeScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomizeScreen.swift; sourceTree = "<group>"; }; B2C3D4E5F6A7B8C9D0E1F2A3 /* CustomizeScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomizeScreen.swift; sourceTree = "<group>"; };
B4C5D6E7F8A9B0C1D2E3F4A5 /* PaywallGateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaywallGateTests.swift; sourceTree = "<group>"; }; B4C5D6E7F8A9B0C1D2E3F4A5 /* PaywallGateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaywallGateTests.swift; sourceTree = "<group>"; };
B60015D02A064FF582E232FD /* Feels Watch AppDebug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Feels Watch App/Feels Watch AppDebug.entitlements"; sourceTree = "<group>"; }; B60015D02A064FF582E232FD /* Reflect Watch App/Reflect Watch AppDebug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Reflect Watch App/Reflect Watch AppDebug.entitlements"; sourceTree = "<group>"; };
B8AB4CD73C2B4DC89C6FE84D /* Feels Watch App.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Feels Watch App/Feels Watch App.entitlements"; sourceTree = "<group>"; }; B8AB4CD73C2B4DC89C6FE84D /* Reflect Watch App/Reflect Watch App.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Reflect Watch App/Reflect Watch App.entitlements"; sourceTree = "<group>"; };
B8C9D0E1F2A3B4C5D6E7F8A9 /* MonthViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MonthViewTests.swift; sourceTree = "<group>"; }; B8C9D0E1F2A3B4C5D6E7F8A9 /* MonthViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MonthViewTests.swift; sourceTree = "<group>"; };
BB22222222222222BBBBBBBB /* MoodLoggingEmptyStateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoodLoggingEmptyStateTests.swift; sourceTree = "<group>"; }; BB22222222222222BBBBBBBB /* MoodLoggingEmptyStateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoodLoggingEmptyStateTests.swift; sourceTree = "<group>"; };
BE4D06D4E7188339DE8BC040 /* SettingsLegalLinksTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SettingsLegalLinksTests.swift; sourceTree = "<group>"; }; BE4D06D4E7188339DE8BC040 /* SettingsLegalLinksTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SettingsLegalLinksTests.swift; sourceTree = "<group>"; };
@@ -208,7 +208,7 @@
D4E5F6A7B8C9D0E1F2A3B4C5 /* MoodReplacementTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoodReplacementTests.swift; sourceTree = "<group>"; }; D4E5F6A7B8C9D0E1F2A3B4C5 /* MoodReplacementTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoodReplacementTests.swift; sourceTree = "<group>"; };
D6E7F8A9B0C1D2E3F4A5B6C7 /* IconPackTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconPackTests.swift; sourceTree = "<group>"; }; D6E7F8A9B0C1D2E3F4A5B6C7 /* IconPackTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconPackTests.swift; sourceTree = "<group>"; };
D9475CC3818201762FA57D91 /* YearViewHeatmapTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = YearViewHeatmapTests.swift; sourceTree = "<group>"; }; D9475CC3818201762FA57D91 /* YearViewHeatmapTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = YearViewHeatmapTests.swift; sourceTree = "<group>"; };
DA0D74ACDD741CFA1F14F50F /* FeelsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FeelsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; DA0D74ACDD741CFA1F14F50F /* ReflectTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ReflectTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
DA7E6C56A47EB49419BFA77C /* LongTranslationTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LongTranslationTests.swift; sourceTree = "<group>"; }; DA7E6C56A47EB49419BFA77C /* LongTranslationTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LongTranslationTests.swift; sourceTree = "<group>"; };
DD44444444444444DDDDDDDD /* EntryDetailTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntryDetailTests.swift; sourceTree = "<group>"; }; DD44444444444444DDDDDDDD /* EntryDetailTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntryDetailTests.swift; sourceTree = "<group>"; };
DD717F91BD65382B7DDFE3C4 /* VoteLogicsTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VoteLogicsTests.swift; sourceTree = "<group>"; }; DD717F91BD65382B7DDFE3C4 /* VoteLogicsTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VoteLogicsTests.swift; sourceTree = "<group>"; };
@@ -228,7 +228,7 @@
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
1C000C162EE93AE3009C9ED5 /* Exceptions for "Shared" folder in "FeelsWidgetExtension" target */ = { 1C000C162EE93AE3009C9ED5 /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet; isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = ( membershipExceptions = (
AccessibilityIdentifiers.swift, AccessibilityIdentifiers.swift,
@@ -257,9 +257,9 @@
Views/CustomWidget/CustomWidgetModel.swift, Views/CustomWidget/CustomWidgetModel.swift,
Views/CustomWidget/CustomWidgetView.swift, Views/CustomWidget/CustomWidgetView.swift,
); );
target = 1CD90B44278C7E7A001C4FEA /* FeelsWidgetExtension */; target = 1CD90B44278C7E7A001C4FEA /* ReflectWidgetExtension */;
}; };
2166CE8AA7264FC2B4BFAAAC /* Exceptions for "Shared" folder in "Feels Watch App" target */ = { 2166CE8AA7264FC2B4BFAAAC /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet; isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = ( membershipExceptions = (
Models/Mood.swift, Models/Mood.swift,
@@ -269,46 +269,14 @@
Services/WatchConnectivityManager.swift, Services/WatchConnectivityManager.swift,
SharedMoodIntent.swift, SharedMoodIntent.swift,
); );
target = B1DB9E6543DE4A009DB00916 /* Feels Watch App */; target = B1DB9E6543DE4A009DB00916 /* Reflect Watch App */;
}; };
/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
/* Begin PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFileSystemSynchronizedRootGroup section */
1C00073D2EE9388A009C9ED5 /* Shared */ = { 1C00073D2EE9388A009C9ED5 /* Shared */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (2166CE8AA7264FC2B4BFAAAC /* PBXFileSystemSynchronizedBuildFileExceptionSet */, 1C000C162EE93AE3009C9ED5 /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = Shared; sourceTree = "<group>"; };
isa = PBXFileSystemSynchronizedRootGroup; 1C0009922EE938FC009C9ED5 /* ReflectWidget */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = ReflectWidget; sourceTree = "<group>"; };
exceptions = ( 579031D619ED4B989145EEB1 /* Reflect Watch App */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = "Reflect Watch App"; sourceTree = "<group>"; };
2166CE8AA7264FC2B4BFAAAC /* Exceptions for "Shared" folder in "Feels Watch App" target */,
1C000C162EE93AE3009C9ED5 /* Exceptions for "Shared" folder in "FeelsWidgetExtension" target */,
);
explicitFileTypes = {
};
explicitFolders = (
);
path = Shared;
sourceTree = "<group>";
};
1C0009922EE938FC009C9ED5 /* FeelsWidget2 */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
);
explicitFileTypes = {
};
explicitFolders = (
);
path = FeelsWidget2;
sourceTree = "<group>";
};
579031D619ED4B989145EEB1 /* Feels Watch App */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
);
explicitFileTypes = {
};
explicitFolders = (
);
path = "Feels Watch App";
sourceTree = "<group>";
};
/* End PBXFileSystemSynchronizedRootGroup section */ /* End PBXFileSystemSynchronizedRootGroup section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@@ -376,37 +344,37 @@
1CD90AE5278C7DDF001C4FEA = { 1CD90AE5278C7DDF001C4FEA = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
B8AB4CD73C2B4DC89C6FE84D /* Feels Watch App.entitlements */, B8AB4CD73C2B4DC89C6FE84D /* Reflect Watch App/Reflect Watch App.entitlements */,
B60015D02A064FF582E232FD /* Feels Watch AppDebug.entitlements */, B60015D02A064FF582E232FD /* Reflect Watch App/Reflect Watch AppDebug.entitlements */,
1C0DAB50279DB0FB003B1F21 /* Localizable.xcstrings */, 1C0DAB50279DB0FB003B1F21 /* Reflect/Localizable.xcstrings */,
1CDEFBBE2F3B8736006AE6A1 /* Configuration.storekit */, 1CDEFBBE2F3B8736006AE6A1 /* Configuration.storekit */,
1CD90B6A278C7F75001C4FEA /* Feels (iOS).entitlements */, 1CD90B6A278C7F75001C4FEA /* Reflect (iOS).entitlements */,
1CD90B70278C8000001C4FEA /* Feels (iOS)Dev.entitlements */, 1CD90B70278C8000001C4FEA /* Reflect (iOS)Dev.entitlements */,
1CD90B6D278C7F89001C4FEA /* FeelsWidgetExtension.entitlements */, 1CD90B6D278C7F89001C4FEA /* ReflectWidgetExtension.entitlements */,
1CD90B6F278C8000001C4FEA /* FeelsWidgetExtensionDev.entitlements */, 1CD90B6F278C8000001C4FEA /* ReflectWidgetExtensionDev.entitlements */,
1CD90B69278C7F65001C4FEA /* Feels--iOS--Info.plist */, 1CD90B69278C7F65001C4FEA /* Reflect--iOS--Info.plist */,
579031D619ED4B989145EEB1 /* Feels Watch App */, 579031D619ED4B989145EEB1 /* Reflect Watch App */,
1C00073D2EE9388A009C9ED5 /* Shared */, 1C00073D2EE9388A009C9ED5 /* Shared */,
1C0009922EE938FC009C9ED5 /* FeelsWidget2 */, 1C0009922EE938FC009C9ED5 /* ReflectWidget */,
1CD90AFC278C7DE0001C4FEA /* macOS */, 1CD90AFC278C7DE0001C4FEA /* macOS */,
1CD90B05278C7DE0001C4FEA /* Tests iOS */, 1CD90B05278C7DE0001C4FEA /* Tests iOS */,
1CD90B11278C7DE0001C4FEA /* Tests macOS */, 1CD90B11278C7DE0001C4FEA /* Tests macOS */,
1CD90B46278C7E7A001C4FEA /* Frameworks */, 1CD90B46278C7E7A001C4FEA /* Frameworks */,
1CD90AF6278C7DE0001C4FEA /* Products */, 1CD90AF6278C7DE0001C4FEA /* Products */,
38D005587E22737DC6291955 /* FeelsTests */, 38D005587E22737DC6291955 /* ReflectTests */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
}; };
1CD90AF6278C7DE0001C4FEA /* Products */ = { 1CD90AF6278C7DE0001C4FEA /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
1E594AEAB5F046E3B3ED7C47 /* Feels Watch App.app */, 1E594AEAB5F046E3B3ED7C47 /* Reflect Watch App.app */,
1CD90AF5278C7DE0001C4FEA /* Feels.app */, 1CD90AF5278C7DE0001C4FEA /* Reflect.app */,
1CD90AFB278C7DE0001C4FEA /* Feels.app */, 1CD90AFB278C7DE0001C4FEA /* Reflect.app */,
1CD90B02278C7DE0001C4FEA /* Tests iOS.xctest */, 1CD90B02278C7DE0001C4FEA /* Tests iOS.xctest */,
1CD90B0E278C7DE0001C4FEA /* Tests macOS.xctest */, 1CD90B0E278C7DE0001C4FEA /* Tests macOS.xctest */,
1CD90B45278C7E7A001C4FEA /* FeelsWidgetExtension.appex */, 1CD90B45278C7E7A001C4FEA /* ReflectWidgetExtension.appex */,
DA0D74ACDD741CFA1F14F50F /* FeelsTests.xctest */, DA0D74ACDD741CFA1F14F50F /* ReflectTests.xctest */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -500,7 +468,7 @@
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
38D005587E22737DC6291955 /* FeelsTests */ = { 38D005587E22737DC6291955 /* ReflectTests */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
5566271983AEDF1D33C34FE6 /* DataControllerCRUDTests.swift */, 5566271983AEDF1D33C34FE6 /* DataControllerCRUDTests.swift */,
@@ -509,7 +477,7 @@
29E2A2FC314F88244CA946BF /* StreakTests.swift */, 29E2A2FC314F88244CA946BF /* StreakTests.swift */,
DD717F91BD65382B7DDFE3C4 /* VoteLogicsTests.swift */, DD717F91BD65382B7DDFE3C4 /* VoteLogicsTests.swift */,
); );
path = FeelsTests; path = ReflectTests;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
3A62ED77167DA212DE1CCB7D /* Helpers */ = { 3A62ED77167DA212DE1CCB7D /* Helpers */ = {
@@ -546,9 +514,9 @@
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
1CD90AF4278C7DE0001C4FEA /* Feels (iOS) */ = { 1CD90AF4278C7DE0001C4FEA /* Reflect (iOS) */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 1CD90B22278C7DE0001C4FEA /* Build configuration list for PBXNativeTarget "Feels (iOS)" */; buildConfigurationList = 1CD90B22278C7DE0001C4FEA /* Build configuration list for PBXNativeTarget "Reflect (iOS)" */;
buildPhases = ( buildPhases = (
1CD90AF1278C7DE0001C4FEA /* Sources */, 1CD90AF1278C7DE0001C4FEA /* Sources */,
1CD90AF2278C7DE0001C4FEA /* Frameworks */, 1CD90AF2278C7DE0001C4FEA /* Frameworks */,
@@ -563,18 +531,18 @@
fileSystemSynchronizedGroups = ( fileSystemSynchronizedGroups = (
1C00073D2EE9388A009C9ED5 /* Shared */, 1C00073D2EE9388A009C9ED5 /* Shared */,
); );
name = "Feels (iOS)"; name = "Reflect (iOS)";
packageProductDependencies = ( packageProductDependencies = (
1C9566432EF8F5F70032E68F /* Algorithms */, 1C9566432EF8F5F70032E68F /* Algorithms */,
1CA00002300000000000002A /* PostHog */, 1CA00002300000000000002A /* PostHog */,
); );
productName = "Feels (iOS)"; productName = "Reflect (iOS)";
productReference = 1CD90AF5278C7DE0001C4FEA /* Feels.app */; productReference = 1CD90AF5278C7DE0001C4FEA /* Reflect.app */;
productType = "com.apple.product-type.application"; productType = "com.apple.product-type.application";
}; };
1CD90AFA278C7DE0001C4FEA /* Feels (macOS) */ = { 1CD90AFA278C7DE0001C4FEA /* Reflect (macOS) */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 1CD90B25278C7DE0001C4FEA /* Build configuration list for PBXNativeTarget "Feels (macOS)" */; buildConfigurationList = 1CD90B25278C7DE0001C4FEA /* Build configuration list for PBXNativeTarget "Reflect (macOS)" */;
buildPhases = ( buildPhases = (
1CD90AF7278C7DE0001C4FEA /* Sources */, 1CD90AF7278C7DE0001C4FEA /* Sources */,
1CD90AF8278C7DE0001C4FEA /* Frameworks */, 1CD90AF8278C7DE0001C4FEA /* Frameworks */,
@@ -584,9 +552,9 @@
); );
dependencies = ( dependencies = (
); );
name = "Feels (macOS)"; name = "Reflect (macOS)";
productName = "Feels (macOS)"; productName = "Reflect (macOS)";
productReference = 1CD90AFB278C7DE0001C4FEA /* Feels.app */; productReference = 1CD90AFB278C7DE0001C4FEA /* Reflect.app */;
productType = "com.apple.product-type.application"; productType = "com.apple.product-type.application";
}; };
1CD90B01278C7DE0001C4FEA /* Tests iOS */ = { 1CD90B01278C7DE0001C4FEA /* Tests iOS */ = {
@@ -625,9 +593,9 @@
productReference = 1CD90B0E278C7DE0001C4FEA /* Tests macOS.xctest */; productReference = 1CD90B0E278C7DE0001C4FEA /* Tests macOS.xctest */;
productType = "com.apple.product-type.bundle.ui-testing"; productType = "com.apple.product-type.bundle.ui-testing";
}; };
1CD90B44278C7E7A001C4FEA /* FeelsWidgetExtension */ = { 1CD90B44278C7E7A001C4FEA /* ReflectWidgetExtension */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 1CD90B57278C7E7A001C4FEA /* Build configuration list for PBXNativeTarget "FeelsWidgetExtension" */; buildConfigurationList = 1CD90B57278C7E7A001C4FEA /* Build configuration list for PBXNativeTarget "ReflectWidgetExtension" */;
buildPhases = ( buildPhases = (
1CD90B41278C7E7A001C4FEA /* Sources */, 1CD90B41278C7E7A001C4FEA /* Sources */,
1CD90B42278C7E7A001C4FEA /* Frameworks */, 1CD90B42278C7E7A001C4FEA /* Frameworks */,
@@ -638,16 +606,16 @@
dependencies = ( dependencies = (
); );
fileSystemSynchronizedGroups = ( fileSystemSynchronizedGroups = (
1C0009922EE938FC009C9ED5 /* FeelsWidget2 */, 1C0009922EE938FC009C9ED5 /* ReflectWidget */,
); );
name = FeelsWidgetExtension; name = ReflectWidgetExtension;
productName = FeelsWidgetExtension; productName = ReflectWidgetExtension;
productReference = 1CD90B45278C7E7A001C4FEA /* FeelsWidgetExtension.appex */; productReference = 1CD90B45278C7E7A001C4FEA /* ReflectWidgetExtension.appex */;
productType = "com.apple.product-type.app-extension"; productType = "com.apple.product-type.app-extension";
}; };
B1DB9E6543DE4A009DB00916 /* Feels Watch App */ = { B1DB9E6543DE4A009DB00916 /* Reflect Watch App */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 1B7D3790BF564C5392D480B2 /* Build configuration list for PBXNativeTarget "Feels Watch App" */; buildConfigurationList = 1B7D3790BF564C5392D480B2 /* Build configuration list for PBXNativeTarget "Reflect Watch App" */;
buildPhases = ( buildPhases = (
0C4FBA03AAF5412783DD72AF /* Sources */, 0C4FBA03AAF5412783DD72AF /* Sources */,
28189547ACED4EA2B5842F91 /* Frameworks */, 28189547ACED4EA2B5842F91 /* Frameworks */,
@@ -658,16 +626,16 @@
dependencies = ( dependencies = (
); );
fileSystemSynchronizedGroups = ( fileSystemSynchronizedGroups = (
579031D619ED4B989145EEB1 /* Feels Watch App */, 579031D619ED4B989145EEB1 /* Reflect Watch App */,
); );
name = "Feels Watch App"; name = "Reflect Watch App";
productName = "Feels Watch App"; productName = "Reflect Watch App";
productReference = 1E594AEAB5F046E3B3ED7C47 /* Feels Watch App.app */; productReference = 1E594AEAB5F046E3B3ED7C47 /* Reflect Watch App.app */;
productType = "com.apple.product-type.application"; productType = "com.apple.product-type.application";
}; };
B375A511826E3AB53E2CF51A /* FeelsTests */ = { B375A511826E3AB53E2CF51A /* ReflectTests */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 611E0B1E1241C11626465A8D /* Build configuration list for PBXNativeTarget "FeelsTests" */; buildConfigurationList = 611E0B1E1241C11626465A8D /* Build configuration list for PBXNativeTarget "ReflectTests" */;
buildPhases = ( buildPhases = (
681C769809C145ECC6A2AE8B /* Sources */, 681C769809C145ECC6A2AE8B /* Sources */,
0DC68E3188164EBC373A6BF3 /* Frameworks */, 0DC68E3188164EBC373A6BF3 /* Frameworks */,
@@ -678,9 +646,9 @@
dependencies = ( dependencies = (
946F2D1B29B91CD7DB732908 /* PBXTargetDependency */, 946F2D1B29B91CD7DB732908 /* PBXTargetDependency */,
); );
name = FeelsTests; name = ReflectTests;
productName = FeelsTests; productName = ReflectTests;
productReference = DA0D74ACDD741CFA1F14F50F /* FeelsTests.xctest */; productReference = DA0D74ACDD741CFA1F14F50F /* ReflectTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test"; productType = "com.apple.product-type.bundle.unit-test";
}; };
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
@@ -719,7 +687,7 @@
}; };
}; };
}; };
buildConfigurationList = 1CD90AE9278C7DDF001C4FEA /* Build configuration list for PBXProject "Feels" */; buildConfigurationList = 1CD90AE9278C7DDF001C4FEA /* Build configuration list for PBXProject "Reflect" */;
compatibilityVersion = "Xcode 13.0"; compatibilityVersion = "Xcode 13.0";
developmentRegion = en; developmentRegion = en;
hasScannedForEncodings = 0; hasScannedForEncodings = 0;
@@ -742,13 +710,13 @@
projectDirPath = ""; projectDirPath = "";
projectRoot = ""; projectRoot = "";
targets = ( targets = (
1CD90AF4278C7DE0001C4FEA /* Feels (iOS) */, 1CD90AF4278C7DE0001C4FEA /* Reflect (iOS) */,
B1DB9E6543DE4A009DB00916 /* Feels Watch App */, B1DB9E6543DE4A009DB00916 /* Reflect Watch App */,
1CD90B44278C7E7A001C4FEA /* FeelsWidgetExtension */, 1CD90B44278C7E7A001C4FEA /* ReflectWidgetExtension */,
1CD90AFA278C7DE0001C4FEA /* Feels (macOS) */, 1CD90AFA278C7DE0001C4FEA /* Reflect (macOS) */,
1CD90B01278C7DE0001C4FEA /* Tests iOS */, 1CD90B01278C7DE0001C4FEA /* Tests iOS */,
1CD90B0D278C7DE0001C4FEA /* Tests macOS */, 1CD90B0D278C7DE0001C4FEA /* Tests macOS */,
B375A511826E3AB53E2CF51A /* FeelsTests */, B375A511826E3AB53E2CF51A /* ReflectTests */,
); );
}; };
/* End PBXProject section */ /* End PBXProject section */
@@ -765,7 +733,7 @@
isa = PBXResourcesBuildPhase; isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
1C0DAB51279DB0FB003B1F21 /* Localizable.xcstrings in Resources */, 1C0DAB51279DB0FB003B1F21 /* Reflect/Localizable.xcstrings in Resources */,
1CDEFBBF2F3B8736006AE6A1 /* Configuration.storekit in Resources */, 1CDEFBBF2F3B8736006AE6A1 /* Configuration.storekit in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@@ -796,7 +764,7 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
1CDEFBC02F3B8736006AE6A1 /* Configuration.storekit in Resources */, 1CDEFBC02F3B8736006AE6A1 /* Configuration.storekit in Resources */,
1C0DAB52279DB0FB003B1F22 /* Localizable.xcstrings in Resources */, 1C0DAB52279DB0FB003B1F22 /* Reflect/Localizable.xcstrings in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -931,23 +899,23 @@
/* Begin PBXTargetDependency section */ /* Begin PBXTargetDependency section */
1CD90B04278C7DE0001C4FEA /* PBXTargetDependency */ = { 1CD90B04278C7DE0001C4FEA /* PBXTargetDependency */ = {
isa = PBXTargetDependency; isa = PBXTargetDependency;
target = 1CD90AF4278C7DE0001C4FEA /* Feels (iOS) */; target = 1CD90AF4278C7DE0001C4FEA /* Reflect (iOS) */;
targetProxy = 1CD90B03278C7DE0001C4FEA /* PBXContainerItemProxy */; targetProxy = 1CD90B03278C7DE0001C4FEA /* PBXContainerItemProxy */;
}; };
1CD90B10278C7DE0001C4FEA /* PBXTargetDependency */ = { 1CD90B10278C7DE0001C4FEA /* PBXTargetDependency */ = {
isa = PBXTargetDependency; isa = PBXTargetDependency;
target = 1CD90AFA278C7DE0001C4FEA /* Feels (macOS) */; target = 1CD90AFA278C7DE0001C4FEA /* Reflect (macOS) */;
targetProxy = 1CD90B0F278C7DE0001C4FEA /* PBXContainerItemProxy */; targetProxy = 1CD90B0F278C7DE0001C4FEA /* PBXContainerItemProxy */;
}; };
1CD90B55278C7E7A001C4FEA /* PBXTargetDependency */ = { 1CD90B55278C7E7A001C4FEA /* PBXTargetDependency */ = {
isa = PBXTargetDependency; isa = PBXTargetDependency;
target = 1CD90B44278C7E7A001C4FEA /* FeelsWidgetExtension */; target = 1CD90B44278C7E7A001C4FEA /* ReflectWidgetExtension */;
targetProxy = 1CD90B54278C7E7A001C4FEA /* PBXContainerItemProxy */; targetProxy = 1CD90B54278C7E7A001C4FEA /* PBXContainerItemProxy */;
}; };
946F2D1B29B91CD7DB732908 /* PBXTargetDependency */ = { 946F2D1B29B91CD7DB732908 /* PBXTargetDependency */ = {
isa = PBXTargetDependency; isa = PBXTargetDependency;
name = "Feels (iOS)"; name = "Reflect (iOS)";
target = 1CD90AF4278C7DE0001C4FEA /* Feels (iOS) */; target = 1CD90AF4278C7DE0001C4FEA /* Reflect (iOS) */;
targetProxy = A0B973C7674930232515563A /* PBXContainerItemProxy */; targetProxy = A0B973C7674930232515563A /* PBXContainerItemProxy */;
}; };
/* End PBXTargetDependency section */ /* End PBXTargetDependency section */
@@ -958,22 +926,22 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = "Feels Watch App/Feels Watch AppDebug.entitlements"; CODE_SIGN_ENTITLEMENTS = "Reflect Watch App/Reflect Watch AppDebug.entitlements";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23; CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = QND55P4443; DEVELOPMENT_TEAM = QND55P4443;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_CFBundleDisplayName = Feels; INFOPLIST_KEY_CFBundleDisplayName = Reflect;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
INFOPLIST_KEY_WKCompanionAppBundleIdentifier = com.88oakapps.feels.debug; INFOPLIST_KEY_WKCompanionAppBundleIdentifier = com.88oakapps.reflect.debug;
INFOPLIST_KEY_WKRunsIndependentlyOfCompanionApp = NO; INFOPLIST_KEY_WKRunsIndependentlyOfCompanionApp = NO;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.2; MARKETING_VERSION = 1.0.2;
PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.feels.debug.watch; PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.reflect.debug.watch;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = watchos; SDKROOT = watchos;
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
@@ -1113,20 +1081,20 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
CODE_SIGN_ENTITLEMENTS = "Feels (iOS)Dev.entitlements"; CODE_SIGN_ENTITLEMENTS = "Reflect (iOS)Dev.entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23; CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = QND55P4443; DEVELOPMENT_TEAM = QND55P4443;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "Feels--iOS--Info.plist"; INFOPLIST_FILE = "Reflect--iOS--Info.plist";
INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO;
INFOPLIST_KEY_NSCameraUsageDescription = "Feels uses the camera to take photos for your mood journal entries."; INFOPLIST_KEY_NSCameraUsageDescription = "Reflect uses the camera to take photos for your mood journal entries.";
INFOPLIST_KEY_NSFaceIDUsageDescription = "Feels uses Face ID to protect your private mood data."; INFOPLIST_KEY_NSFaceIDUsageDescription = "Reflect uses Face ID to protect your private mood data.";
INFOPLIST_KEY_NSHealthShareUsageDescription = "Feels uses your health data to find correlations between your activity, sleep, and mood patterns to provide personalized insights."; INFOPLIST_KEY_NSHealthShareUsageDescription = "Reflect uses your health data to find correlations between your activity, sleep, and mood patterns to provide personalized insights.";
INFOPLIST_KEY_NSHealthUpdateUsageDescription = "Feels syncs your mood data to Apple Health so you can see how your emotions correlate with sleep, exercise, and other health metrics."; INFOPLIST_KEY_NSHealthUpdateUsageDescription = "Reflect syncs your mood data to Apple Health so you can see how your emotions correlate with sleep, exercise, and other health metrics.";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Feels accesses your photo library to attach photos to your mood journal entries."; INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Reflect accesses your photo library to attach photos to your mood journal entries.";
INFOPLIST_KEY_NSSupportsLiveActivities = YES; INFOPLIST_KEY_NSSupportsLiveActivities = YES;
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
@@ -1139,8 +1107,8 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.2; MARKETING_VERSION = 1.0.2;
PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.feels.debug; PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.reflect.debug;
PRODUCT_NAME = Feels; PRODUCT_NAME = Reflect;
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;
@@ -1155,20 +1123,20 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
CODE_SIGN_ENTITLEMENTS = "Feels (iOS).entitlements"; CODE_SIGN_ENTITLEMENTS = "Reflect (iOS).entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23; CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = QND55P4443; DEVELOPMENT_TEAM = QND55P4443;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "Feels--iOS--Info.plist"; INFOPLIST_FILE = "Reflect--iOS--Info.plist";
INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO;
INFOPLIST_KEY_NSCameraUsageDescription = "Feels uses the camera to take photos for your mood journal entries."; INFOPLIST_KEY_NSCameraUsageDescription = "Reflect uses the camera to take photos for your mood journal entries.";
INFOPLIST_KEY_NSFaceIDUsageDescription = "Feels uses Face ID to protect your private mood data."; INFOPLIST_KEY_NSFaceIDUsageDescription = "Reflect uses Face ID to protect your private mood data.";
INFOPLIST_KEY_NSHealthShareUsageDescription = "Feels uses your health data to find correlations between your activity, sleep, and mood patterns to provide personalized insights."; INFOPLIST_KEY_NSHealthShareUsageDescription = "Reflect uses your health data to find correlations between your activity, sleep, and mood patterns to provide personalized insights.";
INFOPLIST_KEY_NSHealthUpdateUsageDescription = "Feels syncs your mood data to Apple Health so you can see how your emotions correlate with sleep, exercise, and other health metrics."; INFOPLIST_KEY_NSHealthUpdateUsageDescription = "Reflect syncs your mood data to Apple Health so you can see how your emotions correlate with sleep, exercise, and other health metrics.";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Feels accesses your photo library to attach photos to your mood journal entries."; INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Reflect accesses your photo library to attach photos to your mood journal entries.";
INFOPLIST_KEY_NSSupportsLiveActivities = YES; INFOPLIST_KEY_NSSupportsLiveActivities = YES;
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
@@ -1181,8 +1149,8 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.2; MARKETING_VERSION = 1.0.2;
PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.feels; PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.reflect;
PRODUCT_NAME = Feels; PRODUCT_NAME = Reflect;
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;
@@ -1215,8 +1183,8 @@
); );
MACOSX_DEPLOYMENT_TARGET = 12.1; MACOSX_DEPLOYMENT_TARGET = 12.1;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.feels; PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.reflect;
PRODUCT_NAME = Feels; PRODUCT_NAME = Reflect;
SDKROOT = macosx; SDKROOT = macosx;
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@@ -1246,8 +1214,8 @@
); );
MACOSX_DEPLOYMENT_TARGET = 12.1; MACOSX_DEPLOYMENT_TARGET = 12.1;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.feels.debug; PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.reflect.debug;
PRODUCT_NAME = Feels; PRODUCT_NAME = Reflect;
SDKROOT = macosx; SDKROOT = macosx;
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@@ -1268,7 +1236,7 @@
SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = "Feels (iOS)"; TEST_TARGET_NAME = "Reflect (iOS)";
}; };
name = Debug; name = Debug;
}; };
@@ -1286,7 +1254,7 @@
SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = "Feels (iOS)"; TEST_TARGET_NAME = "Reflect (iOS)";
VALIDATE_PRODUCT = YES; VALIDATE_PRODUCT = YES;
}; };
name = Release; name = Release;
@@ -1305,7 +1273,7 @@
SDKROOT = macosx; SDKROOT = macosx;
SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_TARGET_NAME = "Feels (macOS)"; TEST_TARGET_NAME = "Reflect (macOS)";
}; };
name = Debug; name = Debug;
}; };
@@ -1323,7 +1291,7 @@
SDKROOT = macosx; SDKROOT = macosx;
SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_TARGET_NAME = "Feels (macOS)"; TEST_TARGET_NAME = "Reflect (macOS)";
}; };
name = Release; name = Release;
}; };
@@ -1332,14 +1300,14 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = FeelsWidgetExtensionDev.entitlements; CODE_SIGN_ENTITLEMENTS = ReflectWidgetExtensionDev.entitlements;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23; CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = QND55P4443; DEVELOPMENT_TEAM = QND55P4443;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "FeelsWidgetExtension-Info.plist"; INFOPLIST_FILE = "ReflectWidgetExtension-Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = FeelsWidget; INFOPLIST_KEY_CFBundleDisplayName = ReflectWidget;
INFOPLIST_KEY_NSHumanReadableCopyright = ""; INFOPLIST_KEY_NSHumanReadableCopyright = "";
INFOPLIST_KEY_NSSupportsLiveActivities = YES; INFOPLIST_KEY_NSSupportsLiveActivities = YES;
IPHONEOS_DEPLOYMENT_TARGET = 18.6; IPHONEOS_DEPLOYMENT_TARGET = 18.6;
@@ -1349,7 +1317,7 @@
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.0.2; MARKETING_VERSION = 1.0.2;
PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.feels.debug.widget; PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.reflect.debug.widget;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = iphoneos; SDKROOT = iphoneos;
@@ -1366,14 +1334,14 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = FeelsWidgetExtension.entitlements; CODE_SIGN_ENTITLEMENTS = ReflectWidgetExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23; CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = QND55P4443; DEVELOPMENT_TEAM = QND55P4443;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "FeelsWidgetExtension-Info.plist"; INFOPLIST_FILE = "ReflectWidgetExtension-Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = FeelsWidget; INFOPLIST_KEY_CFBundleDisplayName = ReflectWidget;
INFOPLIST_KEY_NSHumanReadableCopyright = ""; INFOPLIST_KEY_NSHumanReadableCopyright = "";
INFOPLIST_KEY_NSSupportsLiveActivities = YES; INFOPLIST_KEY_NSSupportsLiveActivities = YES;
IPHONEOS_DEPLOYMENT_TARGET = 18.6; IPHONEOS_DEPLOYMENT_TARGET = 18.6;
@@ -1383,7 +1351,7 @@
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.0.2; MARKETING_VERSION = 1.0.2;
PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.feels.widget; PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.reflect.widget;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = iphoneos; SDKROOT = iphoneos;
@@ -1404,13 +1372,13 @@
DEVELOPMENT_TEAM = QND55P4443; DEVELOPMENT_TEAM = QND55P4443;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 18.0; IPHONEOS_DEPLOYMENT_TARGET = 18.0;
PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.feels.tests; PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.reflect.tests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Feels.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Feels"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Reflect.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Reflect";
}; };
name = Debug; name = Debug;
}; };
@@ -1419,22 +1387,22 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = "Feels Watch App/Feels Watch App.entitlements"; CODE_SIGN_ENTITLEMENTS = "Reflect Watch App/Reflect Watch App.entitlements";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23; CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = QND55P4443; DEVELOPMENT_TEAM = QND55P4443;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_CFBundleDisplayName = Feels; INFOPLIST_KEY_CFBundleDisplayName = Reflect;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
INFOPLIST_KEY_WKCompanionAppBundleIdentifier = com.88oakapps.feels; INFOPLIST_KEY_WKCompanionAppBundleIdentifier = com.88oakapps.reflect;
INFOPLIST_KEY_WKRunsIndependentlyOfCompanionApp = NO; INFOPLIST_KEY_WKRunsIndependentlyOfCompanionApp = NO;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.2; MARKETING_VERSION = 1.0.2;
PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.feels.watch; PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.reflect.watch;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = watchos; SDKROOT = watchos;
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
@@ -1454,13 +1422,13 @@
DEVELOPMENT_TEAM = QND55P4443; DEVELOPMENT_TEAM = QND55P4443;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 18.0; IPHONEOS_DEPLOYMENT_TARGET = 18.0;
PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.feels.tests; PRODUCT_BUNDLE_IDENTIFIER = com.88oakapps.reflect.tests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Feels.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Feels"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Reflect.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Reflect";
VALIDATE_PRODUCT = YES; VALIDATE_PRODUCT = YES;
}; };
name = Release; name = Release;
@@ -1468,7 +1436,7 @@
/* End XCBuildConfiguration section */ /* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */ /* Begin XCConfigurationList section */
1B7D3790BF564C5392D480B2 /* Build configuration list for PBXNativeTarget "Feels Watch App" */ = { 1B7D3790BF564C5392D480B2 /* Build configuration list for PBXNativeTarget "Reflect Watch App" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
1AA0E790DCE44476924A23BB /* Debug */, 1AA0E790DCE44476924A23BB /* Debug */,
@@ -1477,7 +1445,7 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
1CD90AE9278C7DDF001C4FEA /* Build configuration list for PBXProject "Feels" */ = { 1CD90AE9278C7DDF001C4FEA /* Build configuration list for PBXProject "Reflect" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
1CD90B20278C7DE0001C4FEA /* Debug */, 1CD90B20278C7DE0001C4FEA /* Debug */,
@@ -1486,7 +1454,7 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
1CD90B22278C7DE0001C4FEA /* Build configuration list for PBXNativeTarget "Feels (iOS)" */ = { 1CD90B22278C7DE0001C4FEA /* Build configuration list for PBXNativeTarget "Reflect (iOS)" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
1CD90B23278C7DE0001C4FEA /* Debug */, 1CD90B23278C7DE0001C4FEA /* Debug */,
@@ -1495,7 +1463,7 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
1CD90B25278C7DE0001C4FEA /* Build configuration list for PBXNativeTarget "Feels (macOS)" */ = { 1CD90B25278C7DE0001C4FEA /* Build configuration list for PBXNativeTarget "Reflect (macOS)" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
1CD90B26278C7DE0001C4FEA /* Debug */, 1CD90B26278C7DE0001C4FEA /* Debug */,
@@ -1522,7 +1490,7 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
1CD90B57278C7E7A001C4FEA /* Build configuration list for PBXNativeTarget "FeelsWidgetExtension" */ = { 1CD90B57278C7E7A001C4FEA /* Build configuration list for PBXNativeTarget "ReflectWidgetExtension" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
1CD90B58278C7E7A001C4FEA /* Debug */, 1CD90B58278C7E7A001C4FEA /* Debug */,
@@ -1531,7 +1499,7 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
611E0B1E1241C11626465A8D /* Build configuration list for PBXNativeTarget "FeelsTests" */ = { 611E0B1E1241C11626465A8D /* Build configuration list for PBXNativeTarget "ReflectTests" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
C9B28244C1A36D4F2FE7E61A /* Release */, C9B28244C1A36D4F2FE7E61A /* Release */,

View File

@@ -15,9 +15,9 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "1CD90AF4278C7DE0001C4FEA" BlueprintIdentifier = "1CD90AF4278C7DE0001C4FEA"
BuildableName = "Feels.app" BuildableName = "Reflect.app"
BlueprintName = "Feels (iOS)" BlueprintName = "Reflect (iOS)"
ReferencedContainer = "container:Feels.xcodeproj"> ReferencedContainer = "container:Reflect.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildActionEntry> </BuildActionEntry>
</BuildActionEntries> </BuildActionEntries>
@@ -33,9 +33,9 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "B375A511826E3AB53E2CF51A" BlueprintIdentifier = "B375A511826E3AB53E2CF51A"
BuildableName = "FeelsTests.xctest" BuildableName = "ReflectTests.xctest"
BlueprintName = "FeelsTests" BlueprintName = "ReflectTests"
ReferencedContainer = "container:Feels.xcodeproj"> ReferencedContainer = "container:Reflect.xcodeproj">
</BuildableReference> </BuildableReference>
</TestableReference> </TestableReference>
<TestableReference <TestableReference
@@ -45,7 +45,7 @@
BlueprintIdentifier = "1CD90B01278C7DE0001C4FEA" BlueprintIdentifier = "1CD90B01278C7DE0001C4FEA"
BuildableName = "Tests iOS.xctest" BuildableName = "Tests iOS.xctest"
BlueprintName = "Tests iOS" BlueprintName = "Tests iOS"
ReferencedContainer = "container:Feels.xcodeproj"> ReferencedContainer = "container:Reflect.xcodeproj">
</BuildableReference> </BuildableReference>
</TestableReference> </TestableReference>
</Testables> </Testables>
@@ -65,9 +65,9 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "1CD90AF4278C7DE0001C4FEA" BlueprintIdentifier = "1CD90AF4278C7DE0001C4FEA"
BuildableName = "Feels.app" BuildableName = "Reflect.app"
BlueprintName = "Feels (iOS)" BlueprintName = "Reflect (iOS)"
ReferencedContainer = "container:Feels.xcodeproj"> ReferencedContainer = "container:Reflect.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildableProductRunnable> </BuildableProductRunnable>
<StoreKitConfigurationFileReference <StoreKitConfigurationFileReference
@@ -85,9 +85,9 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "1CD90AF4278C7DE0001C4FEA" BlueprintIdentifier = "1CD90AF4278C7DE0001C4FEA"
BuildableName = "Feels.app" BuildableName = "Reflect.app"
BlueprintName = "Feels (iOS)" BlueprintName = "Reflect (iOS)"
ReferencedContainer = "container:Feels.xcodeproj"> ReferencedContainer = "container:Reflect.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildableProductRunnable> </BuildableProductRunnable>
</ProfileAction> </ProfileAction>

View File

@@ -16,9 +16,9 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "1CD90B44278C7E7A001C4FEA" BlueprintIdentifier = "1CD90B44278C7E7A001C4FEA"
BuildableName = "FeelsWidgetExtension.appex" BuildableName = "ReflectWidgetExtension.appex"
BlueprintName = "FeelsWidgetExtension" BlueprintName = "ReflectWidgetExtension"
ReferencedContainer = "container:Feels.xcodeproj"> ReferencedContainer = "container:Reflect.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildActionEntry> </BuildActionEntry>
<BuildActionEntry <BuildActionEntry
@@ -30,9 +30,9 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "1CD90AF4278C7DE0001C4FEA" BlueprintIdentifier = "1CD90AF4278C7DE0001C4FEA"
BuildableName = "Feels.app" BuildableName = "Reflect.app"
BlueprintName = "Feels (iOS)" BlueprintName = "Reflect (iOS)"
ReferencedContainer = "container:Feels.xcodeproj"> ReferencedContainer = "container:Reflect.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildActionEntry> </BuildActionEntry>
</BuildActionEntries> </BuildActionEntries>
@@ -63,24 +63,24 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "1CD90B44278C7E7A001C4FEA" BlueprintIdentifier = "1CD90B44278C7E7A001C4FEA"
BuildableName = "FeelsWidgetExtension.appex" BuildableName = "ReflectWidgetExtension.appex"
BlueprintName = "FeelsWidgetExtension" BlueprintName = "ReflectWidgetExtension"
ReferencedContainer = "container:Feels.xcodeproj"> ReferencedContainer = "container:Reflect.xcodeproj">
</BuildableReference> </BuildableReference>
</RemoteRunnable> </RemoteRunnable>
<MacroExpansion> <MacroExpansion>
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "1CD90AF4278C7DE0001C4FEA" BlueprintIdentifier = "1CD90AF4278C7DE0001C4FEA"
BuildableName = "Feels.app" BuildableName = "Reflect.app"
BlueprintName = "Feels (iOS)" BlueprintName = "Reflect (iOS)"
ReferencedContainer = "container:Feels.xcodeproj"> ReferencedContainer = "container:Reflect.xcodeproj">
</BuildableReference> </BuildableReference>
</MacroExpansion> </MacroExpansion>
<EnvironmentVariables> <EnvironmentVariables>
<EnvironmentVariable <EnvironmentVariable
key = "_XCWidgetKind" key = "_XCWidgetKind"
value = "FeelsIconWidget" value = "ReflectIconWidget"
isEnabled = "YES"> isEnabled = "YES">
</EnvironmentVariable> </EnvironmentVariable>
<EnvironmentVariable <EnvironmentVariable
@@ -108,9 +108,9 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "1CD90AF4278C7DE0001C4FEA" BlueprintIdentifier = "1CD90AF4278C7DE0001C4FEA"
BuildableName = "Feels.app" BuildableName = "Reflect.app"
BlueprintName = "Feels (iOS)" BlueprintName = "Reflect (iOS)"
ReferencedContainer = "container:Feels.xcodeproj"> ReferencedContainer = "container:Reflect.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildableProductRunnable> </BuildableProductRunnable>
</ProfileAction> </ProfileAction>

View File

@@ -8169,170 +8169,170 @@
} }
} }
}, },
"Feels": { "Reflect": {
"comment": "The name of the widget.", "comment": "The name of the widget.",
"isCommentAutoGenerated": true, "isCommentAutoGenerated": true,
"localizations": { "localizations": {
"de": { "de": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels" "value": "Reflect"
} }
}, },
"es": { "es": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels" "value": "Reflect"
} }
}, },
"fr": { "fr": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels" "value": "Reflect"
} }
}, },
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels" "value": "Reflect"
} }
}, },
"ko": { "ko": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels" "value": "Reflect"
} }
}, },
"pt-BR": { "pt-BR": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels" "value": "Reflect"
} }
} }
} }
}, },
"FEELS": { "REFLECT": {
"comment": "The name of the app.", "comment": "The name of the app.",
"isCommentAutoGenerated": true, "isCommentAutoGenerated": true,
"localizations": { "localizations": {
"de": { "de": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "FEELS" "value": "REFLECT"
} }
}, },
"es": { "es": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "FEELS" "value": "REFLECT"
} }
}, },
"fr": { "fr": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "FEELS" "value": "REFLECT"
} }
}, },
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "FEELS" "value": "REFLECT"
} }
}, },
"ko": { "ko": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "FEELS" "value": "REFLECT"
} }
}, },
"pt-BR": { "pt-BR": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "FEELS" "value": "REFLECT"
} }
} }
} }
}, },
"Feels Icon": { "Reflect Icon": {
"comment": "Name of the widget configuration.", "comment": "Name of the widget configuration.",
"isCommentAutoGenerated": true, "isCommentAutoGenerated": true,
"localizations": { "localizations": {
"de": { "de": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels-Symbol" "value": "Reflect-Symbol"
} }
}, },
"es": { "es": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Icono de Feels" "value": "Icono de Reflect"
} }
}, },
"fr": { "fr": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Icône Feels" "value": "Icône Reflect"
} }
}, },
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feelsアイコン" "value": "Reflectアイコン"
} }
}, },
"ko": { "ko": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels 아이콘" "value": "Reflect 아이콘"
} }
}, },
"pt-BR": { "pt-BR": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Ícone do Feels" "value": "Ícone do Reflect"
} }
} }
} }
}, },
"FEELS MIXTAPE": { "REFLECT MIXTAPE": {
"comment": "The name of the premium subscription experience.", "comment": "The name of the premium subscription experience.",
"isCommentAutoGenerated": true, "isCommentAutoGenerated": true,
"localizations": { "localizations": {
"de": { "de": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "FEELS MIXTAPE" "value": "REFLECT MIXTAPE"
} }
}, },
"es": { "es": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "FEELS MIXTAPE" "value": "REFLECT MIXTAPE"
} }
}, },
"fr": { "fr": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "FEELS MIXTAPE" "value": "REFLECT MIXTAPE"
} }
}, },
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "FEELS MIXTAPE" "value": "REFLECT MIXTAPE"
} }
}, },
"ko": { "ko": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "FEELS MIXTAPE" "value": "REFLECT MIXTAPE"
} }
}, },
"pt-BR": { "pt-BR": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "FEELS MIXTAPE" "value": "REFLECT MIXTAPE"
} }
} }
} }
@@ -8921,44 +8921,44 @@
} }
} }
}, },
"Help improve Feels by sharing anonymous usage data": { "Help improve Reflect by sharing anonymous usage data": {
"comment": "A description of the analytics toggle.", "comment": "A description of the analytics toggle.",
"isCommentAutoGenerated": true, "isCommentAutoGenerated": true,
"localizations": { "localizations": {
"de": { "de": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Hilf Feels zu verbessern, indem du anonyme Nutzungsdaten teilst" "value": "Hilf Reflect zu verbessern, indem du anonyme Nutzungsdaten teilst"
} }
}, },
"es": { "es": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Ayuda a mejorar Feels compartiendo datos de uso anónimos" "value": "Ayuda a mejorar Reflect compartiendo datos de uso anónimos"
} }
}, },
"fr": { "fr": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Aidez à améliorer Feels en partageant des données d'utilisation anonymes" "value": "Aidez à améliorer Reflect en partageant des données d'utilisation anonymes"
} }
}, },
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "匿名の使用データを共有してFeelsの改善に協力" "value": "匿名の使用データを共有してReflectの改善に協力"
} }
}, },
"ko": { "ko": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "익명 사용 데이터를 공유하여 Feels 개선에 도움을 주세요" "value": "익명 사용 데이터를 공유하여 Reflect 개선에 도움을 주세요"
} }
}, },
"pt-BR": { "pt-BR": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Ajude a melhorar o Feels compartilhando dados de uso anônimos" "value": "Ajude a melhorar o Reflect compartilhando dados de uso anônimos"
} }
} }
} }
@@ -9891,7 +9891,7 @@
} }
}, },
"Log Mood": { "Log Mood": {
"comment": "A button that opens Feels to log a mood.", "comment": "A button that opens Reflect to log a mood.",
"isCommentAutoGenerated": true, "isCommentAutoGenerated": true,
"localizations": { "localizations": {
"de": { "de": {
@@ -12212,128 +12212,128 @@
} }
} }
}, },
"Open Feels": { "Open Reflect": {
"comment": "Title of the app intent to open the Feels app.", "comment": "Title of the app intent to open the Reflect app.",
"isCommentAutoGenerated": true, "isCommentAutoGenerated": true,
"localizations": { "localizations": {
"de": { "de": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels öffnen" "value": "Reflect öffnen"
} }
}, },
"es": { "es": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Abrir Feels" "value": "Abrir Reflect"
} }
}, },
"fr": { "fr": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Ouvrir Feels" "value": "Ouvrir Reflect"
} }
}, },
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feelsを開く" "value": "Reflectを開く"
} }
}, },
"ko": { "ko": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels 열기" "value": "Reflect 열기"
} }
}, },
"pt-BR": { "pt-BR": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Abrir Feels" "value": "Abrir Reflect"
} }
} }
} }
}, },
"Open Feels to log your mood": { "Open Reflect to log your mood": {
"comment": "Description of the \"Log Mood\" control widget.", "comment": "Description of the \"Log Mood\" control widget.",
"isCommentAutoGenerated": true, "isCommentAutoGenerated": true,
"localizations": { "localizations": {
"de": { "de": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Öffne Feels, um deine Stimmung zu erfassen" "value": "Öffne Reflect, um deine Stimmung zu erfassen"
} }
}, },
"es": { "es": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Abre Feels para registrar tu estado de ánimo" "value": "Abre Reflect para registrar tu estado de ánimo"
} }
}, },
"fr": { "fr": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Ouvre Feels pour enregistrer ton humeur" "value": "Ouvre Reflect pour enregistrer ton humeur"
} }
}, },
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feelsを開いて気分を記録しよう" "value": "Reflectを開いて気分を記録しよう"
} }
}, },
"ko": { "ko": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels를 열어 기분을 기록하세요" "value": "Reflect를 열어 기분을 기록하세요"
} }
}, },
"pt-BR": { "pt-BR": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Abra o Feels para registrar seu humor" "value": "Abra o Reflect para registrar seu humor"
} }
} }
} }
}, },
"Open the Feels app to log your mood": { "Open the Reflect app to log your mood": {
"comment": "A user-visible description of the intent to open the Feels app to log your mood.", "comment": "A user-visible description of the intent to open the Reflect app to log your mood.",
"isCommentAutoGenerated": true, "isCommentAutoGenerated": true,
"localizations": { "localizations": {
"de": { "de": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Öffne die Feels-App, um deine Stimmung zu erfassen" "value": "Öffne die Reflect-App, um deine Stimmung zu erfassen"
} }
}, },
"es": { "es": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Abre la app Feels para registrar tu estado de ánimo" "value": "Abre la app Reflect para registrar tu estado de ánimo"
} }
}, },
"fr": { "fr": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Ouvre l'app Feels pour enregistrer ton humeur" "value": "Ouvre l'app Reflect pour enregistrer ton humeur"
} }
}, },
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feelsアプリを開いて気分を記録しよう" "value": "Reflectアプリを開いて気分を記録しよう"
} }
}, },
"ko": { "ko": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels 앱을 열어 기분을 기록하세요" "value": "Reflect 앱을 열어 기분을 기록하세요"
} }
}, },
"pt-BR": { "pt-BR": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Abra o app Feels para registrar seu humor" "value": "Abra o app Reflect para registrar seu humor"
} }
} }
} }
@@ -13520,43 +13520,43 @@
"de": { "de": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Ein iFeels-Abo gibt dir Zugang zu all deinen historischen Daten und den Monats- und Jahresdiagrammen." "value": "Ein iReflect-Abo gibt dir Zugang zu all deinen historischen Daten und den Monats- und Jahresdiagrammen."
} }
}, },
"en": { "en": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "An iFeels subscription gives you access to all of your historical data, and both Month and Year charts." "value": "An iReflect subscription gives you access to all of your historical data, and both Month and Year charts."
} }
}, },
"es": { "es": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Una suscripción a iFeels te da acceso a todos tus datos históricos, y a los gráficos de Mes y Año." "value": "Una suscripción a iReflect te da acceso a todos tus datos históricos, y a los gráficos de Mes y Año."
} }
}, },
"fr": { "fr": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Un abonnement iFeels vous donne accès à toutes vos données historiques, ainsi qu'aux graphiques Mois et Année." "value": "Un abonnement iReflect vous donne accès à toutes vos données historiques, ainsi qu'aux graphiques Mois et Année."
} }
}, },
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "iFeelsサブスクリプションで、すべての過去データと月・年チャートにアクセスできます。" "value": "iReflectサブスクリプションで、すべての過去データと月・年チャートにアクセスできます。"
} }
}, },
"ko": { "ko": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "iFeels 구독으로 모든 과거 데이터와 월별, 연도별 차트에 액세스할 수 있습니다." "value": "iReflect 구독으로 모든 과거 데이터와 월별, 연도별 차트에 액세스할 수 있습니다."
} }
}, },
"pt-BR": { "pt-BR": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Uma assinatura iFeels dá acesso a todos os seus dados históricos e aos gráficos de Mês e Ano." "value": "Uma assinatura iReflect dá acesso a todos os seus dados históricos e aos gráficos de Mês e Ano."
} }
} }
} }
@@ -13974,44 +13974,44 @@
} }
} }
}, },
"Record your mood for today in Feels": { "Record your mood for today in Reflect": {
"comment": "Title of the \"Log Mood\" app intent.", "comment": "Title of the \"Log Mood\" app intent.",
"isCommentAutoGenerated": true, "isCommentAutoGenerated": true,
"localizations": { "localizations": {
"de": { "de": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Erfasse deine Stimmung für heute in Feels" "value": "Erfasse deine Stimmung für heute in Reflect"
} }
}, },
"es": { "es": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Registra tu estado de ánimo de hoy en Feels" "value": "Registra tu estado de ánimo de hoy en Reflect"
} }
}, },
"fr": { "fr": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Enregistre ton humeur du jour dans Feels" "value": "Enregistre ton humeur du jour dans Reflect"
} }
}, },
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feelsで今日の気分を記録" "value": "Reflectで今日の気分を記録"
} }
}, },
"ko": { "ko": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels에서 오늘의 기분을 기록하세요" "value": "Reflect에서 오늘의 기분을 기록하세요"
} }
}, },
"pt-BR": { "pt-BR": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Registre seu humor de hoje no Feels" "value": "Registre seu humor de hoje no Reflect"
} }
} }
} }
@@ -15247,44 +15247,44 @@
} }
} }
}, },
"See what mood you logged today in Feels": { "See what mood you logged today in Reflect": {
"comment": "Title of an intent that allows the user to check their logged mood for the current day.", "comment": "Title of an intent that allows the user to check their logged mood for the current day.",
"isCommentAutoGenerated": true, "isCommentAutoGenerated": true,
"localizations": { "localizations": {
"de": { "de": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Sieh dir an, welche Stimmung du heute in Feels erfasst hast" "value": "Sieh dir an, welche Stimmung du heute in Reflect erfasst hast"
} }
}, },
"es": { "es": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Mira qué estado de ánimo registraste hoy en Feels" "value": "Mira qué estado de ánimo registraste hoy en Reflect"
} }
}, },
"fr": { "fr": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Vois quelle humeur tu as enregistrée aujourd'hui dans Feels" "value": "Vois quelle humeur tu as enregistrée aujourd'hui dans Reflect"
} }
}, },
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feelsで今日記録した気分を確認" "value": "Reflectで今日記録した気分を確認"
} }
}, },
"ko": { "ko": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels에서 오늘 기록한 기분 확인" "value": "Reflect에서 오늘 기록한 기분 확인"
} }
}, },
"pt-BR": { "pt-BR": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Veja qual humor você registrou hoje no Feels" "value": "Veja qual humor você registrou hoje no Reflect"
} }
} }
} }
@@ -15909,43 +15909,43 @@
"de": { "de": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Die Hintergrundaktualisierung ermöglicht es iFeels, dir rechtzeitig Benachrichtigungen zu senden, auch wenn die App nicht geöffnet ist. So verpasst du nie deinen täglichen Stimmungs-Check-in." "value": "Die Hintergrundaktualisierung ermöglicht es iReflect, dir rechtzeitig Benachrichtigungen zu senden, auch wenn die App nicht geöffnet ist. So verpasst du nie deinen täglichen Stimmungs-Check-in."
} }
}, },
"en": { "en": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Background App Refresh allows iFeels to send you timely notifications even when the app isn't open. This ensures you never miss your daily mood check-in." "value": "Background App Refresh allows iReflect to send you timely notifications even when the app isn't open. This ensures you never miss your daily mood check-in."
} }
}, },
"es": { "es": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "La actualización en segundo plano permite que iFeels te envíe notificaciones oportunas incluso cuando la app no está abierta. Esto asegura que nunca te pierdas tu registro diario de estado de ánimo." "value": "La actualización en segundo plano permite que iReflect te envíe notificaciones oportunas incluso cuando la app no está abierta. Esto asegura que nunca te pierdas tu registro diario de estado de ánimo."
} }
}, },
"fr": { "fr": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "L'actualisation en arrière-plan permet à iFeels de t'envoyer des notifications à temps même lorsque l'app n'est pas ouverte. Cela garantit que tu ne manques jamais ton enregistrement quotidien d'humeur." "value": "L'actualisation en arrière-plan permet à iReflect de t'envoyer des notifications à temps même lorsque l'app n'est pas ouverte. Cela garantit que tu ne manques jamais ton enregistrement quotidien d'humeur."
} }
}, },
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "バックグラウンド更新により、アプリを開いていなくてもiFeelsからタイムリーな通知を受け取れます。毎日の気分チェックインを見逃すことがありません。" "value": "バックグラウンド更新により、アプリを開いていなくてもiReflectからタイムリーな通知を受け取れます。毎日の気分チェックインを見逃すことがありません。"
} }
}, },
"ko": { "ko": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "백그라운드 앱 새로고침을 사용하면 앱이 열려 있지 않아도 iFeels에서 적시에 알림을 보낼 수 있습니다. 이를 통해 매일 기분 체크인을 놓치지 않습니다." "value": "백그라운드 앱 새로고침을 사용하면 앱이 열려 있지 않아도 iReflect에서 적시에 알림을 보낼 수 있습니다. 이를 통해 매일 기분 체크인을 놓치지 않습니다."
} }
}, },
"pt-BR": { "pt-BR": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "A atualização em segundo plano permite que o iFeels envie notificações no momento certo, mesmo quando o app não está aberto. Isso garante que você nunca perca seu registro diário de humor." "value": "A atualização em segundo plano permite que o iReflect envie notificações no momento certo, mesmo quando o app não está aberto. Isso garante que você nunca perca seu registro diário de humor."
} }
} }
} }
@@ -19425,44 +19425,44 @@
} }
} }
}, },
"Welcome to Feels": { "Welcome to Reflect": {
"comment": "The title of the welcome screen in the onboarding flow.", "comment": "The title of the welcome screen in the onboarding flow.",
"isCommentAutoGenerated": true, "isCommentAutoGenerated": true,
"localizations": { "localizations": {
"de": { "de": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Willkommen bei Feels" "value": "Willkommen bei Reflect"
} }
}, },
"es": { "es": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Bienvenido a Feels" "value": "Bienvenido a Reflect"
} }
}, },
"fr": { "fr": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Bienvenue dans Feels" "value": "Bienvenue dans Reflect"
} }
}, },
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feelsへようこそ" "value": "Reflectへようこそ"
} }
}, },
"ko": { "ko": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Feels에 오신 것을 환영합니다" "value": "Reflect에 오신 것을 환영합니다"
} }
}, },
"pt-BR": { "pt-BR": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Bem-vindo ao Feels" "value": "Bem-vindo ao Reflect"
} }
} }
} }

View File

@@ -1,13 +1,13 @@
// //
// DataControllerCRUDTests.swift // DataControllerCRUDTests.swift
// FeelsTests // ReflectTests
// //
// Tests for DataController create, read, update, and delete operations. // Tests for DataController create, read, update, and delete operations.
// //
import XCTest import XCTest
import SwiftData import SwiftData
@testable import Feels @testable import Reflect
@MainActor @MainActor
final class DataControllerCreateTests: XCTestCase { final class DataControllerCreateTests: XCTestCase {

View File

@@ -1,6 +1,6 @@
// //
// DayViewViewModelTests.swift // DayViewViewModelTests.swift
// FeelsTests // ReflectTests
// //
// Unit tests for DayViewViewModel.countEntries verifies safe counting // Unit tests for DayViewViewModel.countEntries verifies safe counting
// across various grouped dictionary shapes (TDD for force-unwrap fix). // across various grouped dictionary shapes (TDD for force-unwrap fix).
@@ -8,7 +8,7 @@
import XCTest import XCTest
import SwiftData import SwiftData
@testable import Feels @testable import Reflect
@MainActor @MainActor
final class DayViewViewModelTests: XCTestCase { final class DayViewViewModelTests: XCTestCase {

View File

@@ -1,13 +1,13 @@
// //
// IntegrationTests.swift // IntegrationTests.swift
// FeelsTests // ReflectTests
// //
// Integration tests verifying full lifecycle pipelines. // Integration tests verifying full lifecycle pipelines.
// //
import XCTest import XCTest
import SwiftData import SwiftData
@testable import Feels @testable import Reflect
@MainActor @MainActor
final class IntegrationTests: XCTestCase { final class IntegrationTests: XCTestCase {

View File

@@ -1,13 +1,13 @@
// //
// StreakTests.swift // StreakTests.swift
// FeelsTests // ReflectTests
// //
// Tests for DataController streak calculation. // Tests for DataController streak calculation.
// //
import XCTest import XCTest
import SwiftData import SwiftData
@testable import Feels @testable import Reflect
@MainActor @MainActor
final class StreakTests: XCTestCase { final class StreakTests: XCTestCase {

View File

@@ -1,13 +1,13 @@
// //
// VoteLogicsTests.swift // VoteLogicsTests.swift
// FeelsTests // ReflectTests
// //
// Tests for ShowBasedOnVoteLogics vote status and timing. // Tests for ShowBasedOnVoteLogics vote status and timing.
// //
import XCTest import XCTest
import SwiftData import SwiftData
@testable import Feels @testable import Reflect
@MainActor @MainActor
final class VoteLogicsTests: XCTestCase { final class VoteLogicsTests: XCTestCase {

View File

@@ -7,7 +7,7 @@
<key>NSExtensionAttributes</key> <key>NSExtensionAttributes</key>
<dict> <dict>
<key>WKAppBundleIdentifier</key> <key>WKAppBundleIdentifier</key>
<string>com.88oak.FeelsDebug.watchkitapp</string> <string>com.88oak.ReflectDebug.watchkitapp</string>
</dict> </dict>
<key>NSExtensionPointIdentifier</key> <key>NSExtensionPointIdentifier</key>
<string>com.apple.watchkit</string> <string>com.apple.watchkit</string>

View File

@@ -1,7 +1,7 @@
{ {
"images" : [ "images" : [
{ {
"filename" : "FeelsAppIcon.png", "filename" : "ReflectAppIcon.png",
"idiom" : "universal", "idiom" : "universal",
"platform" : "ios", "platform" : "ios",
"size" : "1024x1024" "size" : "1024x1024"
@@ -13,7 +13,7 @@
"value" : "dark" "value" : "dark"
} }
], ],
"filename" : "FeelsAppIcon 1.png", "filename" : "ReflectAppIcon 1.png",
"idiom" : "universal", "idiom" : "universal",
"platform" : "ios", "platform" : "ios",
"size" : "1024x1024" "size" : "1024x1024"

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Some files were not shown because too many files have changed in this diff Show More