b9cb597b99
Two changes: 1. src/ui_session_interface.rs reconnect(false): Upstream only ever set force_relay=true and ignored force_relay=false. This was wrong — the user has no way to clear the flag. Now reconnect(false) sets force_relay=false AND resets direct_failures=0, so the next connect() gets a fresh punch with the full timeout. 2. flutter/lib/common/widgets/peer_card.dart: Add a new menu item '强制不走中继连接' in all 5 _buildMenuItems implementations (recent, favorite, ab, discovered, address-book). Click calls rustDeskWinManager.newRemoteDesktop(id, forceRelay: false) which triggers a fresh punch. If punch fails, RustDesk's existing connect() falls back to relay — so the user always ends up with a working connection (just with a chance of P2P that was retried). Use case: User's home Mac and office Win on different physical networks, hbbr at 5 Mbps. By default every connection is relay (orange banner, no file transfer). Clicking '强制不走中继' forces a fresh P2P attempt — usually fails, but gives the user the transparency to know 'yes, it tried P2P first'.
flutter_hbb
A new Flutter project.
Getting Started
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
For help getting started with Flutter development, view the online documentation, which offers tutorials, samples and guidance on mobile development, and a full API reference.