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
3a4a6af942
docs: fix trailing slash in pair-qr curl command
2026-05-16 02:58:18 +02:00
Johannes Merz
ad95ea3efd
docs: BUILD.md — fix pair command, use GET /pair-qr endpoint
2026-05-16 02:56:20 +02:00
Johannes Merz
91baac5420
docs: BUILD.md — device ID, sidecar start, build/install/launch commands
2026-05-16 02:53:43 +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
333797ea36
docs: update status table — T-2.0..T-2.5+T-2.9 done
2026-05-16 02:42:02 +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
9f2046c7cb
merge: feat/p2-t2-4-modifierbar
2026-05-15 19:04:52 +02:00
jay
5a4e814d9f
merge: feat/p2-tests-2
2026-05-15 19:04:44 +02:00
jay
45a0884beb
test(T-2.4/2.5/2.9): ModifierState, ScrollbackCache, DeviceTokenRegistrar tests
2026-05-15 19:03:56 +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
Johannes Merz
6b953008ce
merge: 78 unit tests (FrameCodec, ResumeCursor, Pairing, Keychain, Theme)
2026-05-15 18:34:36 +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
d6062000e8
merge: T-2.1 WebSocketClient + FrameCodec + ResumeCursor
2026-05-15 18:34:16 +02:00
jay
89c27c0eae
test(T-2.1/2.2/2.3): unit tests for FrameCodec, ResumeCursor, Pairing, Keychain, Theme
...
78 test functions across 5 test files:
- FrameCodecTests.swift (24): BinaryFrame.decode, ClientToServer encoding,
ServerToClient decoding, round-trip — full IC-1 field name verification
- ResumeCursorTests.swift (12): save/load, overwrite, UInt64.max, clear,
multi-session isolation — each test uses isolated UserDefaults suite
- PairingTests.swift (18): parseQR happy-path, missing params, wrong scheme,
missing port, error type assertions
- KeychainTests.swift (7): round-trip SidecarCredential, upsert, notFound,
delete, production key guard, generic Codable
- ThemeTests.swift (17): ansiColors count, color range, dark≠github,
SwiftTerm conversion, ThemeStore select, Codable round-trip
Review notes: Tests/CoreTests/REVIEW_NOTES.md
- feat/p2-t2-2-pairing branch was EMPTY; Auth/Pairing code on t2-3-terminal
- IC-1 compliance: all JSON field names correct including 'awaiting-input'
- Minor: Keychain.encodingFailed used for decode failure (misleading name)
- Merge order: t2-1 → t2-3 → t2-2 (empty) → p2-tests
2026-05-15 18:33:26 +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