Skip to content

Latest commit

 

History

History
238 lines (143 loc) · 30.8 KB

IOS.md

File metadata and controls

238 lines (143 loc) · 30.8 KB

🍎 iPhone / iPad with Windows / iPhone、iPad 与 Windows

English · 简体中文

English

The native iOS client connects to the same Windows host as Android. It targets iOS / iPadOS 15+, landscape and a Metal-capable device. USB is the default connection method; trusted LAN is an explicit alternative. English is the default even on a Chinese system; select Simplified Chinese in the app to save that preference. This is an Alpha client, not an App Store or TestFlight release.

The settings panel displays the version and build number read from the installed app bundle; hiding settings keeps them off the VR image.

📦 What the downloads mean

File Use
VRization-Windows-x64.zip The Windows 10 / 11 x64 host for both phone platforms.
VRization-iOS-source.zip Editable Xcode project, reusable Swift package, license and offline documentation. Open the project on a Mac to sign for your own iPhone.
VRization-iOS-Simulator.zip The verified CI application is arm64, for the iOS Simulator on an Apple Silicon Mac. Intel Mac users need to build the source locally for their simulator architecture. It cannot be installed on an iPhone or run on Windows.

There is no universally installable unsigned iPhone IPA. The cloud build checks the iPhone device SDK without signing, and builds / exercises the simulator app. Apple signing and provisioning are still needed for physical installation. Signing credentials are never included in this repository or requested by the app.

🛠️ Install on your iPhone with Xcode

  1. On a Mac with a compatible Xcode, clone the repository or extract the iOS source archive completely. Open ios/VRization.xcodeproj.
  2. In Xcode → Settings → Accounts, add your own Apple Account locally. Select the VRizationApp target, Signing & Capabilities, enable automatic signing, and choose your team. A personal team can be used for personal device testing; TestFlight / App Store distribution needs the applicable Apple Developer Program membership. See Apple's team instructions and distribution guide.
  3. If Xcode reports that the bundle identifier is unavailable, replace org.vrization.ios with a unique identifier you control. Do not commit your team, certificate, provisioning profile or account credentials.
  4. Connect and unlock the iPhone, trust the Mac, select the phone as the run destination and press Run. Enable Developer Mode if the device asks. Follow Apple's device-running guide for device trust / signing errors.
  5. Keep Xcode available for re-signing when your development profile expires. The app does not renew signing by itself.

Windows runs the streaming host normally. A Mac is used for this documented Xcode installation path; no Mac is needed while using an already signed and installed client. No Apple ID is entered into the Windows host or VRization.

🔌 Default: USB to Windows

Install Apple's official Apple Devices / Apple Mobile Device Support on Windows. Connect a data cable, unlock the iPhone and approve Trust This Computer. Open the matching signed iOS app in the foreground with USB selected, select the screen / region on Windows, then tap Connect on iOS or Connect / Start streaming on the PC. An explicit phone action can request host startup; platform trust and the PC's local gyro preference/pause latch remain separate. USB detection alone does not start capture.

This is direct USB framing through Apple's USB service, not Personal Hotspot, Wi-Fi or a charging cable used alongside wireless streaming. No jailbreak or hotspot subscription is required. The original relay and native client are tested with a simulated usbmux service in CI; a physical iPhone / Windows Apple driver combination still needs testing. Connect one iPhone for automatic selection. See USB setup and exact limitations.

From v0.3.3, the native app keeps foreground control on phone loopback 18767; explicit Connect opens video 18766. PC Connect sends one paired framed {v:1,type:"connect"} control. The accepted video peer returns readiness before normal host hello; the relay requires and consumes it before requesting capture. An old occupied listener cannot wake a stopped PC through TCP acceptance alone. Disconnect closes video and clears decoded output while retaining foreground control. PC Stop also cancels a pending listener with no peer: one paired stop control is acknowledged only after native video cleanup. Windows gates old startup attempts until that ACK or an explicit paired video-port refusal; a new PC Connect can replace the gate. Backgrounding closes both; return and connect explicitly. Windows cannot launch this app in the background. The v0.3.3 native Simulator checks passed; physical-iPhone USB remains unverified. v0.3.4 software/native Simulator checks passed, with physical input/USB limits recorded separately; use matching relay/viewer builds. LAN protocol v1 remains unchanged.

