mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-23 15:41:14 +00:00
* feat(ios): unify chat and voice experience * refactor(ios): finish unified chat ownership * fix(ios): unify chat and voice capture ownership * fix(ios): serialize Talk permission hydration * fix(ios): clear voice CI regressions * fix(ios): clear remaining unified chat CI failures * chore(i18n): sync native source inventory * refactor(ios): defer provider-only realtime voice * fix(ios): clean unified chat voice PR * fix(ios): localize unified voice controls * fix(ios): serialize composer audio controls * fix(ios): isolate dictation preparation lifecycle * fix(ios): key chat tab icons by appearance * fix(ios): preserve talk upgrade handshakes * fix(ios): refresh native i18n inventory * fix(ios): reconcile shared locale artifacts * fix(ios): satisfy chat view lint limit * fix(ios): reconcile shared composer implementation * test(apple): avoid XCTest actor deinit crash * fix(ios): satisfy SwiftFormat scope spacing * fix(ios): remove duplicate merged helper declarations
508 lines
20 KiB
YAML
508 lines
20 KiB
YAML
name: OpenClaw
|
|
options:
|
|
bundleIdPrefix: ai.openclawfoundation
|
|
deploymentTarget:
|
|
iOS: "18.0"
|
|
xcodeVersion: "26.0"
|
|
|
|
settings:
|
|
base:
|
|
SWIFT_VERSION: "6.0"
|
|
ENABLE_APP_INTENTS_METADATA_GENERATION: NO
|
|
|
|
packages:
|
|
OpenClawKit:
|
|
path: ../shared/OpenClawKit
|
|
Swabble:
|
|
path: ../swabble
|
|
WebRTC:
|
|
url: https://github.com/stasel/WebRTC.git
|
|
exactVersion: 147.0.0
|
|
|
|
schemes:
|
|
OpenClaw:
|
|
shared: true
|
|
build:
|
|
targets:
|
|
OpenClaw: all
|
|
test:
|
|
targets:
|
|
- OpenClawTests
|
|
- OpenClawLogicTests
|
|
OpenClawLogicTests:
|
|
shared: true
|
|
build:
|
|
targets:
|
|
OpenClawLogicTests: all
|
|
test:
|
|
targets:
|
|
- OpenClawLogicTests
|
|
OpenClawUITests:
|
|
shared: true
|
|
build:
|
|
targets:
|
|
OpenClawUITests: all
|
|
test:
|
|
targets:
|
|
- OpenClawUITests
|
|
OpenClawWatchApp:
|
|
shared: true
|
|
build:
|
|
targets:
|
|
OpenClawWatchApp: all
|
|
|
|
targets:
|
|
OpenClaw:
|
|
type: application
|
|
platform: iOS
|
|
configFiles:
|
|
Debug: Signing.xcconfig
|
|
Release: Signing.xcconfig
|
|
sources:
|
|
- path: Sources
|
|
- path: Resources/Licenses
|
|
type: folder
|
|
buildPhase: resources
|
|
- path: Sources/Fonts
|
|
buildPhase: resources
|
|
- path: Resources/Localizable.xcstrings
|
|
buildPhase: resources
|
|
dependencies:
|
|
- target: OpenClawShareExtension
|
|
embed: true
|
|
- target: OpenClawActivityWidget
|
|
embed: true
|
|
# A companion watch application belongs in the standard Watch bundle location.
|
|
# PlugIns is for extension products and breaks paired watch installation.
|
|
- target: OpenClawWatchApp
|
|
- package: OpenClawKit
|
|
- package: OpenClawKit
|
|
product: OpenClawChatUI
|
|
- package: OpenClawKit
|
|
product: OpenClawProtocol
|
|
- package: Swabble
|
|
product: SwabbleKit
|
|
- package: WebRTC
|
|
- sdk: AppIntents.framework
|
|
- sdk: HealthKit.framework
|
|
preBuildScripts:
|
|
- name: SwiftFormat (lint)
|
|
basedOnDependencyAnalysis: false
|
|
inputFileLists:
|
|
- $(SRCROOT)/SwiftSources.input.xcfilelist
|
|
script: |
|
|
set -euo pipefail
|
|
export PATH="$PATH:/opt/homebrew/bin:/usr/local/bin"
|
|
"$SRCROOT/../../scripts/check-swift-tools.sh" swiftformat
|
|
swiftformat --lint --config "$SRCROOT/../../config/swiftformat" \
|
|
--unexclude "$SRCROOT/Sources,$SRCROOT/ShareExtension,$SRCROOT/ActivityWidget,$SRCROOT/WatchApp,$SRCROOT/../shared/OpenClawKit/Sources/OpenClawChatUI,$SRCROOT/../shared/OpenClawKit/Sources/OpenClawKit,$SRCROOT/../shared/OpenClawKit/Sources/OpenClawNativeState,$SRCROOT/../shared/OpenClawKit/Sources/OpenClawProtocol,$SRCROOT/../swabble/Sources/SwabbleKit" \
|
|
--filelist "$SRCROOT/SwiftSources.input.xcfilelist"
|
|
- name: SwiftLint
|
|
basedOnDependencyAnalysis: false
|
|
inputFileLists:
|
|
- $(SRCROOT)/SwiftSources.input.xcfilelist
|
|
script: |
|
|
set -euo pipefail
|
|
export PATH="$PATH:/opt/homebrew/bin:/usr/local/bin"
|
|
"$SRCROOT/../../scripts/check-swift-tools.sh" swiftlint
|
|
swiftlint lint --strict --config "$SRCROOT/.swiftlint.yml" --use-script-input-file-lists
|
|
settings:
|
|
base:
|
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
|
CODE_SIGN_IDENTITY: "$(OPENCLAW_CODE_SIGN_IDENTITY)"
|
|
CODE_SIGN_ENTITLEMENTS: "$(OPENCLAW_CODE_SIGN_ENTITLEMENTS)"
|
|
CODE_SIGN_STYLE: "$(OPENCLAW_CODE_SIGN_STYLE)"
|
|
DEVELOPMENT_TEAM: "$(OPENCLAW_DEVELOPMENT_TEAM)"
|
|
OPENCLAW_ACTIVE_APP_GROUP_ID: "$(OPENCLAW_APP_GROUP_ID)"
|
|
OPENCLAW_APP_DISPLAY_NAME: OpenClaw
|
|
OPENCLAW_URL_SCHEME: openclaw
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_APP_BUNDLE_ID)"
|
|
PROVISIONING_PROFILE_SPECIFIER: "$(OPENCLAW_APP_PROFILE)"
|
|
TARGETED_DEVICE_FAMILY: "1,2"
|
|
SWIFT_VERSION: "6.0"
|
|
SWIFT_STRICT_CONCURRENCY: complete
|
|
SUPPORTS_LIVE_ACTIVITIES: YES
|
|
ENABLE_APPINTENTS_METADATA: NO
|
|
ENABLE_APP_INTENTS_METADATA_GENERATION: NO
|
|
configs:
|
|
Debug:
|
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIconDebug
|
|
CODE_SIGN_STYLE: Automatic
|
|
OPENCLAW_ACTIVE_APP_GROUP_ID: "$(OPENCLAW_DEBUG_APP_GROUP_ID)"
|
|
OPENCLAW_APP_DISPLAY_NAME: OpenClaw
|
|
OPENCLAW_CODE_SIGN_ENTITLEMENTS: Sources/OpenClaw.entitlements
|
|
OPENCLAW_APNS_ENTITLEMENT_ENVIRONMENT: development
|
|
OPENCLAW_URL_SCHEME: openclaw-debug
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_DEBUG_APP_BUNDLE_ID)"
|
|
PROVISIONING_PROFILE_SPECIFIER: ""
|
|
OPENCLAW_PUSH_MODE: localSandbox
|
|
OPENCLAW_PUSH_RELAY_BASE_URL: ""
|
|
Release:
|
|
OPENCLAW_CODE_SIGN_ENTITLEMENTS: Sources/OpenClaw.entitlements
|
|
OPENCLAW_APNS_ENTITLEMENT_ENVIRONMENT: production
|
|
OPENCLAW_PUSH_MODE: localProduction
|
|
OPENCLAW_PUSH_RELAY_BASE_URL: ""
|
|
info:
|
|
path: Sources/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: "$(OPENCLAW_APP_DISPLAY_NAME)"
|
|
CFBundleIconName: "$(ASSETCATALOG_COMPILER_APPICON_NAME)"
|
|
CFBundleURLTypes:
|
|
- CFBundleURLName: ai.openclawfoundation.app
|
|
CFBundleURLSchemes:
|
|
- "$(OPENCLAW_URL_SCHEME)"
|
|
CFBundleShortVersionString: "$(OPENCLAW_MARKETING_VERSION)"
|
|
OpenClawCanonicalVersion: "$(OPENCLAW_IOS_VERSION)"
|
|
OpenClawGitCommit: "$(OPENCLAW_GIT_COMMIT)"
|
|
OpenClawBuildTimestamp: "$(OPENCLAW_BUILD_TIMESTAMP)"
|
|
OpenClawAppGroupIdentifier: "$(OPENCLAW_ACTIVE_APP_GROUP_ID)"
|
|
CFBundleVersion: "$(OPENCLAW_BUILD_VERSION)"
|
|
UILaunchScreen: {}
|
|
UIApplicationSceneManifest:
|
|
UIApplicationSupportsMultipleScenes: false
|
|
UIBackgroundModes:
|
|
- audio
|
|
- location
|
|
- remote-notification
|
|
BGTaskSchedulerPermittedIdentifiers:
|
|
- "$(PRODUCT_BUNDLE_IDENTIFIER).bgrefresh"
|
|
NSLocalNetworkUsageDescription: OpenClaw discovers and connects to your OpenClaw gateway on the local network.
|
|
NSAppTransportSecurity:
|
|
NSAllowsArbitraryLoadsInWebContent: true
|
|
NSAllowsLocalNetworking: true
|
|
NSBonjourServices:
|
|
- _openclaw-gw._tcp
|
|
NSCameraUsageDescription: OpenClaw uses the camera when you scan a Gateway setup QR code or ask your paired Gateway or assistant to capture a photo or short video from this iPhone, for example to connect to your Gateway or show your assistant a document, device screen, or workspace.
|
|
NSCalendarsUsageDescription: OpenClaw uses your calendars to show events and scheduling context when you enable calendar access.
|
|
NSCalendarsFullAccessUsageDescription: OpenClaw uses your calendars to show events and scheduling context when you enable calendar access.
|
|
NSCalendarsWriteOnlyAccessUsageDescription: OpenClaw uses your calendars to add events when you enable calendar access.
|
|
NSContactsUsageDescription: OpenClaw uses your contacts so you can search and reference people while using the assistant.
|
|
NSLocationWhenInUseUsageDescription: OpenClaw uses your location when you allow location sharing.
|
|
NSLocationAlwaysAndWhenInUseUsageDescription: OpenClaw can share your location in the background when you enable Always.
|
|
NSMicrophoneUsageDescription: OpenClaw uses the microphone for realtime chat, voice wake, push-to-talk, and voice notes.
|
|
NSMotionUsageDescription: OpenClaw may use motion data to support device-aware interactions and automations.
|
|
NSHealthShareUsageDescription: OpenClaw reads your steps, sleep, resting heart rate, and workouts from the Apple Health app to create summaries you request and send them through your Gateway to your configured AI provider.
|
|
NSHealthUpdateUsageDescription: OpenClaw does not write to the Apple Health app. It uses read-only data to create summaries you request and send them through your Gateway to your configured AI provider.
|
|
NSPhotoLibraryUsageDescription: OpenClaw lets your assistant read photos you allow and lets you choose photos to share.
|
|
PHPhotoLibraryPreventAutomaticLimitedAccessAlert: true
|
|
NSRemindersFullAccessUsageDescription: OpenClaw uses your reminders to list, add, and complete tasks when you enable reminders access.
|
|
NSSpeechRecognitionUsageDescription: OpenClaw uses on-device speech recognition for talk mode and voice wake.
|
|
NSSupportsLiveActivities: true
|
|
ITSAppUsesNonExemptEncryption: false
|
|
UIAppFonts:
|
|
- RedHatDisplay[wght].ttf
|
|
- Inter[opsz,wght].ttf
|
|
- Inter-Italic[opsz,wght].ttf
|
|
- JetBrainsMono-Regular.ttf
|
|
- JetBrainsMono-Medium.ttf
|
|
- JetBrainsMono-SemiBold.ttf
|
|
OpenClawPushMode: "$(OPENCLAW_PUSH_MODE)"
|
|
OpenClawPushRelayBaseURL: "$(OPENCLAW_PUSH_RELAY_BASE_URL)"
|
|
UISupportedInterfaceOrientations:
|
|
- UIInterfaceOrientationPortrait
|
|
- UIInterfaceOrientationPortraitUpsideDown
|
|
- UIInterfaceOrientationLandscapeLeft
|
|
- UIInterfaceOrientationLandscapeRight
|
|
OpenClawShareExtension:
|
|
type: app-extension
|
|
platform: iOS
|
|
configFiles:
|
|
Debug: Signing.xcconfig
|
|
Release: Signing.xcconfig
|
|
sources:
|
|
- path: ShareExtension
|
|
- path: Resources/Localizable.xcstrings
|
|
buildPhase: resources
|
|
dependencies:
|
|
- package: OpenClawKit
|
|
- sdk: AppIntents.framework
|
|
settings:
|
|
base:
|
|
CODE_SIGN_IDENTITY: "$(OPENCLAW_CODE_SIGN_IDENTITY)"
|
|
CODE_SIGN_ENTITLEMENTS: ShareExtension/OpenClawShareExtension.entitlements
|
|
CODE_SIGN_STYLE: "$(OPENCLAW_CODE_SIGN_STYLE)"
|
|
DEVELOPMENT_TEAM: "$(OPENCLAW_DEVELOPMENT_TEAM)"
|
|
ENABLE_APPINTENTS_METADATA: NO
|
|
ENABLE_APP_INTENTS_METADATA_GENERATION: NO
|
|
OPENCLAW_ACTIVE_APP_GROUP_ID: "$(OPENCLAW_APP_GROUP_ID)"
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_SHARE_BUNDLE_ID)"
|
|
PROVISIONING_PROFILE_SPECIFIER: "$(OPENCLAW_SHARE_PROFILE)"
|
|
TARGETED_DEVICE_FAMILY: "1,2"
|
|
SWIFT_VERSION: "6.0"
|
|
SWIFT_STRICT_CONCURRENCY: complete
|
|
configs:
|
|
Debug:
|
|
CODE_SIGN_STYLE: Automatic
|
|
OPENCLAW_ACTIVE_APP_GROUP_ID: "$(OPENCLAW_DEBUG_APP_GROUP_ID)"
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_DEBUG_SHARE_BUNDLE_ID)"
|
|
PROVISIONING_PROFILE_SPECIFIER: ""
|
|
info:
|
|
path: ShareExtension/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: OpenClaw Share
|
|
CFBundleShortVersionString: "$(OPENCLAW_MARKETING_VERSION)"
|
|
OpenClawAppGroupIdentifier: "$(OPENCLAW_ACTIVE_APP_GROUP_ID)"
|
|
CFBundleVersion: "$(OPENCLAW_BUILD_VERSION)"
|
|
NSExtension:
|
|
NSExtensionPointIdentifier: com.apple.share-services
|
|
NSExtensionPrincipalClass: "$(PRODUCT_MODULE_NAME).ShareViewController"
|
|
NSExtensionAttributes:
|
|
NSExtensionActivationRule:
|
|
NSExtensionActivationSupportsText: true
|
|
NSExtensionActivationSupportsWebURLWithMaxCount: 1
|
|
NSExtensionActivationSupportsImageWithMaxCount: 10
|
|
NSExtensionActivationSupportsMovieWithMaxCount: 1
|
|
|
|
OpenClawActivityWidget:
|
|
type: app-extension
|
|
platform: iOS
|
|
configFiles:
|
|
Debug: Signing.xcconfig
|
|
Release: Signing.xcconfig
|
|
sources:
|
|
- path: ActivityWidget
|
|
- path: Sources/LiveActivity/OpenClawActivityAttributes.swift
|
|
# Shared continuous avatar waveform; dependency-free for widget isolation.
|
|
- path: ../shared/OpenClawKit/Sources/OpenClawChatUI/TalkWaveformView.swift
|
|
group: Shared
|
|
- path: Sources/Fonts
|
|
buildPhase: resources
|
|
- path: Resources/Localizable.xcstrings
|
|
buildPhase: resources
|
|
dependencies:
|
|
- sdk: WidgetKit.framework
|
|
- sdk: ActivityKit.framework
|
|
settings:
|
|
base:
|
|
CODE_SIGN_IDENTITY: "$(OPENCLAW_CODE_SIGN_IDENTITY)"
|
|
CODE_SIGN_STYLE: "$(OPENCLAW_CODE_SIGN_STYLE)"
|
|
DEVELOPMENT_TEAM: "$(OPENCLAW_DEVELOPMENT_TEAM)"
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_ACTIVITY_WIDGET_BUNDLE_ID)"
|
|
PROVISIONING_PROFILE_SPECIFIER: "$(OPENCLAW_ACTIVITY_WIDGET_PROFILE)"
|
|
TARGETED_DEVICE_FAMILY: "1,2"
|
|
SWIFT_VERSION: "6.0"
|
|
SWIFT_STRICT_CONCURRENCY: complete
|
|
SUPPORTS_LIVE_ACTIVITIES: YES
|
|
configs:
|
|
Debug:
|
|
CODE_SIGN_STYLE: Automatic
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_DEBUG_ACTIVITY_WIDGET_BUNDLE_ID)"
|
|
PROVISIONING_PROFILE_SPECIFIER: ""
|
|
info:
|
|
path: ActivityWidget/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: OpenClaw Activity
|
|
CFBundleShortVersionString: "$(OPENCLAW_MARKETING_VERSION)"
|
|
CFBundleVersion: "$(OPENCLAW_BUILD_VERSION)"
|
|
NSSupportsLiveActivities: true
|
|
UIAppFonts:
|
|
- RedHatDisplay[wght].ttf
|
|
- Inter[opsz,wght].ttf
|
|
- Inter-Italic[opsz,wght].ttf
|
|
- JetBrainsMono-Regular.ttf
|
|
- JetBrainsMono-Medium.ttf
|
|
- JetBrainsMono-SemiBold.ttf
|
|
NSExtension:
|
|
NSExtensionPointIdentifier: com.apple.widgetkit-extension
|
|
|
|
OpenClawWatchApp:
|
|
type: application
|
|
platform: watchOS
|
|
deploymentTarget: "11.0"
|
|
sources:
|
|
- path: WatchApp
|
|
excludes:
|
|
- Info.plist
|
|
- path: Sources/Services/WatchSessionActivationGate.swift
|
|
group: Sources/Services
|
|
- path: Sources/Services/ExactOpaqueIdentifier.swift
|
|
group: Sources/Services
|
|
# Universal talk waveform, compiled directly to keep the watch styling local.
|
|
- path: ../shared/OpenClawKit/Sources/OpenClawChatUI/TalkWaveformView.swift
|
|
group: Shared
|
|
# Universal mascot, compiled directly to keep the watch styling local.
|
|
- path: ../shared/OpenClawKit/Sources/OpenClawChatUI/OpenClawMascotView.swift
|
|
group: Shared
|
|
- path: ../shared/OpenClawKit/Sources/OpenClawChatUI/OpenClawMascotAnimator.swift
|
|
group: Shared
|
|
- path: ../shared/OpenClawKit/Sources/OpenClawChatUI/OpenClawMascotCanvas+Accessories.swift
|
|
group: Shared
|
|
- path: ../shared/OpenClawKit/Sources/OpenClawChatUI/ChatTypography.swift
|
|
group: Shared
|
|
- path: Sources/Fonts
|
|
buildPhase: resources
|
|
- path: Resources/Localizable.xcstrings
|
|
buildPhase: resources
|
|
dependencies:
|
|
- package: OpenClawKit
|
|
product: OpenClawKit
|
|
- sdk: AppIntents.framework
|
|
- sdk: AVFAudio.framework
|
|
- sdk: WatchConnectivity.framework
|
|
- sdk: UserNotifications.framework
|
|
configFiles:
|
|
Debug: Config/Signing.xcconfig
|
|
Release: Config/Signing.xcconfig
|
|
attributes:
|
|
DevelopmentTeam: "$(OPENCLAW_DEVELOPMENT_TEAM)"
|
|
ProvisioningStyle: "$(OPENCLAW_CODE_SIGN_STYLE)"
|
|
settings:
|
|
base:
|
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
|
CODE_SIGN_IDENTITY: "$(OPENCLAW_CODE_SIGN_IDENTITY)"
|
|
CODE_SIGN_STYLE: "$(OPENCLAW_CODE_SIGN_STYLE)"
|
|
DEVELOPMENT_TEAM: "$(OPENCLAW_DEVELOPMENT_TEAM)"
|
|
ENABLE_APPINTENTS_METADATA: NO
|
|
ENABLE_APP_INTENTS_METADATA_GENERATION: NO
|
|
OPENCLAW_COMPANION_APP_BUNDLE_ID: "$(OPENCLAW_APP_BUNDLE_ID)"
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_WATCH_APP_BUNDLE_ID)"
|
|
PROVISIONING_PROFILE_SPECIFIER: "$(OPENCLAW_WATCH_APP_PROFILE)"
|
|
SWIFT_STRICT_CONCURRENCY: complete
|
|
SWIFT_VERSION: "6.0"
|
|
configs:
|
|
Debug:
|
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIconDebug
|
|
CODE_SIGN_STYLE: Automatic
|
|
OPENCLAW_COMPANION_APP_BUNDLE_ID: "$(OPENCLAW_DEBUG_APP_BUNDLE_ID)"
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_DEBUG_WATCH_APP_BUNDLE_ID)"
|
|
PROVISIONING_PROFILE_SPECIFIER: ""
|
|
info:
|
|
path: WatchApp/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: OpenClaw
|
|
CFBundleShortVersionString: "$(OPENCLAW_MARKETING_VERSION)"
|
|
CFBundleVersion: "$(OPENCLAW_BUILD_VERSION)"
|
|
WKCompanionAppBundleIdentifier: "$(OPENCLAW_COMPANION_APP_BUNDLE_ID)"
|
|
WKApplication: true
|
|
WKPrefersNetworkUponForeground: true
|
|
NSLocalNetworkUsageDescription: OpenClaw connects this Apple Watch directly to your Gateway on trusted local networks.
|
|
UIAppFonts:
|
|
- RedHatDisplay[wght].ttf
|
|
- Inter[opsz,wght].ttf
|
|
- Inter-Italic[opsz,wght].ttf
|
|
- JetBrainsMono-Regular.ttf
|
|
- JetBrainsMono-Medium.ttf
|
|
- JetBrainsMono-SemiBold.ttf
|
|
|
|
OpenClawTests:
|
|
type: bundle.unit-test
|
|
platform: iOS
|
|
configFiles:
|
|
Debug: Signing.xcconfig
|
|
Release: Signing.xcconfig
|
|
sources:
|
|
- path: Tests
|
|
excludes:
|
|
- Logic
|
|
- path: WatchApp/Sources/WatchDeferredPayloadOrdering.swift
|
|
group: WatchApp/Sources
|
|
dependencies:
|
|
- target: OpenClaw
|
|
- package: Swabble
|
|
product: SwabbleKit
|
|
- sdk: AppIntents.framework
|
|
settings:
|
|
base:
|
|
CODE_SIGN_IDENTITY: "$(OPENCLAW_CODE_SIGN_IDENTITY)"
|
|
CODE_SIGN_STYLE: "$(OPENCLAW_CODE_SIGN_STYLE)"
|
|
DEVELOPMENT_TEAM: "$(OPENCLAW_DEVELOPMENT_TEAM)"
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_APP_BUNDLE_ID).tests"
|
|
ENABLE_APP_INTENTS_METADATA_GENERATION: NO
|
|
SWIFT_VERSION: "6.0"
|
|
SWIFT_STRICT_CONCURRENCY: complete
|
|
TEST_HOST: "$(BUILT_PRODUCTS_DIR)/OpenClaw.app/OpenClaw"
|
|
BUNDLE_LOADER: "$(TEST_HOST)"
|
|
configs:
|
|
Debug:
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_DEBUG_APP_BUNDLE_ID).tests"
|
|
info:
|
|
path: Tests/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: OpenClawTests
|
|
CFBundleShortVersionString: "$(OPENCLAW_MARKETING_VERSION)"
|
|
CFBundleVersion: "$(OPENCLAW_BUILD_VERSION)"
|
|
|
|
OpenClawLogicTests:
|
|
type: bundle.unit-test
|
|
platform: iOS
|
|
configFiles:
|
|
Debug: Signing.xcconfig
|
|
Release: Signing.xcconfig
|
|
sources:
|
|
- path: Tests/Logic
|
|
- path: ShareExtension/ShareDraftComposer.swift
|
|
group: ShareExtension
|
|
- path: ShareExtension/ShareComposeState.swift
|
|
group: ShareExtension
|
|
- path: ShareExtension/ShareAttachmentSummary.swift
|
|
group: ShareExtension
|
|
- path: WatchApp/Sources/WatchVoiceTurnTracker.swift
|
|
group: WatchApp/Sources
|
|
- path: WatchApp/Sources/WatchInboxMessages.swift
|
|
group: WatchApp/Sources
|
|
- path: WatchApp/Sources/WatchMascot.swift
|
|
group: WatchApp/Sources
|
|
- path: ../shared/OpenClawKit/Sources/OpenClawChatUI/OpenClawMascotView.swift
|
|
group: Shared
|
|
- path: ../shared/OpenClawKit/Sources/OpenClawChatUI/OpenClawMascotAnimator.swift
|
|
group: Shared
|
|
- path: ../shared/OpenClawKit/Sources/OpenClawChatUI/OpenClawMascotCanvas+Accessories.swift
|
|
group: Shared
|
|
- path: ../shared/OpenClawKit/Sources/OpenClawChatUI/ChatTypography.swift
|
|
group: Shared
|
|
- path: Sources/Services/ExactOpaqueIdentifier.swift
|
|
group: Sources/Services
|
|
dependencies:
|
|
- package: OpenClawKit
|
|
settings:
|
|
base:
|
|
CODE_SIGN_IDENTITY: "$(OPENCLAW_CODE_SIGN_IDENTITY)"
|
|
CODE_SIGN_STYLE: "$(OPENCLAW_CODE_SIGN_STYLE)"
|
|
DEVELOPMENT_TEAM: "$(OPENCLAW_DEVELOPMENT_TEAM)"
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_APP_BUNDLE_ID).logic-tests"
|
|
ENABLE_APP_INTENTS_METADATA_GENERATION: NO
|
|
SWIFT_EMIT_CONST_VALUE_PROTOCOLS: ""
|
|
SWIFT_VERSION: "6.0"
|
|
SWIFT_STRICT_CONCURRENCY: complete
|
|
configs:
|
|
Debug:
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_DEBUG_APP_BUNDLE_ID).logic-tests"
|
|
info:
|
|
path: Tests/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: OpenClawLogicTests
|
|
CFBundleShortVersionString: "$(OPENCLAW_MARKETING_VERSION)"
|
|
CFBundleVersion: "$(OPENCLAW_BUILD_VERSION)"
|
|
|
|
OpenClawUITests:
|
|
type: bundle.ui-testing
|
|
platform: iOS
|
|
configFiles:
|
|
Debug: Signing.xcconfig
|
|
Release: Signing.xcconfig
|
|
sources:
|
|
- path: UITests
|
|
dependencies:
|
|
- target: OpenClaw
|
|
settings:
|
|
base:
|
|
CODE_SIGN_IDENTITY: "$(OPENCLAW_CODE_SIGN_IDENTITY)"
|
|
CODE_SIGN_STYLE: "$(OPENCLAW_CODE_SIGN_STYLE)"
|
|
DEVELOPMENT_TEAM: "$(OPENCLAW_DEVELOPMENT_TEAM)"
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_APP_BUNDLE_ID).ui-tests"
|
|
SDKROOT: iphoneos
|
|
SUPPORTED_PLATFORMS: "iphonesimulator iphoneos"
|
|
SUPPORTS_MACCATALYST: NO
|
|
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD: NO
|
|
TEST_TARGET_NAME: OpenClaw
|
|
SWIFT_VERSION: "5.0"
|
|
configs:
|
|
Debug:
|
|
PRODUCT_BUNDLE_IDENTIFIER: "$(OPENCLAW_DEBUG_APP_BUNDLE_ID).ui-tests"
|
|
info:
|
|
path: UITests/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: OpenClawUITests
|
|
CFBundleShortVersionString: "$(OPENCLAW_MARKETING_VERSION)"
|
|
CFBundleVersion: "$(OPENCLAW_BUILD_VERSION)"
|