4408bca53ba6957e51b80d7ea96d362c4f8fc01d
Drives the test through app.keyboards.firstMatch.keys[…].tap() when the
on-screen keyboard is up, which mirrors actual user input through the
UIKey pipeline. Falls back to app.typeText only when the simulator
suppresses the soft keyboard via Connect Hardware Keyboard.
Disable Connect Hardware Keyboard in the host's iphonesimulator defaults
so the soft keyboard stays visible during the test. With both verified,
this commit guarantees that pressing 'h' on the iOS keyboard reaches
FramebufferUIView.insertText("h").
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Screens (working title)
A VNC / RFB remote-desktop client for iPhone and iPad, modeled on Screens by Edovia. See /Users/treyt/.claude/plans/i-want-to-make-sprightly-pike.md for the full plan.
The name "Screens" is owned by Edovia. Pick a different App Store name before any public release.
Layout
Screens/
├── Screens/ # iOS app target (thin shell: @main, RootView, AppStateController)
├── Packages/
│ ├── VNCCore/ # Protocol + transport + storage. Tested with `swift test`.
│ └── VNCUI/ # SwiftUI views + UIKit framebuffer. Tested in-simulator.
├── Project.yml # xcodegen project definition — generates the .xcodeproj
├── README.md
└── .gitignore
Setup
- Install xcodegen:
brew install xcodegen - Generate the Xcode project from the repo root:
xcodegen generate - Open
Screens.xcodeprojin Xcode 16+. First open resolves the RoyalVNCKit SPM dependency. - Select an iOS 18 simulator (or a signed device) and run.
Testing
# Fast unit tests (no simulator)
cd Packages/VNCCore && swift test
cd Packages/VNCUI && swift test
# Full app + UI tests (simulator)
xcodebuild -project Screens.xcodeproj -scheme Screens -destination 'platform=iOS Simulator,name=iPhone 16' test
Phase 0 status
Scaffold only. Tapping a saved connection starts a SessionController but it only opens the TCP socket — no RFB handshake yet. Phase 1 wires RoyalVNCKit into SessionController and implements framebuffer rendering.
Dependencies
- RoyalVNCKit (MIT) — RFB protocol, encodings, auth.
- Apple first-party only:
Network,SwiftData,Security,UIKit,SwiftUI,Observation.
Description
Languages
Swift
100%