Rebrand from Casera/MyCrib to honeyDue

Total rebrand across KMM project:
- Kotlin package: com.example.casera -> com.tt.honeyDue (dirs + declarations)
- Gradle: rootProject.name, namespace, applicationId
- Android: manifest, strings.xml (all languages), widget resources
- iOS: pbxproj bundle IDs, Info.plist, entitlements, xcconfig
- iOS directories: Casera/ -> HoneyDue/, CaseraTests/ -> HoneyDueTests/, etc.
- Swift source: all class/struct/enum renames
- Deep links: casera:// -> honeydue://, .casera -> .honeydue
- App icons replaced with honeyDue honeycomb icon
- Domains: casera.treytartt.com -> honeyDue.treytartt.com
- Bundle IDs: com.tt.casera -> com.tt.honeyDue
- Database table names preserved

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-03-07 06:33:57 -06:00
parent 9c574c4343
commit 1e2adf7660
450 changed files with 1730 additions and 1788 deletions

View File

@@ -81,7 +81,7 @@ static let cancelButton = "Alert.CancelButton"
1. **`iosApp/Helpers/AccessibilityIdentifiers.swift`**
- Renamed 6 cancel button identifiers to be context-specific
2. **`iosApp/MyCribTests/ComprehensiveResidenceTests.swift`**
2. **`iosApp/HoneyDueTests/ComprehensiveResidenceTests.swift`**
- Updated reference from `Residence.cancelButton``Residence.formCancelButton`
## Usage Examples
@@ -139,7 +139,7 @@ Button("Cancel Task") { }
The file should now compile without errors. To verify:
```bash
cd /Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp
cd /Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp
xcodebuild -project iosApp.xcodeproj -scheme iosApp -destination 'generic/platform=iOS Simulator' clean build
```

View File

@@ -4,7 +4,7 @@
<dict>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.tt.casera.CaseraDev</string>
<string>group.com.tt.honeyDue.HoneyDueDev</string>
</array>
</dict>
</plist>

View File

