Home

mweinbach / agent-coworker

publicmweinbach/agent-coworker
Overview Code History Branches Pull requestsIssuesInsights
main
HomeOverview Code PRsIssues

fix(mobile): native home redesign + resilient remote sync

4 months ago

14b7e0a
Authored
mweinbach5/25/2026, 10:16:18 PM
Redesign the iOS home screen as a proper iOS Settings/Mail-style grouped
list (no more bento card, accordion, or permanent drag handles), with a
trailing compose button, pull-to-refresh, an in-section error/retry row,
and a tappable "Cowork Desktop disconnected" banner that routes to
Remote access. Mirror the same shape on the non-iOS fallback.

Make remote thread sync resilient: requestThreadList ensures init like
readThread/resumeThread; loadRemoteThreadsFromPlan runs in parallel via
Promise.allSettled and throws when every entry fails so callers can
surface errors instead of resolving with empty results; useThreadHome
exposes refreshHome() to re-fetch workspaces + bounded threads, with an
8s outer race so user-initiated loads never hang.

Detect a stale pairing in the transport layer: after two consecutive
sendPlaintext failures matching the repin-required pattern (cert
mismatch, connection refused, network failed), secureTransportClient
clears the active session, persists, and flips connectionStatus to
"error" with DESKTOP_IDENTITY_CHANGED_ERROR so the home banner has
honest state to render and the user gets a one-tap path back into
Remote access.

Co-authored-by: Cursor <cursoragent@cursor.com>

Parentf13d664

10 files changed
  • apps/mobile/src/components/pairing/grouped-list.tsx+15−3
  • apps/mobile/src/components/thread-home/thread-home-screen.ios.tsx+725−263
  • apps/mobile/src/components/thread-home/thread-home-screen.tsx+497−217
  • apps/mobile/src/features/cowork/jsonRpcClient.ts+6−0
  • apps/mobile/src/features/cowork/remoteThreadBootstrap.ts+25−5
  • apps/mobile/src/features/cowork/useThreadHome.ts+29−0
  • apps/mobile/src/features/relay/secureTransportClient.ts+57
−13
  • test/mobile.jsonrpc-client.test.ts+109−0
  • test/mobile.remote-thread-bootstrap.test.ts+139−1
  • test/mobile.secure-transport-client.test.ts+108−0