feat(swift-ios): keep failed source control output visible with accessible Retry - #7371
Conversation
|
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 Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This introduces a new production recovery workflow for source-control operations, including persistent failure UI, accessibility focus management, single-flight state, and Retry for side-effectful actions. It also changes the mutation and status-refresh boundary, so the scope and runtime behavior warrant human review. You can add or adjust custom eligibility rules. Learn more. |
1f39d72 to
fce7740
Compare
…sible Retry Recoverable source-control failures were invisible whenever a repository status had already loaded: the error string only ever reached the ContentUnavailableView fallback, so a failed commit, push, pull, or pull request silently did nothing. There was also no way to retry the exact failed operation and no accessibility focus handling. Retain the failure content in a banner that survives its own retry, keep a stable "Retry <operation>" accessibility label, replay the failed operation with its commit message, move VoiceOver focus to the retained failure and back to the refreshed repository status on recovery, and stop treating cancellation as a failure.
73a4932 to
27a897e
Compare
…t' into feat/issue87-tool-error-recovery
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 42696d5. Configure here.

What Changed
Keep a failed Source Control operation visible above the existing repository state and provide an accessible Retry action. If a Git operation succeeds but the following refresh fails, Retry reloads status instead of repeating the operation.
Why
A transient error could disappear, and a failed status refresh could be mistaken for a failed commit or push. Separate operation and refresh recovery prevents that accidental replay.
Verification and remaining proof
Candidate:
87ce6873a729a3c8e2d330f0cd056f3225c665e5. This PR targetst3code/rebuild-mobile-app-swift; its historical integration base is22b22f1463b83963d851bd0574a36a20f224a28d. The current native parent inspected in the readiness review isb99405468a6b2be1e0f67d551ece824b1627e35c. Merging this child does not by itself deliver the native app to upstream main.The hosted native build/test job passed on the candidate. The earlier report records 20 FeatureToolRecoveryTests at this head against target 22b22f1. The earlier 374-test bundle predates that integration and was not rerun afterwards. No local build, test or client session was run for this description update; full historical local invocations were not recovered here.
Refresh against the current native parent and capture retained errors, repeated failure, successful retry and VoiceOver focus. Keep mutation-success/refresh-failure verification in the focused suite. This PR is not evidence-complete for human merge review against the current native parent.
Earlier visual evidence
These retained captures/reports belong to the revisions and conditions stated below. They were not recaptured, visually inspected or revalidated for current-parent integration in this pass. Historical access/playback statements describe the original check, not a new one.
Earlier captures and their original conditions
The following media was captured on pre-merge head
47389c712. It remains useful for historical comparison but is not current-head proof.Before, healthy repository in light appearance
Before, healthy repository in dark appearance
After, retained failure and Retry in light appearance
After, retained failure and Retry in dark appearance
Interaction video
Play or download the MP4.
Tracking: native work item #87.
Automated summaries of the candidate
Description and evidence audit: GPT-6 in Codex, using prepare-proof-media from #9926.