Trey T fcdd19ceb9 List screen: ditch nav bar, build flush top chrome
The system nav bar floated low on iOS 26 and left a wedge of black above the
title. Replaced it with a custom top row pinned to the safe-area top: gear ⟶
big "Screens" wordmark ⟶ +. Search bar lives directly beneath, sections start
right after — no centered-in-the-void layout. Background gets a subtle blue
radial bloom so the floating glass buttons have something to anchor to.

Saved-empty state is now a glass card with an icon and a gradient CTA button.
Connection rows are full-width glass cards with rounded corners; long-press
gives Edit / Open in New Window / Delete.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 21:19:41 -05:00
2026-04-16 19:29:47 -05:00
2026-04-16 19:29:47 -05:00

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

  1. Install xcodegen:
    brew install xcodegen
    
  2. Generate the Xcode project from the repo root:
    xcodegen generate
    
  3. Open Screens.xcodeproj in Xcode 16+. First open resolves the RoyalVNCKit SPM dependency.
  4. 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
No description provided
Readme 1.6 MiB
Languages
Swift 100%