Ios Apps
live-view-ios
What It Does
Section titled “What It Does”iOS app that displays four panels on screen — front camera, rear camera, live satellite globe map, and a branded CTA panel — designed to be screen-recorded as a single composite video for content creation. One tap records the whole thing to Photos with no system UI in the frame.
When To Use
Section titled “When To Use”- When recording a piece-to-camera that needs both your face and what you are looking at (driving, event coverage, walking-and-talking).
- When you want a location-aware shot with a live satellite globe map showing where you are.
- When you want a clean export with a branded subscribe CTA built into the frame — no overlays added in post.
How It Works
Section titled “How It Works”- Top-left — rear camera (world view).
- Top-right — front camera (selfie).
- Bottom-left — live map with current location, pinch to zoom out to the full satellite globe.
- Bottom-right — CTA panel with configurable title, URL, and subscribe button.
- Tap the CTA panel (anywhere except the Subscribe button) to start recording. Tap again to stop. Video saves to Photos automatically with no system UI in the frame.
- Tap either camera quadrant to swap front and back. Long-press the map to swap map and CTA positions. Pinch to zoom either camera. Tap Subscribe to open settings and edit branding.
Where It Lives
Section titled “Where It Lives”- Repo:
~/apps/live-view-ios/ - Bundle ID:
com.ojhurst.LiveView - Tech: Swift / SwiftUI, AVFoundation MultiCam, MapKit (satellite globe), ReplayKit (recording), Photos (direct save).
Build And Install
Section titled “Build And Install”run.sh at the repo root is the one-command pipeline: git fetch && git reset --hard origin/main, xcodebuild, devicectl install, devicectl process launch. Hardcoded for James iPhone 16 Pro Max.
Must run in a Terminal with full UI keychain access — codesign fails over plain SSH with errSecInternalComponent. Invoke from any Claude session via:
bash ~/apps/cc/bin/run-terminal-over-ssh.sh mbp ~/apps/live-view-ios/run.shThe wrapper opens a Terminal on the MBP, runs run.sh there, propagates the exit code, and auto-closes the window. Around 30 seconds end-to-end. No need to open Xcode.
Build Number Convention
Section titled “Build Number Convention”build.txt (plain integer) AND LiveView/SettingsSheet.swift constants must stay in lockstep so the running app shows the right build number. Never bump by hand — use the script:
bash bump-build.sh "short summary"If the app shows an older number than build.txt, the constants drifted — rerun bump-build.sh to resync.
Pulling The On-Device Log
Section titled “Pulling The On-Device Log”Build 47+ has UIFileSharingEnabled and writes liveview-log.txt in the app’s Documents folder. Pull while tethered:
xcrun devicectl device copy from \ --device "James iPhone 16 Pro Max 256 GB" \ --domain-type appDataContainer \ --domain-identifier com.ojhurst.LiveView \ --source Documents/liveview-log.txt \ --destination /tmp/liveview-log.txtIn-app alternative (no tether): Settings → Diagnostics → Share Log opens the iOS share sheet for AirDrop.
Known Gaps / Quirks
Section titled “Known Gaps / Quirks”- iOS 17+ and an iPhone with MultiCam support (XS or later).
- Long recordings (9 min, 29 min, 1 min observed) sometimes terminate silently with
Stop failed: Failed due to attempting to stop a recording that wasn't in recording state— that means iOS killed the recording on its own. Build 48 added anRPScreenRecorderDelegatethat logs the actual iOS error code, so check the delegate line in the log first when triaging a lost recording. - Dual camera does not work in Simulator — physical device only.