# Velocity iPhone App Dedicated iPhone source tree for the Velocity edge-phone surface. Goals: - preserve the visual language of the iPad Velocity app - match the production feature scope of `android-edge-phone` - use live backend data only - register `iphone_edge` surface heartbeats against `/api/mobile-edge/session` Contents: - `VelocityIPhoneApp.swift` app entry - `EdgeRootView.swift` tab shell - `Core/` shared config, networking, state, and styling - `Features/` Alerts, Lead Summary, Communications, Notes, Transcriptions, Settings Configuration: 1. Open `velocity-iphone.xcodeproj` in Xcode. 2. If you want explicit per-build config values, copy `Config.xcconfig.example` to a local `Config.xcconfig` and attach it to the target build configurations. 3. Fill in either: - `API_BEARER_TOKEN` - or `API_EMAIL` and `API_PASSWORD` 4. Keep `BASE_URL` pointed at the live Velocity backend unless you intentionally override it. Notes: - This source tree is intended to supersede the earlier lightweight `velocity-edge-phone` scaffold. - The backend routes already exist in `backend/api/routes_mobile_edge.py`; this app consumes them directly. Xcode test flow: 1. Open `iOS/velocity-iphone/velocity-iphone.xcodeproj`. 2. Select the `velocity-iphone` scheme and an iPhone simulator such as `iPhone 16 Pro`. 3. In `Signing & Capabilities`, choose your Apple development team and let Xcode resolve the bundle signing settings. 4. In `Build Settings`, confirm `Info.plist File` points to `velocity-iphone/Info.plist`. 5. If you are using live credentials through build settings, set `BASE_URL`, plus either `API_BEARER_TOKEN` or `API_EMAIL` and `API_PASSWORD`. 6. Press `Cmd+B` to confirm the app builds. 7. Press `Cmd+R` to launch the simulator. 8. Verify the bottom-tab shell renders Alerts, Lead Summary, Communications, Notes, Transcriptions, and Settings. 9. In Settings, confirm the app reports the expected auth mode and live backend base URL. 10. Trigger a manual refresh or wait for auto-refresh, then verify Alerts and Lead Summary populate from the live backend. 11. Create a note and confirm it appears without mock fallback behavior. 12. Open Transcriptions and verify empty states are truthful when no live transcript exists. 13. Review backend logs or database state to confirm `/api/mobile-edge/session` heartbeats are updating the active `iphone_edge` session window.