Full-screen stereo over simulated USB in the native iOS Simulator

Original calibration stream in the native iPhone 17 Pro Max Simulator, iOS 26.2. The USB test uses a simulated usbmux service and the real application listener / relay; this is not a physical iPhone USB test. Both eyes are complete at 85% scale.

📶 Alternative: trusted LAN

  1. Connect the Windows PC and iPhone to the same trusted LAN. The PC may use Ethernet. Guest Wi-Fi isolation, a VPN or a firewall can prevent local connections.
  2. Start the Windows host, select the intended display or rectangle, and start streaming. For a two-monitor PC, choose your test display explicitly. Start-on-second-monitor.bat selects monitor 2; verify its name in the host because enumeration can change.
  3. Allow the host through Windows Firewall on your trusted private network. Do not disable the whole firewall. Enter the host's displayed LAN IP, port (normally 8765) and six-digit pairing code in the iOS app. Keep leading zeros; enter only the host, not a ws:// URL or path.
  4. Select LAN, tap Connect and allow iOS Local Network access. If it was denied, open iOS Settings, find VRization under Apps / Privacy & Security → Local Network, enable access, return and connect again. The exact Settings path varies by iOS version. Apple's local-network explanation describes the permission.
  5. Start with Full screen, adjust scale and offsets, and confirm both eyes show a complete image before inserting the phone into the viewer. Only one phone can connect to the host at a time; disconnect Android first.

ws:// is unencrypted and the six-digit code is not encryption. The app declares local networking for this LAN protocol, while keeping the Internet transport defaults. Use trusted networks only. See security.

English connection screen in the native iOS Simulator

Native iOS Simulator receiving the original calibration stream through the LAN / WebSocket code path on CI loopback. The screenshot's 127.0.0.1:18765 and displayed statistics belong to that simulator test; enter your Windows host's displayed LAN address and port for everyday use.

🥽 Viewing and controls

  • Full screen: fixed side-by-side images, no motion sensor needed.
  • Cinema: a virtual screen; Core Motion changes the viewing direction. Recenter after placing the phone in the viewer.
  • First person: fixed side-by-side images and rotation messages to Windows. Windows defaults gyro mouse control to enabled for a validated First-person session with fresh poses. F8 pauses until the PC Resume gyro control action; the phone cannot clear that latch.
  • Enhanced first person: fixed 1:1 physical squares and GPU angular warp, retaining proportional fit and the same gyro/F8/PC Resume policy. No sensor is required to render this mode; rotation control still requires Core Motion. Tutorial and negotiation.
  • Adjust scale, horizontal / vertical offset, eye separation, field of view, distance, distortion, sensitivity and invert Y. Drag a slider for larger changes; use its − / + buttons for exact one-step adjustments (scale changes by 1%). These are viewing parameters, not a measurement of physical interpupillary distance.
  • Hide the controls for viewing; use the app's recovery gesture to restore them. Double-tap to recenter. Returning to the background, changing language or disconnecting ends the connection and motion updates; reconnect explicitly when ready.
  • A device without usable motion support falls back to fixed viewing. The simulator cannot validate physical gyro axes, drift or headset comfort.

Both eyes show the same 2D source. There is no automatic stereo conversion, audio or promised VR latency. Windows / iOS client versions share protocol v1; older hosts can omit revision fields, but the current host gives stronger settings synchronization. The client validates incoming values and keeps only bounded latest-frame work.

Headset-fit settings with precise minus and plus buttons

Native iOS Simulator with the original calibration stream behind the controls: scale 85%, zero offsets and eye separation 0.030. The normal − / + buttons were used to confirm exact values and synchronized settings.

