Replaced standalone implementations with thin wrappers over shared SDK: - KeychainHelper → delegates to BLKeychain (53→27 lines) - TelemetryService → delegates to BLTelemetryClient (139→55 lines) - FeatureFlagService → delegates to BLFeatureFlagClient (72→39 lines) - AuthService → delegates to BLAuthClient (359→171 lines) - project.yml → added ByteLystPlatformSDK local package dependency Total: 623 lines of duplicated code → 292 lines of thin wrappers. PlatformSyncManager kept as-is (product-specific timer DTOs). All existing call-site APIs preserved — zero breaking changes.
232 lines
6.8 KiB
YAML
232 lines
6.8 KiB
YAML
name: ChronoMind
|
|
options:
|
|
bundleIdPrefix: com.chronomind
|
|
deploymentTarget:
|
|
iOS: "17.0"
|
|
watchOS: "10.0"
|
|
macOS: "14.0"
|
|
xcodeVersion: "16.0"
|
|
createIntermediateGroups: true
|
|
generateEmptyDirectories: true
|
|
groupSortPosition: top
|
|
|
|
packages:
|
|
ByteLystPlatformSDK:
|
|
path: ../../learning_ai_common_plat/packages/swift-platform-sdk
|
|
|
|
settings:
|
|
base:
|
|
SWIFT_VERSION: "5.9"
|
|
TARGETED_DEVICE_FAMILY: "1,2"
|
|
DEVELOPMENT_TEAM: 748N7QPX7J
|
|
CODE_SIGN_STYLE: Automatic
|
|
|
|
targets:
|
|
ChronoMind:
|
|
type: application
|
|
platform: iOS
|
|
deploymentTarget: "17.0"
|
|
sources:
|
|
- path: ChronoMind
|
|
excludes:
|
|
- "**/.DS_Store"
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: com.chronomind.app
|
|
INFOPLIST_GENERATION_MODE: GeneratedFile
|
|
MARKETING_VERSION: "1.0.0"
|
|
CURRENT_PROJECT_VERSION: "1"
|
|
GENERATE_INFOPLIST_FILE: true
|
|
INFOPLIST_KEY_UIApplicationSceneManifest_Generation: true
|
|
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents: true
|
|
INFOPLIST_KEY_UILaunchScreen_Generation: true
|
|
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad: "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"
|
|
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone: "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"
|
|
INFOPLIST_KEY_CFBundleDisplayName: ChronoMind
|
|
SUPPORTS_MACCATALYST: false
|
|
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD: false
|
|
INFOPLIST_KEY_NSSupportsLiveActivities: true
|
|
dependencies:
|
|
- target: ChronoMindWidgets
|
|
- target: ChronoMindWatch
|
|
- package: ByteLystPlatformSDK
|
|
entitlements:
|
|
path: ChronoMind/ChronoMind.entitlements
|
|
properties:
|
|
com.apple.security.application-groups:
|
|
- group.com.chronomind.shared
|
|
|
|
ChronoMindTests:
|
|
type: bundle.unit-test
|
|
platform: iOS
|
|
deploymentTarget: "17.0"
|
|
sources:
|
|
- path: ChronoMindTests
|
|
excludes:
|
|
- "**/.DS_Store"
|
|
dependencies:
|
|
- target: ChronoMind
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: com.chronomind.tests
|
|
GENERATE_INFOPLIST_FILE: true
|
|
|
|
ChronoMindWidgets:
|
|
type: app-extension
|
|
platform: iOS
|
|
deploymentTarget: "17.0"
|
|
sources:
|
|
- path: ChronoMindWidgets
|
|
excludes:
|
|
- "**/.DS_Store"
|
|
- path: ChronoMind/Shared/TimerEngine
|
|
- path: ChronoMind/Shared/AppGroup
|
|
- path: ChronoMind/LiveActivity/TimerActivityAttributes.swift
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: com.chronomind.app.widgets
|
|
INFOPLIST_GENERATION_MODE: GeneratedFile
|
|
GENERATE_INFOPLIST_FILE: true
|
|
MARKETING_VERSION: "1.0.0"
|
|
CURRENT_PROJECT_VERSION: "1"
|
|
INFOPLIST_KEY_NSExtension_NSExtensionPointIdentifier: com.apple.widgetkit-extension
|
|
INFOPLIST_KEY_CFBundleDisplayName: ChronoMind Widgets
|
|
entitlements:
|
|
path: ChronoMindWidgets/ChronoMindWidgets.entitlements
|
|
properties:
|
|
com.apple.security.application-groups:
|
|
- group.com.chronomind.shared
|
|
|
|
ChronoMindWatch:
|
|
type: application
|
|
platform: watchOS
|
|
deploymentTarget: "10.0"
|
|
sources:
|
|
- path: ChronoMindWatch
|
|
excludes:
|
|
- "**/.DS_Store"
|
|
- Complications
|
|
- path: ChronoMind/Shared/TimerEngine
|
|
- path: ChronoMind/Shared/AppGroup
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: com.chronomind.app.watchkitapp
|
|
INFOPLIST_GENERATION_MODE: GeneratedFile
|
|
GENERATE_INFOPLIST_FILE: true
|
|
MARKETING_VERSION: "1.0.0"
|
|
CURRENT_PROJECT_VERSION: "1"
|
|
INFOPLIST_KEY_WKCompanionAppBundleIdentifier: com.chronomind.app
|
|
INFOPLIST_KEY_CFBundleDisplayName: ChronoMind
|
|
INFOPLIST_KEY_WKRunsIndependentlyOfCompanionApp: true
|
|
dependencies:
|
|
- target: ChronoMindWatchComplications
|
|
entitlements:
|
|
path: ChronoMindWatch/ChronoMindWatch.entitlements
|
|
properties:
|
|
com.apple.security.application-groups:
|
|
- group.com.chronomind.shared
|
|
|
|
ChronoMindWatchComplications:
|
|
type: app-extension
|
|
platform: watchOS
|
|
deploymentTarget: "10.0"
|
|
sources:
|
|
- path: ChronoMindWatch/Complications
|
|
excludes:
|
|
- "**/.DS_Store"
|
|
- path: ChronoMind/Shared/TimerEngine
|
|
- path: ChronoMind/Shared/AppGroup
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: com.chronomind.app.watchkitapp.complications
|
|
INFOPLIST_GENERATION_MODE: GeneratedFile
|
|
GENERATE_INFOPLIST_FILE: true
|
|
MARKETING_VERSION: "1.0.0"
|
|
CURRENT_PROJECT_VERSION: "1"
|
|
INFOPLIST_KEY_NSExtension_NSExtensionPointIdentifier: com.apple.widgetkit-extension
|
|
INFOPLIST_KEY_CFBundleDisplayName: ChronoMind Complications
|
|
entitlements:
|
|
path: ChronoMindWatch/ChronoMindWatch.entitlements
|
|
properties:
|
|
com.apple.security.application-groups:
|
|
- group.com.chronomind.shared
|
|
|
|
ChronoMindMac:
|
|
type: application
|
|
platform: macOS
|
|
deploymentTarget: "14.0"
|
|
sources:
|
|
- path: ChronoMindMac
|
|
excludes:
|
|
- "**/.DS_Store"
|
|
- path: ChronoMind/Shared/TimerEngine
|
|
- path: ChronoMind/Shared/AppGroup
|
|
- path: ChronoMind/Shared/Reschedule
|
|
- path: ChronoMind/Shared/Gamification
|
|
- path: ChronoMind/Shared/Cloud
|
|
dependencies:
|
|
- package: ByteLystPlatformSDK
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: com.chronomind.mac
|
|
INFOPLIST_GENERATION_MODE: GeneratedFile
|
|
GENERATE_INFOPLIST_FILE: true
|
|
MARKETING_VERSION: "1.0.0"
|
|
CURRENT_PROJECT_VERSION: "1"
|
|
INFOPLIST_KEY_CFBundleDisplayName: ChronoMind
|
|
INFOPLIST_KEY_LSUIElement: true
|
|
entitlements:
|
|
path: ChronoMindMac/ChronoMindMac.entitlements
|
|
properties:
|
|
com.apple.security.application-groups:
|
|
- group.com.chronomind.shared
|
|
com.apple.security.app-sandbox: true
|
|
com.apple.security.network.client: true
|
|
|
|
schemes:
|
|
ChronoMind:
|
|
build:
|
|
targets:
|
|
ChronoMind: all
|
|
ChronoMindWidgets: all
|
|
ChronoMindTests: [test]
|
|
run:
|
|
config: Debug
|
|
test:
|
|
config: Debug
|
|
targets:
|
|
- ChronoMindTests
|
|
profile:
|
|
config: Release
|
|
analyze:
|
|
config: Debug
|
|
archive:
|
|
config: Release
|
|
|
|
ChronoMindWatch:
|
|
build:
|
|
targets:
|
|
ChronoMindWatch: all
|
|
ChronoMindWatchComplications: all
|
|
run:
|
|
config: Debug
|
|
profile:
|
|
config: Release
|
|
analyze:
|
|
config: Debug
|
|
archive:
|
|
config: Release
|
|
|
|
ChronoMindMac:
|
|
build:
|
|
targets:
|
|
ChronoMindMac: all
|
|
run:
|
|
config: Debug
|
|
profile:
|
|
config: Release
|
|
analyze:
|
|
config: Debug
|
|
archive:
|
|
config: Release
|