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
@@ -1,13 +1,13 @@
package com.example.casera
package com.tt.honeyDue
import androidx.compose.ui.window.ComposeUIViewController
import com.example.casera.storage.TokenManager
import com.example.casera.storage.TokenStorage
import com.example.casera.storage.TaskCacheManager
import com.example.casera.storage.TaskCacheStorage
import com.example.casera.storage.ThemeStorage
import com.example.casera.storage.ThemeStorageManager
import com.example.casera.ui.theme.ThemeManager
import com.tt.honeyDue.storage.TokenManager
import com.tt.honeyDue.storage.TokenStorage
import com.tt.honeyDue.storage.TaskCacheManager
import com.tt.honeyDue.storage.TaskCacheStorage
import com.tt.honeyDue.storage.ThemeStorage
import com.tt.honeyDue.storage.ThemeStorageManager
import com.tt.honeyDue.ui.theme.ThemeManager
fun MainViewController() = ComposeUIViewController {
// Initialize TokenStorage with iOS TokenManager
@@ -1,4 +1,4 @@
package com.example.casera
package com.tt.honeyDue
import platform.UIKit.UIDevice
@@ -1,4 +1,4 @@
package com.example.casera.analytics
package com.tt.honeyDue.analytics
/**
* iOS implementation of PostHog Analytics.
@@ -1,4 +1,4 @@
package com.example.casera.data
package com.tt.honeyDue.data
import platform.Foundation.NSUserDefaults
@@ -1,4 +1,4 @@
package com.example.casera.network
package com.tt.honeyDue.network
import io.ktor.client.*
import io.ktor.client.engine.darwin.*
@@ -1,7 +1,7 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable
import com.example.casera.models.Contractor
import com.tt.honeyDue.models.Contractor
/**
* iOS implementation is a no-op - import is handled in Swift layer via ContractorSharingManager.swift.
@@ -1,10 +1,10 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable
import androidx.compose.ui.interop.LocalUIViewController
import com.example.casera.data.DataManager
import com.example.casera.models.CaseraShareCodec
import com.example.casera.models.Contractor
import com.tt.honeyDue.data.DataManager
import com.tt.honeyDue.models.honeyDueShareCodec
import com.tt.honeyDue.models.Contractor
import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.cinterop.addressOf
import kotlinx.cinterop.usePinned
@@ -18,7 +18,7 @@ actual fun rememberShareContractor(): (Contractor) -> Unit {
return share@{ contractor: Contractor ->
val currentUsername = DataManager.currentUser.value?.username ?: "Unknown"
val jsonContent = CaseraShareCodec.encodeContractorPackage(contractor, currentUsername)
val jsonContent = honeyDueShareCodec.encodeContractorPackage(contractor, currentUsername)
val fileUrl = writeShareFile(jsonContent, contractor.name) ?: return@share
presentShareSheet(viewController, fileUrl)
}
@@ -26,7 +26,7 @@ actual fun rememberShareContractor(): (Contractor) -> Unit {
@OptIn(ExperimentalForeignApi::class)
private fun writeShareFile(jsonContent: String, displayName: String): NSURL? {
val fileName = CaseraShareCodec.safeShareFileName(displayName)
val fileName = honeyDueShareCodec.safeShareFileName(displayName)
val filePath = NSTemporaryDirectory().plus(fileName)
val bytes = jsonContent.encodeToByteArray()
@@ -1,4 +1,4 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
@@ -1,4 +1,4 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
@@ -1,4 +1,4 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
@@ -1,9 +1,9 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import com.example.casera.network.APILayer
import com.example.casera.ui.subscription.UpgradeScreen
import com.tt.honeyDue.network.APILayer
import com.tt.honeyDue.ui.subscription.UpgradeScreen
import kotlinx.coroutines.launch
/**
@@ -1,7 +1,7 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable
import com.example.casera.models.JoinResidenceResponse
import com.tt.honeyDue.models.JoinResidenceResponse
/**
* iOS implementation is a no-op - import is handled in Swift layer via ResidenceSharingManager.swift.
@@ -1,4 +1,4 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
@@ -7,10 +7,10 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.interop.LocalUIViewController
import com.example.casera.models.CaseraShareCodec
import com.example.casera.models.Residence
import com.example.casera.network.APILayer
import com.example.casera.network.ApiResult
import com.tt.honeyDue.models.honeyDueShareCodec
import com.tt.honeyDue.models.Residence
import com.tt.honeyDue.network.APILayer
import com.tt.honeyDue.network.ApiResult
import kotlinx.coroutines.launch
import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.cinterop.addressOf
@@ -31,7 +31,7 @@ actual fun rememberShareResidence(): Pair<ResidenceSharingState, (Residence) ->
when (val result = APILayer.generateSharePackage(residence.id)) {
is ApiResult.Success -> {
val jsonContent = CaseraShareCodec.encodeSharedResidence(result.data)
val jsonContent = honeyDueShareCodec.encodeSharedResidence(result.data)
val fileUrl = writeShareFile(jsonContent, residence.name)
if (fileUrl == null) {
state = ResidenceSharingState(isLoading = false, error = "Failed to create share package")
@@ -59,7 +59,7 @@ actual fun rememberShareResidence(): Pair<ResidenceSharingState, (Residence) ->
@OptIn(ExperimentalForeignApi::class)
private fun writeShareFile(jsonContent: String, displayName: String): NSURL? {
val fileName = CaseraShareCodec.safeShareFileName(displayName)
val fileName = honeyDueShareCodec.safeShareFileName(displayName)
val filePath = NSTemporaryDirectory().plus(fileName)
val bytes = jsonContent.encodeToByteArray()
@@ -1,4 +1,4 @@
package com.example.casera.storage
package com.tt.honeyDue.storage
import platform.Foundation.NSUserDefaults
import kotlin.concurrent.Volatile
@@ -1,4 +1,4 @@
package com.example.casera.storage
package com.tt.honeyDue.storage
internal actual fun getPlatformTaskCacheManager(): TaskCacheManager? {
return TaskCacheManager.getInstance()
@@ -1,4 +1,4 @@
package com.example.casera.storage
package com.tt.honeyDue.storage
import platform.Foundation.NSUserDefaults
@@ -1,4 +1,4 @@
package com.example.casera.storage
package com.tt.honeyDue.storage
import kotlin.concurrent.Volatile
@@ -1,4 +1,4 @@
package com.example.casera.storage
package com.tt.honeyDue.storage
internal actual fun getPlatformTokenManager(): TokenManager? {
return TokenManager.getInstance()
@@ -1,4 +1,4 @@
package com.example.casera.ui.components.auth
package com.tt.honeyDue.ui.components.auth
import androidx.compose.runtime.Composable
@@ -1,6 +1,6 @@
package com.example.casera.util
package com.tt.honeyDue.util
import com.example.casera.platform.ImageData
import com.tt.honeyDue.platform.ImageData
import kotlinx.cinterop.*
import platform.Foundation.*
import platform.UIKit.*