Create Wristivo iPhone and Apple Watch foundation

This commit is contained in:
2026-09-17 17:59:08 +04:00
commit a92698e1e6
48 changed files with 2492 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
# Developer setup
## Prerequisites
Mac with Xcode and the iOS/watchOS SDKs selected with xcode-select. The initial environment has Xcode 27.0 (27A266a), Swift 6.4, SDKs 27.0. The foundation declares Swift 6, iOS 17/watchOS 10/macOS 14; older supported device OS versions still need runtime QA. Do not interpret the build machine's SDK as the deployment minimum.
The committed Xcode project opens directly. Regeneration only requires Ruby with the `xcodeproj` gem version 1.27.0 (`ruby Scripts/generate-project.rb`). It is a developer tool, not a dependency shipped in the app. The initial host already has that gem. New dependency/tool versions need reviewed lock/version updates.
## Build and run demo
1. Open Wristivo.xcodeproj, select Wristivo for the iPhone app or WristivoWatch for the companion.
2. Run with a simulator if its runtime is installed. Buttons show local demo feedback; no TV receives anything.
3. For physical installation, add your Apple Account in Xcode. Copy Config/Local.xcconfig.example to Config/Local.xcconfig, set DEVELOPMENT_TEAM and an owned unique WRISTIVO_BUNDLE_PREFIX. Do not commit that local file.
4. Connect and trust the iPhone; enable Developer Mode when Xcode requests it. Pair the Ultra 2 normally with the phone and use Xcode's offered watch destination. Ensure both targets use the same team and that the watch's companion bundle ID matches the phone.
5. Use a Personal Team while prototyping if those targets/capabilities provision successfully. Expect periodic reinstallation due to free provisioning limits; see RELEASE-CHECKLIST. Paid membership is needed for distribution, not to begin the source/simulator prototype.
Development icons and Store metadata are deliberately not supplied as final assets. Do not archive this demo for review as a completed remote.
## Command-line checks
Run `bash Scripts/check.sh` for shared tests or add `--apps` for both unsigned generic-device builds. The script uses a temporary scratch directory to avoid Finder metadata and Swift build-cache permission issues under Documents; it deletes that scratch directory when finished. It disables nested SwiftPM sandboxing for this dependency-free, plugin-free package. Never extend that choice to unreviewed build plugins.
Unsigned device builds do not install, prove runtime behavior, or require paid membership. Actual UI, motion, WatchConnectivity, phone background behavior and TV compatibility need signed physical testing. The first sandboxed environment could not access CoreSimulator services; see VALIDATION for actual checks and limitations.
For this agent host only, `WRISTIVO_AGENT_BUILD=1 bash Scripts/check.sh --apps` opts out of nested Xcode package-manifest and Swift compiler macro sandboxing; the outer tool filesystem restrictions still apply. This was required to run the local package manifest and Apple's SwiftUI macros here. The normal Xcode project and CI do not set these overrides. Xcode also required a narrowly granted write permission to its `~/Library/Caches/org.swift.swiftpm` manifest cache, which ignored its package-cache path override. Do not use the agent override for unreviewed packages, macros or build plugins.
## Future adapter setup
Before implementing live services, the integrator adds their source/test memberships, permission strings, lifecycle composition and any justified capabilities. Avoid adding HealthKit, audio, VoIP, location or multicast entitlements merely to keep the app alive. Start with manual TV address entry and one known device. Keep real addresses/tokens and motion captures outside git.