iOS: complete bundle ID + team ID migration to com.myhoneydue.*
Carries the rebrand from the backend (APPLE_CLIENT_ID, APNS_TOPIC) all the way through the iOS targets: - All target PRODUCT_BUNDLE_IDENTIFIERs: com.tt.honeyDue.* → com.myhoneydue.honeyDue.* - DEVELOPMENT_TEAM: V3PF3M6B6U → X86BR9WTLD (across every target) - APP_GROUP_IDENTIFIER: group.com.tt.honeyDue.* → group.com.myhoneydue.honeyDue.* - BGTaskSchedulerPermittedIdentifiers + BackgroundTaskManager constant - KeychainHelper service identifier - StoreKit fallback product IDs + Info.plist IAP product ID keys - ExportOptions.plist teamID - NSCamera / NSPhotoLibrary usage descriptions reworded - Onboarding suggestion strings reworked (new %lld%% match copy, dropped old "Great match" / "Good match" / "Generating suggestions" strings — replaced by relevance-percentage labels) - xctestplan + settings.local.json housekeeping App-group rename means UserDefaults / shared-container data written to the old group ID is abandoned. Acceptable since this is pre-launch.
This commit is contained in:
@@ -18,7 +18,8 @@
|
|||||||
"Bash(ps:*)",
|
"Bash(ps:*)",
|
||||||
"Bash(stdbuf:*)",
|
"Bash(stdbuf:*)",
|
||||||
"Bash(sysctl:*)",
|
"Bash(sysctl:*)",
|
||||||
"Bash(tee:*)"
|
"Bash(tee:*)",
|
||||||
|
"Bash(codesign -d --entitlements :- /Users/treyt/Library/Developer/Xcode/DerivedData/honeyDue-buvczbpttcfkxxcmxbnqkqrmujyh/Build/Products/Debug-iphonesimulator/honeyDue.app)"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,6 @@
|
|||||||
<key>manageAppVersionAndBuildNumber</key>
|
<key>manageAppVersionAndBuildNumber</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>teamID</key>
|
<key>teamID</key>
|
||||||
<string>V3PF3M6B6U</string>
|
<string>X86BR9WTLD</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ final class WidgetActionManager {
|
|||||||
static let shared = WidgetActionManager()
|
static let shared = WidgetActionManager()
|
||||||
|
|
||||||
private let appGroupIdentifier: String = {
|
private let appGroupIdentifier: String = {
|
||||||
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.tt.honeyDue.dev"
|
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.myhoneydue.honeyDue.dev"
|
||||||
}()
|
}()
|
||||||
private let pendingTasksFileName = "widget_pending_tasks.json"
|
private let pendingTasksFileName = "widget_pending_tasks.json"
|
||||||
private let tokenKey = "widget_auth_token"
|
private let tokenKey = "widget_auth_token"
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ class CacheManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static let appGroupIdentifier: String = {
|
private static let appGroupIdentifier: String = {
|
||||||
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.tt.honeyDue.dev"
|
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.myhoneydue.honeyDue.dev"
|
||||||
}()
|
}()
|
||||||
private static let tasksFileName = "widget_tasks.json"
|
private static let tasksFileName = "widget_tasks.json"
|
||||||
|
|
||||||
|
|||||||
@@ -9,13 +9,13 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"defaultOptions" : {
|
"defaultOptions" : {
|
||||||
"testTimeoutsEnabled" : true,
|
|
||||||
"defaultTestExecutionTimeAllowance" : 300,
|
"defaultTestExecutionTimeAllowance" : 300,
|
||||||
"targetForVariableExpansion" : {
|
"targetForVariableExpansion" : {
|
||||||
"containerPath" : "container:honeyDue.xcodeproj",
|
"containerPath" : "container:honeyDue.xcodeproj",
|
||||||
"identifier" : "D4ADB376A7A4CFB73469E173",
|
"identifier" : "D4ADB376A7A4CFB73469E173",
|
||||||
"name" : "HoneyDue"
|
"name" : "HoneyDue"
|
||||||
}
|
},
|
||||||
|
"testTimeoutsEnabled" : true
|
||||||
},
|
},
|
||||||
"testTargets" : [
|
"testTargets" : [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -661,7 +661,7 @@
|
|||||||
0248CABA5A5197845F2E5C26 /* Release */ = {
|
0248CABA5A5197845F2E5C26 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
APP_GROUP_IDENTIFIER = group.com.tt.honeyDue;
|
APP_GROUP_IDENTIFIER = group.com.myhoneydue.honeyDue;
|
||||||
ARCHS = arm64;
|
ARCHS = arm64;
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
@@ -669,14 +669,15 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
|
DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
|
||||||
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
DEVELOPMENT_TEAM = X86BR9WTLD;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = iosApp/Info.plist;
|
INFOPLIST_FILE = iosApp/Info.plist;
|
||||||
INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO;
|
INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO;
|
||||||
INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace = NO;
|
INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace = NO;
|
||||||
INFOPLIST_KEY_NSCameraUsageDescription = "honeyDue needs access to your camera to take photos of completed tasks";
|
INFOPLIST_KEY_NSCameraUsageDescription = "honeyDue needs camera access to take photos of tasks, documents, and receipts.";
|
||||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "honeyDue needs access to your photo library to select photos of completed tasks";
|
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "honeyDue needs permission to save photos to your library.";
|
||||||
|
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "honeyDue needs photo library access to attach photos to tasks and documents.";
|
||||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||||
@@ -686,7 +687,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue;
|
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.honeyDue;
|
||||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
@@ -696,14 +697,14 @@
|
|||||||
1C0789552EBC218D00392B46 /* Debug */ = {
|
1C0789552EBC218D00392B46 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
APP_GROUP_IDENTIFIER = group.com.tt.honeyDue.dev;
|
APP_GROUP_IDENTIFIER = group.com.myhoneydue.honeyDue.dev;
|
||||||
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 = HoneyDueExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = HoneyDueExtension.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
DEVELOPMENT_TEAM = X86BR9WTLD;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = HoneyDue/Info.plist;
|
INFOPLIST_FILE = HoneyDue/Info.plist;
|
||||||
@@ -717,7 +718,7 @@
|
|||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
OTHER_SWIFT_FLAGS = "-DWIDGET_EXTENSION";
|
OTHER_SWIFT_FLAGS = "-DWIDGET_EXTENSION";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.dev.HoneyDueExtension;
|
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.honeyDue.dev.HoneyDueExtension;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||||
@@ -732,14 +733,14 @@
|
|||||||
1C0789562EBC218D00392B46 /* Release */ = {
|
1C0789562EBC218D00392B46 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
APP_GROUP_IDENTIFIER = group.com.tt.honeyDue;
|
APP_GROUP_IDENTIFIER = group.com.myhoneydue.honeyDue;
|
||||||
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 = HoneyDueExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = HoneyDueExtension.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
DEVELOPMENT_TEAM = X86BR9WTLD;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = HoneyDue/Info.plist;
|
INFOPLIST_FILE = HoneyDue/Info.plist;
|
||||||
@@ -753,7 +754,7 @@
|
|||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
OTHER_SWIFT_FLAGS = "-DWIDGET_EXTENSION";
|
OTHER_SWIFT_FLAGS = "-DWIDGET_EXTENSION";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueExtension;
|
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.honeyDue.HoneyDueExtension;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||||
@@ -772,12 +773,12 @@
|
|||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
DEVELOPMENT_TEAM = X86BR9WTLD;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.HoneyDueTests;
|
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.HoneyDueTests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
||||||
SWIFT_APPROACHABLE_CONCURRENCY = YES;
|
SWIFT_APPROACHABLE_CONCURRENCY = YES;
|
||||||
@@ -798,12 +799,12 @@
|
|||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
DEVELOPMENT_TEAM = X86BR9WTLD;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.HoneyDueTests;
|
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.HoneyDueTests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
||||||
SWIFT_APPROACHABLE_CONCURRENCY = YES;
|
SWIFT_APPROACHABLE_CONCURRENCY = YES;
|
||||||
@@ -823,7 +824,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
DEVELOPMENT_TEAM = X86BR9WTLD;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = HoneyDueQLPreview/Info.plist;
|
INFOPLIST_FILE = HoneyDueQLPreview/Info.plist;
|
||||||
@@ -836,7 +837,7 @@
|
|||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.dev.HoneyDueQLPreview;
|
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.honeyDue.dev.HoneyDueQLPreview;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||||
@@ -854,7 +855,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
DEVELOPMENT_TEAM = X86BR9WTLD;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = HoneyDueQLPreview/Info.plist;
|
INFOPLIST_FILE = HoneyDueQLPreview/Info.plist;
|
||||||
@@ -867,7 +868,7 @@
|
|||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueQLPreview;
|
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.honeyDue.HoneyDueQLPreview;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||||
@@ -885,7 +886,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
DEVELOPMENT_TEAM = X86BR9WTLD;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = HoneyDueQLThumbnail/Info.plist;
|
INFOPLIST_FILE = HoneyDueQLThumbnail/Info.plist;
|
||||||
@@ -898,7 +899,7 @@
|
|||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.dev.HoneyDueQLThumbnail;
|
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.honeyDue.dev.HoneyDueQLThumbnail;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||||
@@ -916,7 +917,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
DEVELOPMENT_TEAM = X86BR9WTLD;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = HoneyDueQLThumbnail/Info.plist;
|
INFOPLIST_FILE = HoneyDueQLThumbnail/Info.plist;
|
||||||
@@ -929,7 +930,7 @@
|
|||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueQLThumbnail;
|
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.honeyDue.HoneyDueQLThumbnail;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||||
@@ -946,13 +947,13 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
DEVELOPMENT_TEAM = X86BR9WTLD;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 26.1;
|
MACOSX_DEPLOYMENT_TARGET = 26.1;
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.HoneyDueUITests;
|
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.HoneyDueUITests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SDKROOT = auto;
|
SDKROOT = auto;
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
||||||
@@ -972,13 +973,13 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
DEVELOPMENT_TEAM = X86BR9WTLD;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 26.1;
|
MACOSX_DEPLOYMENT_TARGET = 26.1;
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.HoneyDueUITests;
|
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.HoneyDueUITests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SDKROOT = auto;
|
SDKROOT = auto;
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
||||||
@@ -1121,7 +1122,7 @@
|
|||||||
E767E942685C7832D51FF978 /* Debug */ = {
|
E767E942685C7832D51FF978 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
APP_GROUP_IDENTIFIER = group.com.tt.honeyDue.dev;
|
APP_GROUP_IDENTIFIER = group.com.myhoneydue.honeyDue.dev;
|
||||||
ARCHS = arm64;
|
ARCHS = arm64;
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
@@ -1129,14 +1130,15 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
|
DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
|
||||||
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
DEVELOPMENT_TEAM = X86BR9WTLD;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = iosApp/Info.plist;
|
INFOPLIST_FILE = iosApp/Info.plist;
|
||||||
INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO;
|
INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO;
|
||||||
INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace = NO;
|
INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace = NO;
|
||||||
INFOPLIST_KEY_NSCameraUsageDescription = "honeyDue needs access to your camera to take photos of completed tasks";
|
INFOPLIST_KEY_NSCameraUsageDescription = "honeyDue needs camera access to take photos of tasks, documents, and receipts.";
|
||||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "honeyDue needs access to your photo library to select photos of completed tasks";
|
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "honeyDue needs permission to save photos to your library.";
|
||||||
|
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "honeyDue needs photo library access to attach photos to tasks and documents.";
|
||||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||||
@@ -1146,7 +1148,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.dev;
|
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.honeyDue.dev;
|
||||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ final class BackgroundTaskManager {
|
|||||||
static let shared = BackgroundTaskManager()
|
static let shared = BackgroundTaskManager()
|
||||||
|
|
||||||
/// Background task identifier - must match Info.plist BGTaskSchedulerPermittedIdentifiers
|
/// Background task identifier - must match Info.plist BGTaskSchedulerPermittedIdentifiers
|
||||||
static let taskIdentifier = "com.tt.honeyDue.refresh"
|
static let taskIdentifier = "com.myhoneydue.honeyDue.refresh"
|
||||||
|
|
||||||
/// Time window for overnight refresh (12:00 AM - 4:00 AM)
|
/// Time window for overnight refresh (12:00 AM - 4:00 AM)
|
||||||
private let refreshWindowStartHour = 0 // 12:00 AM
|
private let refreshWindowStartHour = 0 // 12:00 AM
|
||||||
@@ -187,7 +187,7 @@ final class BackgroundTaskManager {
|
|||||||
|
|
||||||
/// Force a background refresh for testing (only works in debug builds with Xcode)
|
/// Force a background refresh for testing (only works in debug builds with Xcode)
|
||||||
/// Usage: In Xcode debugger console:
|
/// Usage: In Xcode debugger console:
|
||||||
/// e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateLaunchForTaskWithIdentifier:@"com.tt.honeyDue.refresh"]
|
/// e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateLaunchForTaskWithIdentifier:@"com.myhoneydue.honeyDue.refresh"]
|
||||||
func debugInfo() -> String {
|
func debugInfo() -> String {
|
||||||
return """
|
return """
|
||||||
Background Task Debug Info:
|
Background Task Debug Info:
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ enum ThemeID: String, CaseIterable, Codable {
|
|||||||
|
|
||||||
// MARK: - Shared App Group UserDefaults
|
// MARK: - Shared App Group UserDefaults
|
||||||
private let appGroupID: String = {
|
private let appGroupID: String = {
|
||||||
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.tt.honeyDue.dev"
|
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.myhoneydue.honeyDue.dev"
|
||||||
}()
|
}()
|
||||||
private let sharedDefaults: UserDefaults = {
|
private let sharedDefaults: UserDefaults = {
|
||||||
guard let defaults = UserDefaults(suiteName: appGroupID) else {
|
guard let defaults = UserDefaults(suiteName: appGroupID) else {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ final class WidgetDataManager {
|
|||||||
static let cancelledColumn = "cancelled_tasks"
|
static let cancelledColumn = "cancelled_tasks"
|
||||||
|
|
||||||
private let appGroupIdentifier: String = {
|
private let appGroupIdentifier: String = {
|
||||||
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.tt.honeyDue.dev"
|
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.myhoneydue.honeyDue.dev"
|
||||||
}()
|
}()
|
||||||
private let tasksFileName = "widget_tasks.json"
|
private let tasksFileName = "widget_tasks.json"
|
||||||
private let actionsFileName = "widget_pending_actions.json"
|
private let actionsFileName = "widget_pending_actions.json"
|
||||||
|
|||||||
@@ -6,14 +6,8 @@
|
|||||||
<string>$(APP_GROUP_IDENTIFIER)</string>
|
<string>$(APP_GROUP_IDENTIFIER)</string>
|
||||||
<key>BGTaskSchedulerPermittedIdentifiers</key>
|
<key>BGTaskSchedulerPermittedIdentifiers</key>
|
||||||
<array>
|
<array>
|
||||||
<string>com.tt.honeyDue.refresh</string>
|
<string>com.myhoneydue.honeyDue.refresh</string>
|
||||||
</array>
|
</array>
|
||||||
<key>HONEYDUE_IAP_ANNUAL_PRODUCT_ID</key>
|
|
||||||
<string>com.tt.honeyDue.pro.annual</string>
|
|
||||||
<key>HONEYDUE_IAP_MONTHLY_PRODUCT_ID</key>
|
|
||||||
<string>com.tt.honeyDue.pro.monthly</string>
|
|
||||||
<key>HONEYDUE_GOOGLE_WEB_CLIENT_ID</key>
|
|
||||||
<string></string>
|
|
||||||
<key>CFBundleDocumentTypes</key>
|
<key>CFBundleDocumentTypes</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
@@ -40,17 +34,17 @@
|
|||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
|
<key>HONEYDUE_GOOGLE_WEB_CLIENT_ID</key>
|
||||||
|
<string></string>
|
||||||
|
<key>HONEYDUE_IAP_ANNUAL_PRODUCT_ID</key>
|
||||||
|
<string>com.myhoneydue.honeyDue.pro.annual</string>
|
||||||
|
<key>HONEYDUE_IAP_MONTHLY_PRODUCT_ID</key>
|
||||||
|
<string>com.myhoneydue.honeyDue.pro.monthly</string>
|
||||||
<key>NSAppTransportSecurity</key>
|
<key>NSAppTransportSecurity</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSAllowsLocalNetworking</key>
|
<key>NSAllowsLocalNetworking</key>
|
||||||
<true/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
<key>NSCameraUsageDescription</key>
|
|
||||||
<string>honeyDue needs camera access to take photos of tasks, documents, and receipts.</string>
|
|
||||||
<key>NSPhotoLibraryUsageDescription</key>
|
|
||||||
<string>honeyDue needs photo library access to attach photos to tasks and documents.</string>
|
|
||||||
<key>NSPhotoLibraryAddUsageDescription</key>
|
|
||||||
<string>honeyDue needs permission to save photos to your library.</string>
|
|
||||||
<key>UIBackgroundModes</key>
|
<key>UIBackgroundModes</key>
|
||||||
<array>
|
<array>
|
||||||
<string>remote-notification</string>
|
<string>remote-notification</string>
|
||||||
|
|||||||
@@ -74,6 +74,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"%@, %@, %lld%% match" : {
|
||||||
|
"comment" : "A row that displays a suggestion with a title, frequency, and relevance percentage.",
|
||||||
|
"isCommentAutoGenerated" : true,
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "new",
|
||||||
|
"value" : "%1$@, %2$@, %3$lld%% match"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"%@, %@%@" : {
|
"%@, %@%@" : {
|
||||||
"comment" : "A button that displays the name of a product and its price.",
|
"comment" : "A button that displays the name of a product and its price.",
|
||||||
"isCommentAutoGenerated" : true,
|
"isCommentAutoGenerated" : true,
|
||||||
@@ -154,6 +166,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"%lld%%" : {
|
||||||
|
"comment" : "A badge that shows the relevance of a suggestion. The argument is the relevance percentage.",
|
||||||
|
"isCommentAutoGenerated" : true
|
||||||
|
},
|
||||||
"•" : {
|
"•" : {
|
||||||
"comment" : "A separator between different pieces of information in a text.",
|
"comment" : "A separator between different pieces of information in a text.",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
@@ -221,9 +237,6 @@
|
|||||||
},
|
},
|
||||||
"Add document" : {
|
"Add document" : {
|
||||||
|
|
||||||
},
|
|
||||||
"Add Most Popular" : {
|
|
||||||
|
|
||||||
},
|
},
|
||||||
"Add new property" : {
|
"Add new property" : {
|
||||||
"comment" : "A label displayed as a button in the toolbar.",
|
"comment" : "A label displayed as a button in the toolbar.",
|
||||||
@@ -17684,10 +17697,6 @@
|
|||||||
"comment" : "A button that generates a new share code.",
|
"comment" : "A button that generates a new share code.",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
},
|
},
|
||||||
"Generating suggestions..." : {
|
|
||||||
"comment" : "Text displayed while the app is generating personalized task suggestions.",
|
|
||||||
"isCommentAutoGenerated" : true
|
|
||||||
},
|
|
||||||
"Get notified when someone joins your property" : {
|
"Get notified when someone joins your property" : {
|
||||||
|
|
||||||
},
|
},
|
||||||
@@ -17710,16 +17719,8 @@
|
|||||||
"comment" : "A label for the back button.",
|
"comment" : "A label for the back button.",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
},
|
},
|
||||||
"Good match" : {
|
|
||||||
"comment" : "A label describing a task's relevance.",
|
|
||||||
"isCommentAutoGenerated" : true
|
|
||||||
},
|
|
||||||
"Google Sign-In Error" : {
|
"Google Sign-In Error" : {
|
||||||
|
|
||||||
},
|
|
||||||
"Great match" : {
|
|
||||||
"comment" : "A label describing a high-relevance task.",
|
|
||||||
"isCommentAutoGenerated" : true
|
|
||||||
},
|
},
|
||||||
"Help improve honeyDue by sharing anonymous usage data" : {
|
"Help improve honeyDue by sharing anonymous usage data" : {
|
||||||
|
|
||||||
@@ -17862,10 +17863,6 @@
|
|||||||
},
|
},
|
||||||
"No personal data is collected. Analytics are fully anonymous." : {
|
"No personal data is collected. Analytics are fully anonymous." : {
|
||||||
|
|
||||||
},
|
|
||||||
"No personalized suggestions yet" : {
|
|
||||||
"comment" : "A message displayed when the user has not yet been personalized.",
|
|
||||||
"isCommentAutoGenerated" : true
|
|
||||||
},
|
},
|
||||||
"No properties yet" : {
|
"No properties yet" : {
|
||||||
|
|
||||||
@@ -25444,6 +25441,10 @@
|
|||||||
"comment" : "A button label that allows users to skip the current onboarding step.",
|
"comment" : "A button label that allows users to skip the current onboarding step.",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
},
|
},
|
||||||
|
"Skip for now" : {
|
||||||
|
"comment" : "A button label that skips onboarding.",
|
||||||
|
"isCommentAutoGenerated" : true
|
||||||
|
},
|
||||||
"Skip for Now" : {
|
"Skip for Now" : {
|
||||||
|
|
||||||
},
|
},
|
||||||
@@ -30617,10 +30618,6 @@
|
|||||||
"comment" : "A button label that says \"Try Again\".",
|
"comment" : "A button label that says \"Try Again\".",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
},
|
},
|
||||||
"Try the Browse tab to explore tasks by category,\nor add home details for better suggestions." : {
|
|
||||||
"comment" : "A description of the benefits of using the",
|
|
||||||
"isCommentAutoGenerated" : true
|
|
||||||
},
|
|
||||||
"Unarchive" : {
|
"Unarchive" : {
|
||||||
"comment" : "A button that unarchives a task.",
|
"comment" : "A button that unarchives a task.",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import ComposeApp
|
|||||||
final class KeychainHelper: NSObject, KeychainDelegate {
|
final class KeychainHelper: NSObject, KeychainDelegate {
|
||||||
static let shared = KeychainHelper()
|
static let shared = KeychainHelper()
|
||||||
|
|
||||||
private let service = "com.tt.honeyDue"
|
private let service = "com.myhoneydue.honeyDue"
|
||||||
|
|
||||||
func save(key: String, value: String) -> Bool {
|
func save(key: String, value: String) -> Bool {
|
||||||
guard let data = value.data(using: .utf8) else { return false }
|
guard let data = value.data(using: .utf8) else { return false }
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ class StoreKitManager: ObservableObject {
|
|||||||
// Canonical source: SubscriptionProducts in commonMain (Kotlin shared code).
|
// Canonical source: SubscriptionProducts in commonMain (Kotlin shared code).
|
||||||
// Keep these in sync with SubscriptionProducts.MONTHLY / SubscriptionProducts.ANNUAL.
|
// Keep these in sync with SubscriptionProducts.MONTHLY / SubscriptionProducts.ANNUAL.
|
||||||
private let fallbackProductIDs = [
|
private let fallbackProductIDs = [
|
||||||
"com.tt.honeyDue.pro.monthly",
|
"com.myhoneydue.honeyDue.pro.monthly",
|
||||||
"com.tt.honeyDue.pro.annual"
|
"com.myhoneydue.honeyDue.pro.annual"
|
||||||
]
|
]
|
||||||
|
|
||||||
private var configuredProductIDs: [String] {
|
private var configuredProductIDs: [String] {
|
||||||
|
|||||||
Reference in New Issue
Block a user