Unobstructed full-screen stereo in the native iOS Simulator

The same original 2D calibration image appears in both eyes after hiding the controls. This native Simulator screenshot uses the LAN / loopback WebSocket test; it verifies rendering, not physical headset optics.

Saved Simplified Chinese selection after restarting the native iOS app

The native iOS Simulator after an app restart, before connecting: 中文 and Chinese controls are preserved. English remains the default until the user changes the selection.

🧩 Reuse and build

Add the local Swift package at ios/ in your own Xcode project and depend on VRizationCore. It contains protocol / settings, synchronization and rotation math without UIKit or Metal dependencies. Adapt the application's transport, CoreMotion and Metal renderer to your own lifecycle; the full application is not an engine plug-in. Preserve the original MIT license.

On a Mac, from the repository root:

swift test --package-path ios
xcodebuild -project ios/VRization.xcodeproj -scheme VRization \
  -destination 'generic/platform=iOS Simulator' CODE_SIGNING_ALLOWED=NO build
xcodebuild -project ios/VRization.xcodeproj -scheme VRization \
  -destination 'generic/platform=iOS' CODE_SIGNING_ALLOWED=NO build

python3 scripts/build_ios.py additionally runs the UI test suite against a loopback synthetic host and simulated usbmux service, exports genuine screenshots and packages the simulator / source downloads. Install the host package and fixture dependencies first as configured in the workflow. The fixture neither captures a screen nor moves the mouse. Successful compilation / simulator checks do not establish real iPhone USB, iOS 15 hardware or game compatibility. Exact observed checks appear in validation and compatibility.

v0.3 visual editor and saved preferences

The first settings action opens the flat headset-fit editor. Left-eye left / right-eye right widens linked eye spacing; the opposite directions narrow it, including inward movement of smaller images until seam contact. Shared X is retained while the remaining gap permits it, then recenters. Vertical movement is shared and direct; corners normally keep centers fixed, with contact corrections during enlargement. Save commits, Discard restores the entry snapshot, and phone poses pause while editing. Committed VR profiles survive restarts and are restored through normal settings after a validated host hello. Reset clears product / connection preferences, returns English / USB and disconnects without immediately restarting its listener; a fresh launch resumes normal initial USB waiting. The earlier Simulator screenshots above are from v0.2. Final CI 37897738507 passed 65 core tests and three real UI cases for v0.3, including draft isolation, negative-separation contact, Save once, broadcasts, restart and reset. Both SDK builds passed; this is native Simulator / simulated-USB evidence, not physical iPhone USB. See editing and reset scope and new-version validation.

The unmodified originals below are from that final native iOS Simulator run. The editor shows 50% / −0.500 contact. The clean Metal view shows the saved, enlarged fit at approximately 71.6% / −0.284, still joined; these are different moments, not two views of the same 50% state.

v0.3 native iOS Simulator editor at 50% seam contact

v0.3 native iOS Simulator saved Metal view after enlargement at contact

v0.3.2 stabilization and settings compatibility

The native client adds a 0–100% First-person stabilization slider, default 0%, with normal profile persistence, PC broadcasts and reset. It sends the setting only to a host advertising support and preserves its local value with older hosts. URLSession uses settingsSchema=2; USB requests schema 2 through client hello. A capable host's initial legacy hello is followed by a complete eleven-field snapshot before profile adoption / sensor fallback. The phone performs no duplicate filter. Final Actions 37991498159 passed 77 Swift core tests and five genuine native UI cases, with zero failures / skips, on the arm64 iPhone 17 Pro Max Simulator running iOS 26.2 (Xcode 26.3.0 / macOS 15.7.9). Both Simulator and unsigned device-target builds passed. LAN / simulated USB Metal color and row-orientation checks passed for both eyes, as did exact viewport seam-boundary pixel checks. The downloaded Simulator app identifies as 0.3.2 / build 5 / minimum iOS 15.0 / arm64, and its original MIT license matched. All 65 compared actual source / fixture files in the CI-produced source ZIP matched the tested checkout; generated egg-info metadata was excluded. These are Simulator / software-bridge results, not a physical iPhone, real Apple USB service or signed IPA. See the actual slider screenshot, stabilization and protocol.

v0.4.0 native checks

Application 0.4.0/build 8 adds the enhanced Metal shader, fixed-square core/editor math and separate capability negotiation. Independent CI review confirmed 95 Swift core tests, seven genuine native UI cases with zero failures/skips, both SDK builds, 38 enhanced pixel checks and 16 older-mode color/orientation plus two seam checks; all 15 host checkpoints had zero mouse output. The arm64 iPhone 17 Pro Max Simulator ran iOS 26.2 with Xcode 26.3.0/macOS 15.7.9. See the unaltered native Metal example and exact validation. USB remains simulated, and the earlier v0.3.4 results below remain historical; no physical iPhone USB, gyro axis, achieved FPS or end-to-end latency is claimed.

v0.3.4 application and native checks

The iOS application is 0.3.4 / build 7, with updated default-enabled Windows gyro-control/F8/PC Resume notices; its pure core and wire protocol remain compatible. Actions 38081097956 passed 80 Swift core tests, five genuine native UI cases (zero failures/skips), and both SDK builds. Independent screenshot checks passed 12 color/two seam pixel checks, and all 12 host checkpoints recorded no mouse moves. The arm64 iPhone 17 Pro Max Simulator ran iOS 26.2 (Xcode 26.3/macOS 15.7.9), minimum deployment target iOS 15. USB was simulated; physical iPhone USB/motion/game behavior and signed-device installation remain outside these checks. See full validation.


简体中文

原生 iOS 客户端和 Android 使用同一个 Windows 主机,目标为 iOS / iPadOS 15+、横屏和支持 Metal 的设备。默认使用 USB,也可显式选择可信局域网。即使系统是中文,软件仍默认英文;在应用内选择简体中文后会保存偏好。目前是 Alpha 客户端,并非 App Store 或 TestFlight 发行版。

设置面板显示从当前安装应用 bundle 读取的版本与构建号,隐藏设置后不遮挡 VR 画面。

📦 下载文件的用途

文件 用途
VRization-Windows-x64.zip 同时服务两类手机的 Windows 10 / 11 x64 电脑端。
VRization-iOS-source.zip 可编辑的 Xcode 工程、可复用 Swift 包、许可与离线文档;在 Mac 上打开,为自己的 iPhone 签名安装。
VRization-iOS-Simulator.zip 已验收的 CI 应用为 arm64,适用于 Apple Silicon Mac 的 iOS 模拟器;Intel Mac 需从源码本地编译对应模拟器架构。不能安装到 iPhone 或在 Windows 运行。

没有一种无需签名就能通用安装的 iPhone IPA。云端构建会检查真机 SDK 编译,并构建、运行模拟器应用;实际手机安装仍需 Apple 签名和配置描述文件。仓库不包含签名凭据,软件也不会索取这些凭据。

🛠️ 用 Xcode 安装到自己的 iPhone

  1. 在具备兼容 Xcode 的 Mac 上克隆仓库,或完整解压 iOS 源码包。打开 ios/VRization.xcodeproj。
  2. 在 Xcode → Settings → Accounts 中本地添加自己的 Apple 账户。选择 VRizationApp target,打开 Signing & Capabilities,启用自动签名并选择团队。个人团队可用于自己的设备测试;TestFlight / App Store 分发需要适用的 Apple Developer Program 资格。参见 Apple 团队设置说明 与 分发指南。
  3. 若 Xcode 提示 bundle identifier 被占用,把 org.vrization.ios 改为自己控制的唯一标识。不要把团队、证书、描述文件或账号凭据提交到仓库。
  4. 连接并解锁 iPhone,信任 Mac,在运行目标中选择手机,按 Run。设备要求时开启开发者模式。设备信任 / 签名报错可按 Apple 真机运行说明 处理。
  5. 开发配置文件到期时,需要再次通过 Xcode 签名运行,软件不会自动续签。

