feat(web): support more devices and actual 3D bodies - #12803
juliusmarminge wants to merge 11 commits into
Conversation
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: unavailable · PR result: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
There was a problem hiding this comment.
All clear
Posted via Macroscope — Effect Service Conventions
68aaf83 to
598aa7f
Compare
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR adds a substantial GLTF-based 3D device capability, bundled Apple-derived assets, asynchronous model loading, and new default device silhouettes with changed interaction behavior. It also introduces a static-analysis suppression and records unresolved asset redistribution rights, so the scope requires human review. You can add or adjust custom eligibility rules. Learn more. |
|
Consolidated into #12787 at the maintainer’s request. All viewer, device-family, and actual-model changes are now in that single PR as one squashed commit. |
The 3D viewer currently uses the same procedural phone shell for every device. This follow-up to #12787 gives iPads and Android devices appropriate family silhouettes and loads actual Apple device bodies for iPhone 18 Pro, iPhone 18 Pro Max, and the 13-inch iPad Pro M5.
Expo Device Hub still owns discovery, streaming, and input. The shared client runtime selects exact supported hardware, owns abortable model loading and cleanup, replaces the marketing screen with the live framebuffer, and projects input onto that display. Loaded geometry survives orientation, framebuffer-size, and panel-size changes. Missing, failed, or invalid models keep the procedural body.
The web bundle includes converted GLBs, fetched only in 3D mode. Each is about 1.7–2.3 MB. The conversion script preserves body proportions, removes accessories, normalizes the display, and compresses textures. Source URLs, checksums, and Apple authorship are recorded beside the assets. Apple asset redistribution rights remain unconfirmed.
Scope: web only. Android and the 11-inch iPad use procedural family bodies; no borrowed model is stretched to represent unsupported hardware. Existing flat mode and compact viewers remain available.
Validation: 37 focused tests passed for hardware selection, cancellation and late results, fallback and resource ownership, imported screen projection and UV generation, orientation changes, retained geometry, atomic resize, procedural families, gestures, and stream fallback. Scoped web/client-runtime typechecks, targeted lint, and the web production build passed. React Doctor found no errors. A live browser pass verified iPhone and 13-inch iPad rendering, screen input, rotation, orbit, pinch zoom, and 3D/flat switching. The Android emulator subsequently exited; a fresh Android browser pass is still pending.
Before and after show the same 13-inch iPad, landscape orientation, rear orbit gesture, and 1280×800 viewport. The baseline viewer files are from the parent branch.
Before: shared procedural phone body
After: actual iPad Pro body
iPhone and iPad orbit, zoom, and flat view demo
https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c50cda5756701d7b/apple-model-demo.mp4
Built with GPT-6-Astra in the Codex harness.