Commit Graph

16 Commits

Author SHA1 Message Date
jay 7be9e64a95 feat: merge T-2.6 SessionSwitcher + T-2.8 StatusBar + T-2.11 Face-ID
- SessionRegistry + SessionSwitcher + SessionRow (T-2.6)
- StatusBar component with pi-state indicator (T-2.8)
- FaceIDGate + SettingsView + LockView (T-2.11)
- Reconciled MainTerminalView: StatusBar wired with onSwitcher/onSettings/onUnpair,
  two .task modifiers, two .sheet modifiers (SessionSwitcher + SettingsView)
- AppState: appDidBackground/appWillForeground + isLocked (T-2.11)
- ContentView: scenePhase tracking + LockView overlay (T-2.11)
- Pairing.swift: fp param is optional pre-TLS (dev convenience)
2026-05-16 11:54:12 +02:00
jay fb56c11a29 fix: default font size 13pt → 11pt for ~53 cols on iPhone 12 mini 2026-05-16 04:04:48 +02:00
jay d085444adc fix: clear terminal on connect, increase SIGWINCH settle time to 600ms 2026-05-16 04:00:02 +02:00
jay 994b450fe4 fix: fresh connect uses resize+snapshot instead of full history replay; wire onInput 2026-05-16 03:46:24 +02:00
jay 044a4920bb fix: terminal rendering — resize sync, TERM via sidecar, remove double-dot status 2026-05-16 03:30:31 +02:00
Johannes Merz 480a06981c feat: app wiring — ContentView + AppState + MainTerminalView
- 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
2026-05-16 02:48:08 +02:00
Johannes Merz 9c617a7c14 fix: Swift 6 concurrency build errors — all files compile clean
- SessionConnection: ConnectionState not nested in WebSocketClient
- WebSocketClient: nonisolated(unsafe) for WebSocketEvent across actor boundary
- ModifierBar: explicit init() + RepeatingBarButton access level fix
- NotificationDelegate: nonisolated(unsafe) for completion handlers
- QRScannerView: DispatchQueue instead of Task.detached for AVCaptureSession
- piRemoteApp: add UserNotifications import
- xcodegen regenerate to pick up all new source files
2026-05-16 02:38:16 +02:00
jay 0f680cfcc2 merge: feat/p2-t2-5-session 2026-05-15 19:04:52 +02:00
jay dc4f08d8ee feat(T-2.4): ModifierBar, ModifierState, PasteSheet 2026-05-15 18:57:42 +02:00
jay 048036d6a7 feat(T-2.5): SessionConnection (IC-2.1) + ScrollbackCache (5MB ring) 2026-05-15 18:54:56 +02:00
jay a5c937ad75 feat(T-2.9): APNs NotificationDelegate + DeviceTokenRegistrar 2026-05-15 18:54:10 +02:00
jay 27d0a43dbe merge: T-2.2 Pairing/Keychain/QR + T-2.3 TerminalView/Themes/Fonts 2026-05-15 18:34:25 +02:00
jay 9fb5f813a1 feat(T-2.1): WebSocketClient + FrameCodec + ResumeCursor 2026-05-15 18:27:48 +02:00
jay 49667667eb feat(T-2.3): TerminalView UIKit wrapper, theme store, font store 2026-05-15 18:26:12 +02:00
jay f6396bc70e feat(T-2.2): Pairing flow, Keychain, QR scanner, TLS pinning stub 2026-05-15 18:21:40 +02:00
Johannes Merz aa010cf874 feat(T-2.0): Xcode project scaffold — SwiftUI shell, SwiftTerm + Starscream SPM deps
- xcodegen project.yml: de.vpsj.pi-remote, team KNXX8R3648, iOS 17+
- SwiftTerm 1.13.0, Starscream 4.0.8 resolved
- App entry point + ContentView hello shell
- Push Notifications entitlement (aps-environment: development)
- pi-remote:// URL scheme registered
- NSCameraUsageDescription (QR pairing), NSFaceIDUsageDescription
- UIBackgroundModes: remote-notification
2026-05-15 13:19:48 +02:00