- AppState: loads credential from Keychain on launch, persists on pair - ContentView: switches PairingFlowView ↔ MainTerminalView on credential - PairingFlowView: onDismiss → onSuccess(credential) callback - MainTerminalView: auto-resolves/creates session, connects WebSocket stream to TerminalViewController, ModifierBar wired to SessionConnection.send() - piRemoteApp: AppState injected as environmentObject |
||
|---|---|---|
| .. | ||
| Assets.xcassets | ||
| Preview Content/Preview Assets.xcassets | ||
| AppState.swift | ||
| ContentView.swift | ||
| Info.plist | ||
| piRemote.entitlements | ||
| piRemoteApp.swift | ||