Windows 正常运行串流主机。本文的 Xcode 安装方法需要 Mac;客户端签好并装好后,日常串流不需要 Mac。不必在 Windows 主机或 VRization 内输入 Apple ID。

🔌 默认:USB 连接 Windows

Windows 安装 Apple 官方 Apple Devices/Apple Mobile Device Support。接数据线、解锁并“信任此电脑”;前台打开匹配、已签名 iOS 应用选择 USB,电脑先选屏幕/选区,再在 iOS 点“连接”或电脑点“连接 / 开始串流”。明确手机动作可请求主机开始采集,平台信任与电脑本地陀螺仪偏好/暂停锁分开;只检测 USB 不开始采集。

该方式通过 Apple USB 服务直接传帧,不依赖个人热点、Wi-Fi,也不是一边充电一边无线串流;不需要越狱或热点套餐。目前 CI 通过模拟 usbmux 服务检查原创桥接器与原生客户端,真实 iPhone / Windows Apple 驱动组合仍需测试。自动选择时只接一台 iPhone,详见 USB 配置与实际边界。

从 v0.3.3 起原生应用在手机回环 18767 保留前台控制,只有主动连接才开放视频 18766。电脑发送一次已配对 framed {v:1,type:"connect"} 控制;视频接受唯一 peer 后,在普通 host hello 前发同样有限长就绪。中继消费并校验就绪后才请求采集,旧监听拒绝第二连接不能唤醒已停止主机。断开关闭视频、清解码画面,前台控制保留。电脑停止还会取消尚无 peer 的待连接监听:已配对 stop 控制在原生视频清理后才确认;Windows 门控旧启动至该 ACK 或已配对视频端口明确拒绝,新电脑主动连接可替代门控。后台关闭两个监听,返回后需主动连接,Windows 不能启动后台应用。v0.3.3 原生模拟器检查已通过,真实 iPhone USB 仍未验证;v0.3.4 软件/原生模拟器检查通过,真机输入/USB 范围另行记录,需匹配新版中继/观看端;LAN 协议 v1 不变。

原生 iOS 模拟器通过模拟 USB 显示完整双眼画面

原生 iPhone 17 Pro Max 模拟器(iOS 26.2)显示原创校准串流。USB 测试使用模拟 usbmux 服务和实际应用监听器 / 中继,并非真实 iPhone USB 测试;85% 缩放下两眼画面完整。

📶 可选:可信局域网

  1. Windows 与 iPhone 连同一个可信局域网,电脑可接网线。访客网络隔离、VPN 或防火墙可能阻止本地连接。
  2. 开电脑端,选择目标显示器或矩形区域,开始串流。双屏电脑明确选择测试屏;Start-on-second-monitor.bat 选择编号 2,但显示器枚举可能变化,应核对电脑界面中的名称。
  3. Windows 防火墙只为可信的专用网络放行主机,不要关闭整个防火墙。iOS 应用填写主机显示的局域网 IP、端口(通常 8765)及六位配对码,保留开头的零;主机栏只填地址,不填 ws:// 链接或路径。
  4. 选择 LAN / 局域网,点 Connect,允许 iOS 的本地网络权限。如果曾拒绝,在系统设置的应用 / 隐私与安全性 → 本地网络中找到 VRization 并允许,回应用重新连接。不同 iOS 版本路径可能不同,详见 Apple 本地网络权限说明。
  5. 先用 Full screen / 全屏,调整缩放和偏移,确认左右眼完整显示后再装入盒子。主机一次只接一台手机;先断开 Android 再连 iPhone。

ws:// 是明文,六位配对码并非加密。应用为局域网协议声明本地网络访问,并保留互联网传输默认限制。仅用于可信网络,参见 安全说明。

原生 iOS 模拟器中的英文连接界面

