Aligns the iOS app with the Clawnet refactor by implementing proper role separation for gateway connections. Uses separate operator and node sessions to match the gateway's authorization requirements. Changes: - New GatewayOperatorSession: Wraps GatewayChannelActor for operator-role RPC requests (chat.*, health, sessions.list) without invoke handling - Dual-connection architecture: Operator session for requests, node session for node.event calls (e.g., chat.subscribe) - Separate websocket sessions: Each connection gets its own URLSession to prevent response cross-talk - Updated chat transport: IOSGatewayChatTransport uses operator session for requests, node session for subscriptions ClawdbotKit (shared): - Deadlock fix in GatewayChannel.swift: Moved connection finalization (listen(), connected=true, isConnecting=false, waiter resumption) to occur before calling pushHandler. This fixes a latent bug where requests made from onConnected callbacks would deadlock. Does not affect macOS (its callback doesn't make requests). - Package.swift: Fixed argument order for Swift 6.2 compatibility iOS chat is now working. This is the base PR to unlock further work on the iOS app. |
||
|---|---|---|
| .. | ||
| fastlane | ||
| Sources | ||
| Tests | ||
| .swiftlint.yml | ||
| project.yml | ||
| README.md | ||
| SwiftSources.input.xcfilelist | ||
Clawdbot (iOS)
Internal-only SwiftUI app scaffold.
Lint/format (required)
brew install swiftformat swiftlint
Generate the Xcode project
cd apps/ios
xcodegen generate
open Clawdbot.xcodeproj
Shared packages
../shared/MoltbotKit— shared types/constants used by iOS (and later macOS bridge + gateway routing).
fastlane
brew install fastlane
cd apps/ios
fastlane lanes
See apps/ios/fastlane/SETUP.md for App Store Connect auth + upload lanes.