Skip to content

TESTNG: Track remote mobile hydration latency on unstable networks #639

Description

@Yo-DDV

Hi,

I'm opening this to collect feedback around the remote mobile path on Linux.

I often leave the Linux desktop app running on my computer and connect back to an existing conversation from the mobile app. On long sessions, opening the thread could take a long time before the conversation and active tool updates became usable.

I tested a local build that deduplicates in-flight conversation hydration reads in the Linux remote mobile patch. In my case it is a clear improvement: opening an existing conversation from mobile is noticeably faster, and tool-call updates appear much more quickly.

Network context for this test:

  • I tested from France over a French 4G/5G mobile network, not from a stable wired LAN.
  • The desktop-side capture was taken on an interface with MTU 1420 towards the Cloudflare TLS endpoint used during the session.
  • The local 60-second capture had 6,805 packets, 0 tcpdump/kernel drops, no TCP RST, no zero-window condition, and 16 duplicate data segments.
  • ss -tinp showed retrans counters and a transient send queue/notsent state that later drained.

Local app-side observations after restart:

  • remoteControl/status/read: up to 1 ms
  • thread/read: up to 40 ms
  • thread/list: up to 504 ms
  • no new refresh_remote_control_for_local_identity_failed entries after restart

I am not attaching the raw pcap here because it contains local connection metadata, but these are the relevant capture notes.

I plan to send a small PR that keeps the current queueing behaviour but avoids launching several concurrent readThread hydrations for the same missing thread. It would be useful to hear whether other users see the same improvement, especially on long threads or unstable mobile networks.

Useful feedback would be:

  • distribution and package format
  • whether remote-mobile-control is enabled
  • mobile network type, Wi-Fi, or wired baseline
  • rough before/after time to open a long thread
  • logs around turn/started, thread/read, thread/list, and remote-control status calls

Metadata

Metadata

Assignees

No one assigned

    Labels

    feedback wantedCommunity input is requested before a decision or implementation.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions