Skip to content

Promote to production: file-transfer mobile reconnect fix - #69

Merged
slaveofcode merged 2 commits into
mainfrom
develop
Aug 1, 2026
Merged

Promote to production: file-transfer mobile reconnect fix#69
slaveofcode merged 2 commits into
mainfrom
develop

Conversation

@slaveofcode

Copy link
Copy Markdown
Owner

Syncs main with production. Fixes the sender's file-picker backgrounding the tab and dropping the peer with no recovery.

🤖 Generated with Claude Code

Kresna and others added 2 commits August 1, 2026 12:08
…e tab

Reported: opening the native file dialog on mobile disconnects the peer and it
can't reconnect. On a phone the file picker backgrounds the browser tab, which
drops the WebRTC connection to 'disconnected' — and the hook treated that as a
terminal error with no recovery.

Fixes:
- Treat ICE 'disconnected' as transient: a 5s grace period to self-heal, then
  re-establish through signaling (reconnect + renegotiate) instead of erroring.
  'failed' re-establishes immediately. Manual mode (no server) still errors.
- Re-establishment reconnects signaling on demand (signaling is closed once P2P
  is up to avoid churn) and re-negotiates a fresh peer; robust to either side
  reconnecting first.
- Cap consecutive re-establish attempts (4) → clear 'add a TURN server' error
  instead of an infinite reconnect loop on unconnectable networks.
- Let the sender pick the file WHILE waiting for the peer (queueFile); it
  auto-sends the moment the channel opens — sidesteps the picker-backgrounding
  race entirely for the common flow.

DO relay re-verified via local wrangler dev. 539 tests · lint clean · build green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…nnect

fix(file-transfer): survive file-picker backgrounding (mobile reconnect)
@slaveofcode
slaveofcode merged commit 45aec13 into main Aug 1, 2026
2 checks passed
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