From 9c524d57718e639a6abe0a5fa3cbf6e9b086df86 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Thu, 24 Sep 2026 17:18:05 -0700 Subject: [PATCH] fix(mobile): capture a lit 6.9-inch lock screen in the agent-activity showcase (#13522) Co-authored-by: Claude Opus 5.5 (1M context) --- .../showcase/stageShowcaseAgentActivity.ts | 3 +++ docs/operations/mobile-app-store-screenshots.md | 16 ++++++++-------- scripts/mobile-showcase.config.ts | 4 +++- scripts/mobile-showcase.ts | 14 ++++++++++++++ 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/apps/mobile/src/features/showcase/stageShowcaseAgentActivity.ts b/apps/mobile/src/features/showcase/stageShowcaseAgentActivity.ts index 6b1f61815b37c0fd4899a38928b23df68331ed10..c4b35525c782b7f1de0c2ed97eae253f3cf272ef 100644 --- a/apps/mobile/src/features/showcase/stageShowcaseAgentActivity.ts +++ b/apps/mobile/src/features/showcase/stageShowcaseAgentActivity.ts @@ -25,6 +25,9 @@ export async function stageShowcaseAgentActivity( ios: { allowAlert: true, allowBadge: true, allowSound: true }, }); if (!permission.granted) return `notification permission ${permission.status}`; + // A previous appearance's pass left its alert delivered; it would stack + // under the new one. + await Notifications.dismissAllNotificationsAsync(); if (Platform.OS === "android") { return ( diff --git a/docs/operations/mobile-app-store-screenshots.md b/docs/operations/mobile-app-store-screenshots.md index 5d6fff051550bf80ed03471f11d31997a0e5c455..0078754ad9c2b246d0d00414e18037221716c5a4 100644 --- a/docs/operations/mobile-app-store-screenshots.md +++ b/docs/operations/mobile-app-store-screenshots.md @@ -63,14 +63,14 @@ multiplies the run by six; only the native build is shared. The default matrix is: -| Output folder | Capture target | Upload dimensions | Store slot | -| ------------------------------------- | ------------------------- | ----------------- | ----------------------------------------- | -| `apple/iphone-6.9/dark/t3-code/` | iPhone 17 Pro Max | 1320×2868 | App Store Connect iPhone 6.9-inch | -| `apple/iphone-6.5/dark/t3-code/` | disposable iPhone 14 Plus | 1284×2778 | App Store Connect iPhone 6.5-inch | -| `apple/ipad-13/dark/t3-code/` | iPad Pro 13-inch (M5) | 2752×2064 | App Store Connect iPad 13-inch, landscape | -| `google-play/phone/dark/t3-code/` | Pixel AVD at 420 dpi | 1080×1920 | Google Play phone, portrait 9:16 | -| `google-play/tablet-7/dark/t3-code/` | Pixel AVD at 600dp width | 1080×1920 | Google Play 7-inch tablet, portrait 9:16 | -| `google-play/tablet-10/dark/t3-code/` | Pixel AVD at 800dp width | 1440×2560 | Google Play 10-inch tablet, portrait 9:16 | +| Output folder | Capture target | Upload dimensions | Store slot | +| ------------------------------------- | ---------------------------- | ----------------- | ----------------------------------------- | +| `apple/iphone-6.9/dark/t3-code/` | disposable iPhone 17 Pro Max | 1320×2868 | App Store Connect iPhone 6.9-inch | +| `apple/iphone-6.5/dark/t3-code/` | disposable iPhone 14 Plus | 1284×2778 | App Store Connect iPhone 6.5-inch | +| `apple/ipad-13/dark/t3-code/` | iPad Pro 13-inch (M5) | 2752×2064 | App Store Connect iPad 13-inch, landscape | +| `google-play/phone/dark/t3-code/` | Pixel AVD at 420 dpi | 1080×1920 | Google Play phone, portrait 9:16 | +| `google-play/tablet-7/dark/t3-code/` | Pixel AVD at 600dp width | 1080×1920 | Google Play 7-inch tablet, portrait 9:16 | +| `google-play/tablet-10/dark/t3-code/` | Pixel AVD at 800dp width | 1440×2560 | Google Play 10-inch tablet, portrait 9:16 | Each target captures thread, terminal, review, thread list, and environments, and every target but the iPad also captures agent activity. Each palette folder's five or six screenshots satisfy the configured Apple limit of 1–10, Google diff --git a/scripts/mobile-showcase.config.ts b/scripts/mobile-showcase.config.ts index c52d1f1dd116e617a880cebe7ff83bccbbc8b457..544d8056981ee2366be5960c7ca94d7cc9a81774 100644 --- a/scripts/mobile-showcase.config.ts +++ b/scripts/mobile-showcase.config.ts @@ -104,7 +104,9 @@ const config: ShowcaseConfig = { { id: "iphone-6.9", platform: "ios", - simulator: "iPhone 17 Pro Max", + // A disposable device lands on the newest runtime, whose default lock + // screen wallpaper suits both appearances; a stock one may be older. + simulator: "T3 Showcase iPhone 17 Pro Max", simulatorDeviceType: "com.apple.CoreSimulator.SimDeviceType.iPhone-17-Pro-Max", appearance: "dark", theme: DEFAULT_SHOWCASE_THEME, diff --git a/scripts/mobile-showcase.ts b/scripts/mobile-showcase.ts index 1fa8e3009f4e0094a06eef6d825538e424ff0c96..2b141e12164f17cdea99f3b2eac40dc3cd6f3d97 100644 --- a/scripts/mobile-showcase.ts +++ b/scripts/mobile-showcase.ts @@ -838,6 +838,20 @@ async function suppressIosSystemFollowUps(udid: string): Promise { async function normalizeIosSimulator(appearance: ShowcaseAppearance, udid: string): Promise { await runCommand("xcrun", ["simctl", "ui", udid, "appearance", appearance]); + // Always-on displays (Pro Max) dim a locked screen instead of turning it + // off, which the lock-screen wake cannot tell from a lit one. Without it the + // locked display goes dark and the wake lights it fully. + await runCommand("xcrun", [ + "simctl", + "spawn", + udid, + "defaults", + "write", + "com.apple.springboard", + "SBEnableAlwaysOn", + "-bool", + "false", + ]); await runCommand("xcrun", [ "simctl", "status_bar", -- 2.54.0