fix(mobile): render the home screen activity widget - #10350
Open
StiensWout wants to merge 3 commits into
Open
Conversation
Contributor
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR adds a new native iOS home-screen widget with multiple layouts, deep links, direct-connection aggregation, and authentication/refresh lifecycle handling. Its substantial user-facing surface and changes to existing mobile reconciliation paths merit human assessment. Not approved because:
Review your spending limits in Billing settings. You can add or adjust custom eligibility rules. Learn more. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The iOS home-screen widget stays blank because the app registers only its Live Activity layout. This registers a separate small, medium, and rectangular WidgetKit layout with a black background, compact activity rows, and a safe "No active agents" state.
The existing foreground/sign-in/connection reconciliation publishes the relay snapshot even when Live Activities are disabled or a lock-screen card already exists. Direct connections now publish activity from their existing shell subscriptions, using the shared agent-status projection. Their snapshots override older relay rows for the same environment, completed or removed work clears, and cached activity reads as delayed. Cloud sign-out clears relay data while retaining directly paired environments; failed relay reads retain the last snapshot, and late responses cannot overwrite a newer refresh or account. Timestamp-only changes skip native widget writes. Live Activity rendering is unchanged. Direct updates depend on the app running or resuming; this adds no background polling.
Fixes #6641.
Validation: 53 focused mobile tests pass, mobile typecheck passes, and changed-file lint, formatting, and diff checks pass. CI exposed an unrelated web-test teardown race; the test now cancels queued animation frames before restoring globals. A signed Release build was archived, exported, installed, and launched on an iPhone 15 Pro Max using a personal paid developer team and app/widget App Group profiles. The user confirmed the Agent Activity widget renders correctly. The first device build exposed the missing direct-connection data path. The updated signed archive and IPA export succeeded, signature verification passed, and the update is installed on the same iPhone. After opening the updated app, its native WidgetKit App Group snapshot changed from zero rows to one running agent with the live environment ID, confirming the direct-connection path reaches native widget storage. The user-provided iPhone screenshot below confirms both small and medium widgets display the running agent. The local test build omits the unrelated share extension because of its provisioning issue; this does not change the PR source.
Physical iPhone verification, cropped from the user-provided screenshot:
Made with GPT-6 via Codex in T3 Code.