@@ -14,11 +14,11 @@
"testTargets" : [
{
"skippedTests" : [
"CaseraUITests",
"CaseraUITests\/testExample()",
"CaseraUITests\/testLaunchPerformance()",
"CaseraUITestsLaunchTests",
"CaseraUITestsLaunchTests\/testLaunch()",
"HoneyDueUITests",
"HoneyDueUITests\/testExample()",
"HoneyDueUITests\/testLaunchPerformance()",
"HoneyDueUITestsLaunchTests",
"HoneyDueUITestsLaunchTests\/testLaunch()",
"SimpleLoginTest",
"SimpleLoginTest\/testAppLaunchesAndShowsLoginScreen()",
"SimpleLoginTest\/testCanTypeInLoginFields()"
@@ -26,7 +26,7 @@
"target" : {
"containerPath" : "container:iosApp.xcodeproj",
"identifier" : "1CBF1BEC2ECD9768001BF56C",
"name" : "CaseraUITests"
"name" : "HoneyDueUITests"
}
}
],

View File

@@ -1,7 +1,7 @@
TEAM_ID=
PRODUCT_NAME=MyCrib
PRODUCT_BUNDLE_IDENTIFIER=com.example.mycrib.MyCrib$(TEAM_ID)
PRODUCT_NAME=honeyDue
PRODUCT_BUNDLE_IDENTIFIER=com.tt.honeyDue.HoneyDue$(TEAM_ID)
CURRENT_PROJECT_VERSION=1
MARKETING_VERSION=1.0

View File

@@ -1,7 +1,7 @@
# MyCrib iOS Design System
# HoneyDue iOS Design System
## Overview
This document outlines the modern, sleek design system implemented for the MyCrib iOS app.
This document outlines the modern, sleek design system implemented for the HoneyDue iOS app.
## Design Philosophy
- **Modern & Clean**: Minimalist approach with ample white space

View File

@@ -8,21 +8,21 @@ When compiling tests, you're seeing:
No such module 'iosApp'
```
This means the test target (`MyCribTests`) is not properly configured to access the main app target (`iosApp`).
This means the test target (`HoneyDueTests`) is not properly configured to access the main app target (`iosApp`).
## Solution: Configure Test Target in Xcode
### Step 1: Open Xcode Project
```bash
cd /Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp
cd /Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp
open iosApp.xcodeproj
```
### Step 2: Add Target Dependency
1. **Select the project** in the Project Navigator (top item, blue icon)
2. **Select `MyCribTests` target** in the targets list (middle column)
2. **Select `HoneyDueTests` target** in the targets list (middle column)
3. **Go to "Build Phases" tab** (top of editor)
4. **Expand "Dependencies" section**
5. **Click the "+" button** under Dependencies
@@ -31,7 +31,7 @@ open iosApp.xcodeproj
### Step 3: Configure Test Host
1. Still in **`MyCribTests` target** → **Build Settings** tab
1. Still in **`HoneyDueTests` target** → **Build Settings** tab
2. **Search for "Test Host"**
3. Set **Test Host** to:
```
@@ -57,7 +57,7 @@ open iosApp.xcodeproj
2. Go to **Build Settings** tab
3. **Search for "Product Module Name"**
4. Verify it says **`iosApp`**
- If it's different (e.g., "MyCrib"), you need to update your imports
- If it's different (e.g., "HoneyDue"), you need to update your imports
### Step 6: Clean and Build
@@ -84,12 +84,12 @@ If you prefer command-line configuration, you can use `xcodebuild` with PlistBud
### What It Should Look Like:
**MyCribTests Target → Build Phases → Dependencies:**
**HoneyDueTests Target → Build Phases → Dependencies:**
```
✅ iosApp (target)
```
**MyCribTests Target → Build Settings:**
**HoneyDueTests Target → Build Settings:**
```
Test Host: $(BUILT_PRODUCTS_DIR)/iosApp.app/iosApp
Bundle Loader: $(TEST_HOST)
@@ -140,7 +140,7 @@ Product Module Name: iosApp
After making changes, verify:
- [ ] `MyCribTests` target has `iosApp` in Dependencies
- [ ] `HoneyDueTests` target has `iosApp` in Dependencies
- [ ] Test Host is set to `$(BUILT_PRODUCTS_DIR)/iosApp.app/iosApp`
- [ ] Bundle Loader is set to `$(TEST_HOST)`
- [ ] `iosApp` target has "Enable Testability" = YES (Debug)

View File

@@ -1,11 +1,11 @@
# Fix MyCribTests Target Configuration
# Fix HoneyDueTests Target Configuration
## The Problem
The tests are failing with "No target application path specified" because the test target's `TEST_HOST` setting is hardcoded to a wrong path:
```
TEST_HOST = /Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp/build/Release-iphoneos/MyCrib.app//MyCrib
TEST_HOST = /Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp/build/Release-iphoneos/HoneyDue.app//HoneyDue
```
This path doesn't exist when running tests in Debug mode on the simulator.
@@ -14,13 +14,13 @@ This path doesn't exist when running tests in Debug mode on the simulator.
1. **Open the project in Xcode:**
```bash
cd /Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp
cd /Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp
open iosApp.xcodeproj
```
2. **Select the MyCribTests target:**
2. **Select the HoneyDueTests target:**
- Click on the project in the Project Navigator (blue icon at top)
- Select **MyCribTests** from the TARGETS list
- Select **HoneyDueTests** from the TARGETS list
3. **Go to Build Settings:**
- Click the **Build Settings** tab
@@ -34,11 +34,11 @@ This path doesn't exist when running tests in Debug mode on the simulator.
- Double-click the value field
- Change from:
```
/Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp/build/Release-iphoneos/MyCrib.app//MyCrib
/Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp/build/Release-iphoneos/HoneyDue.app//HoneyDue
```
- To:
```
$(BUILT_PRODUCTS_DIR)/MyCrib.app/MyCrib
$(BUILT_PRODUCTS_DIR)/HoneyDue.app/HoneyDue
```
- Press Enter
@@ -63,12 +63,12 @@ This path doesn't exist when running tests in Debug mode on the simulator.
After making these changes, run:
```bash
xcodebuild -project iosApp.xcodeproj -target MyCribTests -showBuildSettings | grep TEST_HOST
xcodebuild -project iosApp.xcodeproj -target HoneyDueTests -showBuildSettings | grep TEST_HOST
```
Should output:
```
TEST_HOST = $(BUILT_PRODUCTS_DIR)/MyCrib.app/MyCrib
TEST_HOST = $(BUILT_PRODUCTS_DIR)/HoneyDue.app/HoneyDue
```
NOT a hardcoded absolute path.

View File

@@ -1,6 +1,6 @@
//
// AppIntent.swift
// Casera
// honeyDue
//
// Created by Trey Tartt on 11/5/25.
//
@@ -11,8 +11,8 @@ import Foundation
// MARK: - Widget Configuration Intent
struct ConfigurationAppIntent: WidgetConfigurationIntent {
static var title: LocalizedStringResource { "Casera Configuration" }
static var description: IntentDescription { "Configure your Casera widget" }
static var title: LocalizedStringResource { "honeyDue Configuration" }
static var description: IntentDescription { "Configure your honeyDue widget" }
}
// MARK: - Complete Task Intent
@@ -43,13 +43,13 @@ struct CompleteTaskIntent: AppIntent {
// Check auth BEFORE marking pending if auth fails the task should remain visible
guard let token = WidgetActionManager.shared.getAuthToken() else {
print("CompleteTaskIntent: No auth token available")
WidgetCenter.shared.reloadTimelines(ofKind: "Casera")
WidgetCenter.shared.reloadTimelines(ofKind: "honeyDue")
return .result()
}
guard let baseURL = WidgetActionManager.shared.getAPIBaseURL() else {
print("CompleteTaskIntent: No API base URL available")
WidgetCenter.shared.reloadTimelines(ofKind: "Casera")
WidgetCenter.shared.reloadTimelines(ofKind: "honeyDue")
return .result()
}
@@ -57,7 +57,7 @@ struct CompleteTaskIntent: AppIntent {
WidgetActionManager.shared.markTaskPendingCompletion(taskId: taskId)
// Reload widget immediately to update task list and stats
WidgetCenter.shared.reloadTimelines(ofKind: "Casera")
WidgetCenter.shared.reloadTimelines(ofKind: "honeyDue")
// Make API call to complete the task
let success = await WidgetAPIClient.quickCompleteTask(
@@ -76,7 +76,7 @@ struct CompleteTaskIntent: AppIntent {
}
// Reload widget
WidgetCenter.shared.reloadTimelines(ofKind: "Casera")
WidgetCenter.shared.reloadTimelines(ofKind: "honeyDue")
return .result()
}
@@ -147,7 +147,7 @@ struct OpenTaskIntent: AppIntent {
final class WidgetActionManager {
static let shared = WidgetActionManager()
private let appGroupIdentifier = "group.com.tt.casera.CaseraDev"
private let appGroupIdentifier = "group.com.tt.honeyDue.HoneyDueDev"
private let pendingTasksFileName = "widget_pending_tasks.json"
private let tokenKey = "widget_auth_token"
private let dirtyFlagKey = "widget_tasks_dirty"
@@ -282,7 +282,7 @@ final class WidgetActionManager {
savePendingTaskStates(pendingTasks)
// Also reload widget
WidgetCenter.shared.reloadTimelines(ofKind: "Casera")
WidgetCenter.shared.reloadTimelines(ofKind: "honeyDue")
}
/// Clear all pending states

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@@ -1,6 +1,6 @@
//
// Casera.swift
// Casera
// honeyDue.swift
// honeyDue
//
// Created by Trey Tartt on 11/5/25.
//
@@ -110,7 +110,7 @@ class CacheManager {
}
}
private static let appGroupIdentifier = "group.com.tt.casera.CaseraDev"
private static let appGroupIdentifier = "group.com.tt.honeyDue.HoneyDueDev"
private static let tasksFileName = "widget_tasks.json"
/// Get the shared App Group container URL
@@ -242,7 +242,7 @@ struct SimpleEntry: TimelineEntry {
}
}
struct CaseraEntryView : View {
struct HoneyDueEntryView : View {
var entry: Provider.Entry
@Environment(\.widgetFamily) var family
@@ -754,12 +754,12 @@ struct OrganicStatPillWidget: View {
}
}
struct Casera: Widget {
let kind: String = "Casera"
struct honeyDue: Widget {
let kind: String = "honeyDue"
var body: some WidgetConfiguration {
AppIntentConfiguration(kind: kind, intent: ConfigurationAppIntent.self, provider: Provider()) { entry in
CaseraEntryView(entry: entry)
HoneyDueEntryView(entry: entry)
.containerBackground(for: .widget) {
// Organic warm gradient background
ZStack {
@@ -777,7 +777,7 @@ struct Casera: Widget {
}
}
}
.configurationDisplayName("Casera Tasks")
.configurationDisplayName("honeyDue Tasks")
.description("View and complete your upcoming tasks.")
.supportedFamilies([.systemSmall, .systemMedium, .systemLarge])
}
@@ -785,7 +785,7 @@ struct Casera: Widget {
// MARK: - Previews
#Preview(as: .systemSmall) {
Casera()
honeyDue()
} timeline: {
SimpleEntry(
date: .now,
@@ -878,7 +878,7 @@ struct Casera: Widget {
}
#Preview(as: .systemMedium) {
Casera()
honeyDue()
} timeline: {
SimpleEntry(
date: .now,
@@ -1010,7 +1010,7 @@ struct Casera: Widget {
}
#Preview(as: .systemLarge) {
Casera()
honeyDue()
} timeline: {
SimpleEntry(
date: .now,

View File

@@ -1,6 +1,6 @@
//
// CaseraBundle.swift
// Casera
// HoneyDueBundle.swift
// honeyDue
//
// Created by Trey Tartt on 11/5/25.
//
@@ -9,8 +9,8 @@ import WidgetKit
import SwiftUI
@main
struct CaseraBundle: WidgetBundle {
struct HoneyDueBundle: WidgetBundle {
var body: some Widget {
Casera()
honeyDue()
}
}

View File

@@ -2,7 +2,7 @@ import SwiftUI
// MARK: - Centered Icon View
struct CaseraIconView: View {
struct HoneyDueIconView: View {
var houseProgress: CGFloat = 1.0
var windowScale: CGFloat = 1.0
var checkmarkScale: CGFloat = 1.0
@@ -160,7 +160,7 @@ struct FullIntroAnimationView: View {
@State private var checkScale: CGFloat = 0
var body: some View {
CaseraIconView(
HoneyDueIconView(
houseProgress: houseProgress,
windowScale: windowScale,
checkmarkScale: checkScale
@@ -188,7 +188,7 @@ struct PulsatingCheckmarkView: View {
@State private var checkScale: CGFloat = 1.0
var body: some View {
CaseraIconView(checkmarkScale: checkScale)
HoneyDueIconView(checkmarkScale: checkScale)
.onAppear {
withAnimation(.easeInOut(duration: 0.5).repeatForever(autoreverses: true)) {
checkScale = 1.3
@@ -202,7 +202,7 @@ struct PulsingIconView: View {
var backgroundColor: Color? = nil
var body: some View {
CaseraIconView(backgroundColor: backgroundColor)
HoneyDueIconView(backgroundColor: backgroundColor)
.scaleEffect(scale)
.onAppear {
withAnimation(.easeInOut(duration: 0.8).repeatForever(autoreverses: true)) {
@@ -217,7 +217,7 @@ struct BouncyIconView: View {
@State private var scale: CGFloat = 0.5
var body: some View {
CaseraIconView()
HoneyDueIconView()
.scaleEffect(scale)
.offset(y: offset)
.onAppear {
@@ -233,7 +233,7 @@ struct WigglingIconView: View {
@State private var angle: Double = 0
var body: some View {
CaseraIconView()
HoneyDueIconView()
.rotationEffect(.degrees(angle))
.onAppear {
withAnimation(.easeInOut(duration: 0.1).repeatForever(autoreverses: true)) {
@@ -253,7 +253,7 @@ struct PlaygroundContentView: View {
var body: some View {
VStack(spacing: 20) {
Text("MyCrib Icon Animations")
Text("HoneyDue Icon Animations")
.font(.title)
.fontWeight(.bold)
@@ -310,7 +310,7 @@ struct PlaygroundContentView: View {
case 2: PulsingIconView()
case 3: BouncyIconView()
case 4: WigglingIconView()
default: CaseraIconView()
default: HoneyDueIconView()
}
}
}

View File

@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>Casera Preview</string>
<string>honeyDue Preview</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
@@ -24,7 +24,7 @@
<dict>
<key>QLSupportedContentTypes</key>
<array>
<string>com.casera.contractor</string>
<string>com.honeydue.contractor</string>
</array>
<key>QLSupportsSearchableItems</key>
<false/>

View File

@@ -1,6 +1,6 @@
//
// PreviewProvider.swift
// CaseraQLPreview
// honeyDueQLPreview
//
// Created by Trey Tartt on 12/6/25.
//

View File

@@ -5,7 +5,7 @@ class PreviewViewController: UIViewController, QLPreviewingController {
// MARK: - Types
/// Represents the type of .casera package
/// Represents the type of .honeydue package
private enum PackageType {
case contractor
case residence
@@ -45,7 +45,7 @@ class PreviewViewController: UIViewController, QLPreviewingController {
label.font = .systemFont(ofSize: 15, weight: .medium)
label.textColor = .secondaryLabel
label.textAlignment = .center
label.text = "Casera Contractor File"
label.text = "honeyDue Contractor File"
return label
}()
@@ -80,7 +80,7 @@ class PreviewViewController: UIViewController, QLPreviewingController {
label.textColor = UIColor(red: 7/255, green: 160/255, blue: 195/255, alpha: 1)
label.textAlignment = .center
label.numberOfLines = 0
label.text = "Tap the share button below, then select \"Casera\" to import this contractor."
label.text = "Tap the share button below, then select \"honeyDue\" to import this contractor."
return label
}()
@@ -104,7 +104,7 @@ class PreviewViewController: UIViewController, QLPreviewingController {
override func viewDidLoad() {
super.viewDidLoad()
print("CaseraQLPreview: viewDidLoad called")
print("honeyDueQLPreview: viewDidLoad called")
setupUI()
}
@@ -196,9 +196,9 @@ class PreviewViewController: UIViewController, QLPreviewingController {
// MARK: - QLPreviewingController
func preparePreviewOfFile(at url: URL) async throws {
print("CaseraQLPreview: preparePreviewOfFile called with URL: \(url)")
print("honeyDueQLPreview: preparePreviewOfFile called with URL: \(url)")
// Parse the .casera file single Codable pass to detect type, then decode
// Parse the .honeydue file single Codable pass to detect type, then decode
let data = try Data(contentsOf: url)
let decoder = JSONDecoder()
@@ -209,7 +209,7 @@ class PreviewViewController: UIViewController, QLPreviewingController {
let residence = try decoder.decode(ResidencePreviewData.self, from: data)
self.residenceData = residence
print("CaseraQLPreview: Parsed residence: \(residence.residenceName)")
print("honeyDueQLPreview: Parsed residence: \(residence.residenceName)")
await MainActor.run {
self.updateUIForResidence(with: residence)
@@ -219,7 +219,7 @@ class PreviewViewController: UIViewController, QLPreviewingController {
let contractor = try decoder.decode(ContractorPreviewData.self, from: data)
self.contractorData = contractor
print("CaseraQLPreview: Parsed contractor: \(contractor.name)")
print("honeyDueQLPreview: Parsed contractor: \(contractor.name)")
await MainActor.run {
self.updateUIForContractor(with: contractor)
@@ -233,8 +233,8 @@ class PreviewViewController: UIViewController, QLPreviewingController {
iconImageView.image = UIImage(systemName: "person.crop.rectangle.stack", withConfiguration: config)
titleLabel.text = contractor.name
subtitleLabel.text = "Casera Contractor File"
instructionLabel.text = "Tap the share button below, then select \"Casera\" to import this contractor."
subtitleLabel.text = "honeyDue Contractor File"
instructionLabel.text = "Tap the share button below, then select \"honeyDue\" to import this contractor."
// Clear existing details
detailsStackView.arrangedSubviews.forEach { $0.removeFromSuperview() }
@@ -268,8 +268,8 @@ class PreviewViewController: UIViewController, QLPreviewingController {
iconImageView.image = UIImage(systemName: "house.fill", withConfiguration: config)
titleLabel.text = residence.residenceName
subtitleLabel.text = "Casera Residence Invite"
instructionLabel.text = "Tap the share button below, then select \"Casera\" to join this residence."
subtitleLabel.text = "honeyDue Residence Invite"
instructionLabel.text = "Tap the share button below, then select \"honeyDue\" to join this residence."
// Clear existing details
detailsStackView.arrangedSubviews.forEach { $0.removeFromSuperview() }

View File

@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>Casera Thumbnail</string>
<string>honeyDue Thumbnail</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
@@ -24,7 +24,7 @@
<dict>
<key>QLSupportedContentTypes</key>
<array>
<string>com.casera.contractor</string>
<string>com.honeydue.contractor</string>
</array>
<key>QLThumbnailMinimumDimension</key>
<integer>0</integer>

View File

@@ -1,6 +1,6 @@
//
// ThumbnailProvider.swift
// CaseraQLThumbnail
// honeyDueQLThumbnail
//
// Created by Trey Tartt on 12/6/25.
//
@@ -10,7 +10,7 @@ import QuickLookThumbnailing
class ThumbnailProvider: QLThumbnailProvider {
/// Represents the type of .casera package
/// Represents the type of .honeydue package
private enum PackageType {
case contractor
case residence

View File

@@ -1,13 +1,13 @@
//
// CaseraTests.swift
// CaseraTests
// honeyDueTests.swift
// honeyDueTests
//
// Created by Trey Tartt on 11/12/25.
//
import Testing
struct CaseraTests {
struct honeyDueTests {
@Test func example() async throws {
// Write your test here and use APIs like `#expect(...)` to check expected conditions.

View File

@@ -1,6 +1,6 @@
//
// DataLayerTests.swift
// CaseraTests
// honeyDueTests
//
// Unit tests for the DATA layer domain (DATA-001 through DATA-007).
// Exercises Kotlin DataManager directly from Swift without launching the app.
@@ -11,7 +11,7 @@
import Testing
import Foundation
@testable import Casera
@testable import honeyDue
import ComposeApp
// MARK: - Serialized Parent Suite (prevents concurrent DataManager mutations)

View File

@@ -1,6 +1,6 @@
//
// DataManagerExtendedTests.swift
// CaseraTests
// honeyDueTests
//
// Extended unit tests covering TASK-005, TASK-012, THEME-001, TCOMP-003, and QA-002.
//
@@ -11,7 +11,7 @@
import Testing
import Foundation
@testable import Casera
@testable import honeyDue
import ComposeApp
// MARK: - Extension of DataLayerTests (serialized parent in DataLayerTests.swift)

View File

@@ -1,13 +1,13 @@
//
// DateUtilsTests.swift
// CaseraTests
// honeyDueTests
//
// Unit tests for DateUtils formatting, parsing, and timezone utilities.
//
import Testing
import Foundation
@testable import Casera
@testable import honeyDue
// MARK: - DateUtils.formatDate Tests

View File

@@ -1,12 +1,12 @@
//
// DocumentHelpersTests.swift
// CaseraTests
// honeyDueTests
//
// Unit tests for DocumentTypeHelper and DocumentCategoryHelper.
//
import Testing
@testable import Casera
@testable import honeyDue
// MARK: - DocumentTypeHelper Tests

View File

@@ -1,12 +1,12 @@
//
// DoubleExtensionsTests.swift
// CaseraTests
// honeyDueTests
//
// Unit tests for Double, Int number formatting extensions.
//
import Testing
@testable import Casera
@testable import honeyDue
// MARK: - Double.toCurrency Tests

View File

@@ -1,13 +1,13 @@
//
// ErrorMessageParserTests.swift
// CaseraTests
// honeyDueTests
//
// Unit tests for ErrorMessageParser error code mapping, network error detection,
// and message parsing logic.
//
import Testing
@testable import Casera
@testable import honeyDue
// MARK: - API Error Code Mapping Tests

View File

@@ -1,13 +1,13 @@
//
// PasswordResetViewModelTests.swift
// CaseraTests
// honeyDueTests
//
// Unit tests for PasswordResetViewModel navigation, state management,
// and client-side validation (no network calls).
//
import Testing
@testable import Casera
@testable import honeyDue
// MARK: - PasswordResetStep Tests

View File

@@ -1,12 +1,12 @@
//
// StringExtensionsTests.swift
// CaseraTests
// honeyDueTests
//
// Unit tests for String and Optional<String> extensions.
//
import Testing
@testable import Casera
@testable import honeyDue
// MARK: - isBlank Tests

View File

@@ -1,6 +1,6 @@
//
// SubscriptionGatingTests.swift
// CaseraTests
// honeyDueTests
//
// Unit tests for SubscriptionCacheWrapper feature gating logic:
// currentTier, shouldShowUpgradePrompt, canShareResidence, canShareContractor.
@@ -10,7 +10,7 @@
import Testing
import Foundation
@testable import Casera
@testable import honeyDue
import ComposeApp
// MARK: - Helpers

View File

@@ -1,13 +1,13 @@
//
// TaskMetricsTests.swift
// CaseraTests
// honeyDueTests
//
// Unit tests for WidgetDataManager.TaskMetrics and task categorization logic.
//
import Testing
import Foundation
@testable import Casera
@testable import honeyDue
// MARK: - Column Name Constants Tests

View File

@@ -1,12 +1,12 @@
//
// ThemeIDTests.swift
// CaseraTests
// honeyDueTests
//
// Unit tests for ThemeID enum properties and round-tripping.
//
import Testing
@testable import Casera
@testable import honeyDue
// MARK: - ThemeID Enum Tests

View File

@@ -1,12 +1,12 @@
//
// ValidationHelpersTests.swift
// CaseraTests
// honeyDueTests
//
// Unit tests for ValidationHelpers, FormValidator, and related types.
//
import Testing
@testable import Casera
@testable import honeyDue
// MARK: - ValidationResult Tests

View File

@@ -1,12 +1,12 @@
//
// ValidationRulesTests.swift
// CaseraTests
// honeyDueTests
//
// Unit tests for ValidationError and ValidationRules (distinct from ValidationHelpers).
//
import Testing
@testable import Casera
@testable import honeyDue
// MARK: - ValidationError errorDescription Tests

View File

@@ -1,6 +1,6 @@
//
// WidgetActionTests.swift
// CaseraTests
// honeyDueTests
//
// Unit tests for WidgetDataManager.WidgetAction (Codable, Equatable, accessors)
// and WidgetDataManager.parseDate static helper.
@@ -8,7 +8,7 @@
import Testing
import Foundation
@testable import Casera
@testable import honeyDue
// MARK: - WidgetAction Codable Tests

View File

@@ -41,7 +41,7 @@ Required infra:
## Suite1
Detailed plan already captured in:
- `/Users/treyt/Desktop/code/MyCribKMM/iosApp/CaseraUITests/Docs/Suite1_Failing_Test_Rebuild_Plan.md`
- `/Users/treyt/Desktop/code/HoneyDueKMM/iosApp/HoneyDueUITests/Docs/Suite1_Failing_Test_Rebuild_Plan.md`
### Failing tests
- `test07_successfulRegistrationAndVerification`

View File

@@ -1,9 +1,9 @@
# Casera iOS UI Testing Architecture
# honeyDue iOS UI Testing Architecture
## Directory Structure
```
CaseraUITests/
HoneyDueUITests/
├── PageObjects/ # Screen abstractions (Page Object pattern)
│ ├── BaseScreen.swift # Common wait/assert utilities
│ ├── LoginScreen.swift # Login screen elements and actions
@@ -53,16 +53,16 @@ All interactive elements must have identifiers defined in `AccessibilityIdentifi
```bash
xcodebuild test -project iosApp.xcodeproj -scheme iosApp \
-sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 17' \
-only-testing:CaseraUITests/SmokeTests \
-only-testing:CaseraUITests/AuthCriticalPathTests \
-only-testing:CaseraUITests/NavigationCriticalPathTests
-only-testing:HoneyDueUITests/SmokeTests \
-only-testing:HoneyDueUITests/AuthCriticalPathTests \
-only-testing:HoneyDueUITests/NavigationCriticalPathTests
```
### Full Regression (nightly)
```bash
xcodebuild test -project iosApp.xcodeproj -scheme iosApp \
-sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 17' \
-only-testing:CaseraUITests
-only-testing:HoneyDueUITests
```
## Flake Reduction

View File

@@ -4,8 +4,8 @@ import XCTest
///
/// SETUP REQUIREMENTS:
/// This test suite requires the app to be UNINSTALLED before running.
/// Add a Pre-action script to the CaseraUITests scheme (Edit Scheme Test Pre-actions):
/// /usr/bin/xcrun simctl uninstall booted com.tt.casera.CaseraDev
/// Add a Pre-action script to the honeyDueUITests scheme (Edit Scheme Test Pre-actions):
/// /usr/bin/xcrun simctl uninstall booted com.tt.honeyDue.HoneyDueDev
/// exit 0
///
/// There is ONE fresh-install test that runs the complete onboarding flow.

View File

@@ -1,7 +1,7 @@
import XCTest
/// Comprehensive End-to-End Test Suite
/// Closely mirrors TestIntegration_ComprehensiveE2E from myCribAPI-go/internal/integration/integration_test.go
/// Closely mirrors TestIntegration_ComprehensiveE2E from honeyDueAPI-go/internal/integration/integration_test.go
///
/// This test creates a complete scenario:
/// 1. Registers a new user and verifies login

View File

@@ -1,7 +1,7 @@
import XCTest
/// Comprehensive End-to-End Integration Tests
/// Mirrors the backend integration tests in myCribAPI-go/internal/integration/integration_test.go
/// Mirrors the backend integration tests in honeyDueAPI-go/internal/integration/integration_test.go
///
/// This test suite covers:
/// 1. Full authentication flow (register, login, logout)

View File

@@ -2,9 +2,9 @@
## Overview
Refactor the MyCrib iOS codebase to improve adherence to SOLID principles and DRY patterns. This plan targets ~1,500 lines of code reduction while significantly improving testability and maintainability.
Refactor the HoneyDue iOS codebase to improve adherence to SOLID principles and DRY patterns. This plan targets ~1,500 lines of code reduction while significantly improving testability and maintainability.
**Scope**: `MyCribKMM/iosApp/iosApp/`
**Scope**: `HoneyDueKMM/iosApp/iosApp/`
**Estimated Effort**: 4-5 focused sessions
**Risk Level**: Medium (ViewModels are central to app functionality)

View File

@@ -17,7 +17,7 @@ The UI tests you're seeing fail are **failing for the right reason** - they cann
- Ready to be used in views
3.**Fixed test compilation issues**
- Added `@testable import MyCrib` to all test files
- Added `@testable import HoneyDue` to all test files
- Fixed ambiguous type references
- Tests compile successfully
@@ -260,7 +260,7 @@ xcodebuild test \
-project iosApp.xcodeproj \
-scheme iosApp \
-destination 'platform=iOS Simulator,name=iPhone 17' \
-only-testing:MyCribTests/ComprehensiveAuthenticationTests/testLoginWithValidCredentials
-only-testing:HoneyDueTests/ComprehensiveAuthenticationTests/testLoginWithValidCredentials
```
## Why Tests Are Failing Now

View File

@@ -1,4 +1,4 @@
# MyCrib iOS UI Tests
# HoneyDue iOS UI Tests
## ✅ Status: WORKING
@@ -85,25 +85,25 @@ XCTAssertTrue(addButton.waitForExistence(timeout: 5),
### In Xcode (Recommended)
1. Open `iosApp.xcodeproj`
2. Select **MyCribUITests** scheme
2. Select **HoneyDueUITests** scheme
3. Press `Cmd+U` to run all tests
4. Or click diamond icon next to individual test to run just that one
### Command Line
```bash
# Run all UI tests
xcodebuild test -project iosApp.xcodeproj -scheme MyCribUITests \
xcodebuild test -project iosApp.xcodeproj -scheme HoneyDueUITests \
-destination 'platform=iOS Simulator,name=iPhone 17'
# Run specific test file
xcodebuild test -project iosApp.xcodeproj -scheme MyCribUITests \
xcodebuild test -project iosApp.xcodeproj -scheme HoneyDueUITests \
-destination 'platform=iOS Simulator,name=iPhone 17' \
-only-testing:MyCribUITests/AuthenticationTests
-only-testing:HoneyDueUITests/AuthenticationTests
# Run specific test
xcodebuild test -project iosApp.xcodeproj -scheme MyCribUITests \
xcodebuild test -project iosApp.xcodeproj -scheme HoneyDueUITests \
-destination 'platform=iOS Simulator,name=iPhone 17' \
-only-testing:MyCribUITests/AuthenticationTests/testLoginWithValidCredentials
-only-testing:HoneyDueUITests/AuthenticationTests/testLoginWithValidCredentials
```
## 📝 Test Credentials

View File

@@ -1,4 +1,4 @@
# MyCrib iOS UI Tests - Complete Rewrite Summary
# HoneyDue iOS UI Tests - Complete Rewrite Summary
## ✅ Status: BUILD SUCCEEDED
@@ -152,10 +152,10 @@ All UI tests have been completely rewritten from scratch with comprehensive edge
- `takeScreenshot(named:)` - Named screenshots
### 5. **AccessibilityIdentifiers.swift** (213 lines)
Copied to MyCribUITests folder for UI test access without `@testable import`.
Copied to HoneyDueUITests folder for UI test access without `@testable import`.
### 6. **MyCribUITests.swift & MyCribUITestsLaunchTests.swift**
Updated to remove `@testable import MyCrib` (UI tests run in separate process).
### 6. **HoneyDueUITests.swift & HoneyDueUITestsLaunchTests.swift**
Updated to remove `@testable import HoneyDue` (UI tests run in separate process).
## 🗑️ Removed Files
- AuthenticationUITests.swift (old, had @testable import)
@@ -231,26 +231,26 @@ All tests compile successfully with no errors. Only warnings are from the main a
1. **Fix AccessibilityIdentifiers Target Membership:**
- Open `iosApp.xcodeproj` in Xcode
- Select `iosApp/Helpers/AccessibilityIdentifiers.swift` in Project Navigator
- In File Inspector (right panel), **uncheck** "MyCribUITests" from Target Membership
- In File Inspector (right panel), **uncheck** "HoneyDueUITests" from Target Membership
- Only `iosApp` should be checked
- The copy in `MyCribUITests/AccessibilityIdentifiers.swift` should have "MyCribUITests" checked
- The copy in `HoneyDueUITests/AccessibilityIdentifiers.swift` should have "HoneyDueUITests" checked
2. **Run Tests:**
```bash
# Run all UI tests
xcodebuild test -project iosApp.xcodeproj -scheme iosApp \
-destination 'platform=iOS Simulator,name=iPhone 17' \
-only-testing:MyCribUITests
-only-testing:HoneyDueUITests
# Run specific test class
xcodebuild test -project iosApp.xcodeproj -scheme iosApp \
-destination 'platform=iOS Simulator,name=iPhone 17' \
-only-testing:MyCribUITests/ComprehensiveAuthenticationTests
-only-testing:HoneyDueUITests/ComprehensiveAuthenticationTests
# Run specific test
xcodebuild test -project iosApp.xcodeproj -scheme iosApp \
-destination 'platform=iOS Simulator,name=iPhone 17' \
-only-testing:MyCribUITests/ComprehensiveAuthenticationTests/testLoginWithValidCredentials
-only-testing:HoneyDueUITests/ComprehensiveAuthenticationTests/testLoginWithValidCredentials
```
## 🎯 Test Philosophy

View File

@@ -1,4 +1,4 @@
# MyCrib iOS UI Test Strategy
# HoneyDue iOS UI Test Strategy
## Current Status: REBUILDING FROM SCRATCH
@@ -50,12 +50,12 @@ Once SimpleLoginTest works, we'll build:
### In Xcode (Recommended)
1. Open `iosApp.xcodeproj`
2. Select MyCribUITests scheme
2. Select HoneyDueUITests scheme
3. Press Cmd+U or click diamond icon next to test
### Command Line
```bash
xcodebuild test -project iosApp.xcodeproj -scheme MyCribUITests \
xcodebuild test -project iosApp.xcodeproj -scheme HoneyDueUITests \
-destination 'platform=iOS Simulator,name=iPhone 17'
```

View File

@@ -37,13 +37,13 @@ This is the fastest way to diagnose the issue:
1. **Open the project in Xcode:**
```bash
cd /Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp
cd /Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp
open iosApp.xcodeproj
```
2. **Select the Test target and a simulator:**
- Select "iPhone 17 Pro" simulator from the device dropdown
- Select the `MyCribTests` scheme
- Select the `HoneyDueTests` scheme
3. **Use UI Recording to see what elements exist:**
- Open `DebugLoginTest.swift`
@@ -84,12 +84,12 @@ Then run tests and check if "LoginView appeared" prints in console.
The `DebugLoginTest.swift` is already simplified. Try running it:
```bash
cd /Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp
cd /Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp
xcodebuild test \
-project iosApp.xcodeproj \
-scheme iosApp \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
-only-testing:MyCribTests/DebugLoginTest/testAppLaunches
-only-testing:HoneyDueTests/DebugLoginTest/testAppLaunches
```
Check if it passes (meaning the app launches and has SOME UI elements).
@@ -98,17 +98,17 @@ Check if it passes (meaning the app launches and has SOME UI elements).
### 1. AccessibilityIdentifiers Not in Test Target
Verify that `AccessibilityIdentifiers.swift` is included in the **iosApp target** (not MyCribTests):
Verify that `AccessibilityIdentifiers.swift` is included in the **iosApp target** (not HoneyDueTests):
- In Xcode, select `Helpers/AccessibilityIdentifiers.swift`
- In File Inspector (right panel), check "Target Membership"
- ✅ `iosApp` should be checked
- ❌ `MyCribTests` should NOT be checked
- ❌ `HoneyDueTests` should NOT be checked
### 2. LoginView Not Using Correct Identifiers
Double-check `Login/LoginView.swift`:
```bash
grep "accessibilityIdentifier" /Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp/iosApp/Login/LoginView.swift
grep "accessibilityIdentifier" /Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp/iosApp/Login/LoginView.swift
```
Should output:
@@ -148,50 +148,50 @@ Try moving initialization to background thread or making it async.
```bash
# Check if identifiers are in LoginView
grep -c "accessibilityIdentifier" /Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp/iosApp/Login/LoginView.swift
grep -c "accessibilityIdentifier" /Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp/iosApp/Login/LoginView.swift
# Should output: 6
# Check if AccessibilityIdentifiers exists
ls -la /Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp/iosApp/Helpers/AccessibilityIdentifiers.swift
ls -la /Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp/iosApp/Helpers/AccessibilityIdentifiers.swift
# Should show the file
# Run simplified debug test
cd /Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp
cd /Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp
xcodebuild test -project iosApp.xcodeproj -scheme iosApp \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
-only-testing:MyCribTests/DebugLoginTest/testAppLaunches 2>&1 | grep "Test Case"
-only-testing:HoneyDueTests/DebugLoginTest/testAppLaunches 2>&1 | grep "Test Case"
```
## Expected Output When Working
When tests work properly, you should see:
```
Test Case '-[MyCribTests.DebugLoginTest testAppLaunches]' started.
Test Case '-[HoneyDueTests.DebugLoginTest testAppLaunches]' started.
Activity 'Found 1 text fields' started
Activity 'Found 1 secure fields' started
Activity 'Found 5 buttons' started
Activity 'Email field exists: true' started
Activity 'Password field exists: true' started
Test Case '-[MyCribTests.DebugLoginTest testAppLaunches]' passed (5.234 seconds).
Test Case '-[HoneyDueTests.DebugLoginTest testAppLaunches]' passed (5.234 seconds).
```
Currently seeing:
```
Test Case '-[MyCribTests.DebugLoginTest testAppLaunches]' failed (0.540 seconds)
Test Case '-[HoneyDueTests.DebugLoginTest testAppLaunches]' failed (0.540 seconds)
```
The ~0.5 second failure suggests the app isn't even launching or is crashing immediately.
## Files Modified
- ✅ `/Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp/iosApp/Helpers/AccessibilityIdentifiers.swift` - Created
- ✅ `/Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp/iosApp/Login/LoginView.swift` - Added 6 identifiers
- ✅ `/Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp/iosApp/Login/RegisterView.swift` - Added 6 identifiers
- ✅ `/Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp/iosApp/MainTabView.swift` - Added 5 tab identifiers
- ✅ `/Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp/iosApp/Residence/*` - Added 15+ identifiers
- ✅ `/Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp/iosApp/Profile/ProfileTabView.swift` - Added logout identifier
- ✅ `/Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp/MyCribTests/TestHelpers.swift` - Updated to use identifiers
- ✅ `/Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp/MyCribTests/DebugLoginTest.swift` - Simplified debug test
- ✅ `/Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp/iosApp/Helpers/AccessibilityIdentifiers.swift` - Created
- ✅ `/Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp/iosApp/Login/LoginView.swift` - Added 6 identifiers
- ✅ `/Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp/iosApp/Login/RegisterView.swift` - Added 6 identifiers
- ✅ `/Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp/iosApp/MainTabView.swift` - Added 5 tab identifiers
- ✅ `/Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp/iosApp/Residence/*` - Added 15+ identifiers
- ✅ `/Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp/iosApp/Profile/ProfileTabView.swift` - Added logout identifier
- ✅ `/Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp/HoneyDueTests/TestHelpers.swift` - Updated to use identifiers
- ✅ `/Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp/HoneyDueTests/DebugLoginTest.swift` - Simplified debug test
## Next Action

View File

@@ -2,7 +2,7 @@
## Overview
This guide provides step-by-step instructions for implementing comprehensive UI testing for the MyCrib iOS app using XCUITest.
This guide provides step-by-step instructions for implementing comprehensive UI testing for the HoneyDue iOS app using XCUITest.
## Table of Contents
@@ -18,7 +18,7 @@ This guide provides step-by-step instructions for implementing comprehensive UI
### Current Status
**Already Done:**
- UI Test target exists: `MyCribTests`
- UI Test target exists: `HoneyDueTests`
- Base test infrastructure in place (`TestHelpers.swift`, `BaseUITest`)
- Initial test files created
@@ -272,12 +272,12 @@ Here's a checklist of all views that need accessibility identifiers:
1. **Open the project:**
```bash
cd /Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp
cd /Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp
open iosApp.xcodeproj
```
2. **Select the test target:**
- Product → Scheme → MyCribTests
- Product → Scheme → HoneyDueTests
3. **Choose a simulator:**
- iPhone 15 Pro (recommended)
@@ -296,27 +296,27 @@ Here's a checklist of all views that need accessibility identifiers:
```bash
# Navigate to iOS app directory
cd /Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp
cd /Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp
# Run all tests
xcodebuild test \
-project iosApp.xcodeproj \
-scheme MyCribTests \
-scheme HoneyDueTests \
-destination 'platform=iOS Simulator,name=iPhone 15 Pro,OS=17.0'
# Run specific test class
xcodebuild test \
-project iosApp.xcodeproj \
-scheme MyCribTests \
-scheme HoneyDueTests \
-destination 'platform=iOS Simulator,name=iPhone 15 Pro,OS=17.0' \
-only-testing:MyCribTests/AuthenticationUITests
-only-testing:HoneyDueTests/AuthenticationUITests
# Run specific test method
xcodebuild test \
-project iosApp.xcodeproj \
-scheme MyCribTests \
-scheme HoneyDueTests \
-destination 'platform=iOS Simulator,name=iPhone 15 Pro,OS=17.0' \
-only-testing:MyCribTests/AuthenticationUITests/testLoginWithValidCredentials
-only-testing:HoneyDueTests/AuthenticationUITests/testLoginWithValidCredentials
```
### Test Results
@@ -359,7 +359,7 @@ jobs:
- name: Start Django Backend
run: |
cd myCribAPI
cd honeyDueAPI
docker-compose up -d
sleep 10 # Wait for backend to start
@@ -369,10 +369,10 @@ jobs:
- name: Run iOS UI Tests
run: |
cd MyCribKMM/iosApp
cd HoneyDueKMM/iosApp
xcodebuild test \
-project iosApp.xcodeproj \
-scheme MyCribTests \
-scheme HoneyDueTests \
-destination 'platform=iOS Simulator,name=iPhone 15 Pro,OS=17.2' \
-resultBundlePath TestResults.xcresult \
-enableCodeCoverage YES
@@ -382,7 +382,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: test-results
path: MyCribKMM/iosApp/TestResults.xcresult
path: HoneyDueKMM/iosApp/TestResults.xcresult
- name: Upload Screenshots
if: failure()
@@ -395,7 +395,7 @@ jobs:
- name: Stop Docker Containers
if: always()
run: |
cd myCribAPI
cd honeyDueAPI
docker-compose down
```
@@ -408,10 +408,10 @@ jobs:
Create a `.xctestplan` file for better organization:
1. In Xcode: File → New → Test Plan
2. Name it: `MyCribTestPlan.xctestplan`
2. Name it: `HoneyDueTestPlan.xctestplan`
3. Configure:
- **Configurations**: Debug, Release
- **Test Targets**: MyCribTests
- **Test Targets**: HoneyDueTests
- **Code Coverage**: Enable
- **Screenshots**: Automatically on failure

View File

@@ -2,7 +2,7 @@
## Overview
This document summarizes the comprehensive XCUITest implementation created for the MyCrib iOS app. All deliverables are based on the `AUTOMATED_TEST_EXECUTION_PLAN.md` and follow iOS best practices for UI testing.
This document summarizes the comprehensive XCUITest implementation created for the HoneyDue iOS app. All deliverables are based on the `AUTOMATED_TEST_EXECUTION_PLAN.md` and follow iOS best practices for UI testing.
---
@@ -43,7 +43,7 @@ Three complete test files covering all major flows from the automated test plan:
####ComprehensiveAuthenticationTests.swift`
**Location:** `iosApp/MyCribTests/ComprehensiveAuthenticationTests.swift`
**Location:** `iosApp/HoneyDueTests/ComprehensiveAuthenticationTests.swift`
**Tests Included:**
- `testUserRegistrationComplete()` - Test 1.1: Full registration flow
@@ -70,7 +70,7 @@ Three complete test files covering all major flows from the automated test plan:
#### `ComprehensiveResidenceTests.swift`
**Location:** `iosApp/MyCribTests/ComprehensiveResidenceTests.swift`
**Location:** `iosApp/HoneyDueTests/ComprehensiveResidenceTests.swift`
**Tests Included:**
- `testCreateResidenceComplete()` - Test 2.1: Create property
@@ -102,7 +102,7 @@ Three complete test files covering all major flows from the automated test plan:
#### `ComprehensiveTaskTests.swift`
**Location:** `iosApp/MyCribTests/ComprehensiveTaskTests.swift`
**Location:** `iosApp/HoneyDueTests/ComprehensiveTaskTests.swift`
**Tests Included:**
- `testCreateOneTimeTaskComplete()` - Test 3.1: Create one-time task
@@ -192,7 +192,7 @@ A comprehensive 400+ line guide covering:
### 4. ✅ Enhanced Test Helpers (Already Existing)
**File:** `iosApp/MyCribTests/TestHelpers.swift` (Already in project)
**File:** `iosApp/HoneyDueTests/TestHelpers.swift` (Already in project)
The existing test infrastructure includes:
@@ -268,12 +268,12 @@ TextField("Email", text: $email)
1. **Open Xcode**
```bash
cd /Users/treyt/Desktop/code/MyCrib/MyCribKMM/iosApp
cd /Users/treyt/Desktop/code/HoneyDue/HoneyDueKMM/iosApp
open iosApp.xcodeproj
```
2. **Select Test Target**
- Product → Scheme → MyCribTests
- Product → Scheme → HoneyDueTests
3. **Run Individual Test**
- Open `ComprehensiveAuthenticationTests.swift`
@@ -397,13 +397,13 @@ TextField("Email", text: $email)
1. **`iosApp/Helpers/AccessibilityIdentifiers.swift`** (253 lines)
- Centralized accessibility identifiers
2. **`iosApp/MyCribTests/ComprehensiveAuthenticationTests.swift`** (232 lines)
2. **`iosApp/HoneyDueTests/ComprehensiveAuthenticationTests.swift`** (232 lines)
- 11 authentication tests
3. **`iosApp/MyCribTests/ComprehensiveResidenceTests.swift`** (387 lines)
3. **`iosApp/HoneyDueTests/ComprehensiveResidenceTests.swift`** (387 lines)
- 10 residence management tests
4. **`iosApp/MyCribTests/ComprehensiveTaskTests.swift`** (437 lines)
4. **`iosApp/HoneyDueTests/ComprehensiveTaskTests.swift`** (437 lines)
- 13 task management tests
5. **`iosApp/XCUITEST_IMPLEMENTATION_GUIDE.md`** (451 lines)
@@ -490,7 +490,7 @@ For questions about this implementation, refer to the guide or check:
## Summary
This implementation provides a **complete, production-ready XCUITest infrastructure** for the MyCrib iOS app:
This implementation provides a **complete, production-ready XCUITest infrastructure** for the HoneyDue iOS app:
**34 comprehensive tests** covering authentication, residences, and tasks
**Centralized accessibility identifiers** for maintainability

View File

@@ -1,8 +1,8 @@
# XCUITest Authoring
## Required Architecture
- Put shared test infrastructure in `/Users/treyt/Desktop/code/MyCribKMM/iosApp/CaseraUITests/Framework`.
- Put feature suites in `/Users/treyt/Desktop/code/MyCribKMM/iosApp/CaseraUITests/Tests`.
- Put shared test infrastructure in `/Users/treyt/Desktop/code/HoneyDueKMM/iosApp/HoneyDueUITests/Framework`.
- Put feature suites in `/Users/treyt/Desktop/code/HoneyDueKMM/iosApp/HoneyDueUITests/Tests`.
- Every test suite inherits `BaseUITestCase`.
- Reusable multi-step setup belongs in `TestFlows`.
- UI interactions should go through screen objects in `ScreenObjects.swift`.
@@ -12,7 +12,7 @@
- `--ui-testing`
- `--disable-animations`
- `--reset-state`
- App-side behavior for UI test mode is implemented in `/Users/treyt/Desktop/code/MyCribKMM/iosApp/iosApp/Helpers/UITestRuntime.swift`.
- App-side behavior for UI test mode is implemented in `/Users/treyt/Desktop/code/HoneyDueKMM/iosApp/iosApp/Helpers/UITestRuntime.swift`.
## Naming
- Test method naming format: `test<CaseID>_<BehaviorDescription>()`.

View File

@@ -9,11 +9,11 @@
/* Begin PBXBuildFile section */
1C0789402EBC218B00392B46 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C07893F2EBC218B00392B46 /* WidgetKit.framework */; };
1C0789422EBC218B00392B46 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C0789412EBC218B00392B46 /* SwiftUI.framework */; };
1C0789532EBC218D00392B46 /* CaseraExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 1C07893D2EBC218B00392B46 /* CaseraExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
1C0789532EBC218D00392B46 /* HoneyDueExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 1C07893D2EBC218B00392B46 /* HoneyDueExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
1C81F26B2EE416EE000739EA /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C81F26A2EE416EE000739EA /* QuickLook.framework */; };
1C81F2772EE416EF000739EA /* CaseraQLPreview.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 1C81F2692EE416EE000739EA /* CaseraQLPreview.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
1C81F2772EE416EF000739EA /* HoneyDueQLPreview.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 1C81F2692EE416EE000739EA /* HoneyDueQLPreview.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
1C81F2822EE41BB6000739EA /* QuickLookThumbnailing.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C81F2812EE41BB6000739EA /* QuickLookThumbnailing.framework */; };
1C81F2892EE41BB6000739EA /* CaseraQLThumbnail.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 1C81F2802EE41BB6000739EA /* CaseraQLThumbnail.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
1C81F2892EE41BB6000739EA /* HoneyDueQLThumbnail.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 1C81F2802EE41BB6000739EA /* HoneyDueQLThumbnail.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
1C81F3902EE69AF1000739EA /* PostHog in Frameworks */ = {isa = PBXBuildFile; productRef = 1C81F38F2EE69AF1000739EA /* PostHog */; };
/* End PBXBuildFile section */
@@ -23,21 +23,21 @@
containerPortal = 6A3E1D84F9F1A2FD92A75A6C /* Project object */;
proxyType = 1;
remoteGlobalIDString = 1C07893C2EBC218B00392B46;
remoteInfo = CaseraExtension;
remoteInfo = HoneyDueExtension;
};
1C81F2752EE416EF000739EA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6A3E1D84F9F1A2FD92A75A6C /* Project object */;
proxyType = 1;
remoteGlobalIDString = 1C81F2682EE416EE000739EA;
remoteInfo = CaseraQLPreview;
remoteInfo = HoneyDueQLPreview;
};
1C81F2872EE41BB6000739EA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6A3E1D84F9F1A2FD92A75A6C /* Project object */;
proxyType = 1;
remoteGlobalIDString = 1C81F27F2EE41BB6000739EA;
remoteInfo = CaseraQLThumbnail;
remoteInfo = HoneyDueQLThumbnail;
};
1CBF16002ECD8AE4001BF56C /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
@@ -62,9 +62,9 @@
dstPath = "";
dstSubfolderSpec = 13;
files = (
1C0789532EBC218D00392B46 /* CaseraExtension.appex in Embed Foundation Extensions */,
1C81F2892EE41BB6000739EA /* CaseraQLThumbnail.appex in Embed Foundation Extensions */,
1C81F2772EE416EF000739EA /* CaseraQLPreview.appex in Embed Foundation Extensions */,
1C0789532EBC218D00392B46 /* HoneyDueExtension.appex in Embed Foundation Extensions */,
1C81F2892EE41BB6000739EA /* HoneyDueQLThumbnail.appex in Embed Foundation Extensions */,
1C81F2772EE416EF000739EA /* HoneyDueQLPreview.appex in Embed Foundation Extensions */,
);
name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
@@ -72,66 +72,31 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
1C07893D2EBC218B00392B46 /* CaseraExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = CaseraExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
1C07893D2EBC218B00392B46 /* HoneyDueExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = HoneyDueExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
1C07893F2EBC218B00392B46 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
1C0789412EBC218B00392B46 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
1C0789612EBC2F5400392B46 /* CaseraExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = CaseraExtension.entitlements; sourceTree = "<group>"; };
1C685CD22EC5539000A9669B /* CaseraTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CaseraTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
1C81F2692EE416EE000739EA /* CaseraQLPreview.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = CaseraQLPreview.appex; sourceTree = BUILT_PRODUCTS_DIR; };
1C0789612EBC2F5400392B46 /* HoneyDueExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = HoneyDueExtension.entitlements; sourceTree = "<group>"; };
1C685CD22EC5539000A9669B /* HoneyDueTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HoneyDueTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
1C81F2692EE416EE000739EA /* HoneyDueQLPreview.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = HoneyDueQLPreview.appex; sourceTree = BUILT_PRODUCTS_DIR; };
1C81F26A2EE416EE000739EA /* QuickLook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLook.framework; path = System/Library/Frameworks/QuickLook.framework; sourceTree = SDKROOT; };
1C81F2802EE41BB6000739EA /* CaseraQLThumbnail.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = CaseraQLThumbnail.appex; sourceTree = BUILT_PRODUCTS_DIR; };
1C81F2802EE41BB6000739EA /* HoneyDueQLThumbnail.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = HoneyDueQLThumbnail.appex; sourceTree = BUILT_PRODUCTS_DIR; };
1C81F2812EE41BB6000739EA /* QuickLookThumbnailing.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLookThumbnailing.framework; path = System/Library/Frameworks/QuickLookThumbnailing.framework; sourceTree = SDKROOT; };
1C87A0C42EDB8ED40081E450 /* CaseraUITests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = CaseraUITests.xctestplan; sourceTree = "<group>"; };
1CBF1BED2ECD9768001BF56C /* CaseraUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CaseraUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
1C87A0C42EDB8ED40081E450 /* HoneyDueUITests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = HoneyDueUITests.xctestplan; sourceTree = "<group>"; };
1CBF1BED2ECD9768001BF56C /* HoneyDueUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HoneyDueUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
4B07E04F794A4C1CAA8CCD5D /* PhotoViewerSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoViewerSheet.swift; sourceTree = "<group>"; };
96A3DDC05E14B3F83E56282F /* Casera.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Casera.app; sourceTree = BUILT_PRODUCTS_DIR; };
96A3DDC05E14B3F83E56282F /* HoneyDue.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HoneyDue.app; sourceTree = BUILT_PRODUCTS_DIR; };
AD6CD907CA1045CBBC845D91 /* CompletionCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompletionCardView.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
1C0789572EBC218D00392B46 /* Exceptions for "Casera" folder in "CaseraExtension" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Info.plist,
);
target = 1C07893C2EBC218B00392B46 /* CaseraExtension */;
};
1C77EDA12ECE784100A53003 /* Exceptions for "iosApp" folder in "CaseraUITests" target */ = {
1C77EDA12ECE784100A53003 /* Exceptions for "iosApp" folder in "HoneyDueUITests" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Helpers/AccessibilityIdentifiers.swift,
);
target = 1CBF1BEC2ECD9768001BF56C /* CaseraUITests */;
target = 1CBF1BEC2ECD9768001BF56C /* HoneyDueUITests */;
};
1C77EDA22ECE797700A53003 /* Exceptions for "CaseraUITests" folder in "CaseraUITests" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
AccessibilityIdentifiers.swift,
);
target = 1CBF1BEC2ECD9768001BF56C /* CaseraUITests */;
};
1C81F27B2EE416EF000739EA /* Exceptions for "CaseraQLPreview" folder in "CaseraQLPreview" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Info.plist,
);
target = 1C81F2682EE416EE000739EA /* CaseraQLPreview */;
};
1C81F28D2EE41BB6000739EA /* Exceptions for "CaseraQLThumbnail" folder in "CaseraQLThumbnail" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Info.plist,
);
target = 1C81F27F2EE41BB6000739EA /* CaseraQLThumbnail */;
};
1C81F38A2EE5E430000739EA /* Exceptions for "Casera" folder in "Casera" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
CaseraIconView.swift,
);
target = D4ADB376A7A4CFB73469E173 /* Casera */;
};
1C87A67A2EDCC3100081E450 /* Exceptions for "iosApp" folder in "CaseraExtension" target */ = {
1C87A67A2EDCC3100081E450 /* Exceptions for "iosApp" folder in "HoneyDueExtension" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Assets.xcassets,
@@ -139,64 +104,41 @@
Design/OrganicDesign.swift,
Helpers/ThemeManager.swift,
);
target = 1C07893C2EBC218B00392B46 /* CaseraExtension */;
target = 1C07893C2EBC218B00392B46 /* HoneyDueExtension */;
};
1CBF1C072ECD97AC001BF56C /* Exceptions for "CaseraTests" folder in "CaseraTests" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
CaseraTests.swift,
);
target = 1C685CD12EC5539000A9669B /* CaseraTests */;
};
84D9B4B86A80D013B8CBB951 /* Exceptions for "iosApp" folder in "Casera" target */ = {
84D9B4B86A80D013B8CBB951 /* Exceptions for "iosApp" folder in "HoneyDue" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Info.plist,
);
target = D4ADB376A7A4CFB73469E173 /* Casera */;
target = D4ADB376A7A4CFB73469E173 /* HoneyDue */;
};
/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
/* Begin PBXFileSystemSynchronizedRootGroup section */
1C0789432EBC218B00392B46 /* Casera */ = {
1C0789432EBC218B00392B46 /* HoneyDue */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
1C81F38A2EE5E430000739EA /* Exceptions for "Casera" folder in "Casera" target */,
1C0789572EBC218D00392B46 /* Exceptions for "Casera" folder in "CaseraExtension" target */,
);
path = Casera;
path = HoneyDue;
sourceTree = "<group>";
};
1C685CD32EC5539000A9669B /* CaseraTests */ = {
1C685CD32EC5539000A9669B /* HoneyDueTests */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
1CBF1C072ECD97AC001BF56C /* Exceptions for "CaseraTests" folder in "CaseraTests" target */,
);
path = CaseraTests;
path = HoneyDueTests;
sourceTree = "<group>";
};
1C81F26C2EE416EE000739EA /* CaseraQLPreview */ = {
1C81F26C2EE416EE000739EA /* HoneyDueQLPreview */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
1C81F27B2EE416EF000739EA /* Exceptions for "CaseraQLPreview" folder in "CaseraQLPreview" target */,
);
path = CaseraQLPreview;
path = HoneyDueQLPreview;
sourceTree = "<group>";
};
1C81F2832EE41BB6000739EA /* CaseraQLThumbnail */ = {
1C81F2832EE41BB6000739EA /* HoneyDueQLThumbnail */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
1C81F28D2EE41BB6000739EA /* Exceptions for "CaseraQLThumbnail" folder in "CaseraQLThumbnail" target */,
);
path = CaseraQLThumbnail;
path = HoneyDueQLThumbnail;
sourceTree = "<group>";
};
1CBF1BEE2ECD9768001BF56C /* CaseraUITests */ = {
1CBF1BEE2ECD9768001BF56C /* HoneyDueUITests */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
1C77EDA22ECE797700A53003 /* Exceptions for "CaseraUITests" folder in "CaseraUITests" target */,
);
path = CaseraUITests;
path = HoneyDueUITests;
sourceTree = "<group>";
};
7A237E53D5D71D9D6A361E29 /* Configuration */ = {
@@ -207,9 +149,9 @@
E822E6B231E7783DE992578C /* iosApp */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
84D9B4B86A80D013B8CBB951 /* Exceptions for "iosApp" folder in "Casera" target */,
1C87A67A2EDCC3100081E450 /* Exceptions for "iosApp" folder in "CaseraExtension" target */,
1C77EDA12ECE784100A53003 /* Exceptions for "iosApp" folder in "CaseraUITests" target */,
84D9B4B86A80D013B8CBB951 /* Exceptions for "iosApp" folder in "HoneyDue" target */,
1C87A67A2EDCC3100081E450 /* Exceptions for "iosApp" folder in "HoneyDueExtension" target */,
1C77EDA12ECE784100A53003 /* Exceptions for "iosApp" folder in "HoneyDueUITests" target */,
);
path = iosApp;
sourceTree = "<group>";
@@ -290,15 +232,15 @@
86BC7E88090398B44B7DB0E4 = {
isa = PBXGroup;
children = (
1C87A0C42EDB8ED40081E450 /* CaseraUITests.xctestplan */,
1C0789612EBC2F5400392B46 /* CaseraExtension.entitlements */,
1C87A0C42EDB8ED40081E450 /* HoneyDueUITests.xctestplan */,
1C0789612EBC2F5400392B46 /* HoneyDueExtension.entitlements */,
7A237E53D5D71D9D6A361E29 /* Configuration */,
E822E6B231E7783DE992578C /* iosApp */,
1C0789432EBC218B00392B46 /* Casera */,
1C685CD32EC5539000A9669B /* CaseraTests */,
1CBF1BEE2ECD9768001BF56C /* CaseraUITests */,
1C81F26C2EE416EE000739EA /* CaseraQLPreview */,
1C81F2832EE41BB6000739EA /* CaseraQLThumbnail */,
1C0789432EBC218B00392B46 /* HoneyDue */,
1C685CD32EC5539000A9669B /* HoneyDueTests */,
1CBF1BEE2ECD9768001BF56C /* HoneyDueUITests */,
1C81F26C2EE416EE000739EA /* HoneyDueQLPreview */,
1C81F2832EE41BB6000739EA /* HoneyDueQLThumbnail */,
1C07893E2EBC218B00392B46 /* Frameworks */,
FA6022B7B844191C54E57EB4 /* Products */,
1C078A1B2EC1820B00392B46 /* Recovered References */,
@@ -308,12 +250,12 @@
FA6022B7B844191C54E57EB4 /* Products */ = {
isa = PBXGroup;
children = (
96A3DDC05E14B3F83E56282F /* Casera.app */,
1C07893D2EBC218B00392B46 /* CaseraExtension.appex */,
1C685CD22EC5539000A9669B /* CaseraTests.xctest */,
1CBF1BED2ECD9768001BF56C /* CaseraUITests.xctest */,
1C81F2692EE416EE000739EA /* CaseraQLPreview.appex */,
1C81F2802EE41BB6000739EA /* CaseraQLThumbnail.appex */,
96A3DDC05E14B3F83E56282F /* HoneyDue.app */,
1C07893D2EBC218B00392B46 /* HoneyDueExtension.appex */,
1C685CD22EC5539000A9669B /* HoneyDueTests.xctest */,
1CBF1BED2ECD9768001BF56C /* HoneyDueUITests.xctest */,
1C81F2692EE416EE000739EA /* HoneyDueQLPreview.appex */,
1C81F2802EE41BB6000739EA /* HoneyDueQLThumbnail.appex */,
);
name = Products;
sourceTree = "<group>";
@@ -321,9 +263,9 @@
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
1C07893C2EBC218B00392B46 /* CaseraExtension */ = {
1C07893C2EBC218B00392B46 /* HoneyDueExtension */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1C0789542EBC218D00392B46 /* Build configuration list for PBXNativeTarget "CaseraExtension" */;
buildConfigurationList = 1C0789542EBC218D00392B46 /* Build configuration list for PBXNativeTarget "HoneyDueExtension" */;
buildPhases = (
1C0789392EBC218B00392B46 /* Sources */,
1C07893A2EBC218B00392B46 /* Frameworks */,
@@ -334,18 +276,18 @@
dependencies = (
);
fileSystemSynchronizedGroups = (
1C0789432EBC218B00392B46 /* Casera */,
1C0789432EBC218B00392B46 /* HoneyDue */,
);
name = CaseraExtension;
name = HoneyDueExtension;
packageProductDependencies = (
);
productName = CaseraExtension;
productReference = 1C07893D2EBC218B00392B46 /* CaseraExtension.appex */;
productName = HoneyDueExtension;
productReference = 1C07893D2EBC218B00392B46 /* HoneyDueExtension.appex */;
productType = "com.apple.product-type.app-extension";
};
1C685CD12EC5539000A9669B /* CaseraTests */ = {
1C685CD12EC5539000A9669B /* HoneyDueTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1C685CD82EC5539000A9669B /* Build configuration list for PBXNativeTarget "CaseraTests" */;
buildConfigurationList = 1C685CD82EC5539000A9669B /* Build configuration list for PBXNativeTarget "HoneyDueTests" */;
buildPhases = (
1C685CCE2EC5539000A9669B /* Sources */,
1C685CCF2EC5539000A9669B /* Frameworks */,
@@ -357,18 +299,18 @@
1CBF16012ECD8AE4001BF56C /* PBXTargetDependency */,
);
fileSystemSynchronizedGroups = (
1C685CD32EC5539000A9669B /* CaseraTests */,
1C685CD32EC5539000A9669B /* HoneyDueTests */,
);
name = CaseraTests;
name = HoneyDueTests;
packageProductDependencies = (
);
productName = CaseraTests;
productReference = 1C685CD22EC5539000A9669B /* CaseraTests.xctest */;
productName = HoneyDueTests;
productReference = 1C685CD22EC5539000A9669B /* HoneyDueTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
1C81F2682EE416EE000739EA /* CaseraQLPreview */ = {
1C81F2682EE416EE000739EA /* HoneyDueQLPreview */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1C81F2782EE416EF000739EA /* Build configuration list for PBXNativeTarget "CaseraQLPreview" */;
buildConfigurationList = 1C81F2782EE416EF000739EA /* Build configuration list for PBXNativeTarget "HoneyDueQLPreview" */;
buildPhases = (
1C81F2652EE416EE000739EA /* Sources */,
1C81F2662EE416EE000739EA /* Frameworks */,
@@ -379,18 +321,18 @@
dependencies = (
);
fileSystemSynchronizedGroups = (
1C81F26C2EE416EE000739EA /* CaseraQLPreview */,
1C81F26C2EE416EE000739EA /* HoneyDueQLPreview */,
);
name = CaseraQLPreview;
name = HoneyDueQLPreview;
packageProductDependencies = (
);
productName = CaseraQLPreview;
productReference = 1C81F2692EE416EE000739EA /* CaseraQLPreview.appex */;
productName = HoneyDueQLPreview;
productReference = 1C81F2692EE416EE000739EA /* HoneyDueQLPreview.appex */;
productType = "com.apple.product-type.app-extension";
};
1C81F27F2EE41BB6000739EA /* CaseraQLThumbnail */ = {
1C81F27F2EE41BB6000739EA /* HoneyDueQLThumbnail */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1C81F28A2EE41BB6000739EA /* Build configuration list for PBXNativeTarget "CaseraQLThumbnail" */;
buildConfigurationList = 1C81F28A2EE41BB6000739EA /* Build configuration list for PBXNativeTarget "HoneyDueQLThumbnail" */;
buildPhases = (
1C81F27C2EE41BB6000739EA /* Sources */,
1C81F27D2EE41BB6000739EA /* Frameworks */,
@@ -401,18 +343,18 @@
dependencies = (
);
fileSystemSynchronizedGroups = (
1C81F2832EE41BB6000739EA /* CaseraQLThumbnail */,
1C81F2832EE41BB6000739EA /* HoneyDueQLThumbnail */,
);
name = CaseraQLThumbnail;
name = HoneyDueQLThumbnail;
packageProductDependencies = (
);
productName = CaseraQLThumbnail;
productReference = 1C81F2802EE41BB6000739EA /* CaseraQLThumbnail.appex */;
productName = HoneyDueQLThumbnail;
productReference = 1C81F2802EE41BB6000739EA /* HoneyDueQLThumbnail.appex */;
productType = "com.apple.product-type.app-extension";
};
1CBF1BEC2ECD9768001BF56C /* CaseraUITests */ = {
1CBF1BEC2ECD9768001BF56C /* HoneyDueUITests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1CBF1BF52ECD9768001BF56C /* Build configuration list for PBXNativeTarget "CaseraUITests" */;
buildConfigurationList = 1CBF1BF52ECD9768001BF56C /* Build configuration list for PBXNativeTarget "HoneyDueUITests" */;
buildPhases = (
1CBF1BE92ECD9768001BF56C /* Sources */,
1CBF1BEA2ECD9768001BF56C /* Frameworks */,
@@ -424,18 +366,18 @@
1CBF1BF42ECD9768001BF56C /* PBXTargetDependency */,
);
fileSystemSynchronizedGroups = (
1CBF1BEE2ECD9768001BF56C /* CaseraUITests */,
1CBF1BEE2ECD9768001BF56C /* HoneyDueUITests */,
);
name = CaseraUITests;
name = HoneyDueUITests;
packageProductDependencies = (
);
productName = CaseraUITests;
productReference = 1CBF1BED2ECD9768001BF56C /* CaseraUITests.xctest */;
productName = HoneyDueUITests;
productReference = 1CBF1BED2ECD9768001BF56C /* HoneyDueUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
D4ADB376A7A4CFB73469E173 /* Casera */ = {
D4ADB376A7A4CFB73469E173 /* HoneyDue */ = {
isa = PBXNativeTarget;
buildConfigurationList = 293B4412461C9407D900D07D /* Build configuration list for PBXNativeTarget "Casera" */;
buildConfigurationList = 293B4412461C9407D900D07D /* Build configuration list for PBXNativeTarget "HoneyDue" */;
buildPhases = (
F4215B70FD6989F87745D84C /* Compile Kotlin Framework */,
3B506EC7E4A1032BA1E06A37 /* Sources */,
@@ -453,12 +395,12 @@
fileSystemSynchronizedGroups = (
E822E6B231E7783DE992578C /* iosApp */,
);
name = Casera;
name = HoneyDue;
packageProductDependencies = (
1C81F38F2EE69AF1000739EA /* PostHog */,
);
productName = iosApp;
productReference = 96A3DDC05E14B3F83E56282F /* Casera.app */;
productReference = 96A3DDC05E14B3F83E56282F /* HoneyDue.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
@@ -510,12 +452,12 @@
projectDirPath = "";
projectRoot = "";
targets = (
D4ADB376A7A4CFB73469E173 /* Casera */,
1C07893C2EBC218B00392B46 /* CaseraExtension */,
1C685CD12EC5539000A9669B /* CaseraTests */,
1CBF1BEC2ECD9768001BF56C /* CaseraUITests */,
1C81F2682EE416EE000739EA /* CaseraQLPreview */,
1C81F27F2EE41BB6000739EA /* CaseraQLThumbnail */,
D4ADB376A7A4CFB73469E173 /* HoneyDue */,
1C07893C2EBC218B00392B46 /* HoneyDueExtension */,
1C685CD12EC5539000A9669B /* HoneyDueTests */,
1CBF1BEC2ECD9768001BF56C /* HoneyDueUITests */,
1C81F2682EE416EE000739EA /* HoneyDueQLPreview */,
1C81F27F2EE41BB6000739EA /* HoneyDueQLThumbnail */,
);
};
/* End PBXProject section */
@@ -635,27 +577,27 @@
/* Begin PBXTargetDependency section */
1C0789522EBC218D00392B46 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 1C07893C2EBC218B00392B46 /* CaseraExtension */;
target = 1C07893C2EBC218B00392B46 /* HoneyDueExtension */;
targetProxy = 1C0789512EBC218D00392B46 /* PBXContainerItemProxy */;
};
1C81F2762EE416EF000739EA /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 1C81F2682EE416EE000739EA /* CaseraQLPreview */;
target = 1C81F2682EE416EE000739EA /* HoneyDueQLPreview */;
targetProxy = 1C81F2752EE416EF000739EA /* PBXContainerItemProxy */;
};
1C81F2882EE41BB6000739EA /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 1C81F27F2EE41BB6000739EA /* CaseraQLThumbnail */;
target = 1C81F27F2EE41BB6000739EA /* HoneyDueQLThumbnail */;
targetProxy = 1C81F2872EE41BB6000739EA /* PBXContainerItemProxy */;
};
1CBF16012ECD8AE4001BF56C /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = D4ADB376A7A4CFB73469E173 /* Casera */;
target = D4ADB376A7A4CFB73469E173 /* HoneyDue */;
targetProxy = 1CBF16002ECD8AE4001BF56C /* PBXContainerItemProxy */;
};
1CBF1BF42ECD9768001BF56C /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = D4ADB376A7A4CFB73469E173 /* Casera */;
target = D4ADB376A7A4CFB73469E173 /* HoneyDue */;
targetProxy = 1CBF1BF32ECD9768001BF56C /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
@@ -677,8 +619,8 @@
INFOPLIST_FILE = iosApp/Info.plist;
INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO;
INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace = NO;
INFOPLIST_KEY_NSCameraUsageDescription = "Casera needs access to your camera to take photos of completed tasks";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Casera needs access to your photo library to select photos of completed tasks";
INFOPLIST_KEY_NSCameraUsageDescription = "honeyDue needs access to your camera to take photos of completed tasks";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "honeyDue needs access to your photo library to select photos of completed tasks";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
@@ -688,7 +630,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.tt.casera.CaseraDev;
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -700,15 +642,15 @@
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = CaseraExtension.entitlements;
CODE_SIGN_ENTITLEMENTS = HoneyDueExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = V3PF3M6B6U;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Casera/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Casera;
INFOPLIST_FILE = HoneyDue/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = honeyDue;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -718,7 +660,7 @@
);
MARKETING_VERSION = 1.0;
OTHER_SWIFT_FLAGS = "-DWIDGET_EXTENSION";
PRODUCT_BUNDLE_IDENTIFIER = com.tt.casera.CaseraDev.CaseraDev;
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueDev;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
@@ -735,15 +677,15 @@
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = CaseraExtension.entitlements;
CODE_SIGN_ENTITLEMENTS = HoneyDueExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = V3PF3M6B6U;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Casera/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Casera;
INFOPLIST_FILE = HoneyDue/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = honeyDue;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -753,7 +695,7 @@
);
MARKETING_VERSION = 1.0;
OTHER_SWIFT_FLAGS = "-DWIDGET_EXTENSION";
PRODUCT_BUNDLE_IDENTIFIER = com.tt.casera.CaseraDev.CaseraDev;
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueDev;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
@@ -777,7 +719,7 @@
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.t-t.CaseraTests";
PRODUCT_BUNDLE_IDENTIFIER = "com.t-t.HoneyDueTests";
PRODUCT_NAME = "$(TARGET_NAME)";
STRING_CATALOG_GENERATE_SYMBOLS = NO;
SWIFT_APPROACHABLE_CONCURRENCY = YES;
@@ -786,8 +728,8 @@
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Casera.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Casera";
TEST_TARGET_NAME = Casera;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HoneyDue.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/HoneyDue";
TEST_TARGET_NAME = HoneyDue;
};
name = Debug;
};
@@ -803,7 +745,7 @@
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.t-t.CaseraTests";
PRODUCT_BUNDLE_IDENTIFIER = "com.t-t.HoneyDueTests";
PRODUCT_NAME = "$(TARGET_NAME)";
STRING_CATALOG_GENERATE_SYMBOLS = NO;
SWIFT_APPROACHABLE_CONCURRENCY = YES;
@@ -812,8 +754,8 @@
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Casera.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Casera";
TEST_TARGET_NAME = Casera;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HoneyDue.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/HoneyDue";
TEST_TARGET_NAME = HoneyDue;
};
name = Release;
};
@@ -826,8 +768,8 @@
DEVELOPMENT_TEAM = V3PF3M6B6U;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = CaseraQLPreview/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = CaseraQLPreview;
INFOPLIST_FILE = HoneyDueQLPreview/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = HoneyDueQLPreview;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
LD_RUNPATH_SEARCH_PATHS = (
@@ -836,7 +778,7 @@
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.tt.casera.CaseraDev.CaseraQLPreview;
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueQLPreview;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
@@ -857,8 +799,8 @@
DEVELOPMENT_TEAM = V3PF3M6B6U;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = CaseraQLPreview/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = CaseraQLPreview;
INFOPLIST_FILE = HoneyDueQLPreview/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = HoneyDueQLPreview;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
LD_RUNPATH_SEARCH_PATHS = (
@@ -867,7 +809,7 @@
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.tt.casera.CaseraDev.CaseraQLPreview;
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueQLPreview;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
@@ -888,8 +830,8 @@
DEVELOPMENT_TEAM = V3PF3M6B6U;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = CaseraQLThumbnail/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = CaseraQLThumbnail;
INFOPLIST_FILE = HoneyDueQLThumbnail/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = HoneyDueQLThumbnail;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
LD_RUNPATH_SEARCH_PATHS = (
@@ -898,7 +840,7 @@
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.tt.casera.CaseraDev.CaseraQLThumbnail;
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueQLThumbnail;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
@@ -919,8 +861,8 @@
DEVELOPMENT_TEAM = V3PF3M6B6U;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = CaseraQLThumbnail/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = CaseraQLThumbnail;
INFOPLIST_FILE = HoneyDueQLThumbnail/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = HoneyDueQLThumbnail;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
LD_RUNPATH_SEARCH_PATHS = (
@@ -929,7 +871,7 @@
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.tt.casera.CaseraDev.CaseraQLThumbnail;
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueQLThumbnail;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
@@ -952,7 +894,7 @@
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
MACOSX_DEPLOYMENT_TARGET = 26.1;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.t-t.CaseraUITests";
PRODUCT_BUNDLE_IDENTIFIER = "com.t-t.HoneyDueUITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = auto;
STRING_CATALOG_GENERATE_SYMBOLS = NO;
@@ -962,7 +904,7 @@
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2,7";
TEST_TARGET_NAME = Casera;
TEST_TARGET_NAME = HoneyDue;
XROS_DEPLOYMENT_TARGET = 26.1;
};
name = Debug;
@@ -978,7 +920,7 @@
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
MACOSX_DEPLOYMENT_TARGET = 26.1;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.t-t.CaseraUITests";
PRODUCT_BUNDLE_IDENTIFIER = "com.t-t.HoneyDueUITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = auto;
STRING_CATALOG_GENERATE_SYMBOLS = NO;
@@ -988,7 +930,7 @@
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2,7";
TEST_TARGET_NAME = Casera;
TEST_TARGET_NAME = HoneyDue;
XROS_DEPLOYMENT_TARGET = 26.1;
};
name = Release;
@@ -1045,7 +987,7 @@
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
PRODUCT_NAME = Casera;
PRODUCT_NAME = honeyDue;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
VALIDATE_PRODUCT = YES;
@@ -1111,7 +1053,7 @@
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = Casera;
PRODUCT_NAME = honeyDue;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -1134,8 +1076,8 @@
INFOPLIST_FILE = iosApp/Info.plist;
INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO;
INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace = NO;
INFOPLIST_KEY_NSCameraUsageDescription = "Casera needs access to your camera to take photos of completed tasks";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Casera needs access to your photo library to select photos of completed tasks";
INFOPLIST_KEY_NSCameraUsageDescription = "honeyDue needs access to your camera to take photos of completed tasks";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "honeyDue needs access to your photo library to select photos of completed tasks";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
@@ -1145,7 +1087,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.tt.casera.CaseraDev;
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -1155,7 +1097,7 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1C0789542EBC218D00392B46 /* Build configuration list for PBXNativeTarget "CaseraExtension" */ = {
1C0789542EBC218D00392B46 /* Build configuration list for PBXNativeTarget "HoneyDueExtension" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1C0789552EBC218D00392B46 /* Debug */,
@@ -1164,7 +1106,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
1C685CD82EC5539000A9669B /* Build configuration list for PBXNativeTarget "CaseraTests" */ = {
1C685CD82EC5539000A9669B /* Build configuration list for PBXNativeTarget "HoneyDueTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1C685CD92EC5539000A9669B /* Debug */,
@@ -1173,7 +1115,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
1C81F2782EE416EF000739EA /* Build configuration list for PBXNativeTarget "CaseraQLPreview" */ = {
1C81F2782EE416EF000739EA /* Build configuration list for PBXNativeTarget "HoneyDueQLPreview" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1C81F2792EE416EF000739EA /* Debug */,
@@ -1182,7 +1124,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
1C81F28A2EE41BB6000739EA /* Build configuration list for PBXNativeTarget "CaseraQLThumbnail" */ = {
1C81F28A2EE41BB6000739EA /* Build configuration list for PBXNativeTarget "HoneyDueQLThumbnail" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1C81F28B2EE41BB6000739EA /* Debug */,
@@ -1191,7 +1133,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
1CBF1BF52ECD9768001BF56C /* Build configuration list for PBXNativeTarget "CaseraUITests" */ = {
1CBF1BF52ECD9768001BF56C /* Build configuration list for PBXNativeTarget "HoneyDueUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1CBF1BF62ECD9768001BF56C /* Debug */,
@@ -1200,7 +1142,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
293B4412461C9407D900D07D /* Build configuration list for PBXNativeTarget "Casera" */ = {
293B4412461C9407D900D07D /* Build configuration list for PBXNativeTarget "HoneyDue" */ = {
isa = XCConfigurationList;
buildConfigurations = (
E767E942685C7832D51FF978 /* Debug */,

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