pi-remote-ios/README.md

60 lines
2.1 KiB
Markdown

# pi-remote iOS
Native iOS app for the [pi-remote-control](https://git.vpsj.de/jay/pi-remote-control) sidecar.
## Requirements
- Xcode 16.4+
- iOS 17.0+ device
- pi-remote-control sidecar running (Phase 1)
## Building
```bash
# Open in Xcode (first time: Xcode downloads device support files automatically)
open piRemote.xcodeproj
# Or via CLI (after first Xcode open with device connected):
xcodebuild build -project piRemote.xcodeproj -scheme piRemote \
-destination "platform=iOS,name=<YourPhone>" \
CODE_SIGNING_STYLE=Automatic DEVELOPMENT_TEAM=KNXX8R3648
```
## Project structure
```
Sources/
├── App/ — @main entry, ContentView, Assets
├── Core/
│ ├── Network/ — WebSocketClient, FrameCodec, ResumeCursor, TLS pinning
│ ├── Auth/ — Keychain, Pairing (QR exchange)
│ ├── Sessions/ — SessionRegistry, SessionConnection, PreConnectPool
│ ├── Push/ — APNs NotificationDelegate, DeviceTokenRegistrar
│ └── Persistence/ — ScrollbackCache, Preferences
└── UI/
├── Terminal/ — SwiftTerm wrapper, themes, fonts
├── Input/ — ModifierBar, sticky Ctrl, paste sheet
├── Status/ — StatusBar (pi state)
├── Sessions/ — SessionSwitcher
├── Pairing/ — QR scanner flow
└── Settings/ — Face-ID gate, sidecar info
```
## Dependencies (via SPM)
- [SwiftTerm](https://github.com/migueldeicaza/SwiftTerm) — terminal emulator
- [Starscream](https://github.com/daltoniam/Starscream) — WebSocket client
## Apple Developer setup (one-time)
1. In [Apple Developer Portal](https://developer.apple.com/account):
- Create App ID: `de.vpsj.pi-remote`, enable **Push Notifications**
- Generate an **APNs Auth Key** (`.p8`) — *download once, keep safe*
- Note your **Key ID** and **Team ID** (`KNXX8R3648`)
2. Copy `.p8` key to `~/.local/share/pi-remote/apns/AuthKey_<KeyID>.p8`
3. Update `[apns]` section in pi-remote-control config
## Status
Phase 2 — in development. See `pi-remote-control/docs/PHASE-2-ios-mvp.md`.