Skip to content

feat(apple): add native macOS and iOS clients#149

Open
oleksoleksoleks wants to merge 1 commit into
LycaonLLC:mainfrom
oleksoleksoleks:feat/apple-native-app
Open

feat(apple): add native macOS and iOS clients#149
oleksoleksoleks wants to merge 1 commit into
LycaonLLC:mainfrom
oleksoleksoleks:feat/apple-native-app

Conversation

@oleksoleksoleks

Copy link
Copy Markdown
Contributor

Summary

  • add native SwiftUI macOS and iOS clients with shared protocol, client, platform, and UI modules
  • make macOS connect automatically to the local OMP appserver over a Unix-domain WebSocket
  • bundle and supervise compatible local omp and t4-host runtimes while keeping Tailnet hosts optional

Screenshots

No screenshots attached.

Testing

  • cd apps/apple && swift test — 23 tests passed
  • cd apps/apple && T4_LIVE_LOCAL_HOST=1 swift test --filter LiveLocalHostTests — local handshake, negotiation, session listing, and bootstrap passed during implementation
  • cd apps/apple && xcodebuild -project T4AppleApps.xcodeproj -scheme T4MacApp -configuration Debug CODE_SIGNING_ALLOWED=NO build
  • launched the resulting T4MacApp.app and confirmed its bundled T4Runtime/omp and T4Runtime/t4-host

Risk

  • large new platform surface; macOS local-host startup depends on the staged runtime matching the current appserver protocol
  • iOS remains remote-host only because Unix-domain local host supervision is macOS-specific

Notes

  • DEVPOST.md remains untracked and is not included

AI Review Report

  • verified local runtime ownership rules: the app only terminates processes it launched and does not claim an already healthy socket
  • verified feature-gated host.watch, bounded protocol decoding, masked WebSocket frames, and reconnect generation handling

Security Audit

  • validates bundled executables as regular, executable, non-symlink resources
  • bounds frame sizes, JSON depth/node counts, diagnostics, and startup wait time
  • does not pass remote networking flags to the local host process

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant