Skip to content

fix(ios): preserve drafts during command picker recovery - #497

Draft
BunsDev wants to merge 2 commits into
mainfrom
companion-recovery-pr
Draft

BunsDev wants to merge 2 commits into
mainfrom
companion-recovery-pr

Conversation

@BunsDev

@BunsDev BunsDev commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

A timed-out skill-list request currently raises the root connection alert and dismisses the new-thread sheets. This keeps the error inside the project/provider-scoped picker, retains search and the exact draft, and offers an explicit Try again action. Pairing and secret-answer fields gain Done actions so users can dismiss the keyboard before pressing Connect or Send answer.

The paired fixture consumes one armed command GET without responding; the unchanged request timeout exercises recovery through the real CompanionServer. Existing assertions remain, with added checks for explicit retry, one skill insertion, draft retention and no accidental submission. Model tests preserve cancellation, stale-result and revocation coverage.

PR #496's request-ID reset is not included. A separate regression alternates project-specific and global requests three times, checks the first-snapshot-project contract and retains the exact unsent draft. It passed without the reset independently, in all three complete local paired runs, and in hosted iPhone CI. #496 remains unchanged.

Local validation: build and workspace typecheck passed; coverage 2,327 passed / 26 skipped; native units 63 passed / zero skipped; three consecutive complete paired suites each executed 44 tests with 43 ordinary passes, the existing intentional expected-failure self-test and zero unexpected failures/skips; full E2E passed 505 desktop / four live-provider skips and seven site tests. All six iOS inputs remained unchanged through qualification and the final documentation update.

Hosted validation on signed, GitHub-verified head d3d2eee085ef101e9e044bb7502444518a5d982d: macOS, iPhone and coverage upload passed. Hosted results match the local counts: coverage 2,327 passes / 26 skips, 505 desktop passes / four live-provider skips, seven site passes, 63 native unit passes and 44 UI executions (43 ordinary passes plus one intentional expected-failure self-test; zero unexpected failures/skips). Both recovery and fresh-context tests have status Success. The expected-failure self-test is DemoWorkspaceTests/testBestEffortEvidenceDoesNotStopTheTest.

Tree: aa4bd344a9fce749c459054dda72ab948ce33e04. GitHub's tested PR merge-ref tree equals this signed head's tree. Review and checkpoint contain provenance, commands and acceptance limits; completed logs and digest-verified artifacts are retained outside the worktree.

Related to #276 and #281. Automated simulator receipts do not complete human, VoiceOver, physical-device or live-provider acceptance. The earlier unexplained three-pixel Code Review scroll failure remains historical evidence; the unchanged test passed locally and hosted at both sizes, and this change claims no Code Review repair. The PR stays draft; no merge or release is requested.

@vercel

vercel Bot commented Nov 8, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
modex Ready Ready Preview Nov 8, 2026 9:47pm UTC

Request Review

@github-code-quality

Copy link
Copy Markdown

Code coverage overview

Languages: TypeScript

TypeScript / code-coverage-agent

main d7650e4 companion-recovery-p... d3d2eee +/-
66% 66% 0%

ℹ️ Calculations represent line coverage. Results may change as calculations are updated.

This branch was successfully deployed

1 active deployment
Preview — d3d2eee0 Deployed Nov 8, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant