[codex] Expand real-route app store screenshot harness#4014
[codex] Expand real-route app store screenshot harness#4014juliusmarminge wants to merge 10 commits into
Conversation
Co-authored-by: codex <codex@users.noreply.github.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
ApprovabilityVerdict: Needs human review This PR introduces a substantial new mobile screenshot capture feature with new native module functions, new components, a new CI workflow, and a production runtime change in the thread outbox manager. The scope and nature of these changes warrant human review. You can customize Macroscope's approvability policy. Learn more. |
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Preserve both showcase initialization and incoming-share navigation handling while resolving the mobile app startup conflict. Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
There are 5 total unresolved issues (including 4 from previous reviews).
Bugbot Autofix is ON, but a cloud agent failed to start.
Reviewed by Cursor Bugbot for commit 584c932. Configure here.
Co-authored-by: codex <codex@users.noreply.github.com>

Summary
Adds a reproducible App Store screenshot harness that drives the real mobile app through production routes. There is no screenshot-only route or recreated application UI.
Every run creates three isolated ephemeral
--base-direnvironments and real T3 servers, pairs the app with all three through the normal connection flow, and navigates the production Home, Thread, ThreadTerminal, ThreadReview, Settings, and SettingsEnvironments screens.The fixture presents T3 Code, React, and Linux projects with recognizable SVG favicons, six playful threads, varied branches/statuses, and three remote-first machine identities: Moonbase Terminal, Suspense Station, and Kernel Cabin. Two genuine persisted outbox tasks appear as Pending to showcase offline composition. The featured T3 Code workspace includes persisted terminal output and a deterministic two-file diff.
Navigation fidelity
Environments scene
Upload-ready capture matrix
pnpm screenshots:mobilecaptures five scenes across six store slots, producing 30 PNGs:Every captured file is converted to 8-bit, 24-bit RGB PNG without alpha and validated for exact dimensions, aspect ratio, file size, and store screenshot count.
--validate-onlychecks existing assets without starting servers, Metro, simulators, or emulators. Store-specific directories can be uploaded directly.GitHub Actions capture
Mobile Showcase Screenshotscan be dispatched forall,ios, orandroid.app-store-connect-screenshotsandgoogle-play-screenshotsand retained for 14 days.Reliability details
adb shellcannot strip payload quotes.Validation
vp check— passed with 0 errors; 9 existing web warnings.vp run typecheck— passed.vp run lint:mobile— passed.vp test scripts/mobile-showcase.test.ts— 16 tests passed.git diff --check— passed.Note
Add automated mobile app store screenshot capture harness for iOS and Android
ShowcaseCaptureCoordinatorin the mobile app that, whenEXPO_PUBLIC_SHOWCASE=1, auto-connects to pairing URLs, seeds pending thread tasks, navigates to the requested scene, and signals native readiness via a cache/marker file.autoFocusprop to the native terminal view on both iOS and Android, and disables it in showcase mode to prevent the software keyboard from appearing in screenshots.LogBox.ignoreAllLogs) and alters environment display URLs and cloud environment data, so it must not be enabled in production builds.Macroscope summarized 687930d.
Note
Medium Risk
Showcase flag alters runtime (LogBox off, fixture data, navigation automation) but is env-gated; iOS keychain wipe and thread-outbox dedupe behavior affect only showcase or edge retries.
Overview
Adds an end-to-end mobile app store screenshot pipeline that boots disposable T3 servers, pairs the real dev client, navigates production routes, and writes upload-validated PNGs for Apple and Google Play.
Runner & CI: Root
pnpm screenshots:mobilerunsscripts/mobile-showcase.tswith seeded environments (mobile-showcase-environment.ts), device/scene matrix config, PNG normalization/validation, and ops docs. A new Mobile Showcase Screenshots workflow captures iOS (simulators) and Android (KVM emulator) in parallel and uploads artifacts.App showcase mode (
EXPO_PUBLIC_SHOWCASE=1):ShowcaseCaptureCoordinatorreads pairing URLs and target scenes from native hooks, seeds pending outbox tasks, resets navigation to threads/thread/terminal/review/environments, and signals scene ready for the runner. Environments settings use fixture cloud rows and cosmetic display URLs without persisting fake hosts. Review marks ready on native diff draw events; terminal getsautoFocusoff so keyboards stay out of shots.Native bridge:
T3NativeControlsgains pairing URL, scene, prepare (iOS keychain clear), and ready markers; terminal modules exposeautoFocus. Small fixes: outbox enqueue replaces duplicate message IDs; native review diff registration error matching expanded.Reviewed by Cursor Bugbot for commit 687930d. Bugbot is set up for automated code reviews on this repo. Configure here.