fix(mobile): keep store screenshots free of system banners and show dictation - #9548
Conversation
…ictation The showcase runner boots eligible iOS 26 simulators that post a "Ready for Apple Intelligence" follow-up banner on first boot, and CoreFollowUp keeps re-surfacing it on every boot until someone dismisses it, so captures shipped with the banner over the status bar. The runner now stamps the readiness marker generativeexperiencesd checks and drops the CoreFollowUp store before booting, which both prevents the post and clears one a previous boot queued. Simulators cannot run on-device transcription, so the composer hid the dictation button in every capture. The app now reports dictation as available whenever the showcase runner launched it with a scene. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: 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. |
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a focused mobile screenshot-capture adjustment: it cleans system follow-ups on the selected simulator and displays the existing dictation control only when showcase metadata is active. Normal transcription behavior and real-device app paths remain unchanged, with no schema, deployment, sensitive-area, default, or static-analysis changes. You can add or adjust custom eligibility rules. Learn more. |
Store screenshots captured by
screenshots:mobilecame out with a "Ready for Apple Intelligence" banner over the status bar, and the composer never showed the dictation button.The banner is a CoreFollowUp item that
generativeexperiencesdposts on an eligible iOS 26 simulator's first boot;followupdre-surfaces it on every later boot until someone dismisses it. The daemon skips the post whenDateOfLastAppleIntelligenceReadinessCFUis already set incom.apple.generativeexperiences.corefollowup, so the runner now writes that marker and drops theCoreFollowUpstore while the device is shut down, right before booting it. That prevents a fresh simulator from ever posting the banner and clears one an existing simulator already queued. Verified on both cases: the daemon logsshould NOT post Readiness CFUand the items table stays empty across reboots.The dictation button is gated on on-device transcription, which simulators never have. The composer now reports it available whenever the app was launched by the showcase runner with a scene, so captures show the real composer.
Claude Fable 5 via Claude Code.
🤖 Generated with Claude Code
Note
Low Risk
Changes are limited to showcase automation and a showcase-only
isAvailableoverride; normal app voice behavior on real devices is unchanged.Overview
Store screenshot capture is adjusted so iOS simulators boot clean and the composer matches production chrome in showcase runs.
The mobile showcase runner now suppresses the “Ready for Apple Intelligence” system banner before each iOS boot: while the simulator is shut down it writes
DateOfLastAppleIntelligenceReadinessCFUintocom.apple.generativeexperiences.corefollowupand removesLibrary/CoreFollowUp, sogenerativeexperiencesdskips posting and any queued follow-up is cleared.Voice input availability in
useVoiceInputControllernow treats dictation as available when a native showcase scene is active (getNativeShowcaseScene() !== null), not only when on-device transcription exists—so simulator captures show the dictation button even though simulators lack local transcription.Reviewed by Cursor Bugbot for commit 97985fb. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Fix iOS showcase screenshots to hide system banners and enable dictation in showcase scenes
useVoiceInputControllerto report voice input as available when a native showcase scene is active, even on devices without an on-device transcriber.suppressIosSystemFollowUpsin mobile-showcase.ts which sets the Apple Intelligence readiness preference and removes the CoreFollowUp store on a shut-down simulator before boot.iosSimulatorDataPathhelper to resolve a simulator's filesystem data path from its UDID, failing explicitly when not found.captureIosafter shutdown and before boot so captured store screenshots are free of system banners.suppressIosSystemFollowUpsdeletes the simulator's CoreFollowUp store recursively; if the preferences directory path resolution iniosSimulatorDataPathreturns the wrong path, it could operate on unintended simulator data.Macroscope summarized 97985fb.