Files
bot/apps/ios/project.yml
zooqueen 071e3f1082 rebrand: openclaw -> hanzo bot across entire codebase
Automated rebrand of all openclaw references to hanzo bot:
- Package: openclaw -> @hanzo/bot
- Binary: openclaw -> hanzo-bot
- Config: ~/.openclaw -> ~/.hanzo/bot
- Docker: ghcr.io/hanzoai/bot
- Env vars: OPENCLAW_* -> BOT_*
- Bundle IDs: ai.hanzo.bot.*
- Product name: Hanzo Bot
2026-03-19 13:52:32 -07:00

340 lines
12 KiB
YAML

name: Hanzo Bot
options:
bundleIdPrefix: ai.openclaw
deploymentTarget:
iOS: "18.0"
xcodeVersion: "16.0"
settings:
base:
SWIFT_VERSION: "6.0"
ENABLE_APP_INTENTS_METADATA_GENERATION: NO
packages:
Hanzo BotKit:
path: ../shared/Hanzo BotKit
Swabble:
path: ../../Swabble
schemes:
Hanzo Bot:
shared: true
build:
targets:
Hanzo Bot: all
test:
targets:
- Hanzo BotTests
- Hanzo BotLogicTests
Hanzo BotLogicTests:
shared: true
build:
targets:
Hanzo BotLogicTests: all
test:
targets:
- Hanzo BotLogicTests
targets:
Hanzo Bot:
type: application
platform: iOS
configFiles:
Debug: Signing.xcconfig
Release: Signing.xcconfig
sources:
- path: Sources
dependencies:
- target: Hanzo BotShareExtension
embed: true
- target: Hanzo BotActivityWidget
embed: true
- target: Hanzo BotWatchApp
- package: Hanzo BotKit
- package: Hanzo BotKit
product: Hanzo BotChatUI
- package: Hanzo BotKit
product: Hanzo BotProtocol
- package: Swabble
product: SwabbleKit
- sdk: AppIntents.framework
preBuildScripts:
- name: SwiftFormat (lint)
basedOnDependencyAnalysis: false
inputFileLists:
- $(SRCROOT)/SwiftSources.input.xcfilelist
script: |
set -euo pipefail
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
if ! command -v swiftformat >/dev/null 2>&1; then
echo "error: swiftformat not found (brew install swiftformat)" >&2
exit 1
fi
swiftformat --lint --config "$SRCROOT/../../.swiftformat" \
--filelist "$SRCROOT/SwiftSources.input.xcfilelist"
- name: SwiftLint
basedOnDependencyAnalysis: false
inputFileLists:
- $(SRCROOT)/SwiftSources.input.xcfilelist
script: |
set -euo pipefail
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
if ! command -v swiftlint >/dev/null 2>&1; then
echo "error: swiftlint not found (brew install swiftlint)" >&2
exit 1
fi
swiftlint lint --config "$SRCROOT/.swiftlint.yml" --use-script-input-file-lists
settings:
base:
CODE_SIGN_IDENTITY: "Apple Development"
CODE_SIGN_ENTITLEMENTS: Sources/Hanzo Bot.entitlements
CODE_SIGN_STYLE: "$(BOT_CODE_SIGN_STYLE)"
DEVELOPMENT_TEAM: "$(BOT_DEVELOPMENT_TEAM)"
PRODUCT_BUNDLE_IDENTIFIER: "$(BOT_APP_BUNDLE_ID)"
PROVISIONING_PROFILE_SPECIFIER: "$(BOT_APP_PROFILE)"
TARGETED_DEVICE_FAMILY: "1"
SWIFT_VERSION: "6.0"
SWIFT_STRICT_CONCURRENCY: complete
SUPPORTS_LIVE_ACTIVITIES: YES
ENABLE_APPINTENTS_METADATA: NO
ENABLE_APP_INTENTS_METADATA_GENERATION: NO
configs:
Debug:
BOT_PUSH_TRANSPORT: direct
BOT_PUSH_DISTRIBUTION: local
BOT_PUSH_RELAY_BASE_URL: ""
BOT_PUSH_APNS_ENVIRONMENT: sandbox
Release:
BOT_PUSH_TRANSPORT: direct
BOT_PUSH_DISTRIBUTION: local
BOT_PUSH_RELAY_BASE_URL: ""
BOT_PUSH_APNS_ENVIRONMENT: production
info:
path: Sources/Info.plist
properties:
CFBundleDisplayName: Hanzo Bot
CFBundleIconName: AppIcon
CFBundleURLTypes:
- CFBundleURLName: ai.hanzo.bot.ios
CFBundleURLSchemes:
- openclaw
CFBundleShortVersionString: "$(BOT_MARKETING_VERSION)"
CFBundleVersion: "$(BOT_BUILD_VERSION)"
UILaunchScreen: {}
UIApplicationSceneManifest:
UIApplicationSupportsMultipleScenes: false
UIBackgroundModes:
- audio
- remote-notification
BGTaskSchedulerPermittedIdentifiers:
- ai.hanzo.bot.ios.bgrefresh
NSLocalNetworkUsageDescription: Hanzo Bot discovers and connects to your Hanzo Bot gateway on the local network.
NSAppTransportSecurity:
NSAllowsArbitraryLoadsInWebContent: true
NSBonjourServices:
- _openclaw-gw._tcp
NSCameraUsageDescription: Hanzo Bot can capture photos or short video clips when requested via the gateway.
NSLocationWhenInUseUsageDescription: Hanzo Bot uses your location when you allow location sharing.
NSLocationAlwaysAndWhenInUseUsageDescription: Hanzo Bot can share your location in the background when you enable Always.
NSMicrophoneUsageDescription: Hanzo Bot needs microphone access for voice wake.
NSMotionUsageDescription: Hanzo Bot may use motion data to support device-aware interactions and automations.
NSPhotoLibraryUsageDescription: Hanzo Bot needs photo library access when you choose existing photos to share with your assistant.
NSSpeechRecognitionUsageDescription: Hanzo Bot uses on-device speech recognition for voice wake.
NSSupportsLiveActivities: true
ITSAppUsesNonExemptEncryption: false
Hanzo BotPushTransport: "$(BOT_PUSH_TRANSPORT)"
Hanzo BotPushDistribution: "$(BOT_PUSH_DISTRIBUTION)"
Hanzo BotPushRelayBaseURL: "$(BOT_PUSH_RELAY_BASE_URL)"
Hanzo BotPushAPNsEnvironment: "$(BOT_PUSH_APNS_ENVIRONMENT)"
UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
UISupportedInterfaceOrientations~ipad:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
Hanzo BotShareExtension:
type: app-extension
platform: iOS
configFiles:
Debug: Signing.xcconfig
Release: Signing.xcconfig
sources:
- path: ShareExtension
dependencies:
- package: Hanzo BotKit
- sdk: AppIntents.framework
settings:
base:
CODE_SIGN_IDENTITY: "Apple Development"
CODE_SIGN_STYLE: "$(BOT_CODE_SIGN_STYLE)"
DEVELOPMENT_TEAM: "$(BOT_DEVELOPMENT_TEAM)"
ENABLE_APPINTENTS_METADATA: NO
ENABLE_APP_INTENTS_METADATA_GENERATION: NO
PRODUCT_BUNDLE_IDENTIFIER: "$(BOT_SHARE_BUNDLE_ID)"
PROVISIONING_PROFILE_SPECIFIER: "$(BOT_SHARE_PROFILE)"
SWIFT_VERSION: "6.0"
SWIFT_STRICT_CONCURRENCY: complete
info:
path: ShareExtension/Info.plist
properties:
CFBundleDisplayName: Hanzo Bot Share
CFBundleShortVersionString: "$(BOT_MARKETING_VERSION)"
CFBundleVersion: "$(BOT_BUILD_VERSION)"
NSExtension:
NSExtensionPointIdentifier: com.apple.share-services
NSExtensionPrincipalClass: "$(PRODUCT_MODULE_NAME).ShareViewController"
NSExtensionAttributes:
NSExtensionActivationRule:
NSExtensionActivationSupportsText: true
NSExtensionActivationSupportsWebURLWithMaxCount: 1
NSExtensionActivationSupportsImageWithMaxCount: 10
NSExtensionActivationSupportsMovieWithMaxCount: 1
Hanzo BotActivityWidget:
type: app-extension
platform: iOS
configFiles:
Debug: Signing.xcconfig
Release: Signing.xcconfig
sources:
- path: ActivityWidget
- path: Sources/LiveActivity/Hanzo BotActivityAttributes.swift
dependencies:
- sdk: WidgetKit.framework
- sdk: ActivityKit.framework
settings:
base:
CODE_SIGN_IDENTITY: "Apple Development"
CODE_SIGN_STYLE: "$(BOT_CODE_SIGN_STYLE)"
DEVELOPMENT_TEAM: "$(BOT_DEVELOPMENT_TEAM)"
PRODUCT_BUNDLE_IDENTIFIER: "$(BOT_ACTIVITY_WIDGET_BUNDLE_ID)"
SWIFT_VERSION: "6.0"
SWIFT_STRICT_CONCURRENCY: complete
SUPPORTS_LIVE_ACTIVITIES: YES
info:
path: ActivityWidget/Info.plist
properties:
CFBundleDisplayName: Hanzo Bot Activity
CFBundleShortVersionString: "$(BOT_MARKETING_VERSION)"
CFBundleVersion: "$(BOT_BUILD_VERSION)"
NSSupportsLiveActivities: true
NSExtension:
NSExtensionPointIdentifier: com.apple.widgetkit-extension
Hanzo BotWatchApp:
type: application.watchapp2
platform: watchOS
deploymentTarget: "11.0"
sources:
- path: WatchApp
dependencies:
- target: Hanzo BotWatchExtension
configFiles:
Debug: Config/Signing.xcconfig
Release: Config/Signing.xcconfig
settings:
base:
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
ENABLE_APPINTENTS_METADATA: NO
ENABLE_APP_INTENTS_METADATA_GENERATION: NO
PRODUCT_BUNDLE_IDENTIFIER: "$(BOT_WATCH_APP_BUNDLE_ID)"
info:
path: WatchApp/Info.plist
properties:
CFBundleDisplayName: Hanzo Bot
CFBundleShortVersionString: "$(BOT_MARKETING_VERSION)"
CFBundleVersion: "$(BOT_BUILD_VERSION)"
WKCompanionAppBundleIdentifier: "$(BOT_APP_BUNDLE_ID)"
WKWatchKitApp: true
Hanzo BotWatchExtension:
type: watchkit2-extension
platform: watchOS
deploymentTarget: "11.0"
sources:
- path: WatchExtension/Sources
dependencies:
- sdk: AppIntents.framework
- sdk: WatchConnectivity.framework
- sdk: UserNotifications.framework
configFiles:
Debug: Config/Signing.xcconfig
Release: Config/Signing.xcconfig
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: "$(BOT_WATCH_EXTENSION_BUNDLE_ID)"
info:
path: WatchExtension/Info.plist
properties:
CFBundleDisplayName: Hanzo Bot
CFBundleShortVersionString: "$(BOT_MARKETING_VERSION)"
CFBundleVersion: "$(BOT_BUILD_VERSION)"
NSExtension:
NSExtensionAttributes:
WKAppBundleIdentifier: "$(BOT_WATCH_APP_BUNDLE_ID)"
NSExtensionPointIdentifier: com.apple.watchkit
Hanzo BotTests:
type: bundle.unit-test
platform: iOS
configFiles:
Debug: Signing.xcconfig
Release: Signing.xcconfig
sources:
- path: Tests
excludes:
- Logic
dependencies:
- target: Hanzo Bot
- package: Swabble
product: SwabbleKit
- sdk: AppIntents.framework
settings:
base:
CODE_SIGN_IDENTITY: "Apple Development"
CODE_SIGN_STYLE: "$(BOT_CODE_SIGN_STYLE)"
DEVELOPMENT_TEAM: "$(BOT_DEVELOPMENT_TEAM)"
PRODUCT_BUNDLE_IDENTIFIER: ai.hanzo.bot.ios.tests
ENABLE_APP_INTENTS_METADATA_GENERATION: NO
SWIFT_VERSION: "6.0"
SWIFT_STRICT_CONCURRENCY: complete
TEST_HOST: "$(BUILT_PRODUCTS_DIR)/Hanzo Bot.app/Hanzo Bot"
BUNDLE_LOADER: "$(TEST_HOST)"
info:
path: Tests/Info.plist
properties:
CFBundleDisplayName: Hanzo BotTests
CFBundleShortVersionString: "$(BOT_MARKETING_VERSION)"
CFBundleVersion: "$(BOT_BUILD_VERSION)"
Hanzo BotLogicTests:
type: bundle.unit-test
platform: iOS
configFiles:
Debug: Signing.xcconfig
Release: Signing.xcconfig
sources:
- path: Tests/Logic
dependencies:
- package: Hanzo BotKit
settings:
base:
CODE_SIGN_IDENTITY: "Apple Development"
CODE_SIGN_STYLE: "$(BOT_CODE_SIGN_STYLE)"
DEVELOPMENT_TEAM: "$(BOT_DEVELOPMENT_TEAM)"
PRODUCT_BUNDLE_IDENTIFIER: ai.hanzo.bot.ios.logic-tests
ENABLE_APP_INTENTS_METADATA_GENERATION: NO
SWIFT_VERSION: "6.0"
SWIFT_STRICT_CONCURRENCY: complete
info:
path: Tests/Info.plist
properties:
CFBundleDisplayName: Hanzo BotLogicTests
CFBundleShortVersionString: "$(BOT_MARKETING_VERSION)"
CFBundleVersion: "$(BOT_BUILD_VERSION)"