333c08724fe287fa19ab70f7e82e53f0da329336
- Fix port-formatting bug: Int interpolation was adding a locale grouping
separator ("5,900"); now renders "5900" via portLabel helper.
- LiquidGlass helpers: glassSurface/interactiveGlassSurface/glassButton wrap
iOS 26's .glassEffect / .buttonStyle(.glass) / scrollEdgeEffectStyle with
iOS 18 fallbacks (ultraThinMaterial + stroke) gated by #available.
- List: searchable, labeled Bonjour section with "looking for computers"
state, empty-state CTA, hover-ready rounded discovery buttons, subtle
dark gradient background, connection cards with color swatch +
monospaced host:port and chevron.
- Session: floating glass back-pill + connection-status pill + toolbar
capsule; three-finger tap toggles chrome; disconnect dialog upgraded to
a 28pt glass card with role-based glyphs/tints.
- Soft keyboard bar redesigned as a rounded glass panel with pill keys.
- Add/Edit form: horizontal color-tag picker, show/hide password eye,
helpful footers (Tailscale hint, 8-char VNC-password reminder,
View-only explainer).
- Settings: app-icon-style hero, grouped sections with footers, links to
privacy policy and RoyalVNCKit.
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%