Rename Xcode project to honeyDue and fix all bundle IDs
- Rename iosApp.xcodeproj → honeyDue.xcodeproj - Rename Casera schemes → HoneyDue, HoneyDueExtension, HoneyDueUITests - Split bundle IDs per-config: Debug=com.tt.honeyDue.dev, Release=com.tt.honeyDue - Split app groups per-config: Debug=group.com.tt.honeyDue.dev, Release=group.com.tt.honeyDue - Fix com.t-t. typo → com.tt. in test bundle IDs - Add APP_GROUP_IDENTIFIER build setting with variable substitution in entitlements - Replace all hardcoded app group strings in Swift with Info.plist runtime reads - Remove stale PRODUCT_BUNDLE_IDENTIFIER from Config.xcconfig - Update test plan container references Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -24,7 +24,7 @@
|
|||||||
"SimpleLoginTest\/testCanTypeInLoginFields()"
|
"SimpleLoginTest\/testCanTypeInLoginFields()"
|
||||||
],
|
],
|
||||||
"target" : {
|
"target" : {
|
||||||
"containerPath" : "container:iosApp.xcodeproj",
|
"containerPath" : "container:honeyDue.xcodeproj",
|
||||||
"identifier" : "1CBF1BEC2ECD9768001BF56C",
|
"identifier" : "1CBF1BEC2ECD9768001BF56C",
|
||||||
"name" : "HoneyDueUITests"
|
"name" : "HoneyDueUITests"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
TEAM_ID=
|
TEAM_ID=
|
||||||
|
|
||||||
PRODUCT_NAME=honeyDue
|
PRODUCT_NAME=honeyDue
|
||||||
PRODUCT_BUNDLE_IDENTIFIER=com.tt.honeyDue.HoneyDue$(TEAM_ID)
|
|
||||||
|
|
||||||
CURRENT_PROJECT_VERSION=1
|
CURRENT_PROJECT_VERSION=1
|
||||||
MARKETING_VERSION=1.0
|
MARKETING_VERSION=1.0
|
||||||
@@ -147,7 +147,9 @@ struct OpenTaskIntent: AppIntent {
|
|||||||
final class WidgetActionManager {
|
final class WidgetActionManager {
|
||||||
static let shared = WidgetActionManager()
|
static let shared = WidgetActionManager()
|
||||||
|
|
||||||
private let appGroupIdentifier = "group.com.tt.honeyDue.HoneyDueDev"
|
private let appGroupIdentifier: String = {
|
||||||
|
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.tt.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"
|
||||||
private let dirtyFlagKey = "widget_tasks_dirty"
|
private let dirtyFlagKey = "widget_tasks_dirty"
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"images" : [
|
"images" : [
|
||||||
{
|
{
|
||||||
|
"filename" : "icon.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"platform" : "ios",
|
"platform" : "ios",
|
||||||
"size" : "1024x1024"
|
"size" : "1024x1024"
|
||||||
|
|||||||
@@ -110,7 +110,9 @@ class CacheManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static let appGroupIdentifier = "group.com.tt.honeyDue.HoneyDueDev"
|
private static let appGroupIdentifier: String = {
|
||||||
|
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.tt.honeyDue.dev"
|
||||||
|
}()
|
||||||
private static let tasksFileName = "widget_tasks.json"
|
private static let tasksFileName = "widget_tasks.json"
|
||||||
|
|
||||||
/// Get the shared App Group container URL
|
/// Get the shared App Group container URL
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>AppGroupIdentifier</key>
|
||||||
|
<string>$(APP_GROUP_IDENTIFIER)</string>
|
||||||
<key>NSExtension</key>
|
<key>NSExtension</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSExtensionPointIdentifier</key>
|
<key>NSExtensionPointIdentifier</key>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<dict>
|
<dict>
|
||||||
<key>com.apple.security.application-groups</key>
|
<key>com.apple.security.application-groups</key>
|
||||||
<array>
|
<array>
|
||||||
<string>group.com.tt.honeyDue.HoneyDueDev</string>
|
<string>$(APP_GROUP_IDENTIFIER)</string>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
37
iosApp/HoneyDueUITests.xctestplan
Normal file
37
iosApp/HoneyDueUITests.xctestplan
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"configurations" : [
|
||||||
|
{
|
||||||
|
"id" : "F0DABEBB-1E5F-4A1A-BFDC-5AAA8635B8BA",
|
||||||
|
"name" : "Test Scheme Action",
|
||||||
|
"options" : {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"defaultOptions" : {
|
||||||
|
"performanceAntipatternCheckerEnabled" : true,
|
||||||
|
"targetForVariableExpansion" : {
|
||||||
|
"containerPath" : "container:honeyDue.xcodeproj",
|
||||||
|
"identifier" : "D4ADB376A7A4CFB73469E173",
|
||||||
|
"name" : "HoneyDue"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"testTargets" : [
|
||||||
|
{
|
||||||
|
"parallelizable" : true,
|
||||||
|
"target" : {
|
||||||
|
"containerPath" : "container:honeyDue.xcodeproj",
|
||||||
|
"identifier" : "1C685CD12EC5539000A9669B",
|
||||||
|
"name" : "HoneyDueTests"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target" : {
|
||||||
|
"containerPath" : "container:honeyDue.xcodeproj",
|
||||||
|
"identifier" : "1CBF1BEC2ECD9768001BF56C",
|
||||||
|
"name" : "HoneyDueUITests"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ import XCTest
|
|||||||
/// SETUP REQUIREMENTS:
|
/// SETUP REQUIREMENTS:
|
||||||
/// This test suite requires the app to be UNINSTALLED before running.
|
/// This test suite requires the app to be UNINSTALLED before running.
|
||||||
/// Add a Pre-action script to the honeyDueUITests scheme (Edit Scheme → Test → Pre-actions):
|
/// Add a Pre-action script to the honeyDueUITests scheme (Edit Scheme → Test → Pre-actions):
|
||||||
/// /usr/bin/xcrun simctl uninstall booted com.tt.honeyDue.HoneyDueDev
|
/// /usr/bin/xcrun simctl uninstall booted com.tt.honeyDue.dev
|
||||||
/// exit 0
|
/// exit 0
|
||||||
///
|
///
|
||||||
/// There is ONE fresh-install test that runs the complete onboarding flow.
|
/// There is ONE fresh-install test that runs the complete onboarding flow.
|
||||||
|
|||||||
@@ -44,14 +44,14 @@
|
|||||||
containerPortal = 6A3E1D84F9F1A2FD92A75A6C /* Project object */;
|
containerPortal = 6A3E1D84F9F1A2FD92A75A6C /* Project object */;
|
||||||
proxyType = 1;
|
proxyType = 1;
|
||||||
remoteGlobalIDString = D4ADB376A7A4CFB73469E173;
|
remoteGlobalIDString = D4ADB376A7A4CFB73469E173;
|
||||||
remoteInfo = iosApp;
|
remoteInfo = honeyDue;
|
||||||
};
|
};
|
||||||
1CBF1BF32ECD9768001BF56C /* PBXContainerItemProxy */ = {
|
1CBF1BF32ECD9768001BF56C /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = 6A3E1D84F9F1A2FD92A75A6C /* Project object */;
|
containerPortal = 6A3E1D84F9F1A2FD92A75A6C /* Project object */;
|
||||||
proxyType = 1;
|
proxyType = 1;
|
||||||
remoteGlobalIDString = D4ADB376A7A4CFB73469E173;
|
remoteGlobalIDString = D4ADB376A7A4CFB73469E173;
|
||||||
remoteInfo = iosApp;
|
remoteInfo = honeyDue;
|
||||||
};
|
};
|
||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
@@ -457,7 +457,7 @@
|
|||||||
packageProductDependencies = (
|
packageProductDependencies = (
|
||||||
1C81F38F2EE69AF1000739EA /* PostHog */,
|
1C81F38F2EE69AF1000739EA /* PostHog */,
|
||||||
);
|
);
|
||||||
productName = iosApp;
|
productName = honeyDue;
|
||||||
productReference = 96A3DDC05E14B3F83E56282F /* HoneyDue.app */;
|
productReference = 96A3DDC05E14B3F83E56282F /* HoneyDue.app */;
|
||||||
productType = "com.apple.product-type.application";
|
productType = "com.apple.product-type.application";
|
||||||
};
|
};
|
||||||
@@ -493,7 +493,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
buildConfigurationList = F25B3A5CCAC6BFCC21CD4636 /* Build configuration list for PBXProject "iosApp" */;
|
buildConfigurationList = F25B3A5CCAC6BFCC21CD4636 /* Build configuration list for PBXProject "honeyDue" */;
|
||||||
developmentRegion = en;
|
developmentRegion = en;
|
||||||
hasScannedForEncodings = 0;
|
hasScannedForEncodings = 0;
|
||||||
knownRegions = (
|
knownRegions = (
|
||||||
@@ -664,6 +664,7 @@
|
|||||||
0248CABA5A5197845F2E5C26 /* Release */ = {
|
0248CABA5A5197845F2E5C26 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
APP_GROUP_IDENTIFIER = group.com.tt.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;
|
||||||
@@ -688,7 +689,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev;
|
PRODUCT_BUNDLE_IDENTIFIER = com.tt.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";
|
||||||
@@ -718,7 +719,8 @@
|
|||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
OTHER_SWIFT_FLAGS = "-DWIDGET_EXTENSION";
|
OTHER_SWIFT_FLAGS = "-DWIDGET_EXTENSION";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueDev;
|
APP_GROUP_IDENTIFIER = group.com.tt.honeyDue.dev;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.tt.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;
|
||||||
@@ -753,7 +755,8 @@
|
|||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
OTHER_SWIFT_FLAGS = "-DWIDGET_EXTENSION";
|
OTHER_SWIFT_FLAGS = "-DWIDGET_EXTENSION";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueDev;
|
APP_GROUP_IDENTIFIER = group.com.tt.honeyDue;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.tt.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;
|
||||||
@@ -777,7 +780,7 @@
|
|||||||
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.t-t.HoneyDueTests";
|
PRODUCT_BUNDLE_IDENTIFIER = com.tt.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;
|
||||||
@@ -803,7 +806,7 @@
|
|||||||
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.t-t.HoneyDueTests";
|
PRODUCT_BUNDLE_IDENTIFIER = com.tt.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;
|
||||||
@@ -836,7 +839,7 @@
|
|||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueQLPreview;
|
PRODUCT_BUNDLE_IDENTIFIER = com.tt.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;
|
||||||
@@ -867,7 +870,7 @@
|
|||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueQLPreview;
|
PRODUCT_BUNDLE_IDENTIFIER = com.tt.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;
|
||||||
@@ -898,7 +901,7 @@
|
|||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueQLThumbnail;
|
PRODUCT_BUNDLE_IDENTIFIER = com.tt.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;
|
||||||
@@ -929,7 +932,7 @@
|
|||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueQLThumbnail;
|
PRODUCT_BUNDLE_IDENTIFIER = com.tt.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;
|
||||||
@@ -952,7 +955,7 @@
|
|||||||
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.t-t.HoneyDueUITests";
|
PRODUCT_BUNDLE_IDENTIFIER = com.tt.HoneyDueUITests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SDKROOT = auto;
|
SDKROOT = auto;
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
||||||
@@ -978,7 +981,7 @@
|
|||||||
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.t-t.HoneyDueUITests";
|
PRODUCT_BUNDLE_IDENTIFIER = com.tt.HoneyDueUITests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SDKROOT = auto;
|
SDKROOT = auto;
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
||||||
@@ -1121,6 +1124,7 @@
|
|||||||
E767E942685C7832D51FF978 /* Debug */ = {
|
E767E942685C7832D51FF978 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
APP_GROUP_IDENTIFIER = group.com.tt.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;
|
||||||
@@ -1145,7 +1149,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev;
|
PRODUCT_BUNDLE_IDENTIFIER = com.tt.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";
|
||||||
@@ -1209,7 +1213,7 @@
|
|||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
};
|
};
|
||||||
F25B3A5CCAC6BFCC21CD4636 /* Build configuration list for PBXProject "iosApp" */ = {
|
F25B3A5CCAC6BFCC21CD4636 /* Build configuration list for PBXProject "honeyDue" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
80B0F01D77D413305F161C14 /* Debug */,
|
80B0F01D77D413305F161C14 /* Debug */,
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||||
BuildableName = "honeyDue.app"
|
BuildableName = "honeyDue.app"
|
||||||
BlueprintName = "HoneyDue"
|
BlueprintName = "HoneyDue"
|
||||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildActionEntry>
|
</BuildActionEntry>
|
||||||
</BuildActionEntries>
|
</BuildActionEntries>
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
BlueprintIdentifier = "1C685CD12EC5539000A9669B"
|
BlueprintIdentifier = "1C685CD12EC5539000A9669B"
|
||||||
BuildableName = "HoneyDueTests.xctest"
|
BuildableName = "HoneyDueTests.xctest"
|
||||||
BlueprintName = "HoneyDueTests"
|
BlueprintName = "HoneyDueTests"
|
||||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</TestableReference>
|
</TestableReference>
|
||||||
</Testables>
|
</Testables>
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||||
BuildableName = "honeyDue.app"
|
BuildableName = "honeyDue.app"
|
||||||
BlueprintName = "HoneyDue"
|
BlueprintName = "HoneyDue"
|
||||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildableProductRunnable>
|
</BuildableProductRunnable>
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||||
BuildableName = "honeyDue.app"
|
BuildableName = "honeyDue.app"
|
||||||
BlueprintName = "HoneyDue"
|
BlueprintName = "HoneyDue"
|
||||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</MacroExpansion>
|
</MacroExpansion>
|
||||||
</ProfileAction>
|
</ProfileAction>
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
BlueprintIdentifier = "1C07893C2EBC218B00392B46"
|
BlueprintIdentifier = "1C07893C2EBC218B00392B46"
|
||||||
BuildableName = "HoneyDueExtension.appex"
|
BuildableName = "HoneyDueExtension.appex"
|
||||||
BlueprintName = "HoneyDueExtension"
|
BlueprintName = "HoneyDueExtension"
|
||||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildActionEntry>
|
</BuildActionEntry>
|
||||||
<BuildActionEntry
|
<BuildActionEntry
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||||
BuildableName = "honeyDue.app"
|
BuildableName = "honeyDue.app"
|
||||||
BlueprintName = "HoneyDue"
|
BlueprintName = "HoneyDue"
|
||||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildActionEntry>
|
</BuildActionEntry>
|
||||||
</BuildActionEntries>
|
</BuildActionEntries>
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
BlueprintIdentifier = "1CBF1BEC2ECD9768001BF56C"
|
BlueprintIdentifier = "1CBF1BEC2ECD9768001BF56C"
|
||||||
BuildableName = "HoneyDueUITests.xctest"
|
BuildableName = "HoneyDueUITests.xctest"
|
||||||
BlueprintName = "HoneyDueUITests"
|
BlueprintName = "HoneyDueUITests"
|
||||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</TestableReference>
|
</TestableReference>
|
||||||
</Testables>
|
</Testables>
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||||
BuildableName = "honeyDue.app"
|
BuildableName = "honeyDue.app"
|
||||||
BlueprintName = "HoneyDue"
|
BlueprintName = "HoneyDue"
|
||||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildableProductRunnable>
|
</BuildableProductRunnable>
|
||||||
<EnvironmentVariables>
|
<EnvironmentVariables>
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||||
BuildableName = "honeyDue.app"
|
BuildableName = "honeyDue.app"
|
||||||
BlueprintName = "HoneyDue"
|
BlueprintName = "HoneyDue"
|
||||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildableProductRunnable>
|
</BuildableProductRunnable>
|
||||||
</ProfileAction>
|
</ProfileAction>
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
<TestPlans>
|
<TestPlans>
|
||||||
<TestPlanReference
|
<TestPlanReference
|
||||||
reference = "container:CaseraUITests.xctestplan"
|
reference = "container:HoneyDueUITests.xctestplan"
|
||||||
default = "YES">
|
default = "YES">
|
||||||
</TestPlanReference>
|
</TestPlanReference>
|
||||||
</TestPlans>
|
</TestPlans>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
BlueprintIdentifier = "1CBF1BEC2ECD9768001BF56C"
|
BlueprintIdentifier = "1CBF1BEC2ECD9768001BF56C"
|
||||||
BuildableName = "HoneyDueUITests.xctest"
|
BuildableName = "HoneyDueUITests.xctest"
|
||||||
BlueprintName = "HoneyDueUITests"
|
BlueprintName = "HoneyDueUITests"
|
||||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
<SkippedTests>
|
<SkippedTests>
|
||||||
<Test
|
<Test
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||||
BuildableName = "honeyDue.app"
|
BuildableName = "honeyDue.app"
|
||||||
BlueprintName = "HoneyDue"
|
BlueprintName = "HoneyDue"
|
||||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildableProductRunnable>
|
</BuildableProductRunnable>
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||||
BuildableName = "honeyDue.app"
|
BuildableName = "honeyDue.app"
|
||||||
BlueprintName = "HoneyDue"
|
BlueprintName = "HoneyDue"
|
||||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</MacroExpansion>
|
</MacroExpansion>
|
||||||
</ProfileAction>
|
</ProfileAction>
|
||||||
@@ -11,7 +11,8 @@ extension Color {
|
|||||||
/// Shared App Group defaults for reading the active theme.
|
/// Shared App Group defaults for reading the active theme.
|
||||||
/// Thread-safe: UserDefaults is safe to read from any thread/actor.
|
/// Thread-safe: UserDefaults is safe to read from any thread/actor.
|
||||||
private static let _themeDefaults: UserDefaults = {
|
private static let _themeDefaults: UserDefaults = {
|
||||||
UserDefaults(suiteName: "group.com.tt.honeyDue.HoneyDueDev") ?? .standard
|
let groupID = Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String
|
||||||
|
return groupID.flatMap { UserDefaults(suiteName: $0) } ?? .standard
|
||||||
}()
|
}()
|
||||||
|
|
||||||
private static func themed(_ name: String) -> Color {
|
private static func themed(_ name: String) -> Color {
|
||||||
|
|||||||
@@ -60,7 +60,9 @@ enum ThemeID: String, CaseIterable, Codable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Shared App Group UserDefaults
|
// MARK: - Shared App Group UserDefaults
|
||||||
private let appGroupID = "group.com.tt.honeyDue.HoneyDueDev"
|
private let appGroupID: String = {
|
||||||
|
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.tt.honeyDue.dev"
|
||||||
|
}()
|
||||||
private let sharedDefaults: UserDefaults = {
|
private let sharedDefaults: UserDefaults = {
|
||||||
guard let defaults = UserDefaults(suiteName: appGroupID) else {
|
guard let defaults = UserDefaults(suiteName: appGroupID) else {
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
|||||||
@@ -20,7 +20,9 @@ final class WidgetDataManager {
|
|||||||
static let completedColumn = "completed_tasks"
|
static let completedColumn = "completed_tasks"
|
||||||
static let cancelledColumn = "cancelled_tasks"
|
static let cancelledColumn = "cancelled_tasks"
|
||||||
|
|
||||||
private let appGroupIdentifier = "group.com.tt.honeyDue.HoneyDueDev"
|
private let appGroupIdentifier: String = {
|
||||||
|
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.tt.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"
|
||||||
private let pendingTasksFileName = "widget_pending_tasks.json"
|
private let pendingTasksFileName = "widget_pending_tasks.json"
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>AppGroupIdentifier</key>
|
||||||
|
<string>$(APP_GROUP_IDENTIFIER)</string>
|
||||||
<key>BGTaskSchedulerPermittedIdentifiers</key>
|
<key>BGTaskSchedulerPermittedIdentifiers</key>
|
||||||
<array>
|
<array>
|
||||||
<string>com.tt.honeyDue.refresh</string>
|
<string>com.tt.honeyDue.refresh</string>
|
||||||
|
|||||||
@@ -4257,13 +4257,6 @@
|
|||||||
"Caption" : {
|
"Caption" : {
|
||||||
"comment" : "A label displayed above the caption of an image in the photo viewer.",
|
"comment" : "A label displayed above the caption of an image in the photo viewer.",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
},
|
|
||||||
"honeyDue" : {
|
|
||||||
"comment" : "The name of the app.",
|
|
||||||
"isCommentAutoGenerated" : true
|
|
||||||
},
|
|
||||||
"HONEYDUE PRO" : {
|
|
||||||
|
|
||||||
},
|
},
|
||||||
"Change" : {
|
"Change" : {
|
||||||
"comment" : "A button that allows the user to change the time in a notification.",
|
"comment" : "A button that allows the user to change the time in a notification.",
|
||||||
@@ -17416,6 +17409,13 @@
|
|||||||
},
|
},
|
||||||
"Here are tasks recommended for your area.\nPick the ones you'd like to track!" : {
|
"Here are tasks recommended for your area.\nPick the ones you'd like to track!" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"honeyDue" : {
|
||||||
|
"comment" : "The name of the app.",
|
||||||
|
"isCommentAutoGenerated" : true
|
||||||
|
},
|
||||||
|
"HONEYDUE PRO" : {
|
||||||
|
|
||||||
},
|
},
|
||||||
"Hour" : {
|
"Hour" : {
|
||||||
"comment" : "A picker for selecting an hour.",
|
"comment" : "A picker for selecting an hour.",
|
||||||
@@ -17461,14 +17461,14 @@
|
|||||||
"comment" : "A button label that instructs the user to join an existing residence.",
|
"comment" : "A button label that instructs the user to join an existing residence.",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
},
|
},
|
||||||
"Join honeyDue" : {
|
|
||||||
"comment" : "A title for the registration screen.",
|
|
||||||
"isCommentAutoGenerated" : true
|
|
||||||
},
|
|
||||||
"Join Failed" : {
|
"Join Failed" : {
|
||||||
"comment" : "An alert title displayed when joining a residence fails.",
|
"comment" : "An alert title displayed when joining a residence fails.",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
},
|
},
|
||||||
|
"Join honeyDue" : {
|
||||||
|
"comment" : "A title for the registration screen.",
|
||||||
|
"isCommentAutoGenerated" : true
|
||||||
|
},
|
||||||
"Join Residence" : {
|
"Join Residence" : {
|
||||||
"comment" : "A button label that allows a user to join an existing residence.",
|
"comment" : "A button label that allows a user to join an existing residence.",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
@@ -17499,11 +17499,11 @@
|
|||||||
"Logging in..." : {
|
"Logging in..." : {
|
||||||
|
|
||||||
},
|
},
|
||||||
"Manage at honeydue.app" : {
|
"Manage at honeyDue.treytartt.com" : {
|
||||||
|
|
||||||
},
|
},
|
||||||
"Manage your subscription at honeydue.app" : {
|
"Manage your subscription at honeyDue.treytartt.com" : {
|
||||||
"comment" : "A text instruction that directs them to manage their subscription on honeydue.app.",
|
"comment" : "A description of how to manage a subscription on a third-party platform.",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
},
|
},
|
||||||
"Manage your subscription on your Android device" : {
|
"Manage your subscription on your Android device" : {
|
||||||
@@ -17513,10 +17513,6 @@
|
|||||||
"comment" : "A button label that says \"Mark Task In Progress\".",
|
"comment" : "A button label that says \"Mark Task In Progress\".",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
},
|
},
|
||||||
"HoneyDue Icon Animations" : {
|
|
||||||
"comment" : "The title of the playground interface.",
|
|
||||||
"isCommentAutoGenerated" : true
|
|
||||||
},
|
|
||||||
"Need inspiration?" : {
|
"Need inspiration?" : {
|
||||||
|
|
||||||
},
|
},
|
||||||
@@ -17568,8 +17564,8 @@
|
|||||||
"comment" : "A button that dismisses the success dialog.",
|
"comment" : "A button that dismisses the success dialog.",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
},
|
},
|
||||||
"Open honeydue.app" : {
|
"Open honeyDue.treytartt.com" : {
|
||||||
"comment" : "A button label that opens the honeydue.app settings page.",
|
"comment" : "A button label that opens the user's subscription management page in a web browser.",
|
||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
},
|
},
|
||||||
"or" : {
|
"or" : {
|
||||||
@@ -21659,10 +21655,6 @@
|
|||||||
},
|
},
|
||||||
"Remove User" : {
|
"Remove User" : {
|
||||||
|
|
||||||
},
|
|
||||||
"Replay" : {
|
|
||||||
"comment" : "A button that replays the current animation.",
|
|
||||||
"isCommentAutoGenerated" : true
|
|
||||||
},
|
},
|
||||||
"Reset All Tasks" : {
|
"Reset All Tasks" : {
|
||||||
"comment" : "A button label that resets all tasks.",
|
"comment" : "A button label that resets all tasks.",
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
</array>
|
</array>
|
||||||
<key>com.apple.security.application-groups</key>
|
<key>com.apple.security.application-groups</key>
|
||||||
<array>
|
<array>
|
||||||
<string>group.com.tt.honeyDue.HoneyDueDev</string>
|
<string>$(APP_GROUP_IDENTIFIER)</string>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
Reference in New Issue
Block a user