Commit Graph

7 Commits

Author SHA1 Message Date
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
Trey T
333c08724f Redesign UI for iOS 26 Liquid Glass
- 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>
2026-04-16 21:04:17 -05:00
Trey T
8e01068ad3 Add edit-connection flow
Edit reuses AddConnectionView with an `editing:` parameter that prefills the
form and updates in-place; password field becomes optional ("leave blank to
keep current"). Surfaced via context menu and a leading-edge swipe action on
each saved row.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 20:21:14 -05:00
Trey T
fcad267493 Set bundle id to com.tt.screens (dev + prod)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 20:08:50 -05:00
Trey T
1c01b3573f Phases 1-4: full VNC client implementation
- SessionController wraps RoyalVNCKit.VNCConnection via nonisolated delegate
  adapter that bridges callbacks to @MainActor; Keychain-resolved passwords;
  reconnect with jittered exponential backoff; NWPathMonitor adaptive-quality
  hook; framebuffer rendered to CALayer.contents from didUpdateFramebuffer.
- Touch + trackpad input modes with floating soft cursor overlay; hardware
  keyboard via pressesBegan/Ended → X11 keysyms; UIPointerInteraction with
  hidden cursor for indirect pointers; pinch-to-zoom; Apple Pencil as direct
  touch; two-finger pan / indirect scroll wheel events.
- Bidirectional clipboard sync (per-connection opt-in); multi-monitor screen
  picker with input remapping; screenshot capture → share sheet; on-disconnect
  reconnect/close prompt; view-only and curtain-mode persisted.
- iPad multi-window via WindowGroup(for: UUID.self) + context-menu open;
  CloudKit-backed ModelContainer with local fallback; PrivacyInfo.xcprivacy.

10 VNCCore tests + 4 VNCUI tests pass; iPhone and iPad simulator builds clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 20:07:54 -05:00
102c3484e9 docs: export plan + handoff into repo (#1) 2026-04-16 19:36:56 -05:00
Claude
2cff17fa0d Phase 0: scaffold
Two SPM packages (VNCCore, VNCUI) + thin iOS app target wired via
xcodegen. Builds for iPhone 17 simulator, unit tests pass.

- VNCCore: SessionState, SessionController stub, Transport protocol
  with DirectTransport (NWConnection), DiscoveryService (Bonjour on
  _rfb._tcp and _workstation._tcp), SavedConnection @Model,
  ConnectionStore, KeychainService, ClipboardBridge
- VNCUI: ConnectionListView, AddConnectionView, SessionView,
  FramebufferView/FramebufferUIView (UIKit CALayer), InputMapper,
  SettingsView; UIKit bits guarded with #if canImport(UIKit) so
  swift test runs on macOS
- App: @main VNCApp, AppStateController state machine, RootView
- RoyalVNCKit dependency pinned to main (transitive CryptoSwift
  constraint blocks tagged releases)
- xcodegen Project.yml + README + .gitignore

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