feat: complete phone onboarding and provision the demo ride - #2254
Conversation
… into codex/onboarding-ios
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai review |
|
|
@coderabbitai review |
|
The phone guides a new rider from welcome through pairing, naming, optional device setup, a first route and a demo ride in the Library. The rider can skip each step after pairing. Setup resumes after relaunch and can be replayed from Settings. Returning riders open their local Library while the OBC reconnects.
This completes A1–A7 and F10 from #2214. Device onboarding #2237 is merged. The owner approves the screens on the real iPhone and OBC.
/applink. Reuse the firmware updater and compatibility check. Compatible updates can wait. Incompatible firmware gates transfers while allowing setup to finish.The device test exposes a delayed “Sync interrupted, 0 of 5” without visible Bluetooth loss. Logs identify
unreadableArchive: the bytes arrive, but an existing schema-4 phone archive lacks the new demo flag. The optional flag now defaults to false. Existing archives remain intact. The owner retries and confirms that the demo ride appears in the Library.Ride LIST now reads identities only. Each missing ride needs one verified GET. Saved rides need no catalog GET. The former path downloads every ride for catalog metadata, then downloads missing rides again. Canceled queued operations send no commands after admission. Cancellation does not trigger link recovery. Trip uploads wait for reconnect identity before recording results and fail if a required transfer is missing. Phone archive errors have a separate message from download errors.
Factory reset removes routes, trips, rides, retained personal revisions and metadata in bounded card commits. It preserves maps, firmware packages and StoreId. Settings clear only after deletion succeeds. Failed deletion offers Retry. The factory-only seed image also pets an inherited watchdog after a warm reset.
Device checks:
Validation on
7178c2fcf:swift test --no-parallelincompanion-ios/Packages/OBCKit: 341 XCTest and 559 Swift Testing tests pass.obc test -p obc-app,obc test -p obc-storage, andobc test -p obc-host-core: 1,197, 214 and 137 tests pass, plus one doc-test. Tests cover archive flags and failures, queued cancellation, reconnect identity, required trip transfers, reset receipts, and deletion across bounded commits and remounts while keeping system bytes.cargo clippy -p obc-app -p obc-storage -p obc-host-core --all-targets -- -D warningspasses. Boardcargo clippy --locked -- -D warningsand the same command with--features debug-uartpass. Workspace and board formatting pass.obc companion-core aarch64-apple-ios, Release devicexcodebuild build, app installation,obc flash factory-demo-rideandobc flashpass. The test app uses the Personal Team. A temporary generated project omits Associated Domains; the committed entitlement is unchanged.obc shot --check: all 447 frames match after visual review of the three changed reset translations.obc suites check,obc docs check,obc prose --check,python3 docs/build_docs.py --check-links, dependency direction, catalog ownership, card scheduler, render keys, one-home, screen vocabulary andgit diff --checkpass.obc ready --base a8f8d69bd --dry-runare inspected. Full workspace tests, downstream suites and all simulator UI suites are not repeated locally for this delta. CI run 36687955334 passes the selected cross-package matrix, all iOS builds and screen comparison. The original implementation also passes whole pairing/onboarding UI suites in light mode and in dark mode with large accessibility text.Public docs changed: yes, in separate
docs:commits. They describe the demo flag, factory provisioning and reset deletion scope, and refresh the bundled route-import capture.The production universal-link issue #2233 remains open. It needs the release Apple Team ID, App Store/TestFlight destination and AASA hosting. Until those exist, the QR opens the fallback webpage. Sensor and OTA failure cases are not repeated on hardware. Translation proofreading is deferred. The owner accepts the SYS-049 exception for hiding device Settings during first-use setup. The onboarding requirement suggestion awaits the owner; no coverage approval is claimed.
Closes #2225, #2226, #2227, #2228, #2229, #2230, #2231, #2232.
Requirements: SYS-038, SYS-046