Skip to content

Harden production iOS pairing recovery - #4731

Merged
BunsDev merged 7 commits into
mainfrom
fix/cave-9vcfw-production-ios-pairing
Aug 19, 2026
Merged

Harden production iOS pairing recovery#4731
BunsDev merged 7 commits into
mainfrom
fix/cave-9vcfw-production-ios-pairing

Conversation

@BunsDev

@BunsDev BunsDev commented Aug 19, 2026

Copy link
Copy Markdown
Member

Summary

  • add a fixed-input native Tailscale launcher for production macOS and Windows builds
  • add shared Open Tailscale, Install Tailscale, and Retry recovery controls to both phone-pairing entry points
  • retry signed invite generation with bounded backoff while keeping unusable QR codes hidden
  • cover the recovery contract in TypeScript and Rust tests and document the production flow

Verification

  • pnpm typecheck
  • pnpm lint
  • pnpm test:app
  • pnpm test:api
  • pnpm check:tests-wired
  • pnpm test:mobile
  • cd src-tauri && cargo check --lib

Bead: cave-9vcfw

Copilot AI lite review requested due to automatic review settings August 19, 2026 09:31

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR hardens the iOS phone-pairing recovery path when Tailscale is offline by adding a fixed-input native Tailscale launcher in the packaged desktop app and reusing shared recovery UI controls across pairing entry points, with bounded retry/backoff and supporting tests/docs.

Changes:

  • Add shared pairing recovery helpers (failure classification + bounded retry) and a reusable TailscaleRecoveryActions UI component.
  • Register a fixed-argument native open_tailscale_app Tauri command for macOS/Windows (with Linux returning a manual-action error).
  • Extend coverage and docs: TS unit tests + Rust source-guard test + wiring into the test suite list + updated mobile Tailscale doc.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/lib/tailscale-recovery.ts Adds recovery attempt parsing, failure-kind classification, native launch wrapper, and bounded retry helper.
src/lib/tailscale-recovery.test.ts Unit tests for native launch invocation and bounded retry behavior.
src/components/tailscale-recovery-actions.tsx New shared UI actions (Open/Install/Retry) with announcer feedback and inline launch error display.
src/components/settings-phone.tsx Replaces local Retry buttons with TailscaleRecoveryActions; adjusts reconcile return type to pass structured attempt results through.
src/components/mobile-handoff-modal.tsx Makes start() consistently return a response object and adds TailscaleRecoveryActions to the error state.
src/components/mobile-handoff.test.ts Asserts that both pairing entry points include recovery actions and that recovery uses the fixed native command + bounded delays.
src-tauri/src/shell_open_commands.rs Implements open_tailscale_app with fixed native launch behavior per platform.
src-tauri/src/shell_open_tests.rs Adds source-level guard assertions for fixed/parameterless Tailscale launcher wiring.
src-tauri/src/lib.rs Imports open_tailscale_app for command registration on desktop builds.
src-tauri/src/tauri_setup.rs Registers open_tailscale_app in the Tauri invoke handler list.
scripts/run-tests.mjs Wires the new TS test file into the suite list (keeps check:tests-wired happy).
docs/mobile-tailscale.md Documents the production recovery flow and UX behavior (hide unusable QR; bounded retries).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/components/mobile-handoff.test.ts
Comment thread src-tauri/src/shell_open_tests.rs
@BunsDev BunsDev self-assigned this Aug 19, 2026
BunsDev and others added 3 commits August 19, 2026 04:58
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Val Alexander <val@opencoven.ai>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Val Alexander <val@opencoven.ai>
…sertion

Co-authored-by: BunsDev <68980965+BunsDev@users.noreply.github.com>
@BunsDev
BunsDev merged commit fb0236a into main Aug 19, 2026
19 of 20 checks passed
@BunsDev
BunsDev deleted the fix/cave-9vcfw-production-ios-pairing branch August 19, 2026 12:58
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.

3 participants