Files
bot/apps/ios/project.yml
zeekay 3de1e92a15 Bump to 2026.5.12; finish HanzoBot* → Bot* identifier sweep so build passes
The big rebrand left a residue of HanzoBot* identifiers inside camelCase
compounds (resolveHanzoBotAgentDir, HanzoBotPackageRoot, hanzoBotRoot,
HanzoBotTmpDir, …) that the canonical bot-root.ts / tmp-bot-dir.ts had
always exported as Bot* / bot*. The earlier \b-anchored sweep missed
them because the H is mid-identifier with no word boundary. Replace
HanzoBot(?=[A-Z][a-z]) → Bot (and hanzoBot equivalent) everywhere, plus
HanzoBotKit → BotKit (the on-disk module is apps/shared/BotKit).

Also one stray pi-tools.ts type narrowing (senderId is string|null but
the target wants string|undefined) — coerce with ?? undefined.

pnpm build → ✔ Build complete in 7s.
2026-05-12 20:41:07 -07:00

284 lines
9.4 KiB
YAML

name: HanzoBot
options:
bundleIdPrefix: ai.hanzo.bot
deploymentTarget:
iOS: "18.0"
xcodeVersion: "16.0"
settings:
base:
SWIFT_VERSION: "6.0"
ENABLE_APP_INTENTS_METADATA_GENERATION: NO
packages:
BotKit:
path: ../shared/BotKit
Swabble:
path: ../../Swabble
schemes:
HanzoBot:
shared: true
build:
targets:
HanzoBot: all
test:
targets:
- HanzoBotTests
targets:
HanzoBot:
type: application
platform: iOS
configFiles:
Debug: Signing.xcconfig
Release: Signing.xcconfig
sources:
- path: Sources
dependencies:
- target: HanzoBotShareExtension
embed: true
- target: HanzoBotActivityWidget
embed: true
- target: HanzoBotWatchApp
- package: BotKit
- package: BotKit
product: HanzoBotChatUI
- package: BotKit
product: HanzoBotProtocol
- 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/HanzoBot.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
info:
path: Sources/Info.plist
properties:
CFBundleDisplayName: HanzoBot
CFBundleIconName: AppIcon
CFBundleURLTypes:
- CFBundleURLName: ai.hanzo.bot.ios
CFBundleURLSchemes:
- hanzo-bot
CFBundleShortVersionString: "2026.3.2"
CFBundleVersion: "20260301"
UILaunchScreen: {}
UIApplicationSceneManifest:
UIApplicationSupportsMultipleScenes: false
UIBackgroundModes:
- audio
- remote-notification
BGTaskSchedulerPermittedIdentifiers:
- ai.hanzo.bot.ios.bgrefresh
NSLocalNetworkUsageDescription: HanzoBot discovers and connects to your HanzoBot gateway on the local network.
NSAppTransportSecurity:
NSAllowsArbitraryLoadsInWebContent: true
NSBonjourServices:
- _hanzo-bot-gw._tcp
NSCameraUsageDescription: HanzoBot can capture photos or short video clips when requested via the gateway.
NSLocationWhenInUseUsageDescription: HanzoBot uses your location when you allow location sharing.
NSLocationAlwaysAndWhenInUseUsageDescription: HanzoBot can share your location in the background when you enable Always.
NSMicrophoneUsageDescription: HanzoBot needs microphone access for voice wake.
NSSpeechRecognitionUsageDescription: HanzoBot uses on-device speech recognition for voice wake.
NSSupportsLiveActivities: true
UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
UISupportedInterfaceOrientations~ipad:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
HanzoBotShareExtension:
type: app-extension
platform: iOS
configFiles:
Debug: Signing.xcconfig
Release: Signing.xcconfig
sources:
- path: ShareExtension
dependencies:
- package: 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: HanzoBot Share
CFBundleShortVersionString: "2026.3.2"
CFBundleVersion: "20260301"
NSExtension:
NSExtensionPointIdentifier: com.apple.share-services
NSExtensionPrincipalClass: "$(PRODUCT_MODULE_NAME).ShareViewController"
NSExtensionAttributes:
NSExtensionActivationRule:
NSExtensionActivationSupportsText: true
NSExtensionActivationSupportsWebURLWithMaxCount: 1
NSExtensionActivationSupportsImageWithMaxCount: 10
NSExtensionActivationSupportsMovieWithMaxCount: 1
HanzoBotActivityWidget:
type: app-extension
platform: iOS
configFiles:
Debug: Signing.xcconfig
Release: Signing.xcconfig
sources:
- path: ActivityWidget
- path: Sources/LiveActivity/HanzoBotActivityAttributes.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: HanzoBot Activity
CFBundleShortVersionString: "2026.3.2"
CFBundleVersion: "20260301"
NSSupportsLiveActivities: true
NSExtension:
NSExtensionPointIdentifier: com.apple.widgetkit-extension
HanzoBotWatchApp:
type: application.watchapp2
platform: watchOS
deploymentTarget: "11.0"
sources:
- path: WatchApp
dependencies:
- target: HanzoBotWatchExtension
configFiles:
Debug: Config/Signing.xcconfig
Release: Config/Signing.xcconfig
settings:
base:
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: HanzoBot
CFBundleShortVersionString: "2026.3.2"
CFBundleVersion: "20260301"
WKCompanionAppBundleIdentifier: "$(BOT_APP_BUNDLE_ID)"
WKWatchKitApp: true
HanzoBotWatchExtension:
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: HanzoBot
CFBundleShortVersionString: "2026.3.2"
CFBundleVersion: "20260301"
NSExtension:
NSExtensionAttributes:
WKAppBundleIdentifier: "$(BOT_WATCH_APP_BUNDLE_ID)"
NSExtensionPointIdentifier: com.apple.watchkit
HanzoBotTests:
type: bundle.unit-test
platform: iOS
configFiles:
Debug: Signing.xcconfig
Release: Signing.xcconfig
sources:
- path: Tests
dependencies:
- target: HanzoBot
- 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)/HanzoBot.app/HanzoBot"
BUNDLE_LOADER: "$(TEST_HOST)"
info:
path: Tests/Info.plist
properties:
CFBundleDisplayName: HanzoBotTests
CFBundleShortVersionString: "2026.3.2"
CFBundleVersion: "20260301"