原生 iOS 模拟器经 CI 本机回环上的局域网 / WebSocket 代码路径接收原创校准串流。截图中的 127.0.0.1:18765 及统计值属于该模拟器测试;日常使用应填写 Windows 主机显示的局域网地址和端口。

🥽 模式和操作

  • 全屏:固定左右眼图像,不需要运动传感器。
  • 大屏幕:把图像放在虚拟屏幕上,用 Core Motion 改变观看方向;放入盒子后回正。
  • First person:固定双眼图像,向 Windows 发送旋转姿态。Windows 在合法第一人称会话和新姿态下默认启用陀螺仪鼠标;F8 暂停后须电脑“恢复陀螺仪控制”,手机不能解除暂停锁。
  • 加强第一人称:固定物理 1:1 正方形与 GPU 角度变形,保留等比适配及相同陀螺仪/F8/电脑恢复策略;渲染不要求传感器,旋转控制仍需 Core Motion,见 教程与协商。
  • 可调缩放、水平 / 垂直偏移、眼间距、视场角、距离、畸变、灵敏度和 Y 反转。拖动滑条可大幅调整,使用旁边的 − / + 按钮可精确微调一格(缩放每次 1%)。这些是观看参数,不是对实际瞳距的测量。
  • 观看时隐藏操作区,用应用的恢复手势重新显示;双击回正。进入后台、切换语言或断线会终止连接与运动更新,需要时手动重连。
  • 没有可用运动支持时回退固定观看。模拟器不能验证真实陀螺仪轴向、漂移和盒子舒适度。

两眼显示同一张二维源画面,不自动变成立体、不提供音频,也不承诺 VR 延迟。Windows / iOS 共享 协议 v1;旧主机可以不带 revision,新主机提供更完整的同步。客户端校验传入值,并限制最新帧处理队列。

盒子适配设置和精确减加按钮

原生 iOS 模拟器的设置区,背景为原创校准串流:缩放 85%、偏移为零、眼间距 0.030。实际通过正常 − / + 按钮检查了精确值与设置同步。

原生 iOS 模拟器中隐藏设置后的全屏双眼画面

隐藏操作区后,两眼显示同一张原创二维校准图。本原生模拟器截图来自局域网 / 回环 WebSocket 测试,验证画面渲染,不代表真实盒子镜片已通过。

原生 iOS 应用重启后保存的简体中文选择

原生 iOS 模拟器重启应用、尚未连接时,中文选择与中文控件仍然保留;用户主动切换前仍默认英文。

🧩 复用与构建

在自己的 Xcode 工程中添加 ios/ 本地 Swift 包,依赖 VRizationCore。它提供协议 / 设置、同步及旋转数学,不依赖 UIKit 或 Metal。应用中的传输、Core Motion 和 Metal 渲染可按宿主生命周期改接;完整应用尚不是游戏引擎插件。分发时保留原创 MIT 许可。

Mac 上从仓库根目录执行:

swift test --package-path ios
xcodebuild -project ios/VRization.xcodeproj -scheme VRization \
  -destination 'generic/platform=iOS Simulator' CODE_SIGNING_ALLOWED=NO build
xcodebuild -project ios/VRization.xcodeproj -scheme VRization \
  -destination 'generic/platform=iOS' CODE_SIGNING_ALLOWED=NO build

python3 scripts/build_ios.py 还会对本机合成串流主机与模拟 usbmux 服务运行 UI 测试、导出真实截图并打包模拟器 / 源码下载。需先按 构建工作流 安装主机包和测试依赖。测试主机不采集屏幕、不移动鼠标。编译 / 模拟器通过不能代表真实 iPhone USB、iOS 15 硬件和游戏兼容性已验证;实际检查范围见 验证记录 和 兼容性。

v0.3 可视编辑器与保存偏好

设置第一个操作打开平面盒子适配编辑器,左眼向左 / 右眼向右拉开联动间距,反向收拢,缩小后仍可继续向内到接缝;共用 X 在剩余间隙允许时保留,接近中缝时居中。竖向正常共用,角点通常中心固定,接触后放大时作必要修正。保存提交,放弃恢复进入快照,编辑时暂停手机姿态。已提交 VR 配置在重启后保留,合法主机 hello 后通过普通设置恢复;重置清除产品 / 连接偏好,恢复英文 / USB 并断线,不立即重启监听;全新启动恢复正常初次 USB 等待。上面较早模拟器截图来自 v0.2。最终 CI 37897738507 通过 v0.3 的 65 项核心和三项真实界面用例,包括草稿隔离、负间距接触、一次保存、广播、重启与重置;两种 SDK 构建通过。这是原生模拟器 / 模拟 USB 证据,不是 iPhone 真机 USB。见 编辑与重置范围、新版验证。

下面未修改的原图来自该最终原生 iOS 模拟器检查:编辑器为 50% / −0.500 相接;无控件 Metal 画面是保存后的放大状态,约 71.6% / −0.284,仍然相接。两张是不同时间状态,不是同一个 50% 状态的两个界面。

v0.3 原生 iOS 模拟器编辑器,50% 中缝相接

v0.3 原生 iOS 模拟器保存后的 Metal 画面,接触后放大

v0.3.2 防抖与配置兼容

原生客户端新增 0–100% 第一人称防抖滑块,默认 0%,正常保存配置、接受电脑广播并支持重置。仅向声明支持的主机发送字段,连接旧主机时保留本地值。URLSession 使用 settingsSchema=2,USB 经客户端 hello 请求 schema 2;支持防抖的主机最初若发旧格式 hello,先取得完整十一字段快照,再接纳配置 / 缺传感器回退。手机不重复滤波。最终 Actions 37991498159 在 arm64 iPhone 17 Pro Max 模拟器、iOS 26.2(Xcode 26.3.0 / macOS 15.7.9)通过 77 项 Swift 核心与五项真实原生界面用例,零失败 / 跳过;模拟器与未签名真机目标构建都通过。局域网 / 模拟 USB 的 Metal 双眼颜色与行方向,以及准确视口中缝边界像素检查通过。下载的模拟器应用为 0.3.2 / build 5 / 最低 iOS 15.0 / arm64,原创 MIT 许可匹配;CI 源码 ZIP 中比较的 65 个真实源码 / fixture 文件全部匹配已测试仓库,生成的 egg-info 元数据未纳入比较。这是模拟器 / 软件桥接结果,不是 iPhone 真机、真实 Apple USB 服务或已签名 IPA。见 真实滑块截图、防抖 与 协议。

v0.4.0 原生检查

应用 0.4.0/构建 8 新增加强 Metal、正方形核心/编辑数学与单独能力协商;CI 独立审核确认 95 项 Swift 核心、七项真实原生界面零失败/跳过、两种 SDK、38 项加强像素和 16 项旧模式颜色/方向及两项接缝,15 个主机检查点鼠标输出为零。arm64 iPhone 17 Pro Max 模拟器运行 iOS 26.2,使用 Xcode 26.3.0/macOS 15.7.9,见 未修改的原生 Metal 例子 与 准确验证。USB 仍为模拟,以下 v0.3.4 结果仍是历史;不宣称真实 iPhone USB、陀螺仪轴向、实际帧率或端到端延迟。

v0.3.4 应用与原生检查

原生应用为 0.3.4/构建 7,更新电脑默认开启陀螺仪/F8/电脑恢复提示,纯核心与线上协议保持兼容。Actions 38081097956 通过 80 项 Swift 核心、五项真实原生界面(零失败/跳过)及两种 SDK 构建;独立截图核验通过 12 项颜色/两项接缝像素检查,12 个电脑检查点均无鼠标移动。环境为 arm64 iPhone 17 Pro Max 模拟器 iOS 26.2(Xcode 26.3/macOS 15.7.9),最低部署 iOS 15。USB 是模拟,真实 iPhone USB/姿态/游戏行为与签名真机安装不属于这些检查,完整范围见 验证。